{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/signicat/main/json-schema/signicat-passkey-authentication-response-schema.json",
  "title": "PasskeyAuthenticationResponse",
  "x-generated": "2026-10-18",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/signicat-reuseid-openapi.yml#/components/schemas/PasskeyAuthenticationResponse",
  "type": "object",
  "properties": {
    "transactionId": {
      "type": "string",
      "description": "The ID of the transaction."
    },
    "accountId": {
      "type": "string",
      "description": "The ID of the account that carried out the operation."
    },
    "state": {
      "type": "string",
      "description": "The state of the operation.\n\n**Possible values**: See the [Operation states](/apis/reuseid/#section/Common-concepts/Operation-states) table.\n"
    },
    "errorCode": {
      "type": "string",
      "description": "The error code that is given if the operation fails.\n\n**Possible values**: See the [Operation error codes](/apis/reuseid/#section/Common-concepts/Operation-error-codes) table.\n"
    },
    "errorDescription": {
      "type": "string",
      "description": "The descriptive error message given if the operation fails."
    },
    "created": {
      "type": "string",
      "description": "\"The timestamp when the initial response was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
    },
    "completed": {
      "type": "string",
      "description": "The timestamp when the operation was completed.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
    },
    "passkey": {
      "$ref": "#/$defs/AuthPasskey",
      "description": "An object that contains information about the passkey for the operation."
    },
    "user": {
      "$ref": "#/$defs/PasskeyUser",
      "description": "An object that contains information about the ReuseID user for the operation."
    },
    "rpRedirectUri": {
      "type": "string",
      "description": "The URI where you want the ReuseID user's browser to be redirected after the passkey operation is completed."
    },
    "idpRedirectUri": {
      "type": "string",
      "description": "The URI generated by ReuseID, that is used to start the passkey operation in the ReuseID user's browser."
    },
    "operationProperties": {
      "$ref": "#/$defs/PasskeysServiceOperationProperties",
      "description": "An object that contains the configured properties of the operation, which determined how it was carried out."
    },
    "riskAttributes": {
      "$ref": "#/$defs/RiskAttributes",
      "description": "An object that contains the risk attributes collected for the device.\n"
    },
    "tags": {
      "type": "array",
      "description": "The tags that you added so that the callback events can be filtered.",
      "items": {
        "type": "string"
      }
    }
  },
  "$defs": {
    "AuthPasskey": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the ReuseID user's passkey."
        }
      }
    },
    "PasskeyUser": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID (`userId`) of the ReuseID user, in a valid UUID format."
        },
        "externalRef": {
          "type": "string",
          "description": "The identifier generated by you, that points to the `userId` generated by ReuseID."
        },
        "attributes": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "An object that contains the user attributes that were added to the ReuseID user, given as key-value pairs."
        }
      }
    },
    "PasskeysServiceOperationProperties": {
      "type": "object",
      "properties": {
        "sessionTimeout": {
          "type": "integer",
          "format": "int64",
          "description": "The duration after which the operation will timeout, given in milliseconds."
        },
        "sessionExpiryTime": {
          "type": "string",
          "description": "The timestamp when the operation expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
        },
        "userVerification": {
          "type": "string",
          "description": "The passkey user verification that was used.\n\n**Note**: There is no guarantee that the browser handling the authentication uses or acknowledges this parameter.\n\n**Possible values**: See the [Passkey user verification](/apis/reuseid/#section/Common-concepts/Passkey-user-verification) table.\n"
        },
        "userVerificationRequired": {
          "type": "boolean",
          "description": "A flag that indicates whether a user verification check was carried out during the creation of a passkey."
        },
        "userPresenceRequired": {
          "type": "boolean",
          "description": "A flag that indicates whether a user presence check was carried out during the creation of a passkey."
        },
        "requestedUserAttributes": {
          "type": "array",
          "description": "The user attributes to return.\n\n**Possible values**:\n- If no value is set, then the user object returned after a successful operation will not include any attributes.\n- If a non-existent user attribute is set, then this will be silently ignored.\n",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "RiskAttributes": {
      "type": "object",
      "properties": {
        "userAgent": {
          "type": "string",
          "description": "The user agent used during the passkey operation"
        }
      }
    }
  }
}