{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/telesign/main/json-schema/telesign-get-verification-response-schema.json",
  "title": "GET Verification Response",
  "description": "Succesful response when retrieving a verification process.",
  "x-generated": "2026-10-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/telesign-verify-api-openapi.yml#/components/schemas/GetVerificationResponse",
  "type": "object",
  "properties": {
    "reference_id": {
      "type": "string",
      "description": "A unique, randomly generated hex value that identifies your verification service request.",
      "minLength": 32,
      "maxLength": 32
    },
    "recipient": {
      "$ref": "#/$defs/VerificationRecipient"
    },
    "state": {
      "type": "string",
      "description": "The current state of this verification process.",
      "enum": [
        "CREATED",
        "ONGOING",
        "REJECTED",
        "FAILED",
        "VERIFIED",
        "CANCELED"
      ]
    },
    "verification_policy": {
      "$ref": "#/$defs/VerificationPolicy"
    },
    "inner_methods": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/InnerVerificationMethodStatus"
      }
    },
    "device_registration": {
      "type": "string",
      "description": "This verification process is for the purpose of registering a device for Push Verify. See [Verify API - Register a new device with Push Verify](/enterprise/docs/verify-api-register-a-new-device-with-push-verify) for further context on when to use this. When used with Push Verify, the value of this parameter is `stamp`."
    },
    "external_id": {
      "type": "string",
      "description": "A customer-generated ID for this transaction. The response simply echoes the value provided for this parameter."
    },
    "updated_on": {
      "type": "string",
      "description": "An [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) timestamp indicating when the status of this verification process was last updated. "
    },
    "created_on": {
      "type": "string",
      "description": "A timestamp that indicates when Telesign created this verification process."
    }
  },
  "required": [
    "reference_id",
    "recipient",
    "state",
    "verification_policy",
    "updated_on",
    "created_on"
  ],
  "$defs": {
    "InnerVerificationMethodStatus": {
      "title": "Status of inner verification method",
      "description": "Contains properties related to the processing status of the specified inner verification method. One verification process can include multiple inner verification methods.",
      "type": "object",
      "properties": {
        "method": {
          "$ref": "#/$defs/VerificationMethod"
        },
        "state": {
          "type": "string",
          "description": "Text describing the processing status of the specified verification method. This is not the same as the overall status of the verification process.",
          "enum": [
            "CREATED",
            "ONGOING",
            "SKIPPED",
            "REJECTED",
            "FAILED",
            "VERIFIED",
            "CANCELED"
          ]
        },
        "err_code": {
          "type": "integer",
          "description": "A numeric code indicating which error occured while attempting to use this verification method."
        },
        "err_msg": {
          "type": "string",
          "description": "Text describing the error that occurred while attempting to use this verification method."
        },
        "tried_on": {
          "type": "string",
          "description": "A timestamp that indicates when this verification method was attempted."
        },
        "updated_on": {
          "type": "string",
          "description": "An [RFC 3339](https://www.rfc-editor.org/rfc/rfc3339) timestamp that indicates when the state of attempting verification with this method was last updated."
        }
      }
    },
    "VerificationMethod": {
      "title": "Verification Method",
      "description": "One of the [verification methods](/enterprise/docs/verify-api-get-started#supported-verification-methods) included in a verification policy. Each method employs a Telesign service, such as Silent Verify or Push Verify.",
      "type": "string",
      "enum": [
        "silent",
        "sms",
        "push",
        "rcs",
        "whatsapp",
        "email",
        "voice"
      ]
    },
    "VerificationPolicy": {
      "title": "Verification Policy",
      "description": "An ordered set of verification methods and their fallback times that the Verify API uses for this verification process. See [verification policy](/enterprise/docs/verify-api-verification-policy-and-fallback-time) for more details.",
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "properties": {
          "method": {
            "$ref": "#/$defs/VerificationMethod"
          },
          "fallback_time": {
            "type": "integer",
            "description": "The time window in seconds that the service waits before abandoning the current verification method and then initiating verification using the next method specified in the active [verification policy](/enterprise/docs/verify-api-verification-policy-and-fallback-time). It is possible for the failover to happen earlier if certain failure conditions occur.",
            "minimum": 30
          }
        }
      }
    },
    "VerificationRecipient": {
      "title": "Verification Recipient",
      "description": "Contains properties with the recipient identifier for a [verification process](/enterprise/docs/verify-api-get-started#key-terms).",
      "type": "object",
      "minProperties": 1,
      "additionalProperties": false,
      "properties": {
        "phone_number": {
          "type": "string",
          "description": "The recipient's phone number, as digits without spaces or special characters, beginning with the [country dialing code](/enterprise/docs/codes-languages-and-time-zones#country-codes-and-dialing-codes)."
        },
        "push_app_token": {
          "type": "string",
          "description": "Identifies the instance of your mobile application installed on the user's mobile device. This is also called a \"registration token\" in Firebase Cloud Messaging or a \"device token\" in iOS. This is required when using the Push Verify verification method."
        },
        "email": {
          "type": "string",
          "description": "The recipient's email address."
        }
      }
    }
  }
}