{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/signicat/main/json-schema/signicat-passkey-registration-response-schema.json",
  "title": "PasskeyRegistrationResponse",
  "x-generated": "2026-10-18",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/signicat-reuseid-openapi.yml#/components/schemas/PasskeyRegistrationResponse",
  "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 that is 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/RegPasskey",
      "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": {
    "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"
          }
        }
      }
    },
    "RegPasskey": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the passkey, in a valid UUID format."
        },
        "name": {
          "type": "string",
          "description": "The name that the ReuseID user gives the passkey.\n\n**Note**:\n- This is a user-friendly name that helps the ReuseID user to identify their passkey in ReuseID.\n- This is not the same as the `name` derived from the user attributes, shown in the overlays for some passkey providers.\n"
        },
        "domain": {
          "type": "string",
          "description": "The domain that the passkey is valid for."
        },
        "created": {
          "type": "string",
          "description": "The timestamp when the passkey was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
        },
        "aaGuid": {
          "type": "string",
          "description": "The Authenticator Attestation Global Unique Identifier (AAGUID), which uniquely identifies the make and model of a security key or passkey-providing software."
        },
        "userVerificationRequested": {
          "type": "boolean",
          "description": "A flag that indicates whether a user verification check was carried out during the creation of a passkey."
        },
        "userPresenceRequested": {
          "type": "boolean",
          "description": "A flag that indicates whether a user presence check was carried out during the creation of a passkey."
        }
      }
    },
    "RiskAttributes": {
      "type": "object",
      "properties": {
        "userAgent": {
          "type": "string",
          "description": "The user agent used during the passkey operation"
        }
      }
    }
  }
}