OpenApi¶
View spec in html.
openapi: 3.0.0
info:
version: 'v.0.7.6'
title: 'Luna Remote SDK API'
description: |
'VisionLabs Luna Remote SDK'
components:
headers:
application_json:
schema:
type: string
enum:
- application/json
required: true
description: The content type of the response body.
text_plain:
schema:
type: string
enum:
- text/plain
required: true
description: The content type of the response body.
luna_request_id:
schema:
type: string
format: timestamp,uuid
example: 1536751345,8b8b5937-2e9c-4e8b-a7a7-5caf86621b5a
pattern: ^[0-9]{10},[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$
description: request id. Helps to uniquely identify messages that correspond to particular requests, in system logs.
required: true
docs_content_type:
schema:
type: string
enum:
- application/x-yaml
- text/html
required: true
description: The content type of the response body.
text_html:
schema:
type: string
enum:
- text/html
required: true
description: The content type of the response body.
flatbuf_or_msgpack:
schema:
type: string
enum:
- application/x-flatbuf
- application/msgpack
required: true
description: The content type of the response body.
json_or_msgpack:
schema:
type: string
enum:
- application/json
- application/msgpack
required: true
description: The content type of the response body.
config_accept_content_type:
schema:
type: string
enum:
- application/json
- text/plain
required: false
description: The content type of the response body.
application_json_or_msgpack_content:
schema:
type: string
default: application/json
enum:
- application/json
- application/msgpack
description: The response content type header. Depends on Accept header in the request.
parameters:
application_json_or_msgpack_content:
in: header
name: Content-Type
schema:
type: string
enum:
- application/json
- application/msgpack
description: The request content type header.
application_multipart_content:
in: header
name: Content-Type
schema:
type: string
enum:
- multipart/form-data
description: The request content type header.
required: true
luna_request_id:
in: header
schema:
type: string
format: timestamp,uuid
example: 1536751345,8b8b5937-2e9c-4e8b-a7a7-5caf86621b5a
pattern: ^[0-9]{10},[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$
description: |
external request id. Helps to uniquely identify messages that correspond to particular requests, in system logs.
If it was not set, system will set it in default format ("timestamp,UUID"). It will be returned with response.
name: Luna-Request-Id
accept_docs_handler:
in: header
name: Accept
schema:
$ref: '#/components/schemas/accept_docs_handler'
required: true
description: acceptable type of receiving data
accept_content_type:
in: header
name: Accept
schema:
type: string
enum:
- application/json
description: Which content-type is requested. `application/json` by default
Accept:
in: header
name: Accept
schema:
type: string
enum:
- application/json
description: Preferred response content type
accept_config_handler:
in: header
name: Accept
schema:
type: string
enum:
- application/json
- text/plain
description: One of application/json, text/plain
required: false
description: acceptable type of receiving data
include_luna_services:
in: query
name: include_luna_services
schema:
type: integer
enum: [0, 1]
default: 0
description: Whether to perform healthchecks for dependent luna services.
application_json_or_msgpack_accept:
in: header
name: Accept
schema:
type: string
default: application/json
enum:
- application/json
- application/msgpack
description: The response content type header.
image_type:
in: query
name: image_type
schema:
type: integer
default: 0
enum: [0,1,2]
description: Image type of input image. 0 - raw image, 1 - face warped image, 2 - body warped image.
raw_or_face_image_type:
in: query
name: image_type
schema:
type: integer
default: 0
enum: [ 0,1 ]
description: Image type of input image. 0 - raw image, 1 - face warped image.
estimate_people_count:
in: query
name: estimate_people_count
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate people count on the image.
⚠ **People counter licensing feature is required to be enabled to perform estimation.**
people_count_coordinates:
in: query
name: people_count_coordinates
schema:
allOf:
- $ref: '#/components/schemas/int01'
- default: 1
description: |
Whether to return people coordinates with people count estimation.
multiface_policy:
in: query
name: multiface_policy
schema:
$ref: '#/components/schemas/multiface_policy'
iso_multiface_policy:
in: query
name: multiface_policy
schema:
allOf:
- $ref: '#/components/schemas/multiface_policy'
- default: 0
detect_face:
in: query
name: detect_face
schema:
allOf:
- $ref: '#/components/schemas/detect_face'
- default: 0
description: |
Whether to detect faces on the image.
detect_body:
in: query
name: detect_body
schema:
allOf:
- $ref: '#/components/schemas/detect_body'
- default: 0
description: |
Whether to detect human bodies on the image.
estimate_body_warp:
in: query
name: estimate_body_warp
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate human body warp on the image.
estimate_upper_body:
in: query
name: estimate_upper_body
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate human upper body attributes on the image (headwear type, clothing color, sleeve length).
estimate_lower_body:
in: query
name: estimate_lower_body
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate human lower body attributes on the image (lower garment type, clothing color, shoes color).
estimate_accessories:
in: query
name: estimate_accessories
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate human body accessories on the image (backpack presence).
estimate_body_basic_attributes:
in: query
name: estimate_body_basic_attributes
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate human body basic attributes on the image (age, gender).
estimate_face_warp:
in: query
name: estimate_face_warp
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate human face warp on the image.
estimate_head_pose:
in: query
name: estimate_head_pose
schema:
$ref: '#/components/schemas/estimate_head_pose'
estimate_emotions:
in: query
name: estimate_emotions
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate emotions on the image.
estimate_landmarks5:
in: query
name: estimate_landmarks5
schema:
$ref: '#/components/schemas/detect_landmarks5'
estimate_landmarks68:
in: query
name: estimate_landmarks68
schema:
$ref: '#/components/schemas/detect_landmarks68'
estimate_quality:
in: query
name: estimate_quality
schema:
$ref: '#/components/schemas/estimate_quality'
description: |
Whether to estimate input face image quality.
estimate_gaze:
in: query
name: estimate_gaze
schema:
$ref: '#/components/schemas/estimate_gaze'
estimate_eyes_attributes:
in: query
name: estimate_eyes_attributes
schema:
$ref: '#/components/schemas/estimate_eyes_attributes'
estimate_mouth_attributes:
in: query
name: estimate_mouth_attributes
schema:
$ref: '#/components/schemas/estimate_mouth_attributes'
description: |
Whether to estimate mouth attributes on the image.
estimate_mask:
in: query
name: estimate_mask
schema:
$ref: '#/components/schemas/estimate_mask'
description: |
Whether to estimate mask on the image.
estimate_glasses:
in: query
name: estimate_glasses
schema:
$ref: '#/components/schemas/estimate_glasses'
description: |
Whether to estimate glasses on the image.
estimate_liveness:
in: query
name: estimate_liveness
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate liveness on the image.
⚠ **Good quality only on webcam or selfie photos**: otherwise the result may be incorrect.
⚠ **Liveness v.2 licensing feature is required to be enabled to perform liveness estimation.**
estimate_deepfake:
in: query
name: estimate_deepfake
schema:
$ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate deepfake feature on the image.
⚠ **Deepfake licensing feature is required to be enabled to perform deepfake estimation.**
estimate_body_descriptor:
in: query
name: estimate_body_descriptor
schema:
$ref: '#/components/schemas/extract_descriptor'
description: |
Whether to estimate human body descriptor(s).
estimate_face_descriptor:
in: query
name: estimate_face_descriptor
schema:
$ref: '#/components/schemas/extract_descriptor'
description: |
Whether to estimate face descriptor(s).
estimate_basic_attributes:
in: query
name: estimate_basic_attributes
schema:
$ref: '#/components/schemas/extract_basic_attributes'
description: |
Whether to estimate face basic attributes (gender, age, ethnicity).
aggregate_attributes:
in: query
name: aggregate_attributes
schema:
$ref: '#/components/schemas/aggregate_attributes'
description: |
Whether to aggregate face descriptor(s).
If true, all extracted attributes will be aggregated and stored as a single attribute.
Otherwise, all attributes will be stored for each sample.
pitch_threshold:
in: query
name: pitch_threshold
schema:
$ref: '#/components/schemas/pitch_threshold'
description: |
Maximum deviation pitch angle from 0.
roll_threshold:
in: query
name: roll_threshold
schema:
$ref: '#/components/schemas/roll_threshold'
description: |
Maximum deviation roll angle from 0.
yaw_threshold:
in: query
name: yaw_threshold
schema:
$ref: '#/components/schemas/yaw_threshold'
description: |
Maximum deviation yaw angle from 0.
mask_states:
in: query
name: mask_states
schema:
$ref: '#/components/schemas/mask_states'
description: |
Filter by mask states.
| masks | value |
|----------------|---|
| missing | 1 |
| medical_mask | 2 |
| occluded | 3 |
liveness_states:
in: query
name: liveness_states
schema:
$ref: '#/components/schemas/liveness_states'
description: |
Filter by liveness states.
| liveness state | value |
|----------------|-------|
| spoof | 0 |
| real | 1 |
| unknown | 2 |
deepfake_states:
in: query
name: deepfake_states
schema:
$ref: '#/components/schemas/deepfake_states'
description: |
Filter by deepfake states.
| liveness state | value |
|----------------|-------|
| fake | 0 |
| real | 1 |
score_threshold:
in: query
name: score_threshold
schema:
$ref: '#/components/schemas/score_threshold'
use_exif_info:
in: query
name: use_exif_info
schema:
type: integer
enum: [0, 1]
default: 1
description: |
Whether to try to auto orient image based on exif data
*Has no effect with tiff images (they're always auto oriented).*
*Ignored with warped images (see `warped_image` or `image_type` parameter).*
example: 1
extract_exif:
in: query
name: extract_exif
schema:
$ref: '#/components/schemas/extract_exif'
description: |
Whether to extract EXIF meta information from input JPEG images.
Exact output will vary since there are no mandatory requirements for both authoring software and digital cameras how to write the data.
This function will only parse the tags and output their names and values as they are. Please refer to JEITA CP-3451 EXIF specification for details.
schemas:
error:
type: object
properties:
error_code:
type: integer
description: error code.
desc:
type: string
description: short error description.
detail:
type: string
description: error details.
link:
type: string
description: link to the documentation website with the error description.
required: [error_code, detail, desc, link]
example:
error_code: 1
detail: internal server error
desc: internal server error
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-1"
int_version:
type: integer
minimum: 0
accept_docs_handler:
type: string
enum:
- application/x-yaml
- text/html
description: One of application/x-yaml, text/html
version:
type: object
properties:
Version:
type: object
properties:
api:
allOf:
- $ref: '#/components/schemas/int_version'
description: an api version of service.
major:
allOf:
- $ref: '#/components/schemas/int_version'
description: a major version of service.
minor:
allOf:
- $ref: '#/components/schemas/int_version'
description: a minor version of service.
patch:
allOf:
- $ref: '#/components/schemas/int_version'
description: a patch version of service.
required: [ api, major, minor, patch ]
required: [ Version ]
example:
Version:
api: 1
major: 0
minor: 0
patch: 0
uuid:
type: string
format: uuid
pattern: '^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$'
example: "557d54ec-29ad-4f3c-93b4-c9092ef12515"
health_ok:
description: successful healthcheck execution info
type: object
properties:
execution_time:
type: number
example: 0.123
description: request execution time in seconds
required: [ execution_time ]
health_errors:
type: object
properties:
errors:
description: failed healthcheck execution info
type: array
items:
type: object
properties:
component:
description: component name
type: string
error:
allOf:
- description: healthcheck error
- $ref: '#/components/schemas/error'
status:
description: component health status
type: integer
enum: [ 0, 1 ]
required: [ component, error, status ]
required: [ errors ]
example:
errors:
- component: licenses
error:
error_code: 38001
desc: Health check error
detail: License error
link: https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-38001
status: 0
int01:
type: integer
enum: [0,1]
int01_def0:
type: integer
default: 0
enum: [0,1]
int02:
type: integer
default: 1
enum: [0,1,2]
int0100:
type: integer
minimum: 0
maximum: 100
number01:
type: number
minimum: 0
maximum: 1
image_type:
type: integer
default: 0
enum: [0,1,2]
description: Image type of input image. 0 - raw image, 1 - face warped image, 2 - body warped image.
extract_exif:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to extract EXIF meta information from input images.
Exact output will vary since there are no mandatory requirements to both authoring software and digital cameras how to write the data.
This function will only parse the tags and output their names and values as is. Please refer to JEITA CP-3451 EXIF specification for details.
detect_face:
allOf:
- $ref: '#/components/schemas/int01_def0'
- default: 1
- description: |
Whether to detect faces from the image.
detect_body:
allOf:
- default: 0
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to detect bodies from the image.
extract_basic_attributes:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
description: |
Whether to extract basic attributes (gender, age, ethnicity).
extract_descriptor:
allOf:
- default: 1
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to extract face descriptor(s).
extract_body_descriptor:
allOf:
- default: 0
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to extract body descriptor(s).
estimate_face_warp:
allOf:
- default: 0
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to estimate human face warp on the image.
aggregate_attributes:
allOf:
- type: integer
enum: [0, 1]
description: |
Whether to aggregate attribute(s).
If true, all extracted attributes will be aggregated and stored as a single attribute.
Otherwise, all attributes will be stored for each sample.
default: 0
score_threshold:
type: number
minimum: 0
maximum: 1
example: 0.99
default: 0
description: |
Face descriptor quality score threshold. All the attributes with quality score below the threshold will be
ignored (and not stored in the DB). The function will proceed as usual with all the remaining descriptors
(if left).
detect_landmarks68:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to detect basic 68-point facial landmarks on the image.
*Not supported with warped images (see `warped_image` or `image_type` parameter).*
detect_landmarks5:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to detect basic 5-point facial landmarks on the image.
*Not supported with warped images (see `warped_image` or `image_type` parameter).*
estimate_eyes_attributes:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to estimate eye attributes on the image.
*Not supported with warped images (see `warped_image` or `image_type` parameter).*
estimate_head_pose:
allOf:
- $ref: '#/components/schemas/int01_def0'
description: |
Whether to estimate head pose on the image.
*Not supported with warped images (see `warped_image` or `image_type` parameter).*
estimate_gaze:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to estimate eye gaze on the image.
*Not supported with warped images (see `warped_image` or `image_type` parameter).*
estimate_mouth_attributes:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to estimate mouth attributes on the image.
estimate_quality:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to estimate input face image quality.
estimate_emotions:
allOf:
- $ref: '#/components/schemas/int01_def0'
- type: integer
- description: |
Whether to estimate emotions on the image.
estimate_mask:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to estimate mask on the image.
estimate_glasses:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to estimate glasses on the image.
estimate_liveness:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to estimate liveness on the image.
⚠ **Liveness licensing feature is required to be enabled to perform liveness estimation.**
estimate_deepfake:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to estimate deepfake feature on the image.
⚠ **Deepfake licensing feature is required to be enabled to perform deepfake estimation.**
estimate_body_warp:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: Whether to estimate human body warp on the image.
estimate_body_basic_attributes:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: Whether to estimate human body basic attributes on the image (age, gender).
estimate_upper_body:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to estimate upper body attributes (headwear_state, upper_clothing_color, sleeve_length) from the image.
estimate_lower_body:
allOf:
- $ref: '#/components/schemas/int01_def0'
- description: |
Whether to estimate human lower body attributes on the image (lower garment type, clothing color, shoes color).
image_format_threshold:
type: array
items:
type: string
enum: [ JPEG, JPEG2000, PNG ]
minItems: 1
default: [ JPEG, JPEG2000, PNG ]
description: List of allowed image formats.
estimate_flag:
type: integer
enum: [0, 1]
default: 1
description: Whether to enable estimation.
check_base:
type: object
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
image_format_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/image_format_threshold'
- description: Image format check.
illumination_quality_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.5
max: 1.0
- example:
min: 0.3
max: 0.9
illumination_quality_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/illumination_quality_threshold'
- description: Image quality check for uniformity of illumination.
specularity_quality_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.3
max: 1.0
- example:
min: 0.3
max: 0.9
specularity_quality_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/specularity_quality_threshold'
- description: Image quality check for specularity.
blurriness_quality_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.61
max: 1.0
- example:
min: 0.3
max: 0.9
blurriness_quality_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/blurriness_quality_threshold'
- description: Image quality check for blurriness.
dark_quality_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.5
max: 1.0
- example:
min: 0.3
max: 0.9
dark_quality_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/dark_quality_threshold'
- description: Image quality check for underexposure.
light_quality_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.57
max: 1.0
- example:
min: 0.3
max: 0.9
light_quality_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/light_quality_threshold'
- description: Image quality check for overexposure.
head_angles_threshold:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_float_min_threshold'
- minimum: -180.0
- maximum: 180.0
max:
allOf:
- description: Inclusive upper bound of the allowed range.
- $ref: '#/components/schemas/base_float_max_threshold'
- minimum: -180.0
- maximum: 180.0
head_yaw_threshold:
allOf:
- $ref: '#/components/schemas/head_angles_threshold'
- default:
min: -5.0
max: 5.0
- example:
min: 0.3
max: 0.9
head_yaw_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/head_yaw_threshold'
- description: Head yaw check.
head_pitch_threshold:
allOf:
- $ref: '#/components/schemas/head_angles_threshold'
- default:
min: -5.0
max: 5.0
- example:
min: 0.3
max: 0.9
head_pitch_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/head_pitch_threshold'
- description: Head pitch check.
head_roll_threshold:
allOf:
- $ref: '#/components/schemas/head_angles_threshold'
- default:
min: -8.0
max: 8.0
- example:
min: 0.3
max: 0.9
head_roll_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/head_roll_threshold'
- description: Head roll check.
check_threshold_float_180_180:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- $ref: '#/components/schemas/base_float_min_threshold'
- minimum: -180.0
- maximum: 180.0
max:
allOf:
- $ref: '#/components/schemas/base_float_max_threshold'
- minimum: -180.0
- maximum: 180.0
gaze_yaw_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_180_180'
- default:
min: -5.0
max: 5.0
- example:
min: 0.3
max: 0.9
gaze_yaw_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/gaze_yaw_threshold'
- description: Gaze yaw check.
gaze_pitch_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_180_180'
- default:
min: -5.0
max: 5.0
- example:
min: 0.3
max: 0.9
gaze_pitch_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/gaze_pitch_threshold'
- description: Gaze pitch check.
mouth_threshold:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- $ref: '#/components/schemas/base_float_min_threshold'
- minimum: 0.0
- maximum: 1.0
max:
allOf:
- description: Inclusive upper bound of the allowed range.
- $ref: '#/components/schemas/base_float_max_threshold'
- minimum: 0.0
- maximum: 1.0
mouth_smiling_threshold:
allOf:
- $ref: '#/components/schemas/mouth_threshold'
- default:
min: 0.0
max: 0.5
- example:
min: 0.3
max: 0.9
mouth_smiling_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/mouth_smiling_threshold'
- description: Mouth smiling check.
mouth_occluded_threshold:
allOf:
- $ref: '#/components/schemas/mouth_threshold'
- default:
min: 0.0
max: 0.5
- example:
min: 0.3
max: 0.9
mouth_occluded_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/mouth_occluded_threshold'
- description: Mouth occluded check.
mouth_open_threshold:
allOf:
- $ref: '#/components/schemas/mouth_threshold'
- default:
min: 0.0
max: 0.5
- example:
min: 0.3
max: 0.9
mouth_open_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/mouth_open_threshold'
- description: Mouth open check.
glasses_threshold:
type: array
items:
type: string
enum: [ "no_glasses", "eyeglasses", "sunglasses" ]
minItems: 1
default: ["no_glasses", "eyeglasses"]
description: List of image formats allowed by standard.
glasses_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/glasses_threshold'
- description: Glasses check.
eye_threshold:
type: array
items:
type: string
enum: [ "open", "occluded", "closed" ]
minItems: 1
default: ["open"]
description: List of image formats allowed by standard.
left_eye_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/eye_threshold'
- description: Left eye check.
right_eye_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/eye_threshold'
- description: Right eye check.
head_horizontal_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.45
max: 0.55
head_horizontal_center_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/head_horizontal_threshold'
- description: Check for horizontal position of face center point relative to image | not available for warped images.
head_vertical_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.3
max: 0.5
head_vertical_center_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/head_vertical_threshold'
- description: Check for vertical position of face center point relative to image | not available for warped images.
check_threshold_float_positive:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- $ref: '#/components/schemas/base_float_min_threshold'
- description: Inclusive lower bound of the allowed range.
- minimum: 0.0
max:
allOf:
- $ref: '#/components/schemas/base_float_max_threshold'
- description: Inclusive upper bound of the allowed range.
- minimum: 0.0
- nullable: true
head_width_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_positive'
- default:
min: 0.5
max: 0.75
head_width_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/head_width_threshold'
- description: Check for horizontal head size relative to image size | not available for warped images.
head_height_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_positive'
- default:
min: 0.6
max: 0.9
head_height_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/head_height_threshold'
- description: Check for vertical head size relative to image size | not available for warped images.
check_threshold_float_positive_max_nullable:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- type: number
- minimum: 0.0
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_float_min_threshold'
max:
allOf:
- type: number
- minimum: 0.0
- nullable: true
- description: Inclusive upper bound of the allowed range.
- $ref: '#/components/schemas/base_float_min_threshold'
eye_distance_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_positive_max_nullable'
- default:
min: 90.0
- example:
min: 91.1
max: 92.2
eye_distance_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/eye_distance_threshold'
- description: Eye distance check | not available for warped images.
base_int_min_threshold:
type: integer
nullable: false
description: Exclusive lower bound of the allowed range.
example: 0
base_int_max_threshold:
type: integer
nullable: false
description: Exclusive upper bound of the allowed range.
example: 0
base_int_max_threshold_nullable:
type: integer
nullable: true
description: Exclusive upper bound of the allowed range.
example: 0
check_threshold_inclusive_int_positive:
type: object
description: Allowed range of the estimation value.
properties:
min:
allOf:
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_int_min_threshold'
- minimum: 0
max:
allOf:
- description: Inclusive upper bound of the allowed range.
- $ref: '#/components/schemas/base_int_max_threshold'
- nullable: true
- minimum: 0
image_width_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive'
- default:
min: 180
max: 1920
image_width_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/image_width_threshold'
- description: Image width check.
image_height_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive'
- default:
min: 180
max: 1080
image_height_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/image_height_threshold'
- description: Image height check.
aspect_ratio_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_positive'
- default:
min: 0.74
max: 0.8
aspect_ratio_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/aspect_ratio_threshold'
- description: Image aspect ratio check.
check_threshold_inclusive_int_positive_max_nullable:
type: object
description: Allowed range of the estimation value.
properties:
min:
allOf:
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_int_min_threshold'
- minimum: 0
max:
allOf:
- description: Inclusive upper bound of the allowed range.
- $ref: '#/components/schemas/base_int_max_threshold_nullable'
- minimum: 0
face_width_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive_max_nullable'
- default:
min: 180
face_width_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/face_width_threshold'
- description: Face width check | not available for warped images.
face_height_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive_max_nullable'
- default:
min: 180
face_height_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/face_height_threshold'
- description: Face height check | not available for warped images.
indent_left_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive_max_nullable'
- default:
min: 20
indent_left_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/indent_left_threshold'
- description: Check for indent from the left image border to the left face border | not available for warped images.
indent_right_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive_max_nullable'
- default:
min: 20
indent_right_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/indent_right_threshold'
- description: Check for indent from the right image border to the right face border | not available for warped images.
indent_upper_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive_max_nullable'
- default:
min: 20
indent_upper_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/indent_upper_threshold'
- description: Check for indent from the upper image border to the upper face border | not available for warped images.
indent_lower_threshold:
allOf:
- description: Allowed range of the estimation value (in pixels).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive_max_nullable'
- default:
min: 20
indent_lower_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/indent_lower_threshold'
- description: Check for indent from the lower image border to the lower face border | not available for warped images.
image_size_threshold:
allOf:
- description: Allowed range of the estimation value (in bytes).
- $ref: '#/components/schemas/check_threshold_inclusive_int_positive'
- default:
min: 5120
max: 2097152
image_size_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/image_size_threshold'
- description: Image size check.
eyebrow:
type: string
enum: ["squinting", "frowning", "raised", "neutral"]
eyebrows_state_check:
type: object
description: Eyebrows type check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: array
items:
$ref: '#/components/schemas/eyebrow'
description: List of values to consider successful.
minItems: 1
default: ["neutral"]
required: [estimate]
headwear:
type: string
description: |
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
enum: ["none", "baseball_cap", "beanie", "peaked_cap", "shawl", "hat_with_earflaps", "helmet", "hood", "hat", "other"]
headwear_threshold:
type: array
items:
$ref: '#/components/schemas/headwear'
description: List of values to consider successful.
minItems: 1
headwear_type_check:
type: object
description: Headwear_type check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: array
items:
$ref: '#/components/schemas/headwear'
description: List of values to consider successful.
minItems: 1
default: ["none"]
required: [estimate]
smile:
type: string
enum: ["none", "smile_lips", "smile_teeth"]
smile_threshold:
type: array
items:
$ref: '#/components/schemas/smile'
description: List of successful values.
minItems: 1
smile_properties_check:
type: object
description: Smile_properties check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: array
items:
$ref: '#/components/schemas/smile'
description: List of successful values.
minItems: 1
default: ["none"]
required: [estimate]
face_color:
type: string
enum: ["color", "grayscale", "infrared"]
face_color_type_threshold:
type: array
items:
$ref: '#/components/schemas/face_color'
description: List of values to consider successful.
minItems: 1
face_color_type_check:
type: object
description: Face color type check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: array
items:
$ref: '#/components/schemas/face_color'
description: List of values to consider successful.
minItems: 1
default: ["color"]
required: [estimate]
natural_light_check:
type: object
description: Natural_light check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: integer
enum: [ 0, 1 ]
default: 1
description: Value to consider successful.
required: [estimate]
red_eyes_check:
type: object
description: Red_eyes check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: integer
enum: [ 0, 1 ]
default: 0
description: Value to consider successful.
required: [estimate]
radial_distortion_check:
type: object
description: Radial_distortion check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: integer
enum: [ 0, 1 ]
default: 0
description: Value to consider successful.
required: [estimate]
base_float_threshold:
type: object
description: Allowed range of the estimation value.
base_float_min_threshold:
type: number
nullable: false
description: Exclusive lower bound of the allowed range.
example: 0.0
base_float_max_threshold:
type: number
nullable: false
description: Exclusive upper bound of the allowed range.
example: 0.0
illumination_uniformity_threshold:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- minimum: 0.0
- maximum: 1.0
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_float_min_threshold'
max:
allOf:
- minimum: 0.0
- maximum: 1.0
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_float_max_threshold'
- default:
min: 0.5
max: 1.0
illumination_uniformity_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/illumination_uniformity_threshold'
- description: Illumination uniformity check | not available for warped images.
check_threshold_float_0_1:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- $ref: '#/components/schemas/base_float_min_threshold'
- minimum: 0.0
- maximum: 1.0
max:
allOf:
- $ref: '#/components/schemas/base_float_max_threshold'
- minimum: 0.0
- maximum: 1.0
background_uniformity_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.5
max: 1.0
- description: Background uniformity threshold, 1 - background is uniformity, 0 - background is non uniformity
background_uniformity_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/background_lightness_threshold'
- description: Face detection background uniformity check | not available for warped images.
background_lightness_threshold:
allOf:
- $ref: '#/components/schemas/check_threshold_float_0_1'
- default:
min: 0.2
max: 1.0
- description: Background uniformity threshold, 1 - background is light, 0 - background is dark
background_lightness_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/background_lightness_threshold'
- description: Face detection background lightness check | not available for warped images.
dynamic_range_threshold:
allOf:
- $ref: '#/components/schemas/base_float_threshold'
- properties:
min:
allOf:
- minimum: 0.0
- maximum: 1.0
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_float_min_threshold'
max:
allOf:
- minimum: 0.0
- maximum: 1.0
- description: Inclusive lower bound of the allowed range.
- $ref: '#/components/schemas/base_float_max_threshold'
- default:
min: 0.5
max: 1.0
dynamic_range_check:
allOf:
- $ref: '#/components/schemas/check_base'
- properties:
threshold:
$ref: '#/components/schemas/dynamic_range_threshold'
- description: Dynamic range of facial skin tone (eliminate extremely light or dark skin tone) | not available for warped images.
shoulders_position:
type: string
enum: ["non-parallel", "parallel", "hidden"]
shoulders_position_threshold:
type: array
items:
$ref: '#/components/schemas/shoulders_position'
description: List of values to consider successful.
minItems: 1
shoulders_position_check:
type: object
description: Soulders position status check configuration.
properties:
estimate:
$ref: '#/components/schemas/estimate_flag'
threshold:
type: array
items:
$ref: '#/components/schemas/shoulders_position'
description: List of values to consider successful.
minItems: 1
default: ["parallel"]
required: [ estimate ]
face_quality_checks:
type: object
description: Face quality checks and filters.
properties:
image_format:
$ref: '#/components/schemas/image_format_check'
illumination_quality:
$ref: '#/components/schemas/illumination_quality_check'
specularity_quality:
$ref: '#/components/schemas/specularity_quality_check'
blurriness_quality:
$ref: '#/components/schemas/blurriness_quality_check'
dark_quality:
$ref: '#/components/schemas/dark_quality_check'
light_quality:
$ref: '#/components/schemas/light_quality_check'
head_yaw:
$ref: '#/components/schemas/head_yaw_check'
head_pitch:
$ref: '#/components/schemas/head_pitch_check'
head_roll:
$ref: '#/components/schemas/head_roll_check'
gaze_yaw:
$ref: '#/components/schemas/gaze_yaw_check'
gaze_pitch:
$ref: '#/components/schemas/gaze_pitch_check'
mouth_smiling:
$ref: '#/components/schemas/mouth_smiling_check'
mouth_occluded:
$ref: '#/components/schemas/mouth_occluded_check'
mouth_open:
$ref: '#/components/schemas/mouth_open_check'
glasses:
$ref: '#/components/schemas/glasses_check'
left_eye:
$ref: '#/components/schemas/left_eye_check'
right_eye:
$ref: '#/components/schemas/right_eye_check'
head_horizontal_center:
$ref: '#/components/schemas/head_horizontal_center_check'
head_vertical_center:
$ref: '#/components/schemas/head_vertical_center_check'
head_width:
$ref: '#/components/schemas/head_width_check'
head_height:
$ref: '#/components/schemas/head_height_check'
eye_distance:
$ref: '#/components/schemas/eye_distance_check'
image_width:
$ref: '#/components/schemas/image_width_check'
image_height:
$ref: '#/components/schemas/image_height_check'
aspect_ratio:
$ref: '#/components/schemas/aspect_ratio_check'
face_width:
$ref: '#/components/schemas/face_width_check'
face_height:
$ref: '#/components/schemas/face_height_check'
indent_left:
$ref: '#/components/schemas/indent_left_check'
indent_right:
$ref: '#/components/schemas/indent_right_check'
indent_upper:
$ref: '#/components/schemas/indent_upper_check'
indent_lower:
$ref: '#/components/schemas/indent_lower_check'
image_size:
$ref: '#/components/schemas/image_size_check'
eyebrows_state:
$ref: '#/components/schemas/eyebrows_state_check'
headwear_type:
$ref: '#/components/schemas/headwear_type_check'
smile_properties:
$ref: '#/components/schemas/smile_properties_check'
face_color_type:
$ref: '#/components/schemas/face_color_type_check'
natural_light:
$ref: '#/components/schemas/natural_light_check'
red_eyes:
$ref: '#/components/schemas/red_eyes_check'
radial_distortion:
$ref: '#/components/schemas/radial_distortion_check'
illumination_uniformity:
$ref: '#/components/schemas/illumination_uniformity_check'
background_uniformity:
$ref: '#/components/schemas/background_uniformity_check'
background_lightness:
$ref: '#/components/schemas/background_lightness_check'
dynamic_range:
$ref: '#/components/schemas/dynamic_range_check'
shoulders_position:
$ref: '#/components/schemas/shoulders_position_check'
face_quality:
type: object
description: |
Face quality estimations checks.
It enables you to perform various face quality checks by manually specifying thresholds.
⚠ **ISO licensing feature is required to be enabled to perform face quality estimation.**
properties:
estimate:
type: integer
enum: [0, 1]
default: 0
description: Whether to estimate face quality.
filter:
type: integer
enum: [0, 1]
default: 0
description: |
Whether to enable face quality filtering.
If one of the `face_quality` checks for the detection fails, then the results and the reason for filtering will be returned. No further policies will be performed for this detection.
checks:
$ref: '#/components/schemas/face_quality_checks'
estimate_people_count:
type: object
description: |
People count estimations.
⚠ **People counter licensing feature is required to be enabled to perform estimation.**
properties:
estimate:
type: integer
enum: [ 0, 1 ]
default: 0
description: Whether to estimate people count.
people_coordinates:
allOf:
- $ref: '#/components/schemas/int01'
- description: Whether to return people coordinates.
- default: 1
estimator_targets:
type: object
properties:
exif:
$ref: '#/components/schemas/extract_exif'
people_count:
$ref: '#/components/schemas/estimate_people_count'
face_detection:
$ref: '#/components/schemas/detect_face'
face_warp:
$ref: '#/components/schemas/estimate_face_warp'
face_landmarks5:
$ref: '#/components/schemas/detect_landmarks5'
face_landmarks68:
$ref: '#/components/schemas/detect_landmarks68'
gaze:
$ref: '#/components/schemas/estimate_gaze'
head_pose:
$ref: '#/components/schemas/estimate_head_pose'
eyes:
$ref: '#/components/schemas/estimate_eyes_attributes'
mouth_attributes:
$ref: '#/components/schemas/estimate_mouth_attributes'
face_warp_quality:
$ref: '#/components/schemas/estimate_quality'
emotions:
$ref: '#/components/schemas/estimate_emotions'
face_descriptor:
$ref: '#/components/schemas/extract_descriptor'
basic_attributes:
$ref: '#/components/schemas/extract_basic_attributes'
mask:
$ref: '#/components/schemas/estimate_mask'
glasses:
$ref: '#/components/schemas/estimate_glasses'
liveness:
$ref: '#/components/schemas/estimate_liveness'
deepfake:
$ref: '#/components/schemas/estimate_deepfake'
body_warp:
$ref: '#/components/schemas/estimate_body_warp'
body_detection:
$ref: '#/components/schemas/detect_body'
body_descriptor:
$ref: '#/components/schemas/extract_body_descriptor'
body_attributes:
$ref: '#/components/schemas/estimate_body_basic_attributes'
upper_body:
$ref: '#/components/schemas/estimate_upper_body'
lower_body:
$ref: '#/components/schemas/estimate_lower_body'
face_quality:
$ref: '#/components/schemas/face_quality'
description: Estimation targets
pitch_threshold:
allOf:
- $ref: '#/components/schemas/int0180'
- type: integer
- description: |
Maximum deviation pitch angle from 0.
roll_threshold:
allOf:
- $ref: '#/components/schemas/int0180'
- type: integer
- description: |
Maximum deviation roll angle from 0.
yaw_threshold:
allOf:
- $ref: '#/components/schemas/int0180'
- type: integer
- description: |
Maximum deviation yaw angle from 0.
mask_states:
type: array
items:
type: integer
enum: [1, 2, 3]
minItems: 1
description: |
Filter by mask states
| masks | value |
|----------------|---|
| missing | 1 |
| medical_mask | 2 |
| occluded | 3 |
liveness_states:
type: array
items:
type: integer
enum: [ 0, 1, 2, null ]
minItems: 1
description: |
Filter by liveness states.
| liveness | value |
|----------------|---|
| spoof | 0 |
| real | 1 |
| unknown | 2 |
deepfake_states:
type: array
items:
type: integer
enum: [ 0, 1, null ]
minItems: 1
description: |
Filter by deepfake states.
| liveness | value |
|----------------|---|
| fake | 0 |
| real | 1 |
face_detection_filters:
type: object
properties:
pitch_threshold:
$ref: '#/components/schemas/pitch_threshold'
roll_threshold:
$ref: '#/components/schemas/roll_threshold'
yaw_threshold:
$ref: '#/components/schemas/yaw_threshold'
liveness_states:
$ref: '#/components/schemas/liveness_states'
deepfake_states:
$ref: '#/components/schemas/deepfake_states'
mask_states:
$ref: '#/components/schemas/mask_states'
score_threshold:
$ref: '#/components/schemas/score_threshold'
description: Face detection filters
estimator_filters:
type: object
properties:
face_detection_filters:
$ref: '#/components/schemas/face_detection_filters'
description: Estimation filters
liveness_settings:
type: object
properties:
score_threshold:
allOf:
- $ref: '#/components/schemas/number01'
- description: Liveness estimation real score threshold.
default: 0.5
quality_threshold:
allOf:
- $ref: '#/components/schemas/number01'
- description: Liveness estimation image quality threshold.
default: 0.5
description: |
Liveness estimation configuration.
deepfake_settings:
type: object
properties:
real_threshold:
allOf:
- $ref: '#/components/schemas/number01'
- description: Deepfake estimation real score threshold.
default: 0.5
mode:
type: int
enum: [1, 2]
description: ""
default: 2
description: |
Deepfake estimation configuration.
estimators_params:
type: object
properties:
liveness_params:
$ref: '#/components/schemas/liveness_settings'
deepfake_params:
$ref: '#/components/schemas/deepfake_settings'
face_descriptor_version:
type: integer
body_descriptor_version:
type: integer
description: Estimation parameters
multiface_policy:
allOf:
- $ref: '#/components/schemas/int02'
- type: integer
- description: |
Multiple face detection policy:
- *`0`* - do not process images with several detected faces.
If *`detect_body`* is enabled, the system will attempt to detect a human body related to the detected face. If a human body is detected, its detection will be associated with the same event as the face.
If there is no face detected in the image, no human body detections will be returned. Thus there will be no human body detection returned if *`detect_face`* is disabled.
- *`1`* - process images with several detected faces and/or human bodies.
If *`detect_body`* is enabled, all the detections of human bodies will be returned. Face detection and human body detection of the same person will be associated with the same event.
The detections of human bodies are returned even if there were no faces found.
- *`2`* - get the best face detection from the image. A single face of the best quality is detected in the image.
If *`detect_body`* is enabled, the system will attempt to detect a human body related to the detected face. If a human body is detected, its detection will be associated with the same event as the face.
If there is no face detected in the image, no human body detections will be returned. Thus there will be no human body detection returned if *`detect_face`* is disabled.
int0180:
type: integer
minimum: 0
maximum: 180
int090:
type: integer
minimum: 0
maximum: 90
use_exif_info:
type: integer
enum: [0, 1]
default: 1
description: |
Whether to try to auto orient image based on exif data
*Ignored with warped images (see `warped_image` or `image_type` parameter).*
example: 1
estimator_parameters:
type: object
properties:
use_exif_info:
$ref: '#/components/schemas/use_exif_info'
targets:
$ref: '#/components/schemas/estimator_targets'
filters:
$ref: '#/components/schemas/estimator_filters'
estimators_params:
$ref: '#/components/schemas/estimators_params'
aggregate:
$ref: '#/components/schemas/aggregate_attributes'
multiface_policy:
$ref: '#/components/schemas/multiface_policy'
required: [targets]
trusted_detections:
allOf:
- description: |
Whether detections were received with VL algorithms or not.
**Note that enabling this parameter with detections from external sources may affect estimations in an unexpected way**.
- default: 0
- $ref: '#/components/schemas/int01'
estimator_image:
type: object
properties:
filename:
$ref: '#/components/schemas/filename'
body:
type: string
format: binary
description: Image in raw bytes
image_type:
$ref: '#/components/schemas/image_type'
trusted_detections:
$ref: '#/components/schemas/trusted_detections'
face_detections:
allOf:
- description: Array with face bounding boxes for image (now support only 1 bounding box).
- $ref: '#/components/schemas/base_bounding_boxes'
body_detections:
allOf:
- description: Array with body bounding boxes for image (now support only 1 bounding box).
- $ref: '#/components/schemas/base_bounding_boxes'
required: [body]
estimator_request_body:
type: object
properties:
params:
$ref: '#/components/schemas/estimator_parameters'
images:
type: array
items:
$ref: '#/components/schemas/estimator_image'
required: [params, images]
filename:
type: string
example: "penelope.jpeg"
description: |
Source image file name.
emotions_estimations:
type: object
properties:
anger:
type: number
format: double
maximum: 1
minimum: 0
description: Anger probability.
disgust:
type: number
format: double
maximum: 1
minimum: 0
description: Disgust probability.
fear:
type: number
format: double
maximum: 1
minimum: 0
description: Fear probability.
happiness:
type: number
format: double
maximum: 1
minimum: 0
description: Happiness probability.
neutral:
type: number
format: double
maximum: 1
minimum: 0
description: Neutral face probability.
sadness:
type: number
format: double
maximum: 1
minimum: 0
description: Sadness probability.
surprise:
type: number
format: double
maximum: 1
minimum: 0
description: Surprise probability.
required: [surprise, sadness, neutral, happiness, fear, disgust, anger]
description: Emotion classifier response.
emotions:
type: object
properties:
estimations:
allOf:
- $ref: '#/components/schemas/emotions_estimations'
- description: Emotion classifier response.
predominant_emotion:
type: string
description: Name of predominant emotion.
enum: [surprise, sadness, neutral, happiness, fear, disgust, anger]
required: [estimations, predominant_emotion]
liveness:
type: object
description: Liveness prediction.
properties:
prediction:
type: string
enum: [spoof, real, unknown]
description: Liveness prediction name
estimations:
type: object
description: Liveness estimations.
properties:
quality:
allOf:
- $ref: '#/components/schemas/number01'
description: Liveness quality score.
score:
allOf:
- $ref: '#/components/schemas/number01'
description: Liveness prediction score.
required: [quality, score]
required: [prediction, estimations]
deepfake:
type: object
description: Deepfake prediction.
properties:
prediction:
type: string
enum: [fake, real]
description: Deepfake prediction name
score:
allOf:
- $ref: '#/components/schemas/number01'
description: Deepfake prediction score.
required: [prediction, score]
mask_estimations:
type: object
description: Raw mask estimations.
properties:
medical_mask:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the `medical mask` exists on the face and is worn properly.
missing:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the `medical mask` doesn't exist on the face.
occluded:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the face is occluded by other object (not by `medical mask`).
required: [medical_mask, missing, occluded]
age:
allOf:
- $ref: '#/components/schemas/int0100'
- description: Age.
gender:
allOf:
- $ref: '#/components/schemas/int01'
- description: Gender, 0 - female, 1 - male.
ethnicities_estimations:
type: object
description: Ethnicity classifier response.
properties:
asian:
type: number
format: double
maximum: 1
minimum: 0
description: Asian ethnicity probability.
indian:
type: number
format: double
maximum: 1
minimum: 0
description: Indian ethnicity probability.
caucasian:
type: number
format: double
maximum: 1
minimum: 0
description: Caucasian ethnicity probability.
african_american:
type: number
format: double
maximum: 1
minimum: 0
description: African American ethnicity probability.
required: [african_american, caucasian, indian, asian]
ethnicities:
description: Estimated ethnicities.
type: object
properties:
estimations:
allOf:
- $ref: '#/components/schemas/ethnicities_estimations'
- description: Ethnicity classifier response.
predominant_ethnicity:
type: string
description: name of predominant ethnicity.
required: [estimations, predominant_ethnicity]
example:
estimations:
african_american: 1.92238889737406e-12
asian: 0.954671621322632
caucasian: 0.045328326523304
indian: 7.65100649502415e-10
predominant_ethnicity: "asian"
basic_attributes:
type: object
description: Basic attributes.
properties:
age:
allOf:
- $ref: '#/components/schemas/age'
- example: 29
gender:
allOf:
- $ref: '#/components/schemas/gender'
- example: 1
ethnicities:
$ref: '#/components/schemas/ethnicities'
required: [age, gender, ethnicities]
mask_predominant:
type: string
enum: [medical_mask, missing, occluded]
description: Most likely mask state.
masks_base:
type: object
description: Estimated face mask state.
properties:
estimations:
$ref: '#/components/schemas/mask_estimations'
predominant_mask:
$ref: '#/components/schemas/mask_predominant'
face_occlusion:
type: object
description: Estimated face occlusion.
properties:
predominant_occlusion:
type: string
enum: ["full", "clear", "correct", "partially", "mouth", "chin"]
description: The most likely face occlusion state.
estimations:
type: object
description: Raw face occlusion estimations scores.
properties:
full:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the mask occlude whole face.
clear:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the mask absent.
correct:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the mask is put on correctly.
partially:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the mask is put on partially correct.
mouth:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the mask is put on mouth only.
chin:
allOf:
- $ref: '#/components/schemas/number01'
description: The probability that the mask is put on chin only.
required: [full, clear, correct, partially, mouth, chin]
required: [predominant_occlusion, estimations]
example:
mask:
estimations:
medical_mask: 0.7108324766
missing: 0.0700698048
occluded: 0.2190976739
predominant_mask: "medical_mask"
face_occlusion:
predominant_occlusion: "correct"
estimations:
full: 0.1
correct: 0.25
clear: 0.05
mouth: 0.2
partially: 0.2
chin: 0.2
masks:
allOf:
- $ref: '#/components/schemas/masks_base'
required: [estimations, predominant_mask, face_occlusion]
rect:
description: Bounding rectangle.
type: object
properties:
height:
type: integer
description: Rectangle height.
example: 200
width:
type: integer
description: Rectangle width.
example: 100
x:
type: integer
description: Top left corner "x" coordinate.
example: 17
y:
type: integer
description: Top left corner "y" coordinate.
example: 10
required: [height, width, x, y]
example:
height: 240
width: 209
x: 170
y: 198
sdk_descriptor:
type: string
format: byte
description: SDK descriptor (descriptor version, signature, descriptor bytes).
extracted_sdk_descriptor:
description: SDK descriptor.
type: object
properties:
sdk_descriptor:
$ref: '#/components/schemas/sdk_descriptor'
score:
allOf:
- $ref: '#/components/schemas/number01'
- description: Descriptor score (always 1 for body descriptor).
short_palette:
description: |
short color palette
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
type: string
enum: [ black, other, white, undefined ]
expanded_palette:
description: |
expanded color palette for clothing
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
type: string
enum: [ black, blue, green, gray, orange, purple, red, white, yellow, pink, brown, beige, khaki, multicolored, undefined ]
upper_body_attributes_base:
type: object
description: Upper body attributes.
properties:
headwear:
type: object
properties:
state:
type: integer
enum: [ 0, 1, 2 ]
description: Headwear state (0 - absent, 1 - present, 2 - undefined).
apparent_color:
allOf:
- $ref: "#/components/schemas/short_palette"
description: |
Headwear apparent color.
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
required: [ state ]
description: Headwear attributes.
sleeve:
type: object
properties:
length:
type: string
enum: [ short, long, undefined ]
description: Sleeve length.
required: [ length ]
description: Sleeve attributes.
upper_clothing:
type: object
properties:
colors:
type: array
items:
$ref: "#/components/schemas/expanded_palette"
description: |
Upper clothing color set.
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
required: [ colors ]
description: Upper clothing attibutes.
required: [ headwear, sleeve, upper_clothing ]
lower_garment_type:
type: string
enum: [ skirt, shorts, trousers, undefined ]
description: |
lower garment type.
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
lower_body_attributes:
type: object
description: Lower body attributes.
nullable: true
properties:
shoes:
type: object
properties:
apparent_color:
allOf:
- $ref: "#/components/schemas/short_palette"
description: |
Shoes apparent color.
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
required: [ apparent_color ]
description: shoes attributes.
lower_garment:
type: object
properties:
colors:
type: array
items:
$ref: "#/components/schemas/expanded_palette"
description: |
lower garment color set.
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
type:
$ref: "#/components/schemas/lower_garment_type"
required: [ colors ]
description: Lower garment attibutes.
required: [ lower_garment, shoes]
lower_body_attributes_not_nullable:
allOf:
- $ref: "#/components/schemas/lower_body_attributes"
nullable: false
body_basic_attributes:
type: object
description: Body basic attributes.
nullable: true
properties:
apparent_age:
type: integer
maximum: 100
minimum: 0
description: Apparent age.
apparent_gender:
type: integer
enum: [ 0, 1, 2 ]
description: Apparent gender (0 - female, 1 - male, 2 - undefined).
required: [ apparent_age, apparent_gender ]
body_basic_attributes_not_nullable:
allOf:
- $ref: "#/components/schemas/body_basic_attributes"
nullable: false
body_accessories:
type: object
description: Body accessories.
nullable: true
properties:
backpack:
type: object
properties:
state:
type: integer
enum: [ 0, 1, 2 ]
description: Backpack state (0 - absent, 1 - present, 2 - undefined).
description: Backpack attributes.
required: [state]
required: [ backpack ]
body_accessories_not_nullable:
allOf:
- $ref: "#/components/schemas/body_accessories"
nullable: false
Error:
type: object
properties:
error_code:
type: integer
description: Error code.
desc:
type: string
description: Short error description.
detail:
type: string
description: Error details.
link:
type: string
description: Link to the documentation website with the error description.
required:
- error_code
- detail
- desc
- link
example:
error_code: 11009
detail: Internal server error
desc: Internal server error
link: https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11009
image_error:
type: object
properties:
error:
$ref: '#/components/schemas/Error'
filename:
$ref: '#/components/schemas/filename'
required:
- error
- filename
example:
error:
error_code: 3001
desc: Failed to decode image data
detail: Failed to decode image image data
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-3001"
filename: n.jpg
estimated_upper_body_attributes:
allOf:
- $ref: "#/components/schemas/upper_body_attributes_base"
- properties:
headwear:
required: [ state, apparent_color ]
nullable: false
aggregate_estimations:
type: object
description: |
Aggregated attributes.
If one of **body** or **face** field is *null*, it means that either the corresponding aggregation is disabled
(see *aggregate_attributes*, *estimate_face_descriptor*, *estimate_body_descriptor* parameters),
or the attribute has been filtered.
properties:
body:
type: object
properties:
attributes:
description: Human body aggregate estimations.
type: object
properties:
descriptor:
$ref: '#/components/schemas/extracted_sdk_descriptor'
upper_body:
$ref: "#/components/schemas/estimated_upper_body_attributes"
lower_body:
$ref: "#/components/schemas/lower_body_attributes_not_nullable"
basic_attributes:
$ref: "#/components/schemas/body_basic_attributes_not_nullable"
accessories:
$ref: "#/components/schemas/body_accessories_not_nullable"
required: [attributes]
nullable: true
face:
type: object
properties:
attributes:
description: Face aggregate estimations.
type: object
properties:
descriptor:
$ref: '#/components/schemas/extracted_sdk_descriptor'
basic_attributes:
$ref: '#/components/schemas/basic_attributes'
mask:
$ref: '#/components/schemas/masks'
emotions:
$ref: '#/components/schemas/emotions'
liveness:
$ref: '#/components/schemas/liveness'
deepfake:
$ref: '#/components/schemas/deepfake'
required: [attributes]
nullable: true
required: [face, body]
people_coordinates:
type: array
description: People coordinates estimation
items:
type: array
items:
type: integer
minItems: 2
maxItems: 2
description: Human x, y coordinates
example: [64, 128]
example: [[64, 128], [491, 375]]
image_estimations:
type: object
description: Image estimations.
properties:
people:
type: object
properties:
count:
type: integer
description: People count estimation.
coordinates:
allOf:
- $ref: '#/components/schemas/people_coordinates'
nullable: true
sdk_response_json:
type: object
properties:
images_estimations:
type: array
items:
oneOf:
- $ref: '#/components/schemas/one_image_estimation'
- $ref: '#/components/schemas/image_error'
aggregate_estimations:
$ref: '#/components/schemas/aggregate_estimations'
required: [images_estimations]
sdk_response_msgpack:
type: object
properties:
images_estimations:
type: array
items:
oneOf:
- allOf:
- properties:
estimations:
items:
properties:
face:
properties:
detection:
properties:
warp:
format: binary
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
body:
properties:
detection:
properties:
warp:
format: binary
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
- $ref: '#/components/schemas/one_image_estimation'
- $ref: '#/components/schemas/image_error'
aggregate_estimations:
allOf:
- properties:
face:
properties:
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
body:
properties:
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
- $ref: '#/components/schemas/aggregate_estimations'
required: [ images_estimations ]
body_warp:
type: string
format: byte
description: Human body warped image in jpg format.
sdk_body_attributes:
description: Human body attributes.
type: object
properties:
descriptor:
$ref: '#/components/schemas/extracted_sdk_descriptor'
upper_body:
$ref: "#/components/schemas/estimated_upper_body_attributes"
lower_body:
$ref: "#/components/schemas/lower_body_attributes_not_nullable"
basic_attributes:
$ref: "#/components/schemas/body_basic_attributes_not_nullable"
accessories:
$ref: "#/components/schemas/body_accessories_not_nullable"
sdk_body_detections:
type: object
properties:
attributes:
$ref: '#/components/schemas/sdk_body_attributes'
rect:
allOf:
- $ref: '#/components/schemas/rect'
- description: Face detection bounding box.
warp:
$ref: '#/components/schemas/body_warp'
sdk_body_estimations:
description: Human body detection estimations.
type: object
properties:
detection:
$ref: '#/components/schemas/sdk_body_detections'
required: [detection]
nullable: true
exif:
description: |
select image EXIF tags.
See [CIPA DC-008-2016]( http://www.cipa.jp/std/documents/e/DC-008-Translation-2016-E.pdf) for details.
Tag to string conversions is handled by libEXIF.
type: object
properties:
make:
type: string
description: Make tag (IFD0 0x010f).
model:
type: string
description: Model tag (IFD0 0x0110).
gps:
type: object
description: GPS tag (IFD 0x8825).
properties:
latitude:
type: string
description: GPS latitude (IFD GPS 0x0002).
longitude:
type: string
description: GPS longitude (IFD GPS 0x0004).
required: [latitude, longitude]
artist:
type: string
description: Artist tag (IFD0 0x013b).
software:
type: string
description: Software tag (IFD0 0x0131).
flash:
type: string
description: Flash tag (IFD_EXIF 0x9209).
orientation:
type: integer
description: Orientation (IFD0 0x0112).
example:
software: "Adobe Photoshop CS5 Macintosh"
base_bounding_boxes:
type: array
description: Array with bounding boxes.
items:
$ref: '#/components/schemas/rect'
minItems: 1
json_with_base_64_image:
type: object
properties:
image:
type: string
description: Image in base64.
mimetype:
type: string
enum: [ "image/x-jpeg-base64", "image/x-png-base64", "image/x-bmp-base64", "image/x-tiff-base64",
"image/x-portable-pixmap-base64" ]
description: Image mimetype.
trusted_detections:
$ref: '#/components/schemas/trusted_detections'
face_bounding_boxes:
allOf:
- description: Array with face bounding boxes for image (now support only 1 bounding box).
- $ref: '#/components/schemas/base_bounding_boxes'
required: [ image, mimetype ]
sdk_json_with_base_64_image:
allOf:
- $ref: '#/components/schemas/json_with_base_64_image'
- properties:
body_bounding_boxes:
allOf:
- description: Array with body bounding boxes for image (now support only 1 bounding box).
- $ref: '#/components/schemas/base_bounding_boxes'
url_for_detection:
type: object
description: URL object for processing pipeline.
properties:
url:
type: string
format: uri-reference
description: Image url.
example: "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Abbey_Lee_2015.jpg/800px-Abbey_Lee_2015.jpg"
trusted_detections:
$ref: '#/components/schemas/trusted_detections'
face_bounding_boxes:
allOf:
- description: Array with face bounding boxes for image (now support only 1 bounding box for each image).
- $ref: '#/components/schemas/base_bounding_boxes'
required: [ url ]
sdk_json_request_body_urls:
type: object
properties:
urls:
type: array
items:
allOf:
- $ref: '#/components/schemas/url_for_detection'
- properties:
body_bounding_boxes:
allOf:
- description: Array with body bounding boxes for image (now support only 1 bounding box for each image).
- $ref: '#/components/schemas/base_bounding_boxes'
required: [ url ]
minItems: 1
maxItems: 8
required: [ urls ]
sample_id:
allOf:
- $ref: '#/components/schemas/uuid'
- nullable: true
- description: Sample ID. Will be null if not stored.
example: "b668c4a5-2191-476e-a261-3b4f9ce2e25e"
list_samples:
type: object
properties:
samples:
type: array
items:
allOf:
- $ref: '#/components/schemas/sample_id'
minItems: 1
maxItems: 8
description: |
List of sample IDs.
> **WARNING** The type of samples is determined by *`image_type`* / *`warped_image`* parameter.
The detector stage of image processing pipeline is triggered for non-warped images and skipped for warps.
example:
- "c724fea1-d1bb-44c5-af6d-9833d22f3eb7"
- "f78c6156-3946-4767-be65-4748f25aefd4"
required: [samples]
sdk_json_request_body:
oneOf:
- $ref: '#/components/schemas/sdk_json_with_base_64_image'
- $ref: '#/components/schemas/sdk_json_request_body_urls'
- $ref: '#/components/schemas/list_samples'
iso_json_request_body:
oneOf:
- $ref: '#/components/schemas/json_with_base_64_image'
- $ref: '#/components/schemas/url_for_detection'
- $ref: '#/components/schemas/list_samples'
image:
type: string
format: binary or byte
image_binary_for_multipart:
type: string
format: binary
description: |
Binary image.
Content-Disposition header must contain actual filename.
Filenames are used to differentiate images, they must be unique within the request.
This part must have valid Content-Type header (one of "image/jpeg", "image/png", "image/bmp", "image/tiff",
"image/x-portable-pixmap").
Trusted detections can be set by passing X-Luna-Trusted-Detections header (0 or 1).
Note that enabling trusted detections with detections from external sources may affect estimations in an unexpected way.
image_base64_for_multipart:
type: string
description: |
Image encoded in base64.
This part must have valid Content-Type header (one of "image/x-jpeg-base64", "image/x-png-base64",
"image/x-bmp-base64", "image/x-tiff-base64", "image/x-portable-pixmap-base64").
Trusted detections can be set by passing X-Luna-Trusted-Detections header (0 or 1).
Note that enabling trusted detections with detections from external sources may affect estimations in an unexpected way.
image_for_multipart:
oneOf:
- $ref: '#/components/schemas/image_binary_for_multipart'
- $ref: '#/components/schemas/image_base64_for_multipart'
image_list_for_multipart:
type: array
items:
$ref: '#/components/schemas/image_for_multipart'
minItems: 1
face_bounding_boxes:
type: array
description: Map with image filenames and arrays of face bounding boxes.
items:
type: object
properties:
filename:
type: string
description: Image filename. It must be the same as one of 'image' request part filename
face_bounding_boxes:
allOf:
- description: Array with face bounding boxes for image (now support only 1 bounding box).
- $ref: '#/components/schemas/base_bounding_boxes'
required: [filename, face_bounding_boxes]
minItems: 1
body_bounding_boxes:
type: array
description: Map with image filenames and arrays of body bounding boxes.
items:
type: object
properties:
filename:
type: string
description: Image filename. It must be the same as one of 'image' request part filename
body_bounding_boxes:
allOf:
- description: Array with body bounding boxes for image (now support only 1 bounding box).
- $ref: '#/components/schemas/base_bounding_boxes'
required: [filename, body_bounding_boxes]
minItems: 1
multipart_sdk_image_schema:
type: object
properties:
image:
$ref: '#/components/schemas/image_list_for_multipart'
face_bounding_boxes:
$ref: '#/components/schemas/face_bounding_boxes'
body_bounding_boxes:
$ref: '#/components/schemas/body_bounding_boxes'
required: [image]
multipart_iso_image_schema:
type: object
properties:
image:
$ref: '#/components/schemas/image_list_for_multipart'
face_bounding_boxes:
$ref: '#/components/schemas/face_bounding_boxes'
required: [ image ]
one_image_estimation:
type: object
properties:
filename:
$ref: '#/components/schemas/filename'
exif:
$ref: '#/components/schemas/exif'
estimations:
description: |
List of related detections, i.e. body & face related samples that refer to the one person.
If one of **body** or **face** field is *null*, it means that either the corresponding detection is disabled
(see *detect_face*, *detect_body* parameters), or the detection has been filtered.
Both **body** and **face** fields in a related detection can not be *null* at the same time.
type: array
items:
type: object
properties:
face:
$ref: '#/components/schemas/sdk_face_estimations'
body:
$ref: '#/components/schemas/sdk_body_estimations'
required: [face, body]
image_estimations:
$ref: '#/components/schemas/image_estimations'
required: [filename, estimations, image_estimations]
estimator_one_image_estimation:
type: object
properties:
filename:
$ref: '#/components/schemas/filename'
exif:
$ref: '#/components/schemas/exif'
estimations:
description: |
List of related detections, i.e. body & face related samples that refer to the one person.
If one of **body** or **face** field is *null*, it means that either the corresponding detection is disabled
(see *detect_face*, *detect_body* parameters), or the detection has been filtered.
Both **body** and **face** fields in a related detection can not be *null* at the same time.
type: array
items:
type: object
properties:
face:
$ref: '#/components/schemas/estimator_face_estimations'
body:
allOf:
- properties:
detection:
properties:
warp:
format: binary
description: Human body warped image in jpg format (Not returned if image type is body warp).
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
- $ref: '#/components/schemas/sdk_body_estimations'
required: [face, body]
image_estimations:
$ref: '#/components/schemas/image_estimations'
filtered_estimations:
$ref: '#/components/schemas/estimator_filtered_detections'
required: [filename, estimations, image_estimations, filtered_estimations]
face_warp:
type: string
format: byte
description: Face warped image in jpg format.
landmark:
type: array
items:
type: integer
description: |
Key point coordinates. First element is `x` coordinate, second is `y`.
minItems: 2
maxItems: 2
example: [12, 13]
landmarks68:
description: Array of 68 landmarks.
type: array
items:
$ref: '#/components/schemas/landmark'
minItems: 68
maxItems: 68
landmarks5:
type: array
items:
$ref: '#/components/schemas/landmark'
description: Array of 5 landmarks.
minItems: 5
maxItems: 5
example:
- - 23
- 72
- - 82
- 71
- - 42
- 114
- - 29
- 140
- - 79
- 138
quality:
description: |
Image quality. Estimation of image visual properties.
type: object
properties:
dark:
allOf:
- $ref: '#/components/schemas/number01'
- description: Low value means under-exposured face area (i.e. due to backlight, poor lighting, sensor underexposure).
light:
allOf:
- $ref: '#/components/schemas/number01'
- description: Low value means over-exposured face area (i.e. overbright lighting, sensor overexposure).
illumination:
allOf:
- $ref: '#/components/schemas/number01'
- description: Low value means illumination nonuniformity.
specularity:
allOf:
- $ref: '#/components/schemas/number01'
- description: Low value means low specularity.
blurriness:
allOf:
- $ref: '#/components/schemas/number01'
- description: Low value means blurred image (e.g. due to depth of field or motion blur). High value means sharp image.
required: [blurriness, specularity, illumination, light, dark]
example:
light: 0.87
dark: 0.13
illumination: 0.1
specularity: 0.1
blurriness: 0.2
glasses_estimations:
type: string
enum: [no_glasses, eyeglasses, sunglasses]
description: Glasses estimation.
glasses:
type: object
description: Estimated glasses.
properties:
glasses:
$ref: '#/components/schemas/glasses_estimations'
required: [glasses]
gaze_direction:
type: object
properties:
yaw:
type: number
description: Yaw angle in degrees.
pitch:
type: number
description: Pitch angle in degrees.
required: [yaw, pitch]
head_pose:
description: Head pose.
type: object
properties:
yaw:
type: number
description: Yaw angle in degrees.
pitch:
type: number
description: Pitch angle in degrees.
roll:
type: number
description: Roll angle in degrees.
required: [yaw, pitch, roll]
landmarks32:
description: Array of 32 landmarks.
type: array
items:
$ref: '#/components/schemas/landmark'
minItems: 32
maxItems: 32
eye_attributes:
description: Eye attributes.
type: object
properties:
state:
type: string
enum: [open, closed, occluded]
description: Eye state.
iris_landmarks:
allOf:
- $ref: '#/components/schemas/landmarks32'
- description: Iris landmarks.
required: [state, iris_landmarks]
eyes_attributes:
description: Eyes attributes.
type: object
properties:
left_eye:
allOf:
- $ref: '#/components/schemas/eye_attributes'
- description: Left eye attributes.
right_eye:
allOf:
- $ref: '#/components/schemas/eye_attributes'
- description: Right eye attributes.
required: [left_eye, right_eye]
mouth_attributes:
description: Mouth attributes.
type: object
properties:
score:
allOf:
- $ref: '#/components/schemas/number01'
description: Mouth detection confidence.
smile:
allOf:
- $ref: '#/components/schemas/number01'
description: Smile probability.
opened:
allOf:
- $ref: '#/components/schemas/number01'
description: Opened mouth probability.
occluded:
allOf:
- $ref: '#/components/schemas/number01'
description: occlusion probability.
required: [score, smile, occluded, opened]
sdk_face_attributes:
description: Face attributes.
type: object
properties:
mouth_attributes:
allOf:
- $ref: '#/components/schemas/mouth_attributes'
- description: Optional mouth attributes.
eyes_attributes:
$ref: '#/components/schemas/eyes_attributes'
emotions:
allOf:
- $ref: '#/components/schemas/emotions'
- description: Face emotions estimation.
head_pose:
allOf:
- $ref: '#/components/schemas/head_pose'
- description: Head pose estimation.
gaze:
allOf:
- $ref: '#/components/schemas/gaze_direction'
- description: Gaze direction estimation.
descriptor:
$ref: '#/components/schemas/extracted_sdk_descriptor'
basic_attributes:
$ref: '#/components/schemas/basic_attributes'
mask:
$ref: '#/components/schemas/masks'
glasses:
$ref: '#/components/schemas/glasses'
liveness:
$ref: '#/components/schemas/liveness'
deepfake:
$ref: '#/components/schemas/deepfake'
sdk_face_detections:
type: object
properties:
attributes:
allOf:
- $ref: '#/components/schemas/sdk_face_attributes'
- description: Face attributes estimation.
quality:
allOf:
- $ref: '#/components/schemas/quality'
- description: Image quality estimation for this face detection region.
rect:
allOf:
- $ref: '#/components/schemas/rect'
- description: Face detection bounding box.
landmarks5:
allOf:
- $ref: '#/components/schemas/landmarks5'
- description: Facial landmarks.
landmarks68:
allOf:
- $ref: '#/components/schemas/landmarks68'
- description: Facial landmarks.
warp:
$ref: '#/components/schemas/face_warp'
estimator_face_estimations:
description: Face detection estimations.
type: object
properties:
detection:
allOf:
- properties:
face_quality:
allOf:
- $ref: '#/components/schemas/face_quality_checks_estimations'
description: Face quality checks estimations.
warp:
format: binary
description: Face warped image in jpg format (Not returned if image type is face warp).
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
- $ref: '#/components/schemas/sdk_face_detections'
required: [detection]
nullable: true
sdk_face_estimations:
description: Face detection estimations.
type: object
properties:
detection:
$ref: '#/components/schemas/sdk_face_detections'
required: [detection]
nullable: true
check_result:
type: integer
enum: [ 0, 1 ]
description: Check result (1 - succeeded, 0 - failed).
check_image_format:
type: object
properties:
name:
type: string
enum: [ image_format ]
description: Unique estimation name.
object_value:
type: string
enum: [ JPEG, JPEG2000, PNG, BMP, TIFF, Portable pixmap ]
nullable: true
description: Original image format.
example: JPEG
threshold_value:
$ref: '#/components/schemas/image_format_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
description: Checking the image format for compliance with the standard.
face_check_name:
type: string
description: Unique estimation name.
face_check_result:
type: integer
enum: [ 0, 1 ]
description: Check result (1 - succeeded, 0 - failed).
face_object_value_score:
type: number
format: double
minimum: 0
maximum: 1
nullable: true
description: Estimated value as a number.
example: 0.15675428
face_threshold_value_number:
type: object
properties:
min:
type: number
nullable: true
description: Lower bound of the allowed range.
example: 0
max:
type: number
nullable: true
description: Upper bound of the allowed range.
example: 1
required: [ min, max ]
description: Allowed range of the estimation value.
face_check_element_score:
type: object
properties:
name:
$ref: '#/components/schemas/face_check_name'
object_value:
$ref: '#/components/schemas/face_object_value_score'
threshold_value:
$ref: '#/components/schemas/face_threshold_value_number'
result:
$ref: '#/components/schemas/face_check_result'
required: [ name, object_value, threshold_value, result ]
check_image_quality:
allOf:
- $ref: '#/components/schemas/face_check_element_score'
- properties:
name:
enum: [ blurriness_quality, specularity_quality, illumination_quality, dark_quality, light_quality ]
- description: Checking the image quality.
iso_object_value_string:
type: string
nullable: true
description: Estimated value as a string.
face_check_element_string:
type: object
properties:
name:
$ref: '#/components/schemas/face_check_name'
object_value:
$ref: '#/components/schemas/iso_object_value_string'
threshold_value:
type: array
items:
type: string
description: List of estimation values allowed.
result:
$ref: '#/components/schemas/face_check_result'
required: [ name, object_value, threshold_value, result ]
check_glasses_state:
allOf:
- $ref: '#/components/schemas/face_check_element_string'
- properties:
name:
enum: [ glasses ]
object_value:
type: string
enum: [ no_glasses, eyeglasses, sunglasses ]
example: eyeglasses
- description: Checking eyes state.
check_eyes_state:
allOf:
- $ref: '#/components/schemas/face_check_element_string'
- properties:
name:
enum: [ left_eye, right_eye ]
object_value:
type: string
enum: [ open, occluded, closed ]
example: occluded
- description: Checking eyes state.
face_object_value_number:
type: number
format: double
nullable: true
description: Estimated value as a number.
example: 0.15675428
face_check_element_number:
type: object
properties:
name:
$ref: '#/components/schemas/face_check_name'
object_value:
$ref: '#/components/schemas/face_object_value_number'
threshold_value:
$ref: '#/components/schemas/face_threshold_value_number'
result:
$ref: '#/components/schemas/face_check_result'
required: [ name, object_value, threshold_value, result ]
check_gaze_direction:
allOf:
- $ref: '#/components/schemas/face_check_element_number'
- properties:
name:
enum: [ gaze_pitch, gaze_yaw ]
- description: Checking the gaze direction angles.
check_mouth_state:
allOf:
- $ref: '#/components/schemas/face_check_element_score'
- properties:
name:
enum: [ mouth_open, mouth_smiling, mouth_occluded ]
- description: Checking the mouth state.
check_head_rotation:
allOf:
- $ref: '#/components/schemas/face_check_element_number'
- properties:
name:
enum: [ head_pitch, head_roll, head_yaw ]
- description: Checking the head rotation angles.
check_head_position:
allOf:
- $ref: '#/components/schemas/face_check_element_number'
- properties:
name:
enum: [ head_horizontal_center, head_vertical_center ]
- description: Checking the head position is normally centered in relation to the original image.
check_head_proportions:
allOf:
- $ref: '#/components/schemas/face_check_element_number'
- properties:
name:
enum: [ head_width, head_height ]
- description: Checking the head width & height are normal in relation to the size of the image.
check_eye_distance_threshold_value_number:
type: object
properties:
min:
type: number
description: Lower bound of the allowed range.
example: 0
max:
type: number
nullable: true
description: Upper bound of the allowed range.
example: 1
required: [ min, max ]
description: Allowed range of the estimation value.
check_eye_distance_element_number:
type: object
properties:
name:
$ref: '#/components/schemas/face_check_name'
object_value:
$ref: '#/components/schemas/face_object_value_number'
threshold_value:
$ref: '#/components/schemas/check_eye_distance_threshold_value_number'
result:
$ref: '#/components/schemas/face_check_result'
required: [ name, object_value, threshold_value, result ]
check_eye_distance:
allOf:
- $ref: '#/components/schemas/check_eye_distance_element_number'
- properties:
name:
enum: [ eye_distance ]
- description: Checking the distance between the eyes is sufficient.
face_threshold_value_int_positive:
type: object
properties:
min:
type: integer
minimum: 0
nullable: true
description: Lower bound of the allowed range.
example: 0
max:
type: integer
minimum: 0
nullable: true
description: Upper bound of the allowed range.
example: 1
required: [ min, max ]
description: Allowed range of the estimation value.
face_object_value_int_positive:
type: integer
minimum: 0
nullable: true
description: Estimated value as an integer.
example: 1
image_check_element_int_positive:
type: object
properties:
name:
$ref: '#/components/schemas/face_check_name'
object_value:
$ref: '#/components/schemas/face_object_value_int_positive'
threshold_value:
$ref: '#/components/schemas/face_threshold_value_int_positive'
result:
$ref: '#/components/schemas/face_check_result'
required: [ name, object_value, threshold_value, result ]
check_image_properties:
allOf:
- $ref: '#/components/schemas/image_check_element_int_positive'
- properties:
name:
enum: [ image_width, image_height, image_size ]
- description: Checking the image width & height (in pixels) and the image size (in bytes).
check_aspect_ratio:
allOf:
- $ref: '#/components/schemas/face_check_element_number'
- properties:
name:
enum: [ aspect_ratio ]
- description: Checking the image width to height aspect ratio.
face_threshold_value_int_positive_max_nullable:
type: object
properties:
min:
type: integer
minimum: 0
description: Lower bound of the allowed range.
example: 0
max:
type: integer
minimum: 0
nullable: true
description: Upper bound of the allowed range.
example: 1
required: [ min, max ]
description: Allowed range of the estimation value.
face_check_element_int_positive:
type: object
properties:
name:
$ref: '#/components/schemas/face_check_name'
object_value:
$ref: '#/components/schemas/face_object_value_int_positive'
threshold_value:
$ref: '#/components/schemas/face_threshold_value_int_positive_max_nullable'
result:
$ref: '#/components/schemas/face_check_result'
required: [ name, object_value, threshold_value, result ]
check_face_properties:
allOf:
- $ref: '#/components/schemas/face_check_element_int_positive'
- properties:
name:
enum: [ face_width, face_height, indent_left, indent_right, indent_upper, indent_lower ]
- description: Checking the face width, height and horizontal and vertical indents (in pixels).
eyebrows_threshold:
type: array
items:
$ref: '#/components/schemas/eyebrow'
description: List of values to consider successful.
minItems: 1
eyebrows_state:
description: Eyebrows state check.
type: object
properties:
name:
type: string
enum: ["eyebrows_state"]
description: Unique estimation name.
object_value:
allOf:
- $ref: '#/components/schemas/eyebrow'
- nullable: true
description: Eyebrows_state estimated value.
threshold_value:
$ref: '#/components/schemas/eyebrows_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
headwear_type:
description: Headwear_type check.
type: object
properties:
name:
type: string
enum: ["headwear_type"]
description: Unique estimation name.
object_value:
allOf:
- $ref: '#/components/schemas/headwear'
- nullable: true
description: |
Estimated value for headwear_type.
> **WARNING** This enum may be to expand. This field must be interpret as arbitrary string which can be equal
to one element from enum.
threshold_value:
$ref: '#/components/schemas/headwear_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
smile_properties:
type: object
properties:
name:
type: string
enum: ["smile_properties"]
description: Unique estimation name.
object_value:
allOf:
- $ref: '#/components/schemas/smile'
- nullable: true
description: Smile_properties estimated value.
threshold_value:
$ref: '#/components/schemas/smile_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
description: Smile_properties check.
bool_threshold:
type: integer
enum: [ 0, 1 ]
description: Value to consider successful.
natural_light:
type: object
properties:
name:
type: string
enum: ["natural_light"]
description: Unique estimation name.
object_value:
nullable: true
type: integer
enum: [ 0, 1 ]
description: Estimated value, 1 - detected face has a natural light, 0 - face lighting is not natural.
threshold_value:
$ref: '#/components/schemas/bool_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
description: Natural_light estimation.
radial_distortion:
description: Radial_distortion check.
type: object
properties:
name:
type: string
enum: ["radial_distortion"]
description: Unique estimation name.
object_value:
nullable: true
type: integer
enum: [ 0, 1 ]
description: Estimated value, 1 - the detection has a radial distortion, 0 - there is no radial distortion.
threshold_value:
$ref: '#/components/schemas/bool_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
red_eyes:
type: object
description: Red eyes check.
properties:
name:
type: string
enum: ["red_eyes"]
description: Unique estimation name.
object_value:
nullable: true
type: integer
enum: [ 0, 1 ]
description: Estimated value, 1 - the detection has a red-eye effect, 0 - there is no red-eye effect.
threshold_value:
$ref: '#/components/schemas/bool_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
face_color_type:
type: object
description: Face color type check.
properties:
name:
type: string
enum: ["face_color_type"]
description: Unique estimation name.
object_value:
allOf:
- $ref: '#/components/schemas/face_color'
- nullable: true
description: Face_color_type estimated value.
threshold_value:
$ref: '#/components/schemas/face_color_type_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
check_face_illumination_uniformity:
allOf:
- $ref: '#/components/schemas/face_check_element_score'
- properties:
name:
enum: [ illumination_uniformity, dynamic_range ]
- description: Checking the face uniformity and dynamic illumination.
background_uniformity:
allOf:
- $ref: '#/components/schemas/face_check_element_score'
- properties:
name:
enum: [background_uniformity]
- title: background_uniformity
description: Face detection background uniformity check.
background_lightness:
allOf:
- $ref: '#/components/schemas/face_check_element_score'
- properties:
name:
enum: [background_lightness]
- title: background_lightness
- description: Face detection background lightness check.
shoulders_position_status:
title: shoulders_position
description: Shoulders position status check.
type: object
properties:
name:
type: string
enum: ["shoulders_position"]
description: Unique estimation name.
object_value:
allOf:
- $ref: '#/components/schemas/shoulders_position'
- nullable: true
description: Eyebrows_state estimated value.
threshold_value:
$ref: '#/components/schemas/shoulders_position_threshold'
result:
$ref: '#/components/schemas/check_result'
required: [ name, object_value, threshold_value, result ]
face_quality_checks_reply:
type: array
description: Face quality container with all estimates.
items:
oneOf:
- $ref: '#/components/schemas/check_image_format'
- $ref: '#/components/schemas/check_image_quality'
- $ref: '#/components/schemas/check_glasses_state'
- $ref: '#/components/schemas/check_eyes_state'
- $ref: '#/components/schemas/check_gaze_direction'
- $ref: '#/components/schemas/check_mouth_state'
- $ref: '#/components/schemas/check_head_rotation'
- $ref: '#/components/schemas/check_head_position'
- $ref: '#/components/schemas/check_head_proportions'
- $ref: '#/components/schemas/check_eye_distance'
- $ref: '#/components/schemas/check_image_properties'
- $ref: '#/components/schemas/check_aspect_ratio'
- $ref: '#/components/schemas/check_face_properties'
- $ref: '#/components/schemas/eyebrows_state'
- $ref: '#/components/schemas/headwear_type'
- $ref: '#/components/schemas/smile_properties'
- $ref: '#/components/schemas/natural_light'
- $ref: '#/components/schemas/radial_distortion'
- $ref: '#/components/schemas/red_eyes'
- $ref: '#/components/schemas/face_color_type'
- $ref: '#/components/schemas/check_face_illumination_uniformity'
- $ref: '#/components/schemas/background_uniformity'
- $ref: '#/components/schemas/background_lightness'
- $ref: '#/components/schemas/shoulders_position_status'
minItems: 0
maxItems: 44
uniqueItems: true
example:
[
{
"name": image_format,
"object_value": JPEG,
"threshold_value": [ JPEG, JPEG2000, PNG ],
"result": 1
},
{
"name": illumination_quality,
"object_value": 0.6005162000656128,
"threshold_value": { "min": 0.3, "max": 1 },
"result": 1
},
{
"name": specularity_quality,
"object_value": 0.7662366628646851,
"threshold_value": { "min": 0.3, "max": 1 },
"result": 1
},
{
"name": blurriness_quality,
"object_value": 0.9429352283477783,
"threshold_value": { "min": 0.61, "max": 1 },
"result": 1
},
{
"name": dark_quality,
"object_value": 0.9020983576774597,
"threshold_value": { "min": 0.5, "max": 1 },
"result": 1
},
{
"name": light_quality,
"object_value": 0.7881984114646912,
"threshold_value": { "min": 0.57, "max": 1 },
"result": 1
},
{
"name": head_yaw,
"object_value": 2.818983316421509,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": head_pitch,
"object_value": 3.816443920135498,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": head_roll,
"object_value": 5.434040069580078,
"threshold_value": { "min": -8.0, "max": 8.0 },
"result": 1
},
{
"name": gaze_yaw,
"object_value": -3.773012399673462,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": gaze_pitch,
"object_value": 0.7140519022941589,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": mouth_smiling,
"object_value": 0.000290759839117527,
"threshold_value": { "min": 0, "max": 0.5 },
"result": 1
},
{
"name": mouth_occluded,
"object_value": 9.619363845558837e-05,
"threshold_value": { "min": 0, "max": 0.5 },
"result": 1
},
{
"name": mouth_open,
"object_value": 0.6226108074188232,
"threshold_value": { "min": 0, "max": 0.5 },
"result": 1
},
{
"name": glasses,
"object_value": no_glasses,
"threshold_value": [ no_glasses, eyeglasses ],
"result": 1
},
{
"name": left_eye,
"object_value": open,
"threshold_value": [ open ],
"result": 1
},
{
"name": right_eye,
"object_value": open,
"threshold_value": [ open ],
"result": 1
},
{
"name": head_horizontal_center,
"object_value": 0.51,
"threshold_value": { "min": 0.45, "max": 0.55 },
"result": 1
},
{
"name": head_vertical_center,
"object_value": 0.51,
"threshold_value": { "min": 0.3, "max": 0.5 },
"result": 1
},
{
"name": head_width,
"object_value": 0.61,
"threshold_value": { "min": 0.5, "max": 0.75 },
"result": 1
},
{
"name": head_height,
"object_value": 0.71,
"threshold_value": { "min": 0.6, "max": 0.9 },
"result": 1
},
{
"name":eye_distance,
"object_value": 110,
"threshold_value": { "min": 90, "max": null },
"result": 1
},
{
"name": image_width,
"object_value": 1000,
"threshold_value": { "min": 200, "max": 1100 },
"result": 1
},
{
"name": image_height,
"object_value": 2000,
"threshold_value": { "min": 200, "max": 1100 },
"result": 1
},
{
"name": aspect_ratio,
"object_value": 0.5,
"threshold_value": { "min": 0.1, "max": 1.0 },
"result": 1
},
{
"name": face_width,
"object_value": 500,
"threshold_value": { "min": 400, "max": 600 },
"result": 1
},
{
"name": face_height,
"object_value": 500,
"threshold_value": { "min": 400, "max": 600 },
"result": 1
},
{
"name": indent_left,
"object_value": 100,
"threshold_value": { "min": 10, "max": 500 },
"result": 1
},
{
"name": indent_right,
"object_value": 100,
"threshold_value": { "min": 10, "max": 500 },
"result": 1
},
{
"name": indent_upper,
"object_value": 100,
"threshold_value": { "min": 10, "max": 500 },
"result": 1
},
{
"name": indent_lower,
"object_value": 100,
"threshold_value": { "min": 10, "max": 500 },
"result": 1
},
{
"name": image_size,
"object_value": 100500,
"threshold_value": { "min": 10, "max": 100600 },
"result": 1
},
{
"name": eyebrows_state,
"object_value": "neutral",
"threshold_value": ["neutral"],
"result": 1
},
{
"name": smile_properties,
"object_value": "smile_lips",
"threshold_value": ["none"],
"result": 0
},
{
"name": headwear_type,
"object_value": "hat",
"threshold_value": ["none"],
"result": 0
},
{
"name": natural_light,
"object_value": 1,
"threshold_value": 1,
"result": 1
},
{
"name": radial_distortion,
"object_value": 0,
"threshold_value": 0,
"result": 1
},
{
"name": red_eyes,
"object_value": 0,
"threshold_value": 0,
"result": 1
},
{
"name": face_color_type,
"object_value": "color",
"threshold_value": ["color"],
"result": 1
},
{
"name": illumination_uniformity,
"object_value": 0.4305162000656128,
"threshold_value": { "min": 0.5, "max": 1.0 },
"result": 1
},
{
"name": dynamic_range,
"object_value": 0.7605162000656128,
"threshold_value": { "min": 0.5, "max": 1.0 },
"result": 1
},
{
"name": background_lightness,
"object_value": 0.5780888795852661,
"threshold_value": { "min": 0.2, "max": 1.0 },
"result": 1
},
{
"name": background_uniformity,
"object_value": 0.8874394297599792,
"threshold_value": { "min": 0.5, "max": 1.0 },
"result": 1
},
{
"name": shoulders_position,
"object_value": 'parallel',
"threshold_value": ['parallel'],
"result": 1
}
]
face_quality_checks_estimations:
type: object
description: Face quality estimations checks.
properties:
status:
type: integer
enum: [ 0, 1 ]
description: Check status for all estimates.
checks:
$ref: '#/components/schemas/face_quality_checks_reply'
required: [ status, checks ]
face_detection_base:
type: object
description: Face detection.
properties:
quality:
allOf:
- $ref: '#/components/schemas/quality'
- description: Image quality estimation for this face detection region.
rect:
allOf:
- $ref: '#/components/schemas/rect'
- description: Face detection bounding box.
landmarks5:
allOf:
- $ref: '#/components/schemas/landmarks5'
- description: Facial landmarks.
landmarks68:
allOf:
- $ref: '#/components/schemas/landmarks68'
- description: Facial landmarks.
face_quality:
allOf:
- $ref: '#/components/schemas/face_quality_checks_estimations'
description: Face quality checks estimations.
detection_filter_reason:
type: object
properties:
filter_name:
type: string
enum: ['pitch_threshold', 'roll_threshold', 'yaw_threshold', 'score_threshold', 'mask_states', 'liveness_states',
'image_format', 'illumination_quality', 'specularity_quality', 'blurriness_quality', 'dark_quality',
'light_quality', 'head_yaw', 'head_pitch', 'head_roll', 'gaze_yaw', 'gaze_pitch', 'mouth_smiling',
'mouth_occluded', 'mouth_open', 'glasses', 'left_eye', 'right_eye', 'head_horizontal_center',
'head_vertical_center', 'head_width', 'head_height', 'eye_distance', 'image_width', 'image_height',
'aspect_ratio', 'face_width', 'face_height', 'indent_left', 'indent_right', 'indent_upper',
'eyebrows_state', 'smile_properties', 'headwear_type', 'natural_light', 'radial_distortion', 'red_eyes',
'face_color_type', 'indent_lower', 'image_size', 'illumination_uniformity', 'dynamic_range',
'background_lightness', 'background_uniformity', 'shoulders_position', 'deepfake_states']
description: |
Filter name. For resource */detector* available values are: 'pitch_threshold', 'roll_threshold',
'yaw_threshold', For resources */handlers/{handler_id}/events* and */verifiers/{verifier_id}/verifications* all values are available.
object_value:
anyOf:
- type: integer
description: Estimate value.
- type: number
description: Estimate value.
- type: string
description: Estimate value.
threshold_value:
oneOf:
- type: number
description: Threshold value.
- type: array
items:
type: integer
minItems: 1
description: Threshold values.
- type: array
items:
type: string
minItems: 1
description: Threshold values.
- type: object
description: Threshold values.
properties:
min:
type: number
description: Minimum allowed value.
nullable: true
max:
type: number
description: Maximum allowed value.
nullable: true
required:
- filter_name
- object_value
- threshold_value
estimator_filtered_detections:
type: object
properties:
face_detections:
type: array
items:
type: object
description: Filtered detection.
properties:
filter_reasons:
type: array
items:
$ref: '#/components/schemas/detection_filter_reason'
minItems: 1
detection:
allOf:
- properties:
face_quality:
allOf:
- $ref: '#/components/schemas/face_quality_checks_estimations'
description: Face quality checks estimations.
warp:
format: binary
description: Face warped image in jpg format (Not returned if image type is face warp).
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
- $ref: '#/components/schemas/sdk_face_detections'
required: [face_detections]
sdk_images_estimations:
type: array
items:
oneOf:
- $ref: '#/components/schemas/one_image_estimation'
- $ref: '#/components/schemas/image_error'
estimator_images_estimations:
type: array
items:
oneOf:
- $ref: '#/components/schemas/estimator_one_image_estimation'
- $ref: '#/components/schemas/image_error'
estimator_response_msgpack:
type: object
properties:
images_estimations:
$ref: '#/components/schemas/estimator_images_estimations'
aggregate_estimations:
allOf:
- properties:
face:
properties:
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
body:
properties:
attributes:
properties:
descriptor:
properties:
sdk_descriptor:
format: binary
- $ref: '#/components/schemas/aggregate_estimations'
required: [images_estimations]
check_iso_response:
type: object
properties:
images:
description: Estimation results for provided images.
type: array
items:
type: object
properties:
filename:
$ref: '#/components/schemas/filename'
status:
type: integer
enum: [ 0, 1 ]
description: |
Status 1 means that the image was processed without errors. Status 0 means
that the image was processed with errors, information about error is contained in field `error`
error:
allOf:
- $ref: '#/components/schemas/Error'
- example:
error_code: 0
detail: Success
desc: Success
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-0"
description: Image error information.
exif:
$ref: '#/components/schemas/exif'
estimations:
description: |
List of related detections, i.e. face related samples that refer to the one person.
Can be empty if an error occurred during image processing or the image does not contain faces.
type: array
items:
type: object
properties:
face:
description: ISO face detection estimations.
type: object
properties:
detection:
type: object
description: ISO face detections.
properties:
iso:
$ref: '#/components/schemas/face_quality_checks_estimations'
rect:
allOf:
- $ref: '#/components/schemas/rect'
- description: Face detection bounding box.
required: [ iso ]
required: [ detection ]
required: [ face ]
required: [ filename, status, error, estimations ]
required: [ images ]
roi_int_coordinates:
type: integer
minimum: 0
default: 0
maximum: 65536
example: 3327
roi_float_percent:
type: number
format: float
minimum: 0
default: 0.0
maximum: 100.0
example: 87.4
roi_float_percent_size:
type: number
format: float
minimum: 0.00001
maximum: 100.0
example: 66.3
roi_abs:
type: object
properties:
x:
$ref: '#/components/schemas/roi_int_coordinates'
y:
$ref: '#/components/schemas/roi_int_coordinates'
width:
$ref: '#/components/schemas/roi_int_coordinates'
height:
$ref: '#/components/schemas/roi_int_coordinates'
mode:
type: string
enum: [abs]
example: "abs"
description: Coordinates and size are set in pixels.
required: [x, y, width, height, mode]
roi_percent:
type: object
properties:
x:
$ref: '#/components/schemas/roi_float_percent'
y:
$ref: '#/components/schemas/roi_float_percent'
width:
$ref: '#/components/schemas/roi_float_percent_size'
height:
$ref: '#/components/schemas/roi_float_percent_size'
mode:
type: string
enum: [ percent ]
example: "percent"
description: Coordinates and size are set in percentage.
required: [x, y, width, height, mode]
roi:
oneOf:
- $ref: '#/components/schemas/roi_abs'
- $ref: '#/components/schemas/roi_percent'
description: |
Region of interest on a frame. Boundaries of the area are described in `x`, `y` coordinates
of the top left point and `width`, `height` properties
**Region must not be any bigger than the original frame**
droi:
type: object
properties:
area:
type: array
items:
type: array
items:
type: object
properties:
x:
type: number
minimum: 0
y:
type: number
minimum: 0
required: [ x, y ]
minItems: 3
description: Poligon defined by a number of vertex coordinates
minItems: 1
mode:
type: string
enum: [ percent, abs ]
form:
type: string
enum: [ common ]
required: [ area, mode, form ]
description: |
Region of interest on a frame to apply filter for targets estimated.
Boundaries of the area are described by a combination of poligons defined by vertex coordinates.
aggregation_count:
type: integer
minimum: 0
example: 13
description: Max number of bestshots an attribute estimation is required to be based on.
probe_count:
type: integer
minimum: 0
default: 3
description: |
minimal number of some feature probe before analytics start event tracking. This parameter is intended to
prevent false positives from analytics.
rate:
type: object
properties:
period:
type: integer
minimum: 1
description: period length
unit:
type: string
enum:
- frame
- second
description: unit for a period calculation (every `n` seconds or every `n` frames)
required: [ unit, period ]
image_retain_policy:
type: object
properties:
mimetype:
type: string
enum:
- PNG
- JPEG
default: JPEG
description: image format
quality:
allOf:
- $ref: '#/components/schemas/number01'
- default: 1
description: image quality, on a scale from 0 (worst) to 1 (best). Has no effect on `PNG`
max_size:
type: integer
minimum: 0
default: 640
description: image max size, in pxl. Neither the width nor the height will exceed this value
description: Image retain configuration.
human_tracking_parameters:
type: object
properties:
roi:
$ref: '#/components/schemas/roi'
probe_count:
$ref: '#/components/schemas/probe_count'
image_retain_policy:
$ref: '#/components/schemas/image_retain_policy'
tracking:
type: object
properties:
detector_type:
type: string
enum: [ face, body, human ]
default: face
description: |
Human tracking detector type.
| detector type | tracking |
|---------------|----------|
| face | based on faces |
| body | based on bodies |
| human | based on both faces and bodies |
**Detector type must be compatible with selected targets**
body_reid:
allOf:
- $ref: '#/components/schemas/int01'
- default: 0
description: |
Whether to use body re-identification.
ReId feature is used to increase tracking accuracy by merging different tracks of one human.
Significantly increases estimation time.
description: Human tracking configuration.
face_samples:
type: object
properties:
count:
allOf:
- $ref: '#/components/schemas/aggregation_count'
default: 5
filters:
type: object
properties:
score:
allOf:
- $ref: '#/components/schemas/number01'
default: 0.6
description: Detection score threshold.
head_pitch:
allOf:
- $ref: '#/components/schemas/int090'
default: 15
description: Head pitch absolute angle threshold.
head_roll:
allOf:
- $ref: '#/components/schemas/int090'
default: 15
description: Head roll absolute angle threshold.
head_yaw:
allOf:
- $ref: '#/components/schemas/int090'
default: 15
description: Head yaw absolute angle threshold.
description: Face sample filters.
description: Configuration for choosing detections for face attributes estimation.
body_samples:
type: object
properties:
count:
allOf:
- $ref: '#/components/schemas/aggregation_count'
default: 5
filters:
type: object
properties:
score:
allOf:
- $ref: '#/components/schemas/number01'
default: 0.3
description: Detection score threshold.
description: Body sample filters.
description: Configuration for choosing detections for body attributes estimation.
people_count_parameters:
type: object
properties:
roi:
$ref: '#/components/schemas/roi'
droi:
$ref: '#/components/schemas/droi'
rate:
allOf:
- $ref: '#/components/schemas/rate'
- default:
unit: frame
period: 10
probe_count:
allOf:
- description: |
A number of consecutive `people count` estimations where people count more or equal
`people_count_threshold` before start `crowd event` generation. This parameter is intended to
prevent false positives from analytics.
- $ref: '#/components/schemas/probe_count'
image_retain_policy:
$ref: '#/components/schemas/image_retain_policy'
people_count_threshold:
type: integer
minimum: 0
default: 1
description: minimal human count for an analytics event generation
rescaled_people_coordinates:
type: array
description: People coordinates estimation
items:
type: array
items:
type: integer
minItems: 2
maxItems: 2
description: Human x, y coordinates rescaled to original frame
example: [[530, 201], [272, 191]]
people_count_analytics:
type: object
properties:
name:
type: string
enum:
- people_count
description: analytics name.
targets:
type: array
items:
type: string
enum:
- coordinates
- overview
default: []
description: |
Estimations to perform on the video.
- `overview` to receive aggregated frames overview,
- `coordinates` to add `people_coordinates` parameter to frames estimations.
- An empty list to perform base analysis.
parameters:
$ref: '#/components/schemas/people_count_parameters'
required: [ name ]
human_tracking_analytics:
type: object
properties:
name:
type: string
enum:
- people_count
- human_tracking
description: analytics name.
targets:
type: array
items:
type: string
minItems: 1
enum:
- face_detection
- landmarks5
- head_pose
- ags
- warp_quality
- emotions
- glasses
- eyes
- gaze
- mouth
- mask
- aggregated_liveness
- aggregated_deepfake
- aggregated_face_samples
- aggregated_face_thumbnail
- aggregated_face_basic_attributes
- aggregated_face_descriptor
- body_detection
- aggregated_body_samples
- aggregated_body_thumbnail
- aggregated_body_attributes
- aggregated_body_descriptor
- overview
default: [ face_detection ]
description: Estimations to perform on the video
parameters:
$ref: '#/components/schemas/human_tracking_parameters'
required: [ name ]
video_orientation:
type: object
description: Video orientation info.
nullable: false
properties:
angle:
type: integer
enum: [0, 90, 180, 270]
default: 0
description: angle to rotate the video before analytics
required: [ angle ]
video_pts:
type: object
description: Video timestamp settings.
nullable: false
properties:
start_time:
type: number
min: 0
default: null
nullable: true
description: custom video start time
required: [start_time]
decoder_error_handling:
type: object
description: Video decoder error handling parameters.
nullable: false
properties:
action:
type: string
enum: [ fail, stop]
default: fail
description: |
Error handling action.
| | behavior when a decoding error occurs |
|-|---------------------------------------|
| fail | stop processsing the video and fail the request |
| stop | stop processing the video and generate a response based on the part of the video processed before the error occurred |
required: [ action ]
video_analytics_params:
type: object
properties:
video:
type: object
properties:
url:
type: string
example: "https://example.com/"
orientation:
$ref: '#/components/schemas/video_orientation'
pts:
$ref: '#/components/schemas/video_pts'
error_handling:
$ref: '#/components/schemas/decoder_error_handling'
required: [ url ]
description: Video URL.
analytics:
type: array
items:
discriminator:
propertyName: name
mapping:
people_count: '#/components/schemas/people_count_analytics'
human_tracking: '#/components/schemas/human_tracking_analytics'
oneOf:
- $ref: '#/components/schemas/people_count_analytics'
- $ref: '#/components/schemas/human_tracking_analytics'
description: A list of parameters for comprehensive video analytics.
description: Video URL and a list of parameters required for video analysis.
required: [ video, analytics ]
plugin_status:
type: object
properties:
name:
type: string
description: Plugin name
running:
allOf:
- $ref: '#/components/schemas/int01'
- description: Whether plugin is running or not.
required: [name, running]
plugins:
type: object
properties:
plugins:
description: list of imported plugins
type: array
items:
$ref: '#/components/schemas/plugin_status'
required: [plugins]
example:
plugins:
- name: foo
running: 1
analytic_event_id:
allOf:
- $ref: '#/components/schemas/uuid'
- description: unique analytic event id
video_segment:
type: object
properties:
start_time_offset:
type: number
example: 0.123
description: start video segment offset(seconds)
end_time_offset:
type: number
example: 1.234
description: eng video segment offset(seconds)
required: [ start_time_offset, end_time_offset ]
time_offset:
type: number
example: 1.234
description: frame time offset(seconds)
people_count_frame_estimation:
type: object
properties:
people_count:
type: integer
minimum: 0
description: people count on a frame
time_offset:
$ref: '#/components/schemas/time_offset'
people_coordinates:
$ref: '#/components/schemas/people_coordinates'
required: [ people_count, time_offset ]
shot_info:
type: object
properties:
time_offset:
$ref: '#/components/schemas/time_offset'
image:
$ref: '#/components/schemas/shot'
required: [ time_offset, image ]
shot_info_with_coordinates:
type: object
properties:
time_offset:
$ref: '#/components/schemas/time_offset'
image:
$ref: '#/components/schemas/shot'
people_coordinates:
$ref: '#/components/schemas/rescaled_people_coordinates'
required: [ time_offset, image, people_coordinates ]
people_count_frame_aggregated:
type: object
properties:
event_id:
$ref: '#/components/schemas/analytic_event_id'
track_id:
allOf:
- $ref: '#/components/schemas/uuid'
description: Unique crowd track ID.
people_count:
type: integer
minimum: 0
description: max people count during event
video_segment:
allOf:
- $ref: '#/components/schemas/video_segment'
- description: video segment with event
frames_estimations:
type: array
items:
$ref: '#/components/schemas/people_count_frame_estimation'
overview:
allOf:
- $ref: '#/components/schemas/shot_info_with_coordinates'
- description: Shot from the video where max people count was detected
description: aggregated result for frames assigned to event
required: [ event_id, track_id, people_count, video_segment, frames_estimations ]
people_count_analytics_aggregated:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/people_count_frame_aggregated'
required: [events]
people_count_analytics_estimation:
type: object
properties:
crowd:
$ref: '#/components/schemas/people_count_analytics_aggregated'
required: [crowd]
people_count_analytics_result:
type: object
properties:
name:
type: string
description: video analytics name
enum:
- people_count
result:
$ref: '#/components/schemas/people_count_analytics_estimation'
required: [name, result]
people_count_analytics_result_msgpack:
allOf:
- properties:
result:
properties:
crowd:
properties:
events:
items:
properties:
overview:
properties:
image:
format: binary
- $ref: '#/components/schemas/people_count_analytics_result'
human_tracking_frame_estimation:
type: object
properties:
time_offset:
$ref: '#/components/schemas/time_offset'
estimated:
type: object
description: Track estimations.
properties:
face:
type: object
nullable: true
properties:
detection:
$ref: '#/components/schemas/human_track'
landmarks5:
$ref: '#/components/schemas/landmarks5'
head_pose:
$ref: '#/components/schemas/head_pose'
ags:
$ref: '#/components/schemas/number01'
warp_quality:
$ref: '#/components/schemas/quality'
emotions:
$ref: '#/components/schemas/emotions'
mask:
$ref: '#/components/schemas/masks_base'
glasses:
$ref: '#/components/schemas/glasses'
eyes:
$ref: '#/components/schemas/eyes_attributes'
gaze:
$ref: '#/components/schemas/gaze_direction'
mouth:
$ref: '#/components/schemas/mouth_attributes'
body:
type: object
nullable: true
properties:
detection:
$ref: '#/components/schemas/human_track'
required: [ face, body ]
required: [time_offset, estimated]
shot:
type: string
format: byte
description: Shot from a video
human_tracking_body_attributes:
description: Human body attributes.
type: object
properties:
upper_body:
$ref: "#/components/schemas/estimated_upper_body_attributes"
lower_body:
$ref: "#/components/schemas/lower_body_attributes_not_nullable"
basic_attributes:
$ref: "#/components/schemas/body_basic_attributes_not_nullable"
accessories:
$ref: "#/components/schemas/body_accessories_not_nullable"
human_tracking_descriptor:
description: SDK descriptor.
type: object
properties:
descriptor:
$ref: '#/components/schemas/sdk_descriptor'
score:
allOf:
- $ref: '#/components/schemas/number01'
- description: Descriptor score (always 1 for body descriptor).
version:
type: integer
description: Descriptor version.
human_track_aggregated:
type: object
description: aggregated analytics result on a track
properties:
event_id:
allOf:
- $ref: '#/components/schemas/uuid'
description: Unique analytics event ID.
track_id:
allOf:
- $ref: '#/components/schemas/uuid'
description: Unique human track ID.
video_segment:
allOf:
- $ref: '#/components/schemas/video_segment'
- description: video segment with event
frames_estimations:
type: array
description: track frames estimations
items:
$ref: '#/components/schemas/human_tracking_frame_estimation'
aggregated_estimations:
type: object
description: Human aggregated estimations.
properties:
face:
type: object
nullable: true
properties:
samples:
type: array
items:
$ref: '#/components/schemas/shot_info'
description: |
List of face warps from the video ranked by detection score and used for aggregated estimations
thumbnail:
allOf:
- $ref: '#/components/schemas/shot_info'
description: Face warp from the video with the best detection score
descriptor:
$ref: '#/components/schemas/human_tracking_descriptor'
basic_attributes:
$ref: "#/components/schemas/basic_attributes"
liveness:
$ref: "#/components/schemas/liveness"
deepfake:
$ref: "#/components/schemas/deepfake"
description: Face aggregated estimations.
body:
type: object
nullable: true
properties:
samples:
type: array
items:
$ref: '#/components/schemas/shot_info'
description: |
List of body warps from the video ranked by detection score and used for aggregated estimations
thumbnail:
allOf:
- $ref: '#/components/schemas/shot_info'
- description: Body warp from the video with the best detection score
descriptor:
$ref: '#/components/schemas/human_tracking_descriptor'
attributes:
allOf:
- $ref: "#/components/schemas/human_tracking_body_attributes"
- required: [basic_attributes, upper_body, lower_body, accessories]
description: Body aggregated estimations.
required: [body, face]
overview:
allOf:
- $ref: '#/components/schemas/shot_info'
- properties:
detection:
type: object
properties:
face:
allOf:
- $ref: '#/components/schemas/human_track'
nullable: true
body:
allOf:
- $ref: '#/components/schemas/human_track'
nullable: true
required: [ face, body ]
required: [ detection ]
description: Shot from the video with the best detection score
required: [ event_id, track_id, video_segment, frames_estimations, aggregated_estimations ]
track_status:
type: string
enum:
- started
- in_process
- finished
human_track:
type: object
properties:
bbox:
$ref: '#/components/schemas/rect'
score:
allOf:
- $ref: '#/components/schemas/number01'
- nullable: true
description: Detection confidence.
If `score` is `null`, there was actually no detection, but detector expected the object to be within the specified area.
description: Human detection.
required: [ bbox, score ]
human_tracking_aggregated_result:
type: object
properties:
tracking:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/human_track_aggregated'
track_count:
type: integer
minimum: 0
description: Track count.
required: [ events, track_count ]
required: [ tracking ]
human_tracking_analytics_result:
type: object
properties:
name:
type: string
description: video analytics name
enum:
- human_tracking
result:
$ref: '#/components/schemas/human_tracking_aggregated_result'
required: [name, result]
human_tracking_analytics_result_msgpack:
allOf:
- properties:
result:
properties:
tracking:
properties:
events:
items:
properties:
aggregated_estimations:
properties:
face:
properties:
samples:
items:
properties:
image:
format: binary
thumbnail:
properties:
image:
format: binary
descriptor:
properties:
descriptor:
format: binary
body:
properties:
samples:
items:
properties:
image:
format: binary
thumbnail:
properties:
image:
format: binary
descriptor:
properties:
descriptor:
format: binary
overview:
properties:
image:
format: binary
- $ref: '#/components/schemas/human_tracking_analytics_result'
video_analytics_results:
type: object
properties:
video_data:
type: object
description: video metadata
properties:
frames_count:
type: integer
minimum: 0
description: frames count
frame_rate:
type: number
description: frame rate
duration:
type: number
description: video duration
processed_parts:
type: array
description: processed video segments
items:
type: object
description: video segment
properties:
start_offset:
type: number
minimum: 0
description: start segment time offset
end_offset:
type: number
minimum: 0
description: end segment time offset
error_count:
type: integer
minimum: 0
description: number of decoding errors occurred
analytics:
type: array
items:
oneOf:
- $ref: '#/components/schemas/people_count_analytics_result'
- $ref: '#/components/schemas/human_tracking_analytics_result'
required: [video_data, analytics]
video_analytics_results_msgpack:
type: object
properties:
video_data:
type: object
description: video metadata
properties:
frames_count:
type: integer
minimum: 0
description: frames count
frame_rate:
type: number
description: frame rate
duration:
type: number
description: video duration
processed_parts:
type: array
description: processed video segments
items:
type: object
description: video segment
properties:
start_offset:
type: number
minimum: 0
description: start segment time offset
end_offset:
type: number
minimum: 0
description: end segment time offset
error_count:
type: integer
minimum: 0
description: number of decoding errors occurred
analytics:
type: array
items:
oneOf:
- $ref: '#/components/schemas/people_count_analytics_result_msgpack'
- $ref: '#/components/schemas/human_tracking_analytics_result_msgpack'
required: [video_data, analytics]
responses:
internal_server_error:
description: internal server error.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
license_problem:
description: license problem.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
example:
error_code: 11055
desc: Forbidden
detail: "License problem: 'License expired'"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
image_not_found:
description: Image not found.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
sample_not_found:
value:
error_code: 13003
desc: Object not found
detail: Image with ID '7acc35cf-a3b2-4f87-8d8b-5496a2782d37' not found
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-13003"
forbidden_resource_error:
description: Forbidden.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
resource_is_disabled:
value:
error_code: 12049
desc: Forbidden
detail: Resource is disabled.
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12049"
timeout_error:
description: Timeout error.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
request_timeout:
value:
error_code: 43009
desc: Timeout error
detail: "Failed to open video by url http://127.0.0.1:64434/vide3245o.mkv, status code: 504, Request timeout"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-43009"
connect_timeout:
value:
error_code: 43009
desc: Timeout error
detail: "Failed to open video by url http://127.0.0.1:64434/vide3245o.mkv, status code: 504, Connect timeout"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-43009"
sock_connect_timeout:
value:
error_code: 43009
desc: Timeout error
detail: "Failed to open video by url http://127.0.0.1:64434/vide3245o.mkv, status code: 504, Socket connect timeout"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-43009"
sock_read_timeout:
value:
error_code: 43009
desc: Timeout error
detail: "Failed to open video by url http://127.0.0.1:64434/vide3245o.mkv, status code: 504, Socket read timeout"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-43009"
paths:
/version:
get:
tags:
- version
summary: get version
description: get service version
operationId: getVersion
parameters:
- $ref: '#/components/parameters/luna_request_id'
responses:
200:
description: OK
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/version'
500:
$ref: '#/components/responses/internal_server_error'
/1/sdk:
post:
tags: [sdk]
summary: sdk resource
description: |
Detect faces, human bodies and estimate attributes on input images. Resource estimates only available attributes
for corresponding images. For example, if user sends warped face image and wants to calculate a body descriptor,
landmarks5 and basic attributes - only basic attributes will be estimated.
Order of input images is corresponding to order elements in output json. If an image is broken resource will
returns error for it image, other images will be correct processing.
> **WARNING**: this resource is unstable. A resource API can be changes in any release.
Notes for incoming data:
- face or body *bounding boxes* passed with face or body wapred image will be ignored.
operationId: sdk
parameters:
- $ref: '#/components/parameters/application_json_or_msgpack_accept'
- $ref: '#/components/parameters/luna_request_id'
- in: header
name: Content-Type
schema:
type: string
enum:
- application/json
- multipart/form-data
- image/jpeg
- image/png
- image/bmp
- image/x-portable-pixmap
- image/tiff
- image/x-jpeg-base64
- image/x-png-base64
- image/x-bmp-base64
- image/x-tiff-base64
- image/x-portable-pixmap-base64
- $ref: '#/components/parameters/image_type'
- $ref: '#/components/parameters/estimate_people_count'
- $ref: '#/components/parameters/people_count_coordinates'
- $ref: '#/components/parameters/multiface_policy'
- $ref: '#/components/parameters/detect_face'
- $ref: '#/components/parameters/detect_body'
- $ref: '#/components/parameters/estimate_head_pose'
- $ref: '#/components/parameters/estimate_emotions'
- $ref: '#/components/parameters/estimate_landmarks68'
- $ref: '#/components/parameters/estimate_landmarks5'
- $ref: '#/components/parameters/estimate_quality'
- $ref: '#/components/parameters/estimate_gaze'
- $ref: '#/components/parameters/estimate_eyes_attributes'
- $ref: '#/components/parameters/estimate_mouth_attributes'
- $ref: '#/components/parameters/estimate_mask'
- $ref: '#/components/parameters/estimate_glasses'
- $ref: '#/components/parameters/estimate_liveness'
- $ref: '#/components/parameters/estimate_deepfake'
- $ref: '#/components/parameters/estimate_face_descriptor'
- $ref: '#/components/parameters/estimate_basic_attributes'
- $ref: '#/components/parameters/estimate_body_descriptor'
- $ref: '#/components/parameters/estimate_upper_body'
- $ref: '#/components/parameters/estimate_lower_body'
- $ref: '#/components/parameters/estimate_accessories'
- $ref: '#/components/parameters/estimate_body_basic_attributes'
- $ref: '#/components/parameters/estimate_body_warp'
- $ref: '#/components/parameters/estimate_face_warp'
- $ref: '#/components/parameters/aggregate_attributes'
- $ref: '#/components/parameters/pitch_threshold'
- $ref: '#/components/parameters/roll_threshold'
- $ref: '#/components/parameters/yaw_threshold'
- $ref: '#/components/parameters/score_threshold'
- $ref: '#/components/parameters/mask_states'
- $ref: '#/components/parameters/liveness_states'
- $ref: '#/components/parameters/deepfake_states'
- $ref: '#/components/parameters/use_exif_info'
- $ref: '#/components/parameters/extract_exif'
requestBody:
content:
image/jpeg:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
image/bmp:
schema:
type: string
format: binary
image/x-portable-pixmap:
schema:
type: string
format: binary
image/tiff:
schema:
type: string
format: binary
image/x-jpeg-base64:
schema:
type: string
format: byte
image/x-png-base64:
schema:
type: string
format: byte
image/x-bmp-base64:
schema:
type: string
format: byte
image/x-tiff-base64:
schema:
type: string
format: byte
image/x-portable-pixmap-base64:
schema:
type: string
format: byte
multipart/form-data:
schema:
$ref: '#/components/schemas/multipart_sdk_image_schema'
encoding:
filename:
contentType: |
image/jpeg, image/png, image/bmp, image/x-portable-pixmap, image/tiff, image/x-jpeg-base64,
image/x-png-base64, image/x-bmp-base64, image/x-tiff-base64, image/x-portable-pixmap-base64
application/json:
schema:
$ref: '#/components/schemas/sdk_json_request_body'
required: true
responses:
200:
description: Estimated.
headers:
Content-Type:
$ref: '#/components/headers/application_json_or_msgpack_content'
content:
application/json:
schema:
$ref: '#/components/schemas/sdk_response_json'
examples:
all:
value:
images_estimations:
- filename: raw image
exif:
make: Apple
model: iPhone 11
gps:
latitude: 55.0, 45.0, 18.29
longitude: 37.0, 39.0, 16.32
software: 13.6.1
orientation: 6
estimations:
- face:
detection:
rect:
x: 71
'y': 45
width: 134
height: 178
landmarks5: [ [ 25, 25 ], [ 83, 83 ], [ 47, 47 ], [ 33, 33 ], [ 82, 82 ] ]
landmarks68: [ [ 1, 1 ], [ 1, 1 ], [ 4, 4 ], [ 8, 8 ], [ 14, 14 ], [ 23, 23 ], [ 33, 33 ], [ 43, 43 ], [ 60, 60 ], [ 78, 78 ], [ 96, 96 ], [ 112, 112 ], [ 124, 124 ], [ 132, 132 ], [ 135, 135 ], [ 137, 137 ], [ 138, 138 ], [ 1, 1 ], [ 8, 8 ], [ 17, 17 ], [ 26, 26 ], [ 35, 35 ], [ 59, 59 ], [ 73, 73 ], [ 86, 86 ], [ 100, 100 ], [ 113, 113 ], [ 47, 47 ], [ 45, 45 ], [ 44, 44 ], [ 43, 43 ], [ 37, 37 ], [ 42, 42 ], [ 47, 47 ], [ 54, 54 ], [ 61, 61 ], [ 14, 14 ], [ 20, 20 ], [ 29, 29 ], [ 36, 36 ], [ 28, 28 ], [ 19, 19 ], [ 69, 69 ], [ 77, 77 ], [ 86, 86 ], [ 95, 95 ], [ 88, 88 ], [ 78, 78 ], [ 33, 33 ], [ 38, 38 ], [ 45, 45 ], [ 50, 50 ], [ 57, 57 ], [ 69, 69 ], [ 82, 82 ], [ 72, 72 ], [ 60, 60 ], [ 52, 52 ], [ 45, 45 ], [ 38, 38 ], [ 36, 36 ], [ 46, 46 ], [ 51, 51 ], [ 58, 58 ], [ 77, 77 ], [ 58, 58 ], [ 51, 51 ], [ 45, 45 ] ]
attributes:
eyes_attributes:
left_eye:
iris_landmarks: [ [ 92, 92 ], [ 92, 92 ], [ 93, 93 ], [ 93, 93 ], [ 94, 94 ], [ 95, 95 ], [ 96, 96 ], [ 98, 98 ], [ 99, 99 ], [ 100, 100 ], [ 101, 101 ], [ 102, 102 ], [ 103, 103 ], [ 104, 104 ], [ 105, 105 ], [ 105, 105 ], [ 105, 105 ], [ 105, 105 ], [ 105, 105 ], [ 104, 104 ], [ 103, 103 ], [ 102, 102 ], [ 101, 101 ], [ 100, 100 ], [ 99, 99 ], [ 98, 98 ], [ 97, 97 ], [ 96, 96 ], [ 95, 95 ], [ 94, 94 ], [ 93, 93 ], [ 93, 93 ] ]
state: open
right_eye:
iris_landmarks: [ [ 152, 152 ], [ 153, 153 ], [ 153, 153 ], [ 154, 154 ], [ 154, 154 ], [ 155, 155 ], [ 157, 157 ], [ 158, 158 ], [ 159, 159 ], [ 161, 161 ], [ 162, 162 ], [ 163, 163 ], [ 164, 164 ], [ 165, 165 ], [ 166, 166 ], [ 166, 166 ], [ 166, 166 ], [ 166, 166 ], [ 166, 166 ], [ 165, 165 ], [ 164, 164 ], [ 163, 163 ], [ 162, 162 ], [ 161, 161 ], [ 159, 159 ], [ 158, 158 ], [ 158, 158 ], [ 157, 157 ], [ 156, 156 ], [ 154, 154 ], [ 154, 154 ], [ 153, 153 ] ]
state: open
head_pose:
pitch: 12.7464532852
roll: -2.9892115593
yaw: 17.7173442841
gaze:
yaw: -5.9912848473
pitch: -10.2646684647
emotions:
predominant_emotion: neutral
estimations:
anger: 8.682e-7
disgust: 1.0670000000000001e-7
fear: 4.386e-7
happiness: 0.45658952
sadness: 4.951e-7
surprise: 0.0000029291
neutral: 0.543405652
mask:
estimations:
medical_mask: 0.7108324766
missing: 0.0700698048
occluded: 0.2190976739
predominant_mask: "medical_mask"
liveness:
estimations:
quality: 0.9984464645385742
score: 0.9872102737426758
prediction: "real"
deepfake:
score: 0.525161345345
prediction: "real"
glasses:
glasses: "no_glasses"
mouth_attributes:
score: 1.0
opened: 0.3884400725
occluded: 1.4000000000000001e-9
smile: 0.6115599275
basic_attributes:
ethnicities:
predominant_ethnicity: caucasian
estimations:
asian: 0.0000025556
indian: 6.417e-7
caucasian: 0.9999949932000001
african_american: 0.0000017718000000000001
age: 24
gender: 0
descriptor:
sdk_descriptor: ZHAAADgAAAB0k4SAf...IB6gHyAgH19fQ==
score: 0.7854047418000001
quality:
blurriness: 0.9769582748000001
dark: 0.9542820454000001
illumination: 0.8248310089
specularity: 0.8472354412
light: 0.8179533482
warp: /9j/4AAQSkZJRgABAQAAAQABA..C4gb+KneZD/erEHWn0/asOTzP/9k=
- body:
detection:
rect:
x: 32
'y': 4
width: 224
height: 255
warp: /9j/4AAQSkZJRgABAQAAAQABAA...CX6kdapTi1qS00f/Z
attributes:
descriptor:
sdk_descriptor: ZHAAAGUAAAC....AfX9
score: 1
basic_attributes:
apparent_age: 0
apparent_gender: 0
upper_body:
headwear:
state: 0
sleeve:
length: "short"
upper_clothing:
colors: [ "white", "black" ]
accessories:
backpack:
state: 0
image_estimations:
people:
count: 1
with_error:
value:
images_estimations:
- error:
error_code: 100033
desc: Unsupported image type
detail: Unsupported type
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-100033"
filename: bad_image.jpg
- filename: Claudia_Schiffer_warp.jpg
estimations:
- face:
detection:
rect:
x: 71
'y': 45
width: 134
height: 178
with_aggregation:
value:
images_estimations:
- filename: image1.jpg
estimations:
- body:
detection:
rect:
x: 118
'y': -17
width: 410
height: 627
- filename: image2.jpg
estimations:
- body:
detection:
rect:
x: 7
'y': -60
width: 1682
height: 2523
aggregate_estimations:
body:
attributes:
descriptor:
sdk_descriptor: ZHAAAGUAAACBeX1w==
score: 0
application/msgpack:
schema:
$ref: '#/components/schemas/sdk_response_msgpack'
400:
description: Bad request.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
bad_query:
value:
error_code: 12012
desc: Bad/incomplete input data
detail: Bad query parameters 'estimate_eyes_attributes'
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12012"
bad_content_type:
value:
error_code: 12017
desc: Bad/incomplete input data
detail: Bad content type
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12017"
bad_content_type_download_image:
value:
error_code: 11028
desc: Bad/incomplete input data
detail: 'Bad content type of image ''https://www.google.ru'''
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11028"
bad_content_type_multipart:
value:
error_code: 11029
desc: Bad/incomplete input data
detail: Bad content type of image in multipart body
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11029"
failed_load_image:
value:
error_code: 11027
desc: External request failed
detail: 'Failed to download image by url ''https://www.gooogle.ru'''
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11027"
403:
description: Access to this resource on the server is denied.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
one_rect_available:
value:
error_code: 11045
desc: Forbidden
detail: Only one detection rect for each image available at the moment
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11045"
fsdk_liveness_disabled:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: Liveness v.2 feature disabled"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
liveness_disabled:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: Liveness feature disabled"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
licence_expired:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: License expired"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
404:
$ref: '#/components/responses/image_not_found'
500:
$ref: '#/components/responses/internal_server_error'
/1/videosdk:
post:
tags: [videosdk]
summary: video analytics
description: Request for video analysis based on the specified analytics parameters eg facial estimations.
operationId: videosdk
parameters:
- $ref: '#/components/parameters/luna_request_id'
- in: header
name: Content-Type
schema:
type: string
enum:
- application/json
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/video_analytics_params'
required: true
responses:
200:
description: Estimated.
headers:
Content-Type:
$ref: '#/components/headers/application_json_or_msgpack_content'
content:
application/json:
schema:
$ref: '#/components/schemas/video_analytics_results'
application/msgpack:
schema:
$ref: '#/components/schemas/video_analytics_results_msgpack'
400:
description: Bad request.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
bad_content_type:
value:
error_code: 12017
desc: Bad/incomplete input data
detail: Bad content type
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12017"
403:
description: Access to this resource on the server is denied.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
one_rect_available:
value:
error_code: 11045
desc: Forbidden
detail: Only one detection rect for each image available at the moment
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11045"
fsdk_liveness_disabled:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: Liveness v.2 feature disabled"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
liveness_disabled:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: Liveness feature disabled"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
licence_expired:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: License expired"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
500:
$ref: '#/components/responses/internal_server_error'
504:
$ref: '#/components/responses/timeout_error'
/1/iso:
post:
tags: [iso]
summary: iso resource
description: |
The resource performs a visual examination of frontal type images based on ISO/IEC 19794-5 standard.
This means that the images that have passed the validation are standardized and attributes of the person's face meet the established requirements.
For more information on the requirements for face attributes in the image, see [ISO/IEC 19794-5 Clauses 7-10](https://www.iso.org/obp/ui/#iso:std:iso-iec:19794:-5:en).
The response contains the result of the check for each estimator.
The image check is considered successful if the set of these results complies with the ISO standard.
The order of input images is corresponding to elements order in response. If an image is broken, the resource will
return an error for this image and other images will be correctly processed.
Notes for incoming data:
- face or body *bounding boxes* passed with face or body wapred image will be ignored.
operationId: iso
parameters:
- $ref: '#/components/parameters/application_json_or_msgpack_accept'
- $ref: '#/components/parameters/luna_request_id'
- in: header
name: Content-Type
schema:
type: string
enum:
- application/json
- multipart/form-data
- image/jpeg
- image/png
- image/bmp
- image/x-portable-pixmap
- image/tiff
- image/x-jpeg-base64
- image/x-png-base64
- image/x-bmp-base64
- image/x-tiff-base64
- image/x-portable-pixmap-base64
- $ref: '#/components/parameters/raw_or_face_image_type'
- $ref: '#/components/parameters/iso_multiface_policy'
- $ref: '#/components/parameters/extract_exif'
requestBody:
content:
image/jpeg:
schema:
type: string
format: binary
image/png:
schema:
type: string
format: binary
image/bmp:
schema:
type: string
format: binary
image/x-portable-pixmap:
schema:
type: string
format: binary
image/tiff:
schema:
type: string
format: binary
image/x-jpeg-base64:
schema:
type: string
format: byte
image/x-png-base64:
schema:
type: string
format: byte
image/x-bmp-base64:
schema:
type: string
format: byte
image/x-tiff-base64:
schema:
type: string
format: byte
image/x-portable-pixmap-base64:
schema:
type: string
format: byte
multipart/form-data:
schema:
$ref: '#/components/schemas/multipart_iso_image_schema'
encoding:
filename:
contentType: |
image/jpeg, image/png, image/bmp, image/x-portable-pixmap, image/tiff, image/x-jpeg-base64,
image/x-png-base64, image/x-bmp-base64, image/x-tiff-base64, image/x-portable-pixmap-base64
application/json:
schema:
$ref: '#/components/schemas/iso_json_request_body'
required: true
responses:
200:
description: Estimated.
headers:
Content-Type:
$ref: '#/components/headers/application_json_or_msgpack_content'
content:
application/json:
schema:
$ref: '#/components/schemas/check_iso_response'
example:
{
"images": [
{
"filename": "raw image",
"status": 1,
"error": {
"error_code": 0,
"desc": "Success",
"detail": "Success",
"link": "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-0"
},
"estimations": [
{
"face": {
"detection": {
"iso": {
"status": 1,
"checks": [
{
"name": image_format,
"object_value": JPEG,
"threshold_value": [ JPEG, JPEG2000, PNG ],
"result": 1
},
{
"name": illumination_quality,
"object_value": 0.6005162000656128,
"threshold_value": { "min": 0.3, "max": 1 },
"result": 1
},
{
"name": specularity_quality,
"object_value": 0.7662366628646851,
"threshold_value": { "min": 0.3, "max": 1 },
"result": 1
},
{
"name": blurriness_quality,
"object_value": 0.9429352283477783,
"threshold_value": { "min": 0.61, "max": 1 },
"result": 1
},
{
"name": dark_quality,
"object_value": 0.9020983576774597,
"threshold_value": { "min": 0.5, "max": 1 },
"result": 1
},
{
"name": light_quality,
"object_value": 0.7881984114646912,
"threshold_value": { "min": 0.57, "max": 1 },
"result": 1
},
{
"name": head_yaw,
"object_value": 2.818983316421509,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": head_pitch,
"object_value": 3.816443920135498,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": head_roll,
"object_value": 5.434040069580078,
"threshold_value": { "min": -8.0, "max": 8.0 },
"result": 1
},
{
"name": gaze_yaw,
"object_value": -3.773012399673462,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": gaze_pitch,
"object_value": 0.7140519022941589,
"threshold_value": { "min": -5.0, "max": 5.0 },
"result": 1
},
{
"name": mouth_smiling,
"object_value": 0.000290759839117527,
"threshold_value": { "min": 0, "max": 0.5 },
"result": 1
},
{
"name": mouth_occluded,
"object_value": 9.619363845558837e-05,
"threshold_value": { "min": 0, "max": 0.5 },
"result": 1
},
{
"name": mouth_open,
"object_value": 0.6226108074188232,
"threshold_value": { "min": 0, "max": 0.5 },
"result": 1
},
{
"name": glasses,
"object_value": no_glasses,
"threshold_value": [ no_glasses, eyeglasses ],
"result": 1
},
{
"name": left_eye,
"object_value": open,
"threshold_value": [ open ],
"result": 1
},
{
"name": right_eye,
"object_value": open,
"threshold_value": [ open ],
"result": 1
},
{
"name": head_horizontal_center,
"object_value": 0.51,
"threshold_value": { "min": 0.45, "max": 0.55 },
"result": 1
},
{
"name": head_vertical_center,
"object_value": 0.51,
"threshold_value": { "min": 0.3, "max": 0.5 },
"result": 1
},
{
"name": head_width,
"object_value": 0.61,
"threshold_value": { "min": 0.5, "max": 0.75 },
"result": 1
},
{
"name": head_height,
"object_value": 0.71,
"threshold_value": { "min": 0.6, "max": 0.9 },
"result": 1
},
{
"name":eye_distance,
"object_value": 110,
"threshold_value": { "min": 90, "max": null },
"result": 1
},
{
"name": background_lightness,
"object_value": 0.5780888795852661,
"threshold_value": { "min": 0.2, "max": 1.0 },
"result": 1
},
{
"name": background_uniformity,
"object_value": 0.8874394297599792,
"threshold_value": { "min": 0.5, "max": 1.0 },
"result": 1
},
{
"name": shoulders_position,
"object_value": 'parallel',
"threshold_value": [ 'parallel' ],
"result": 1
}
]
},
"rect": {
"x": 108,
"y": 58,
"width": 113,
"height": 165
}
}
}
}
]
}
]
}
application/msgpack:
schema:
$ref: '#/components/schemas/check_iso_response'
400:
description: Bad request.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
bad_query:
value:
error_code: 12012
desc: Bad/incomplete input data
detail: Bad query parameters 'multiface_policy'
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12012"
bad_content_type:
value:
error_code: 12017
desc: Bad/incomplete input data
detail: Bad content type
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12017"
bad_content_type_download_image:
value:
error_code: 11028
desc: Bad/incomplete input data
detail: 'Bad content type of image ''https://www.google.ru'''
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11028"
bad_content_type_multipart:
value:
error_code: 11029
desc: Bad/incomplete input data
detail: Bad content type of image in multipart body
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11029"
failed_load_image:
value:
error_code: 11027
desc: External request failed
detail: 'Failed to download image by url ''https://www.gooogle.ru'''
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11027"
403:
description: Access to this resource on the server is denied.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
one_rect_available:
value:
error_code: 11045
desc: Forbidden
detail: Only one detection rect for each image available at the moment
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11045"
licence_expired:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: License expired"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
license_iso_disabled:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: ISO feature is disabled"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
404:
$ref: '#/components/responses/image_not_found'
500:
$ref: '#/components/responses/internal_server_error'
/1/estimator:
post:
tags: [estimator]
summary: estimator resource
description: estimator
operationId: estimator
parameters:
- $ref: '#/components/parameters/luna_request_id'
- in: header
name: Content-Type
schema:
type: string
enum:
- application/msgpack
requestBody:
content:
application/msgpack:
schema:
$ref: '#/components/schemas/estimator_request_body'
required: true
responses:
200:
description: Estimated.
content:
application/msgpack:
schema:
$ref: '#/components/schemas/estimator_response_msgpack'
all:
value:
images_estimations:
- filename: raw image
exif:
make: Apple
model: iPhone 11
gps:
latitude: 55.0, 45.0, 18.29
longitude: 37.0, 39.0, 16.32
software: 13.6.1
orientation: 6
estimations:
- face:
detection:
rect:
x: 71
'y': 45
width: 134
height: 178
landmarks5: [ [ 25, 25 ], [ 83, 83 ], [ 47, 47 ], [ 33, 33 ], [ 82, 82 ] ]
landmarks68: [ [ 1, 1 ], [ 1, 1 ], [ 4, 4 ], [ 8, 8 ], [ 14, 14 ], [ 23, 23 ], [ 33, 33 ], [ 43, 43 ], [ 60, 60 ], [ 78, 78 ], [ 96, 96 ], [ 112, 112 ], [ 124, 124 ], [ 132, 132 ], [ 135, 135 ], [ 137, 137 ], [ 138, 138 ], [ 1, 1 ], [ 8, 8 ], [ 17, 17 ], [ 26, 26 ], [ 35, 35 ], [ 59, 59 ], [ 73, 73 ], [ 86, 86 ], [ 100, 100 ], [ 113, 113 ], [ 47, 47 ], [ 45, 45 ], [ 44, 44 ], [ 43, 43 ], [ 37, 37 ], [ 42, 42 ], [ 47, 47 ], [ 54, 54 ], [ 61, 61 ], [ 14, 14 ], [ 20, 20 ], [ 29, 29 ], [ 36, 36 ], [ 28, 28 ], [ 19, 19 ], [ 69, 69 ], [ 77, 77 ], [ 86, 86 ], [ 95, 95 ], [ 88, 88 ], [ 78, 78 ], [ 33, 33 ], [ 38, 38 ], [ 45, 45 ], [ 50, 50 ], [ 57, 57 ], [ 69, 69 ], [ 82, 82 ], [ 72, 72 ], [ 60, 60 ], [ 52, 52 ], [ 45, 45 ], [ 38, 38 ], [ 36, 36 ], [ 46, 46 ], [ 51, 51 ], [ 58, 58 ], [ 77, 77 ], [ 58, 58 ], [ 51, 51 ], [ 45, 45 ] ]
attributes:
eyes_attributes:
left_eye:
iris_landmarks: [ [ 92, 92 ], [ 92, 92 ], [ 93, 93 ], [ 93, 93 ], [ 94, 94 ], [ 95, 95 ], [ 96, 96 ], [ 98, 98 ], [ 99, 99 ], [ 100, 100 ], [ 101, 101 ], [ 102, 102 ], [ 103, 103 ], [ 104, 104 ], [ 105, 105 ], [ 105, 105 ], [ 105, 105 ], [ 105, 105 ], [ 105, 105 ], [ 104, 104 ], [ 103, 103 ], [ 102, 102 ], [ 101, 101 ], [ 100, 100 ], [ 99, 99 ], [ 98, 98 ], [ 97, 97 ], [ 96, 96 ], [ 95, 95 ], [ 94, 94 ], [ 93, 93 ], [ 93, 93 ] ]
state: open
right_eye:
iris_landmarks: [ [ 152, 152 ], [ 153, 153 ], [ 153, 153 ], [ 154, 154 ], [ 154, 154 ], [ 155, 155 ], [ 157, 157 ], [ 158, 158 ], [ 159, 159 ], [ 161, 161 ], [ 162, 162 ], [ 163, 163 ], [ 164, 164 ], [ 165, 165 ], [ 166, 166 ], [ 166, 166 ], [ 166, 166 ], [ 166, 166 ], [ 166, 166 ], [ 165, 165 ], [ 164, 164 ], [ 163, 163 ], [ 162, 162 ], [ 161, 161 ], [ 159, 159 ], [ 158, 158 ], [ 158, 158 ], [ 157, 157 ], [ 156, 156 ], [ 154, 154 ], [ 154, 154 ], [ 153, 153 ] ]
state: open
head_pose:
pitch: 12.7464532852
roll: -2.9892115593
yaw: 17.7173442841
gaze:
yaw: -5.9912848473
pitch: -10.2646684647
emotions:
predominant_emotion: neutral
estimations:
anger: 8.682e-7
disgust: 1.0670000000000001e-7
fear: 4.386e-7
happiness: 0.45658952
sadness: 4.951e-7
surprise: 0.0000029291
neutral: 0.543405652
mask:
estimations:
medical_mask: 0.7108324766
missing: 0.0700698048
occluded: 0.2190976739
predominant_mask: "medical_mask"
liveness:
estimations:
quality: 0.9984464645385742
score: 0.9872102737426758
prediction: "real"
deepfake:
score: 0.7265425622
prediction: "real"
glasses:
glasses: "no_glasses"
mouth_attributes:
score: 1.0
opened: 0.3884400725
occluded: 1.4000000000000001e-9
smile: 0.6115599275
basic_attributes:
ethnicities:
predominant_ethnicity: caucasian
estimations:
asian: 0.0000025556
indian: 6.417e-7
caucasian: 0.9999949932000001
african_american: 0.0000017718000000000001
age: 24
gender: 0
descriptor:
sdk_descriptor: ZHAAADgAAAB0k4SAf...IB6gHyAgH19fQ==
score: 0.7854047418000001
quality:
blurriness: 0.9769582748000001
dark: 0.9542820454000001
illumination: 0.8248310089
specularity: 0.8472354412
light: 0.8179533482
warp: /9j/4AAQSkZJRgABAQAAAQABA..C4gb+KneZD/erEHWn0/asOTzP/9k=
- body:
detection:
rect:
x: 32
'y': 4
width: 224
height: 255
warp: /9j/4AAQSkZJRgABAQAAAQABAA...CX6kdapTi1qS00f/Z
attributes:
descriptor:
sdk_descriptor: ZHAAAGUAAAC....AfX9
score: 1
basic_attributes:
apparent_age: 0
apparent_gender: 0
upper_body:
headwear:
state: 0
sleeve:
length: "short"
upper_clothing:
colors: [ "white", "black" ]
accessories:
backpack:
state: 0
image_estimations:
people:
count: 1
filtered_estimations:
face_detections:
filter_reasons:
filter_name: roll_threshold
object_value: 0.9
threshold_value: 0.5
with_error:
value:
images_estimations:
- error:
error_code: 100033
desc: Unsupported image type
detail: Unsupported type
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-100033"
filename: bad_image.jpg
- filename: Claudia_Schiffer_warp.jpg
estimations:
- face:
detection:
rect:
x: 71
'y': 45
width: 134
height: 178
with_aggregation:
value:
images_estimations:
- filename: image1.jpg
estimations:
- body:
detection:
rect:
x: 118
'y': -17
width: 410
height: 627
- filename: image2.jpg
estimations:
- body:
detection:
rect:
x: 7
'y': -60
width: 1682
height: 2523
aggregate_estimations:
body:
attributes:
descriptor:
sdk_descriptor: ZHAAAGUAAACBeX1w==
score: 0
400:
description: Bad request.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
bad_content_type:
value:
error_code: 12017
desc: Bad/incomplete input data
detail: Bad content type
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12017"
403:
description: Access to this resource on the server is denied.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
one_rect_available:
value:
error_code: 11045
desc: Forbidden
detail: Only one detection rect for each image available at the moment
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11045"
fsdk_liveness_disabled:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: Liveness v.2 feature disabled"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
liveness_disabled:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: Liveness feature disabled"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
licence_expired:
value:
error_code: 11055
desc: Forbidden
detail: "License problem: License expired"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-11055"
500:
$ref: '#/components/responses/internal_server_error'
/1/docs/spec:
get:
tags:
- documents
summary: get openapi documentation
description: |
Get service OpenApi documentation. If *Accept* request header is of type `application/x-yaml`,
returns documentation in `yaml` format or returns `html` documentation, if *Accept-Type* is `text/html`
operationId: getSpec
parameters:
- $ref: '#/components/parameters/luna_request_id'
- $ref: '#/components/parameters/accept_docs_handler'
responses:
200:
description: OK
headers:
Content-Type:
$ref: '#/components/headers/docs_content_type'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/x-yaml:
schema:
type: string
description: yaml format documentation
text/html:
schema:
type: string
description: html format documentation
415:
description: Unsupported Media Type
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
unsupported_media_type:
value:
error_code: 12024
detail: 'Bad/incomplete input data'
desc: "Unsupported media type"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12024"
500:
$ref: '#/components/responses/internal_server_error'
/1/docs/dev:
parameters:
- $ref: '#/components/parameters/Accept'
get:
tags:
- documents
summary: get development manual
description: |
Get sphinx documentation - *Development Manual*. After the request you will be redirected to the page `/docs/dev/index.html`
operationId: getDevManual
parameters:
- $ref: '#/components/parameters/luna_request_id'
responses:
200:
description: OK
headers:
Content-Type:
$ref: '#/components/headers/text_html'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
text/html:
schema:
type: string
description: html format documentation
500:
$ref: '#/components/responses/internal_server_error'
/1/config:
get:
tags:
- config
summary: get service configuration
description: Get service configuration. Passwords and tokens will be hidden in the response.
operationId: getConfig
parameters:
- $ref: '#/components/parameters/luna_request_id'
- $ref: '#/components/parameters/accept_config_handler'
responses:
200:
description: OK
headers:
Content-Type:
$ref: '#/components/headers/config_accept_content_type'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
type: object
description: json format configuration
example:
INFLUX_MONITORING:
SEND_DATA_FOR_MONITORING: 0
ORGANIZATION: ORGANIZATION_NAME
TOKEN: '********'
BUCKET: luna_monitoring
HOST: 127.0.0.1
PORT: 8086
USE_SSL: 0
FLUSHING_PERIOD: 1.0
text/plain:
schema:
type: string
description: text format configuration
example: |
[INFLUX_MONITORING]
SEND_DATA_FOR_MONITORING = 0
ORGANIZATION = ORGANIZATION_NAME
TOKEN = ********
BUCKET = luna_monitoring
HOST = 127.0.0.1
PORT = 8086
USE_SSL = 0
FLUSHING_PERIOD = 1.0
415:
description: Unsupported Media Type
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/error'
examples:
unsupported_media_type:
value:
error_code: 12024
detail: 'Bad/incomplete input data'
desc: "Unsupported media type"
link: "https://docs.visionlabs.ai/info/luna/troubleshooting/errors-description/code-12024"
500:
$ref: '#/components/responses/internal_server_error'
/1/plugins:
get:
tags:
- plugins
summary: get list of plugins
description: |
Get list of service plugins
operationId: getPlugins
parameters:
- $ref: '#/components/parameters/luna_request_id'
responses:
200:
description: OK.
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/plugins'
500:
$ref: '#/components/responses/internal_server_error'
/metrics:
get:
tags:
- metrics
summary: get service requests statistics
description: Get statistics of success and failed requests to the service in prometheus format.
operationId: metrics
parameters:
- $ref: '#/components/parameters/luna_request_id'
responses:
200:
description: OK.
headers:
Content-Type:
schema:
type: string
enum:
- text/plain; charset=UTF-8
required: true
description: Content type is `text/plain`.
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
text/plain:
schema:
type: string
description: Prometheus plain text format.
example: |
# HELP request_count_total Counter of requests
# TYPE request_count_total counter
request_count_total{path="GET:/healthcheck",status_code="200"} 1.0
403:
$ref: '#/components/responses/forbidden_resource_error'
500:
$ref: '#/components/responses/internal_server_error'
/healthcheck:
get:
tags:
- health
summary: get health
description: get health of service
operationId: healthcheck
parameters:
- $ref: '#/components/parameters/luna_request_id'
- $ref: '#/components/parameters/include_luna_services'
responses:
200:
description: OK
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/health_ok'
500:
$ref: '#/components/responses/internal_server_error'
502:
description: Unhealthy
headers:
Content-Type:
$ref: '#/components/headers/application_json'
Luna-Request-Id:
$ref: '#/components/headers/luna_request_id'
content:
application/json:
schema:
$ref: '#/components/schemas/health_errors'