{
  "openapi": "3.0.4",
  "info": {
    "title": "VerifEye - Service API",
    "version": "v1"
  },
  "servers": [
    {
      "url": "/"
    }
  ],
  "paths": {
    "/v1/healthz": {
      "get": {
        "tags": [
          "Health"
        ],
        "summary": "Returns the server UTC time.",
        "responses": {
          "200": {
            "description": "Returns the server UTC time.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/v1/signature/validate": {
      "post": {
        "tags": [
          "Signature"
        ],
        "summary": "Validates the signature of the request using the query string and the signature inside the query string",
        "requestBody": {
          "description": "The request body for the validate-signature call",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateSignatureRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateSignatureRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateSignatureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the result of the signature validation",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateSignatureResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateSignatureResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidateSignatureResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/v1/signature/create": {
      "post": {
        "tags": [
          "Signature"
        ],
        "summary": "Creates a signed query string based on the query string provided in the request body.",
        "requestBody": {
          "description": "The request body for the create-signature call",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSignatureRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSignatureRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSignatureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the result of the signature creation",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSignatureResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSignatureResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateSignatureResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/v1/verification/get": {
      "get": {
        "tags": [
          "Verification"
        ],
        "summary": "Returns a verification configuration by verificationId",
        "parameters": [
          {
            "name": "verificationId",
            "in": "query",
            "description": "The verificationId of the configuration",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the verification configuration",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetVerificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVerificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVerificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "If the request body is not valid"
          }
        }
      }
    },
    "/v1/verification/get-all": {
      "get": {
        "tags": [
          "Verification"
        ],
        "summary": "Returns all verification configurations for the account",
        "responses": {
          "200": {
            "description": "Returns the list of verification configurations",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllVerificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllVerificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllVerificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "If the request body is not valid"
          }
        }
      }
    },
    "/v1/verification/create": {
      "post": {
        "tags": [
          "Verification"
        ],
        "summary": "Create a new verification configuration",
        "requestBody": {
          "description": "The request body for the create call",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the created verification configuration",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVerificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVerificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVerificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "If the request body is not valid"
          },
          "409": {
            "description": "If a verification with the same name already exists"
          }
        }
      }
    },
    "/v1/verification/create-or-update": {
      "post": {
        "tags": [
          "Verification"
        ],
        "summary": "Create a new verification configuration, or update the existing one if a verification with the same name already exists",
        "requestBody": {
          "description": "The request body (same as create)",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the verification configuration id and whether it was created or updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrUpdateVerificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrUpdateVerificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrUpdateVerificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "If the request body is not valid"
          }
        }
      }
    },
    "/v1/verification/update": {
      "put": {
        "tags": [
          "Verification"
        ],
        "summary": "Update a verification configuration",
        "requestBody": {
          "description": "The request body for the update call",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVerificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVerificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated verification configuration",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVerificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVerificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVerificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "If the request body is not valid"
          },
          "409": {
            "description": "If another verification with the same name already exists"
          }
        }
      }
    },
    "/v1/verification/delete": {
      "delete": {
        "tags": [
          "Verification"
        ],
        "summary": "Delete a verification configuration",
        "parameters": [
          {
            "name": "verificationId",
            "in": "query",
            "description": "The ID of the verification configuration to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the updated verification configuration",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteVerificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteVerificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteVerificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "If neither the Api key nor the Bearer Token is valid"
          },
          "400": {
            "description": "If the request body is not valid"
          }
        }
      }
    },
    "/v1/verification/get-session-result": {
      "get": {
        "tags": [
          "Verification"
        ],
        "summary": "Returns all available results for a verification session",
        "parameters": [
          {
            "name": "verificationSessionId",
            "in": "query",
            "description": "The ID of the verification session",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the session results",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionResultModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionResultModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSessionResultModel"
                }
              }
            }
          },
          "401": {
            "description": "If the session does not belong to the authenticated account"
          },
          "400": {
            "description": "If the request parameters are not valid"
          },
          "404": {
            "description": "If the session does not exist or is older than 7 days"
          }
        }
      }
    },
    "/v1/verification/create-session": {
      "post": {
        "tags": [
          "Verification"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationSessionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationSessionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVerificationSessionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVerificationSessionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVerificationSessionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateVerificationSessionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AgeRangeVerificationConfigModel": {
        "type": "object",
        "properties": {
          "minimum": {
            "type": "integer",
            "description": "Minimum allowed age.",
            "format": "int32"
          },
          "maximum": {
            "type": "integer",
            "description": "Maximum allowed age.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for range based age verification."
      },
      "AgeThresholdVerificationConfigModel": {
        "type": "object",
        "properties": {
          "threshold": {
            "type": "integer",
            "description": "Age threshold value used for verification.",
            "format": "int32"
          },
          "direction": {
            "$ref": "#/components/schemas/AgeThresholdVerificationDirection"
          }
        },
        "additionalProperties": false,
        "description": "Configuration for threshold based age verification."
      },
      "AgeThresholdVerificationDirection": {
        "enum": [
          "Above",
          "Below"
        ],
        "type": "string",
        "description": "Direction used when evaluating age threshold comparisons."
      },
      "AgeVerificationConfigTypes": {
        "enum": [
          "Disabled",
          "CalculationOnly",
          "ThresholdVerification",
          "RangeVerification"
        ],
        "type": "string",
        "description": "Supported age verification modes."
      },
      "AgeVerifierConfigModel": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/AgeVerificationConfigTypes"
          },
          "thresholdConfig": {
            "$ref": "#/components/schemas/AgeThresholdVerificationConfigModel"
          },
          "rangeConfig": {
            "$ref": "#/components/schemas/AgeRangeVerificationConfigModel"
          }
        },
        "additionalProperties": false,
        "description": "Age verifier configuration model."
      },
      "CommonSettingConfigModel": {
        "type": "object",
        "properties": {
          "failOnMultipleFacesDetected": {
            "type": "boolean",
            "description": "Fail the verification if multiple faces are detected in the input image."
          }
        },
        "additionalProperties": false
      },
      "CreateOrUpdateVerificationResponse": {
        "type": "object",
        "properties": {
          "verificationId": {
            "type": "string",
            "description": "Identifier of the newly created or updated verification configuration.",
            "nullable": true
          },
          "wasCreated": {
            "type": "boolean",
            "description": "Indicates whether the verification configuration was newly created (`true`)\nor an existing one with the same name was updated (`false`)."
          }
        },
        "additionalProperties": false,
        "description": "Response returned after a create-or-update operation on a verification configuration."
      },
      "CreateSignatureRequest": {
        "type": "object",
        "properties": {
          "queryString": {
            "type": "string",
            "description": "The full query string to be signed",
            "nullable": true
          },
          "securitySettings": {
            "$ref": "#/components/schemas/SecuritySettings"
          }
        },
        "additionalProperties": false,
        "description": "Request body for create-signature call"
      },
      "CreateSignatureResponse": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signature for the query string",
            "nullable": true
          },
          "signedQueryString": {
            "type": "string",
            "description": "The signed query string that includes the signature",
            "nullable": true
          },
          "expiration": {
            "type": "integer",
            "description": "UTC unix epoch seconds at which the signed URL expires.\nSet only when ExpirationEnabled was true on the request.",
            "format": "int64",
            "nullable": true
          },
          "nonce": {
            "type": "string",
            "description": "One-time-use nonce embedded in the signed URL.\nSet only when EnableNonce was true on the request.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response body for create-signature call"
      },
      "CreateVerificationRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Human readable name of the verification configuration."
          },
          "verificationConfig": {
            "$ref": "#/components/schemas/VerificationConfigModel"
          }
        },
        "additionalProperties": false,
        "description": "Request payload used to create a new verification configuration."
      },
      "CreateVerificationResponse": {
        "type": "object",
        "properties": {
          "verificationId": {
            "type": "string",
            "description": "Identifier of the newly created or updated verification configuration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response returned after successfully creating a verification configuration."
      },
      "CreateVerificationSessionRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the verification configuration to use for this session",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "verifierConfigs": {
            "$ref": "#/components/schemas/VerifierConfigsModel"
          },
          "webhookConfig": {
            "$ref": "#/components/schemas/WebhookConfigModel"
          }
        },
        "additionalProperties": false
      },
      "CreateVerificationSessionResponse": {
        "type": "object",
        "properties": {
          "verificationSessionId": {
            "type": "string",
            "description": "Gets or sets the unique identifier for the verification session.",
            "nullable": true
          },
          "sessionToken": {
            "type": "string",
            "description": "Gets or sets the session token used to authenticate or identify the current verification session. The JWT token contains the session identifier and is valid for 5 minutes.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeleteVerificationResponse": {
        "type": "object",
        "additionalProperties": false,
        "description": "Response returned after deleting a verification configuration or containing an error."
      },
      "FaceRecognitionVerificationConfigTypes": {
        "enum": [
          "Disabled",
          "CalculationOnly",
          "DuplicateVerification",
          "UniqueMatchVerification",
          "MatchVerification",
          "MatchOnlyVerification"
        ],
        "type": "string",
        "description": "Supported face recognition verification modes."
      },
      "FaceRecognitionVerifierConfigModel": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/FaceRecognitionVerificationConfigTypes"
          },
          "collectionId": {
            "type": "string",
            "description": "The face collection identifier used by the face recognition verifier.\nChanging this will route new face data into a different collection.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Face recognition verifier configuration model."
      },
      "GenderVerificationConfigTypes": {
        "enum": [
          "Disabled",
          "CalculationOnly"
        ],
        "type": "string",
        "description": "Supported gender verification modes."
      },
      "GenderVerifierConfigModel": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/GenderVerificationConfigTypes"
          }
        },
        "additionalProperties": false,
        "description": "Gender verifier configuration model."
      },
      "GetAllVerificationResponse": {
        "type": "object",
        "properties": {
          "verifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationOverviewModel"
            },
            "description": "Collection of verification configuration overview models.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response returned when listing all verification configurations for an account."
      },
      "GetSessionResultModel": {
        "type": "object",
        "properties": {
          "verificationSessionId": {
            "type": "string",
            "nullable": true
          },
          "verificationResult": {
            "type": "string",
            "nullable": true
          },
          "verificationFailedReasons": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "livenessVerificationResult": {
            "type": "string",
            "nullable": true
          },
          "ageVerificationResult": {
            "type": "string",
            "nullable": true
          },
          "estimatedAge": {
            "type": "number",
            "format": "float",
            "nullable": true
          },
          "genderVerificationResult": {
            "type": "string",
            "nullable": true
          },
          "estimatedGender": {
            "type": "string",
            "nullable": true
          },
          "faceRecognitionResult": {
            "type": "string",
            "nullable": true
          },
          "faceId": {
            "type": "string",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "nullable": true
          },
          "totalFaceCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customInputParameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetVerificationResponse": {
        "type": "object",
        "properties": {
          "verification": {
            "$ref": "#/components/schemas/VerificationModel"
          }
        },
        "additionalProperties": false,
        "description": "Response returned when retrieving a single verification configuration."
      },
      "LivenessVerificationChallengeTypes": {
        "enum": [
          "Balanced",
          "Advanced"
        ],
        "type": "string",
        "description": "Supported liveness verification challenges."
      },
      "LivenessVerificationConfigTypes": {
        "enum": [
          "Disabled",
          "Verification"
        ],
        "type": "string",
        "description": "Supported liveness verification modes."
      },
      "LivenessVerifierConfigModel": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/LivenessVerificationConfigTypes"
          },
          "challengeType": {
            "$ref": "#/components/schemas/LivenessVerificationChallengeTypes"
          }
        },
        "additionalProperties": false,
        "description": "Liveness verifier configuration model."
      },
      "RedirectConfigModel": {
        "type": "object",
        "properties": {
          "passedUrl": {
            "type": "string",
            "description": "URL to redirect to when verification succeeds.",
            "nullable": true
          },
          "failedUrl": {
            "type": "string",
            "description": "URL to redirect to when verification fails.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Redirect URLs used after different verification outcomes."
      },
      "ResultParameterConfigModel": {
        "type": "object",
        "properties": {
          "includeSignature": {
            "type": "boolean",
            "description": "Include a signature value in the response. Defaults to true."
          },
          "includeSessionId": {
            "type": "boolean",
            "description": "Include the session identifier in the response."
          },
          "includeFaceId": {
            "type": "boolean",
            "description": "Include a face identifier (if available) in the response."
          },
          "includeAge": {
            "type": "boolean",
            "description": "Include the estimated age."
          },
          "includeGender": {
            "type": "boolean",
            "description": "Include the estimated gender."
          },
          "includeVerificationResult": {
            "type": "boolean",
            "description": "Include the overall verification result status."
          },
          "includeCustomInputParameters": {
            "type": "boolean",
            "description": "Include any custom input parameters that were part of the request."
          },
          "includeLivenessCheckResult": {
            "type": "boolean",
            "description": "Include the liveness check result."
          },
          "includeAgeVerificationResult": {
            "type": "boolean",
            "description": "Include the age verification result."
          },
          "includeGenderVerificationResult": {
            "type": "boolean",
            "description": "Include the gender verification result."
          },
          "includeFaceRecognitionResult": {
            "type": "boolean",
            "description": "Include the face recognition verification result."
          },
          "includeCorrelationId": {
            "type": "boolean",
            "description": "Include the correlation identifier."
          },
          "includeTotalFaceCount": {
            "type": "boolean",
            "description": "Include the total face count detected."
          },
          "includeFailedReason": {
            "type": "boolean",
            "description": "Include global failed reasons in the response (e.g., ConsentDeclined, NoFace, MultipleFaces, Timeout, CameraAccessError)."
          }
        },
        "additionalProperties": false,
        "description": "Controls which result parameters are included in API responses."
      },
      "SecurityConfigModel": {
        "type": "object",
        "properties": {
          "forceSignedInput": {
            "type": "boolean",
            "description": "When true, input payloads must be signed."
          }
        },
        "additionalProperties": false,
        "description": "Security related options influencing verification request validation."
      },
      "SecuritySettings": {
        "type": "object",
        "properties": {
          "enableNonce": {
            "type": "boolean",
            "description": "When true, a one-time-use nonce (reNonce) is embedded in the signed URL.\nFirst successful init-redirect-session call consumes the nonce.\nRequires ExpirationEnabled to be true.",
            "nullable": true
          },
          "expirationEnabled": {
            "type": "boolean",
            "description": "When true, an expiration timestamp (reExpiration) is embedded in the signed URL.\nDefaults to true when SecuritySettings is omitted or this field is left null.\nSend false explicitly to opt out and get a non-expiring URL.",
            "nullable": true
          },
          "expirationInSeconds": {
            "maximum": 604800,
            "minimum": 1,
            "type": "integer",
            "description": "Lifetime of the signed URL in seconds. Range 1..604800 (max 7 days).\nDefaults to 86400 (1 day) when ExpirationEnabled is true and the value is omitted.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Optional security options applied to the signed URL."
      },
      "SessionOverrideConfigModel": {
        "type": "object",
        "properties": {
          "allowVerifierOverrides": {
            "type": "boolean",
            "description": "Allows overriding which verifiers are enabled/disabled."
          },
          "allowResultParameterOverrides": {
            "type": "boolean",
            "description": "Allows overriding which result parameters are returned."
          },
          "allowRedirectOverrides": {
            "type": "boolean",
            "description": "Allows overriding redirect URLs."
          }
        },
        "additionalProperties": false,
        "description": "Settings that allow selectively overriding verification behavior per session."
      },
      "SignatureStatus": {
        "enum": [
          "Valid",
          "Invalid",
          "Expired",
          "NonceAlreadyUsed"
        ],
        "type": "string",
        "description": "The result of the signature validation"
      },
      "UpdateVerificationRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Human readable name of the verification configuration."
          },
          "verificationConfig": {
            "$ref": "#/components/schemas/VerificationConfigModel"
          },
          "verificationId": {
            "type": "string",
            "description": "Unique identifier of the verification configuration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload used to update an existing verification configuration."
      },
      "UpdateVerificationResponse": {
        "type": "object",
        "properties": {
          "verificationId": {
            "type": "string",
            "description": "Identifier of the newly created or updated verification configuration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response returned after updating a verification configuration."
      },
      "ValidateSignatureRequest": {
        "type": "object",
        "properties": {
          "queryString": {
            "type": "string",
            "description": "The full query string of the request to validate",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request body for validate-signature call"
      },
      "ValidateSignatureResponse": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/SignatureStatus"
          }
        },
        "additionalProperties": false,
        "description": "Response body for validate-signature call"
      },
      "VerificationConfigModel": {
        "type": "object",
        "properties": {
          "verifierConfigs": {
            "$ref": "#/components/schemas/VerifierConfigsModel"
          },
          "redirectConfig": {
            "$ref": "#/components/schemas/RedirectConfigModel"
          },
          "resultParameterConfig": {
            "$ref": "#/components/schemas/ResultParameterConfigModel"
          },
          "securityConfig": {
            "$ref": "#/components/schemas/SecurityConfigModel"
          },
          "sessionOverrideConfig": {
            "$ref": "#/components/schemas/SessionOverrideConfigModel"
          },
          "webhookConfig": {
            "$ref": "#/components/schemas/WebhookConfigModel"
          }
        },
        "additionalProperties": false,
        "description": "Root container for all adjustable verification configuration sections."
      },
      "VerificationModel": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Human readable name of the verification configuration."
          },
          "verificationConfig": {
            "$ref": "#/components/schemas/VerificationConfigModel"
          },
          "verificationId": {
            "type": "string",
            "description": "Unique identifier of the verification configuration.",
            "nullable": true
          },
          "created": {
            "type": "string",
            "description": "UTC timestamp when the configuration was created.",
            "format": "date-time"
          },
          "lastModified": {
            "type": "string",
            "description": "UTC timestamp of the last modification.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Detailed verification configuration model including metadata and nested configuration sections."
      },
      "VerificationOverviewModel": {
        "type": "object",
        "properties": {
          "verificationId": {
            "type": "string",
            "description": "Unique identifier of the verification configuration.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Human readable name of the configuration.",
            "nullable": true
          },
          "created": {
            "type": "string",
            "description": "UTC timestamp when the configuration was created.",
            "format": "date-time"
          },
          "lastModified": {
            "type": "string",
            "description": "UTC timestamp of the last modification.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Lightweight representation of a verification configuration used in list responses."
      },
      "VerifierConfigsModel": {
        "type": "object",
        "properties": {
          "liveness": {
            "$ref": "#/components/schemas/LivenessVerifierConfigModel"
          },
          "age": {
            "$ref": "#/components/schemas/AgeVerifierConfigModel"
          },
          "faceRecognition": {
            "$ref": "#/components/schemas/FaceRecognitionVerifierConfigModel"
          },
          "gender": {
            "$ref": "#/components/schemas/GenderVerifierConfigModel"
          },
          "commonSettings": {
            "$ref": "#/components/schemas/CommonSettingConfigModel"
          }
        },
        "additionalProperties": false,
        "description": "Collection of verifier specific configuration sections."
      },
      "WebhookConfigModel": {
        "type": "object",
        "properties": {
          "eventCallbackUrl": {
            "type": "string",
            "description": "URL to which verification result webhooks should be sent.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Webhook related configuration settings."
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 1safsfsdfdfd\"",
        "name": "Authorization",
        "in": "header"
      },
      "ApiKey": {
        "type": "apiKey",
        "description": "API key Authorization header using the ApiKey scheme. \r\n\r\n Enter 'ApiKey' [space] and then your APIKey in the text input below.\r\n\r\nExample: \"ApiKey 5j3245lj...\"",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ],
      "ApiKey": [ ]
    }
  ]
}