{
  "openapi": "3.1.0",
  "info": {
    "title": "Signicat ReuseID API",
    "version": "1.0",
    "description": "- **Base URL**: `https://api.signicat.com/reuseid/core/`\n- **Documentation**: See the [ReuseID](/docs/reuseid/) developer documentation.\n- **Support**: [Create a support ticket](https://dashboard.signicat.com/contact-us/tickets/) in the Signicat Dashboard.\n\n# Introduction\n\nThe Signicat ReuseID API enables you to create, manage and authenticate your end-users securely across your entire digital ecosystem. \n\nReuseID supports two authentication methods:\n\n- **MobileID**: Strong customer authentication within a mobile app.\n- **Passkeys**: Passwordless, browser-based authentication.\n\nThis REST API uses the OAuth 2.0 protocol for authorisation. All request and response bodies are formatted in JSON.\n\n# Get started\n\n## 1. Connect to this API\n\nBefore you can start making requests to this API, you need to learn how to connect to it. To do this, see the **Connect to Signicat APIs** [Quick start guide](/docs/dashboard/connect-to-signicat-apis/quick-start-guide/).\n\n## 2. Add an authentication product\n\nYou need to add the authentication product which can be MobileID and/or Passkeys. To do this, you can use the Signicat Dashboard by following the steps below.\n\n### Add Passkeys to your account\n\n1. Go to **Signicat Dashboard** > **Products** > [**MobileID**](https://dashboard.signicat.com/mobileid).\n2. Click the **Add MobileID** button.\n\n### Add MobileID to your account\n\n1. Go to **Signicat Dashboard** > **Products** > [**Passkeys**](https://dashboard.signicat.com/passkeys).\n2. From the left-side menu, select the **Get started** page.\n3. Click the **+ Add Passkeys to the account** button.\n\n## 3. Next steps\n\nSuccess! You can now start making requests to the ReuseID API.\n\n1. For your ReuseID account, you can now create users.\n2. Each user can register one or more passkeys and/or devices.\n3. The passkeys and devices can be used to perform authentication and authorisation operations with your app.\n\nTo test it out, you can follow the steps in our quick start guides:\n\n- [ReuseID authentication using MobileID](/docs/mobile-identity/mobileid/quick-start-guides/mobileid-authentication/).\n- [ReuseID authentication using Passkeys](/docs/passkeys/quick-start-guides/passkeys-authentication/).\n\n# Using this API\n\n## Audit logs\n\nUse the Signicat **Audit logs** service to see documented evidence of the sequence of activities that have affected a system.\n\n- Access it: **Signicat Dashboard** > **Settings** > [**Audit logs**](https://dashboard.signicat.com/audit)\n- For information generic to all Signicat audit logs, see the general [Audit logs](/docs/dashboard/settings/audit-logs/) documentation.\n\n## Errors\n\nWhen you make an API call to Signicat and an error occurs, you will receive a response message with an error code.\n\n- For errors generic to all Signicat APIs, see the general [Error codes](/docs/dashboard/error-codes/) documentation.\n- For errors specific to this service, see the ReuseID [Error codes](/docs/reuseid/error-codes/) documentation.\n\n## Events (callback)\n\nUse the Signicat **Events** service to automatically receive information about when something happens in one of our services into your system.\n\n> **Note**: This is often referred to as callback.\n\n- Access it: Go to **Signicat Dashboard** > **Settings** > [**Events**](https://dashboard.signicat.com/events)\n- For information generic to all Signicat events, see the general [Events](/docs/dashboard/settings/events/) documentation.\n- For information specific to this service, see the ReuseID [Events](/docs/reuseid/events/) documentation.\n\n## Response headers\n\nAll ReuseID responses set the following headers:\n\n| **Header name** | **Description** | **Type** |\n| :-- | :-- | :-- |\n| `X-TRACE-ID` | The unique identifier of the request in the tracing system. This makes it possible for us to trace the history of the request in detail. | String |\n\n# Common concepts\n\n## App Attest statuses\n\nPossible values for the App Attest attestation status (`appAttestStatus`).\n\n| **Status name** | **Description** |\n| :-- | :-- |\n| `VERIFIED` | Attestation verification was successful. |\n| `FAILED_CLIENT_APPLE_SERVER_UNAVAILABLE` | Attestation failed because the Apple App Attest server was unavailable. |\n| `FAILED_CLIENT_NOT_SUPPORTED` | Attestation failed because Apple App Attest is not supported on the device. |\n| `FAILED_CLIENT_UNEXPECTED_ERROR` | Attestation failed because of an unexpected error; you can find further details in the error message. |\n| `FAILED_CLIENT_TIMEOUT` | Attestation failed because the request took longer than the configured timeout. |\n| `FAILED_VALIDATION_EXCEPTION` | Validation of the attestation object failed because the integrity check failed. |\n\n## Authentication levels\n\nPossible values for the authentication level (`authLevel`).\n\n| **Level name** | **Description** |\n| :-- | :-- |\n| `ONE_FACTOR` | One factor authentication. |\n| `TWO_FACTOR` | Two factor authentication. |\n\n## Authentication methods\n\nPossible values for the authentication method (`authMethod`).\n\n| **Method name** | **Description** |\n| :-- | :-- |\n| `DEVICE` | Device. |\n| `DEVICE_PIN` | PIN code. |\n| `DEVICE_IOS_FACE_ID` | Face ID for iOS. |\n| `DEVICE_STRONG_TOUCH_ID` | Touch ID for iOS, where the registered fingerprints at activation time cannot be updated. |\n| `DEVICE_ANDROID_BIOMETRIC_PROMPT` | Biometric ID for Android. |\n| `DEVICE_SERVER_SIDE_FACE` | Server side face authentication. |\n\n## Device registration modes\n\nPossible values for the MobileID device registration mode (`registrationMode`).\n\n| **Mode name** | **Description** |\n| :-- | :-- |\n| `REGISTRATION` | Initiates a registration of a MobileID device.<br /><br /> **Note**: This is the default registration mode, which means that it is automatically used if no value is supplied. |\n| `RE_REGISTRATION` | Initiates a re-registration of a MobileID device.<br /><br /> In a re-registration, the end-user creates new login credentials for the same `deviceId`, instead of registering a new device.<br /><br /> **Note**: The end-user must use the same device that they were originally enrolled on.<br /><br /> **Important**: Re-registration should only be used if you have a requirement to retain the same `deviceId`. If you do not have this requirement, then we recommend that you use the normal registration mode. |\n\n## Device states\n\nPossible values for the Mobile device state (`state`).\n\n| **State name** | **Description** |\n| :-- | :-- |\n| `ACTIVE` | Represents a normal, successfully registered device. |\n| `LOCKED` | Represents a locked device.<br /><br /> **Note**: Devices in a locked state cannot perform any operations. |\n| `DELETED` | Represents a deleted device. |\n\n## Geofencing client statuses\n\nPossible values for the geofencing client status (`clientStatus`).\n\n| **Status name** | **Description** |\n| :-- | :-- |\n| `OK` | The country code was obtained. |\n| `LOCATION_NOT_ENABLED` | Either: <ul><li>The location was not requested by the SDK.</li> <li>The end-user declined access to location services for the SDK on their device.</li></ul> |\n| `LOCATION_TIMEOUT` | The device did not obtain a location within the configured accuracy before timeout. |\n| `LOCATION_MOCKED` | **Android devices only**<br /><br /> The location of the device was mocked.<br /><br /> This is based on the location methods [isFromMockProvider()](https://developer.android.com/reference/android/location/Location#isFromMockProvider()) and [isMock()](https://developer.android.com/reference/android/location/Location#isMock()), which indicate whether this location is marked as a mock location.<br /><br /> **Note**: To test faking the GPS location of the device, you can download and install a mock location app, then enable it in the [Developer options](https://developer.android.com/studio/debug/dev-options) on the device. |\n| `GEOCODER_NOT_SUPPORTED` | **Android devices only**<br /><br /> Geocoder is not supported on the device. |\n| `GEOCODER_NETWORK_ERROR` | Either: <ul><li>The geocoder network or service is not available.</li> <li>Too many requests have been made to the geocoder service (offered by Apple or Google), as it is rate-limited for each app.</li></ul> |\n| `GEOCODER_UNEXPECTED_ERROR` | An unexpected geocoder error occurred. |\n| `GEOCODER_TIMEOUT` | The geocoder call did not finish within time the limit. |\n| `GEOCODER_NO_RESULT_FOUND` | The reverse geocode request yielded an empty result for the current location. |\n\n## Geofencing server boundary validation statuses\n\nPossible values for the geofencing server boundary validation status (`serverBoundaryValidation`).\n\n| **Status name** | **Description** |\n| :-- | :-- |\n| `SUCCESS` | The evaluation of the country against the allowed region succeeded. |\n| `FAILURE` | The evaluation of the country against the allowed region failed. |\n\n## Hardware-protected key client statuses\n\nPossible values for the hardware-protected key client status (`hwKeyClientStatus`).\n\n| **Status name** | **Description** | **Operation** |\n| :-- | :-- | :-- |\n| `OK_KEY_PROVIDED` | Activation of hardware-protected keys was successful on the client. | Registration |\n| `OK_SIGNED_SUCCESS` | The authentication challenge was successfully signed with the hardware-protected key on the client. | Authentication, Signature  |\n| `INFO_NO_HARDWARE_SUPPORT` | The client device does not have Secure Enclave, or it is running in a simulator.<br /><br /> **Note**: This is only applicable for iOS. | Registration  |\n| `INFO_NO_OPERATING_SYSTEM_SUPPORT` | The client operating system does not support hardware-protected keys.<br /><br /> It is supported on: <ul><li>Android 6 (most devices)</li> <li>Android 7 or later (all devices)</li> <li>iOS 10 or later (devices with Secure Enclave)</li></ul> | Registration  |\n| `INFO_NOT_ACTIVATED_WITH_HW_KEY` | The registration was not activated with hardware-protected keys support, because the device hardware does not support hardware crypto-protected keys. | Authentication, Signature  |\n| `ERR_KEY_GENERATION_FAILED` | There was an unexpected error during the generation of a keypair on the client. | Registration  |\n| `ERR_RETRIEVE_PUBLIC_KEY_FAILED` | There was an unexpected error retrieving the public key.<br /><br /> **Note**: This is only applicable for iOS. | Registration  |\n| `ERR_RETRIEVE_PRIVATE_KEY_REF_FAILED` | There was an unexpected error when retrieving the reference to the private key. | Registration, Authentication, Signature |\n| `ERR_SIGN_OPERATION_FAILED` | There was an unexpected error when generating the signature. | Registration, Authentication, Signature |\n\n## Hardware-protected key server results\n\nPossible values for the hardware-protected key server result (`hwKeyServerResult`).\n\n| **Result name** | **Description** | **Validation strategy** |\n| :-- | :-- | :-- |\n| `SIGNATURE_VERIFICATION_SUCCESS` | Verification of the hardware-protected key signature was successful. | The operation will be successful in both validation strategies (`SUPPORTED`, `RISK_PARAMS`). |\n| `SIGNATURE_VERIFICATION_FAILED` | Verification of the hardware-protected key signature failed. | The operation will fail if using the `SUPPORTED` validation strategy. |\n| `NOT_ACTIVATED_WITH_HW_KEY` | The signature could not be verified because the registration was not activated with hardware-protected keys.<br /><br /> **Note**: This is only applicable for authentication. | The operation will not fail, regardless of which validation strategy is used (`SUPPORTED`, `RISK_PARAMS`). |\n| `NOT_PROVIDED_BY_CLIENT` | The client is on an Encap version that does not support the hardware-protected keys feature.<br /><br /> **Note**: This is only applicable for registration. | The operation will not fail, regardless of which validation strategy is used (`SUPPORTED`, `RISK_PARAMS`). The device will be activated without hardware-protected keys. The device will be able to perform all operations, but will not be able to use the hardware-protected keys feature.<br /><br /> To enable this feature, the client must use Encap version 3.8 or newer. |\n\n## Lock reason\n\nPossible values for the lock reason (`lockReason`).\n\n| **Reason name** | **Description** |\n| :-- | :-- |\n| `OPEN` | The device is unlocked. |\n| `DEVICE_OR_PIN_VERIFICATION_FAILED` | The device is locked due to a failed authentication, caused by use of the wrong device and/or a second-factor error (incorrect PIN code or biometrics). |\n| `LOCKED_BY_ADMIN` | The device is locked by administrative operation. |\n| `DEVICE_VERIFICATION_FAILED` | The device is locked due to a failed authentication with the wrong device. |\n| `PIN_VERIFICATION_FAILED` | The device is locked due to a failed authentication, caused by a second-factor error (incorrect PIN code or biometrics). |\n| `INCORRECT_SALT_KEY_ID` | The device is locked because it provided an incorrect Salt-key ID. |\n| `HW_KEY_VERIFICATION_FAILED` | The device is locked because it failed the verification of the hardware-protected key (the key provided was incorrect). |\n| `APPATTEST_VERIFICATION_FAILED` | The device is locked because it failed the verification of the App Attest attestation. |\n| `PLAYINTEGRITY_VERIFICATION_FAILED` | The device is locked because it failed the verification of the Play Integrity attestation. |\n\n## Operation context maximum character lengths\n\nThe maximum character length that the operation context content (`content`) can be for the different ReuseID operations.\n\n| **Property name** | **Registration** | **Authentication** | **Signature** |\n| :-- | :-- | :-- | :-- |\n| Pre-operation context content (`content`) | Not applicable. | 5000 characters. | 20000 characters. |\n| Post-operation context content (`content`) | 5000 characters. | 5000 characters. | 5000 characters. |\n\n## Operation error codes\n\nPossible values for the operation error code.\n\n### MobileID\n\n| **Error code name** | **Description** |\n| :-- | :-- |\n| `AUTHORIZATION_TOKEN_VERIFICATION_FAILED` | The operation failed because authorisation token validation failed. |\n| `CALLBACK_FAILED` | The operation failed because the session callback failed. Legacy value from synchronous callback model. |\n| `CALLBACK_PROCESSING_ERROR` | The operation failed because of an error in the data sent from the client. |\n| `CANCELLED_APPATTEST_REQUIRED` | The operation failed because of missing App Attest attestation details. |\n| `CANCELLED_AUTH_METHOD_DEACTIVATED` | The operation failed because the session was cancelled by the device. The device started a deactivation of authentication method(s). |\n| `CANCELLED_BY_DEVICE` | The operation failed because the session was cancelled by the device. |\n| `CANCELLED_BY_SP` | The operation failed because the session was cancelled by the service provider. |\n| `CANCELLED_INTERMEDIATE_PUSH_REQUIRED` | The operation failed because of missing intermediate push attestation details. |\n| `CANCELLED_NEW_ACTIVATION` | The operation failed because the session was cancelled when a new activation was started. |\n| `CANCELLED_PERFORM_RECOVERY_STARTED` | The operation failed because the session was cancelled when recovery was started. |\n| `EXPIRED` | The operation failed because the session has expired. |\n| `FAILED_RECOVERY_DOES_NOT_EXIST` | The operation failed because the recovery does not exist. |\n| `GEOFENCING_FAILED` | The operation failed because the geofencing validation failed. |\n| `LOCKED_APPATTEST_VERIFICATION_FAILED` | The operation failed because the App Attest validation failed. |\n| `LOCKED_BY_ADMIN` | The operation failed because the device is locked by admin. |\n| `LOCKED_DEVICE_VERIFICATION_FAILED` | The operation failed because the device is locked by device verification. |\n| `LOCKED_HW_KEY_VERIFICATION_FAILED` | The operation failed because the device provided an incorrect signed challenge. |\n| `LOCKED_INCORRECT_SALT_KEY_ID` | The operation failed because the device is locked by incorrect Salt-key ID. |\n| `LOCKED_INTERMEDIATE_PUSH_VERIFICATION_FAILED` | The operation failed because the intermediate push attestation validation failed. |\n| `LOCKED_PERFORM_RECOVERY_FAILED` | The operation failed because the recovery is locked. |\n| `LOCKED_PIN_VERIFICATION_FAILED` | The operation failed because the device is locked by PIN verification. |\n| `LOCKED_PLAYINTEGRITY_VERIFICATION_FAILED` | The operation failed because the Play Integrity attestation validation failed. |\n| `LOCKED` | The operation failed because the device is locked. |\n\n### Passkeys\n\n| **Error code name** | **Description** |\n| :-- | :-- |\n| `CANCELLED_BY_SP` | The operation failed because the session was cancelled by the service provider. |\n| `CANCELLED_BY_USER` | The operation failed because the session was cancelled by the end-user. |\n| `EXPIRED` | The operation failed because the session has expired. |\n| `FAILED_VERIFICATION` | The Passkeys service could not verify the passkey. There was an error in the interaction between the service and the browser. |\n| `INVALID_SEQUENCE_PARAMETERS` | The passkey received an unexpected call from the browser. This can occur if the end-user refreshes the page during the operation. |\n| `MISSING_PASSKEY` | The end-user selected a passkey not found in the Passkeys service.<br /><br /> **Note**: This can happen if the passkey has been deleted from the service. |\n| `PASSKEY_DOES_NOT_EXIST` | The passkey could not be mapped to an existing end-user in this service. |\n\n## Operation states\n\nPossible values for the operation state (`state`).\n\n**Note**: The state and the values that are returned in the response depend on the API call you are carrying out.\n\n| **State name** | **Description** |\n| :-- | :-- |\n| `PENDING` | The operation has been successfully initiated.<br /><br /> It is waiting for the device to complete the operation. |\n| `COMPLETED` | The operation has been completed. |\n| `FAILED` | The operation has failed.<br /><br /> The response contains an `errorCode` and an `errorDescription` which you can use to determine the cause of the error.<br /><br /> For more information, see [Operation error codes](/apis/reuseid/#section/Common-concepts/Operation-error-codes) for possible values. |\n\n## Operation types\n\nPossible values for the operation type.\n\n| **Operation type** | **Description** |\n| :-- | :-- |\n| `REGISTRATION` | The operation type is registration. |\n| `RE_REGISTRATION` | The operation type is re-registration. |\n| `AUTHENTICATION` | The operation type is authentication. |\n| `SIGNING` | The operation type is signing. |\n| `RECOVERY` | An existing recovery has been used to perform a recovery for a new device. |\n| `AUTH_AND_ACTIVATE` | An additional authentication method is activated for an existing device. |\n| `AUTH_AND_DEACTIVATE` | An authentication method is deactivated for an existing device. |\n| `ADD_OR_UPDATE_RECOVERY` | A recovery is set up for an existing device. |\n\n## Passkey session timeout values\n\nThe allowed values that the passkey session timeout (`sessionTimeout`) can be, which vary depending on what is passed for the `userVerification` parameter. \n\n- The minimum allowed value is always `30000` milliseconds.\n- The maximum allowed value is shown in the table below.\n- The default value is shown in the table below.\n\n**Note**: The default value is used if you do not pass a value for the passkey `sessionTimeout`.\n\n| **User verification** | **Session timeout values** |\n| :-- | :-- |\n| When `userVerification` is set to `required`: | <ul><li>The default `sessionTimeout` value is `300000` milliseconds.</li> <li>The maximum `sessionTimeout` value is `600000` milliseconds.</li></ul> |\n| When `userVerification` is set to `preferred`: | <ul><li>The default `sessionTimeout` value is `300000` milliseconds.</li> <li>The maximum `sessionTimeout` is value is `600000` milliseconds.</li></ul> |\n| When `userVerification` is set to `discouraged`: | <ul><li>The default `sessionTimeout` value is `120000` milliseconds.</li> <li>The maximum `sessionTimeout` value is `180000` milliseconds.</li></ul> |\n\n**Note**: For more information about `userVerification` values, see the [Passkey user verification](/apis/reuseid/#section/Common-concepts/Passkey-user-verification) table.\n\n## Passkey user verification\n\nPossible values for the passkey user verification (`userVerification`).\n\n| **Value** | **Description** |\n| :-- | :-- |\n| `required` | The authenticator must perform a user verification. If not, then the operation should fail.<br /><br /> **Note**: For example, this verification could be with biometrics or PIN. |\n| `preferred` | The authenticator should perform a user verification if available. If not, then the operation can still proceed.<br /><br /> **Note**: This is the default value. |\n| `discouraged` | The authenticator should not perform a user verification. |\n\n## Play Integrity statuses\n\nPossible values for the Play Integrity attestation status (`playIntegrityStatus`).\n\n| **Status name** | **Description** |\n| :-- | :-- |\n| `VERIFIED` | Attestation verification was successful. |\n| `FAILED_INTEGRITY_CHECK` | Attestation failed because the integrity check failed. |\n| `FAILED_UNRECOGNIZED_PLAY_APP` | Attestation failed because the Google Play app is unrecognized. |\n| `FAILED_UNLICENSED_PLAY_APP` | Attestation failed because the Google Play app is unlicensed. |\n| `FAILED_INCORRECT_PACKAGE_NAME` | Attestation failed because of incorrect package name. |\n| `FAILED_INVALID_JWS` | Attestation failed because of invalid JWS format. |\n| `FAILED_CLIENT_API_FAILURE` | Attestation failed because Google Play Integrity returned an API exception. |\n| `FAILED_CLIENT_TIMEOUT` | Attestation failed due to request taking longer than the configured timeout. |\n| `FAILED_INCORRECT_NONCE` | Attestation failed because of incorrect nonce. |\n| `FAILED_MISSING_JWS` | Attestation failed because of missing JWS. |\n| `FAILED_MISSING_STATUS` | Attestation failed because of missing status returned from the client. |\n| `FAILED_INVALID_TIMESTAMP` | Attestation failed because the timestamp is not within the lifetime of the Encap server session. |\n| `FAILED_CLIENT_PLAY_SERVICES_OUT_OF_DATE` | Attestation failed because the client does not have Google Play or the version is too old. |\n\n## Recovery methods\n\nPossible values for the recovery method (`recoveryMethod`).\n\n| **Recovery method** | **Description** |\n| :-- | :-- |\n| `CLOUD_BACKUP_RECOVERY_CODE` | Recovery is based on cloud backup and a recovery key locked with a PIN. |\n| `CLOUD_BACKUP_SERVER_SIDE_FACE` | Recovery is based on cloud backup and a recovery key locked with server-side face authentication. |\n\n## Recovery statuses\n\nPossible values for the recovery status (`recoveryStatus`).\n\n| **Status name** | **Description** |\n| :-- | :-- |\n| `ACTIVATED` | Recovery has been set up for the device and is ready to be used. |\n| `DEACTIVATED` | Recovery has been deactivated. |\n| `RECOVERED` | Recovery has been used to recover the device. |\n| `LOCKED` | Recovery has been locked. |\n\n## Risk attributes\n\nThe risk attributes that can be collected for the device (`riskAttributes`).\n\nYou can configure which attributes are collected in the application configuration. To learn more, see [Risk data](/docs/mobile-identity/mobileid/features/application-configuration#risk-data) in the **Application configuration** feature documentation.\n\n- Risk attributes marked with **Yes** in the **Always configured** column are always collected, for debugging purposes.\n- Risk attributes marked with **No** in the **Always configured** column are only collected if configured in the application configuration.\n- The **Platform** column indicates whether the risk attribute is available for Android, iOS, or both.\n\n| **Attribute name** | **Type** | **Description** | **Always collected** | **Platform** |\n| :-- | :-- | :-- | :-- | :-- |\n| `operatingSystemFingerprint` | String | A fingerprint of the operating system. You can use this to detect whether the device is running a custom ROM or operating system. | Yes | Android |\n| `operatingSystemVersion` | String | The operating system version of the mobile device.<br /><br /> **Examples**: `6.0.1`, `iOS 14.4` | Yes | Android, iOS |\n| `inputMethod` | String | The input method that was used to enter text in the application. You can use this to detect when a custom keyboard is being used on the device.<br /><br /> **Note**: See [Create an input method](https://developer.android.com/guide/topics/text/creating-input-method) in the Android developer documentation for details. | No | Android |\n| `isDebuggable` | Boolean | Indicates whether the application running can be debugged using a source-level debugger, either by manifest entry or in an emulator.<br /><br > **Note**: Looks for `android:debuggable=true` in the manifest. | No | Android |\n| `isDebugEnabled` | Boolean | Indicates whether debug is enabled on the mobile device, either by the end-user setting (USB-debugging enabled) or when running in emulator (debugging enabled by default). | No | Android |\n| `isDebuggerConnected` | Boolean | Indicates whether a debugger is connected to the application. | No | Android |\n| `isEmulator` | Boolean | Indicates whether the application is running in an emulator. | No | Android |\n| `isRootAvailable` | Boolean | Indicates whether or not the mobile device has been rooted/jailbroken.<br /><br /> **Note**: This value has to be passed to Encap using the `setRiskParameter` API.<br /><br /> If the application is using Promon Shield, then the callback value can be passed to Encap. | No | Android, iOS |\n| `isSecureScreenLockEnabled` | Boolean | Indicates whether or not the mobile device has secure screen enabled.<br /><br /> **Note**: This indicates whether the end-user has enabled either biometric or passcode authentication for unlocking their mobile device. | No | Android, iOS |\n| `serverClientIp` | String | The host address that the request originated from. It contains the value of the X-Forwarded-For (XFF) header from the request, and can contain multiple IP addresses depending on proxy and load balancers.<br /><br > **Note**: If XFF is not present, we will use the remote address of the request. It can be either the IP of the client or the last proxy that sent the request.<br /><br /> It is specified by the value of the Common Gateway Interface (CGI) variable `REMOTE_ADDR`. | No | Android, iOS |\n| `signerHashes` | Base64 | A SHA-256 hash of the public key, certificate, and application signer. If there are more signers, then each hash is comma-separated.<br /><br /> **Note**: You can use this to detect whether the application has been re-signed. | No | Android |\n| `userAgent` | String | The HTTP User-Agent as reported from the mobile device application. | No | Android, iOS |\n| `deviceHash` | Base64 | The SHA256 hash of the unique hardware device ID for the client device. | Yes | Android, iOS |\n| `deviceManufacturer` | String | The manufacturer of the mobile device.<br /><br /> **Examples**: `Samsung`, `Apple`. | Yes | Android, iOS |\n| `deviceModel` | String | The model name of the mobile device.<br /><br /> **Examples**: `Nexus S`, `iPad2,2` | Yes | Android, iOS |\n| `operatingSystemType` | String | The operating system type of the mobile device.<br /><br /> **Examples**: `Android`, `iOS` | Yes | Android, iOS |\n| `applicationHash` | Base64 | The SHA256 hash of the application name.<br /><br /> **Note**: The server can use this for detecting re-packaging. | No | Android, iOS |\n| `clientSideIp` | JSON | An array containing the client network interfaces. This includes the type of the network and the IP address.<br /><br /> **Note**: The list can contain multiple interfaces if the end-user's device is connected to more than one at the time of the transaction.<br /><br /> **Examples**: `[{\"Type\":\"Cellular\",\"IPAddress\":\"123.123.123.123\"}, {\"Type\":\"Wifi\",\"IPAddress\":\"124.124.124.124\"}]` | No | Android, iOS |\n| `hwKeyClientStatus` | String | The status of the hardware-protected key signature preformed by the Encap client SDK.<br /><br /> **Note**: See [Hardware-protected key client statuses](#section/Common-concepts/Hardware-protected-key-client-statuses) for possible values. | No | Android, iOS |\n| `hwKeyServerResult` | String | The result of the hardware-protected key signature verification on the Encap server.<br /><br /> **Note**: See [Hardware-protected key server results](#section/Common-concepts/Hardware-protected-key-server-results) for possible values. | No | Android, iOS |\n| `batteryLevel` | Integer | The battery level of the mobile device, given as a percentage. | No | Android, iOS |\n| `isPowerConnected` | Boolean | Indicates whether or not the mobile device is being charged or is connected to a charger. | No | Android, iOS |\n| `timeZone` | String | The current time zone setting of the device. |  | Android, iOS |\n| `locale`  | String   | The current locale or language setting of the device. |  | Android, iOS |\n| `isDeveloperMode` | Boolean | Indicates whether the developer settings are enabled on the device. |  | Android | \n| `isOverlayDetected` | Boolean | Indicates whether a screen overlay is detected on the device. |  | Android | \n| `magnetometer` | JSON | An array containing the magnetic field strength measurements with timestamp from the device's magnetometer sensor. |  | iOS, Android |\n| `barometer` | JSON | An array containing atmospheric pressure measurements with timestamp from the device's barometer sensor. |  | iOS, Android |\n| `gravity` | JSON | An array containing gravity force measurements with timestamp from the device's gravity sensor. |  | iOS, Android |\n| `ssid` | Base64 | Provides the name of the Wi-Fi network that the device is connected to. |  | iOS, Android | \n| `bssid` | String | Provides the MAC address of the Wi-Fi access point to which the device is connected to. |  | iOS, Android |\n| `isVpnEnabled` | Boolean | Indicates whether the mobile device is connected to a VPN. |  | iOS, Android |\n| `isProxyEnabled` | Boolean | Indicates whether the mobile device is connected to a HTTP/HTTPS proxy. |  | iOS, Android |\n\n## User states\n\nPossible values for the ReuseID user state (`state`).\n\n| **State name** | **Description** |\n| :-- | :-- |\n| `ACTIVE` | Represents an active, successfully enrolled user. |\n| `LOCKED` | Represents a locked user.<br /><br /> **Note**: Users in a locked state cannot perform any operations. |",
    "contact": "",
    "license": "",
    "termsOfService": ""
  },
  "servers": [
    {
      "url": "https://api.signicat.com/reuseid/core"
    }
  ],
  "tags": [
    {
      "name": "User",
      "description": "You can use the **User** resource for operations related to creating, managing and retrieving information about ReuseID users.\n\n## Useful information\n\n- A user corresponds to one of your end-users in the ReuseID service.\n- When a user is created, we generate a valid UUID to identify it called a `userId`.\n- The `userId` is required for carrying out most ReuseID operations such as registration and authentication.\n"
    },
    {
      "name": "MobileID device registration",
      "description": "You can use the **MobileID device registration** resource for operations related to registering MobileID devices for your ReuseID users.\n\n## Useful information\n\n- A MobileID device registration operation is identified by its `transactionId`.\n- The `transactionId` can be used for subsequent operations such as to check the state of an ongoing registration or to cancel it.\n- Once a device is registered, it can be identified by its universally unique identifier (UUID) called a `deviceId`.\n- The `deviceId` is required for carrying out ReuseID operations such as authentication and signing on a specific device.\n"
    },
    {
      "name": "MobileID device authentication",
      "description": "You can use the **MobileID device authentication** resource for operations related to authenticating and authorising with MobileID devices for your ReuseID users.\n\n## Useful information\n\n- A MobileID device authentication operation is identified by its `transactionId`.\n- The `transactionId` can be used for subsequent operations such as to check the state of an ongoing authentication or to cancel it.\n"
    },
    {
      "name": "MobileID device signature",
      "description": "You can use the **MobileID device signature** resource for operations related to signing with MobileID devices for your ReuseID users.\n\n## Useful information\n\n- A MobileID device signature operation is identified by its `transactionId`.\n- The `transactionId` can be used for subsequent operations such as to check the state of an ongoing signing or to cancel it.\n"
    },
    {
      "name": "MobileID device management",
      "description": "You can use the **MobileID device management** resource for operations related to managing MobileID devices for your ReuseID users.\n\n## Useful information\n\nAll device management operations require both:\n\n- A ReuseID user, identified by their `userId`.\n- A registered MobileID device, identified by its `deviceId`.\n"
    },
    {
      "name": "MobileID account recovery",
      "description": "You can use the **MobileID account recovery** resource for operations related to MobileID account recovery for your ReuseID users.\n\n## Useful information\n\n- A MobileID account recovery operation is identified by its `transactionId`.\n- The `transactionId` can be used to get details about the recovery.\n"
    },
    {
      "name": "Passkey registration",
      "description": "You can use the **Passkey registration** resource for operations related to registering passkeys for your ReuseID users.\n\n## Useful information\n\n- A passkey registration operation is identified by its `transactionId`.\n- The `transactionId` can be used for subsequent operations such as to check the state of an ongoing passkey registration or to cancel it.\n"
    },
    {
      "name": "Passkey authentication",
      "description": "You can use the **Passkey authentication** resource for operations related to authenticating and authorising with passkeys for your ReuseID users.\n\n## Useful information\n\n- A passkey authentication operation is identified by its `transactionId`.\n- The `transactionId` can be used for subsequent operations such as to check the state of an ongoing passkey registration or to cancel it.\n"
    },
    {
      "name": "Passkey management",
      "description": "You can use the **Passkey management** resource for operations related to managing passkeys for your ReuseID users.\n\n## Useful information\n\nAll passkey management operations require both:\n\n- A ReuseID user, identified by their `userId`.\n- A registered passkey, identified by its `passkeyId`.\n"
    },
    {
      "name": "MobileID device hash management",
      "description": "You can use the device hashes resource for operations related to:\n\n- Reviewing or locking flagged device hashes.\n- Blocking and unblocking device hashes.\n\n---\n\n**Note**: The request and response samples are for illustrative purposes only,\nand discrepancies can occur between the sample values in request and response objects.\n\n---\n\n"
    }
  ],
  "paths": {
    "/credentials/devices/{deviceId}/recovery-lock": {
      "get": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Get recovery lock",
        "description": "This operation returns the lock status of the MobileID account recovery feature for a ReuseID user's device.\n\n**Note**: If you enable account recovery in your application configuration, then `recoveryLock` is set to `false` by default. This means that the device can use account recovery.\n",
        "operationId": "getRecoveryLockStatus",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the recovery lock status for the device.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecoveryLock"
                },
                "example": {
                  "recoveryLock": false
                }
              }
            }
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid_request",
                  "code": "invalid_request",
                  "status": 400,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "userId parameter is missing"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "409": {
            "description": "The device is deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device is deleted",
                  "code": "device_is_deleted",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot update device with state DELETED"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Update recovery lock",
        "description": "This operation updates the lock status of the MobileID account recovery feature for a ReuseID user's device.\n",
        "operationId": "putRecoveryLockStatus",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecoveryLockRequest"
              },
              "example": {
                "recoveryLock": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Successfully updated the recovery lock status for the device.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecoveryLock"
                },
                "example": {
                  "recoveryLock": true
                }
              }
            }
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "examples": {
                  "The user ID parameter is missing.": {
                    "description": "The user ID parameter is missing.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid_request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "userId parameter is missing"
                    }
                  },
                  "The request parameter is invalid.": {
                    "description": "The request parameter is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "You must provide recoveryLock and it must be true|false",
                      "traceId": "fb619e0f789111d96bea22dacae2cddd"
                    }
                  },
                  "The request identifier is invalid.": {
                    "description": "The request identifier is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "detail": "deviceId must start with a letter or digit and contain only digits, lowercase letters (a-f), and the character -",
                      "traceId": "05af98dcbe861fee1c0e156fdd5c21e5"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "409": {
            "description": "The device is deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device is deleted",
                  "code": "device_is_deleted",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot update device with state DELETED"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/{deviceId}/geofencing": {
      "get": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Get geofencing settings",
        "description": "This operation returns the geofencing configuration for a ReuseID user's device.",
        "operationId": "getGeofencingSettings",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the geofencing settings for the device.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeofenceSettingsResponse"
                },
                "example": {
                  "mode": "OPTIONAL",
                  "allowedContinents": "EU",
                  "allowedCountries": "CT",
                  "deniedCountries": "RU"
                }
              }
            }
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid_request",
                  "code": "invalid_request",
                  "status": 400,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "userId parameter is missing"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "409": {
            "description": "The device is deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device is deleted",
                  "code": "device_is_deleted",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot update device with state DELETED"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Update geofencing settings",
        "description": "This operation updates the geofencing configuration for a ReuseID user's device.",
        "operationId": "putGeofencingSettings",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GeofenceSettings"
              },
              "example": {
                "mode": "OPTIONAL",
                "allowedContinents": "EU",
                "allowedCountries": "CT",
                "deniedCountries": "RU"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Successfully updated the geofencing settings for the device.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GeofenceSettingsResponse"
                },
                "example": {
                  "mode": "OPTIONAL",
                  "allowedContinents": "EU",
                  "allowedCountries": "CT",
                  "deniedCountries": "RU"
                }
              }
            }
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "examples": {
                  "The user ID parameter is missing.": {
                    "description": "The user ID parameter is missing.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid_request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "userId parameter is missing"
                    }
                  },
                  "The request parameter is invalid.": {
                    "description": "The request parameter is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "You must provide recoveryLock and it must be true|false",
                      "traceId": "fb619e0f789111d96bea22dacae2cddd"
                    }
                  },
                  "The request identifier is invalid.": {
                    "description": "The request identifier is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "detail": "deviceId must start with a letter or digit and contain only digits, lowercase letters (a-f), and the character -",
                      "traceId": "05af98dcbe861fee1c0e156fdd5c21e5"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "409": {
            "description": "The device is deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device is deleted",
                  "code": "device_is_deleted",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot update device with state DELETED"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Delete geofencing settings",
        "description": "This operation deletes the geofencing configuration for a ReuseID user's device.",
        "operationId": "deleteGeofencingSettings",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted the geofencing settings for the device."
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid_request",
                  "code": "invalid_request",
                  "status": 400,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "userId parameter is missing"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "examples": {
                  "Not found. The server cannot find the requested resource.": {
                    "description": "Not found. The server cannot find the requested resource.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "User entity does not exist",
                      "code": "user_entity_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                    }
                  },
                  "The device does not exist.": {
                    "description": "The device does not exist.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Device does not exist",
                      "code": "device_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1d",
                      "detail": "Failed getting device by ID : ed85c025-4e6c-47e2-86ec-f0e58f739ee6 for user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "The device is deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device is deleted",
                  "code": "device_is_deleted",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot update device with state DELETED"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/device-hashes/{deviceHashBase64UrlEncoded}/lock": {
      "put": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Lock devices with device hash",
        "description": "This operation locks all devices associated with a given device hash.",
        "operationId": "lockDevicesWithDeviceHash",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account.\n\n**Note**: This is an optional parameter, as the account ID is fetched from the access token that you use when initiating the request.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The ID of the Signicat account.\n\n**Note**: This is an optional parameter, as the account ID is fetched from the access token that you use when initiating the request.\n",
              "example": "a-sdge-Abcdefghijk123456789"
            },
            "example": "a-sdge-Abcdefghijk123456789"
          },
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "200": {
            "description": "The request to lock devices by device hash was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DHLockDevicesResponse"
                },
                "example": {
                  "lockedDevices": [
                    "294ffdd7-4306-49dc-aa5e-72c4bed89d18",
                    "46af605e-a4c0-47da-9554-b6c0dc3fcd3a"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash does not exist",
                  "code": "device_hash_does_not_exist",
                  "status": 404,
                  "detail": "Failed locking device hash: xVJ9HYE-WJL40_K04CIDZzuD9jD5I9sLVZ3d47o08U0=. Reason : The given device hash is not found",
                  "traceId": "a44b9b927bbfee096396c5a910a87342"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/device-hashes/{deviceHashBase64UrlEncoded}/block": {
      "get": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Blocklist - Get device hash",
        "description": "This operation effectively checks if given device hash is in list of blocked device hashes.",
        "operationId": "getDeviceHashFromBlockList",
        "parameters": [
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "200": {
            "description": "The request to get device hash from blocklist was successful."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash does not exist",
                  "code": "device_hash_does_not_exist",
                  "status": 404,
                  "detail": "Failed fetching blocked device hash: xBHQ4HC3yLEUvEwnX5EBTBAbKkCia35WwO1dxqiFvYo=. Reason : The given device hash is not found",
                  "traceId": "a803b2cb9a4769f99817aa1a066ed7bb"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Blocklist - Add device hash",
        "description": "This operation adds given device hash to list of blocked device hashes.",
        "operationId": "addDeviceHashToBlockList",
        "parameters": [
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "204": {
            "description": "The request to add device hash to blocklist was successful."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash does not exist",
                  "code": "device_hash_does_not_exist",
                  "status": 404,
                  "detail": "Failed blocking device hash: xBHQ4HC3yLEUvEwnX5EBTBAbKkCia35WwO1dxqiFvYo=. Reason : The given device hash is not found",
                  "traceId": "a803b2cb9a4769f99817aa1a066ed7bb"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash is allowlisted",
                  "code": "device_hash_is_allowlisted",
                  "status": 409,
                  "detail": "Device hash A_JX6Xcwf9M-PG00SOC83sPwVubyY3qenCbHQtpwLSk= cannot be added to blocklist. First, remove it from the allowlist.",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Blocklist - Remove device hash",
        "description": "This operation removes given device hash from list of blocked device hashes.",
        "operationId": "deleteDeviceHashFromBlockList",
        "parameters": [
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "204": {
            "description": "The request to remove device hash from blocklist was successful."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash does not exist",
                  "code": "device_hash_does_not_exist",
                  "status": 404,
                  "detail": "Failed unblocking device hash: xBHQ4HC3yLEUvEwnX5EBTBAbKkCia35WwO1dxqiFvYo=. Reason : The given device hash is not found",
                  "traceId": "a803b2cb9a4769f99817aa1a066ed7bb"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/device-hashes/{deviceHashBase64UrlEncoded}/allow": {
      "get": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Allowlist - Get device hash",
        "description": "This operation effectively checks if given device hash is in list of allowed device hashes.",
        "operationId": "getDeviceHashFromAllowlist",
        "parameters": [
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "200": {
            "description": "The request to get device hash from allowlist was successful."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash does not exist",
                  "code": "device_hash_does_not_exist",
                  "status": 404,
                  "detail": "Cannot fetch device hash from allowlist for the given accountId: a-sdge-c2z0wgHkZjpBnS7uB621 and deviceHash: xBHQ4HC3yLEUvEwnX5EBTBAbKkCia35WwO1dxqiFvYo=",
                  "traceId": "a803b2cb9a4769f99817aa1a066ed7bb"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Allowlist - Add device hash",
        "description": "This operation adds given device hash to list of allowed device hashes.",
        "operationId": "addDeviceHashToAllowlist",
        "parameters": [
          {
            "name": "comment",
            "in": "query",
            "description": "The comment to be stored when adding device hash to the allowlist.\n\n**Note**: This is an optional parameter, and it cannot be larger than 1024 characters!\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The comment to be stored when adding device hash to the allowlist.\n\n**Note**: This is an optional parameter, and it cannot be larger than 1024 characters!\n",
              "example": "Some text, cannot be larger than 1024 characters!"
            },
            "example": "Some text, cannot be larger than 1024 characters!"
          },
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "204": {
            "description": "The request to add device hash to allowlist was successful."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash is blocklisted",
                  "code": "device_hash_is_blocklisted",
                  "status": 409,
                  "detail": "Device hash A_JX6Xcwf9M-PG00SOC83sPwVubyY3qenCbHQtpwLSk= cannot be added to allowlist. First, remove it from the blocklist.",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Allowlist - Remove device hash",
        "description": "This operation removes given device hash from list of allowed device hashes.",
        "operationId": "deleteDeviceHashFromAllowlist",
        "parameters": [
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "204": {
            "description": "The request to remove device hash from allowlist was successful."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash does not exist",
                  "code": "device_hash_does_not_exist",
                  "status": 404,
                  "detail": "Failed removing device hash: xBHQ4HC3yLEUvEwnX5EBTBAbKkCia35WwO1dxqiFvYo= from allowlist. Reason : The given device hash is not found",
                  "traceId": "a803b2cb9a4769f99817aa1a066ed7bb"
                }
              }
            }
          }
        }
      }
    },
    "/users": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Create user",
        "description": "This operation creates an active ReuseID user.\n\nOnce a user is successfully created, they can then register MobileID devices and/or passkeys.\n",
        "operationId": "addUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserRequest"
              },
              "example": {
                "externalRef": "Empl10300469",
                "segment": "SE",
                "attributes": {
                  "firstname": "George",
                  "lastname": "Harrison"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successfully created a ReuseID user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                },
                "example": {
                  "externalRef": "Empl10300469",
                  "segment": "SE",
                  "id": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                  "created": "2022-08-23T12:28:57.123Z",
                  "state": "ACTIVE",
                  "attributes": {
                    "firstname": "George",
                    "lastname": "Harrison"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "The attribute is invalid.": {
                    "description": "The attribute is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "Attribute:'FirstName'",
                          "reason": "Attribute:'FirstName' must start with a letter, digit or an '_', and contain only digits, lowercase letters (a-z), and the characters -._~"
                        }
                      ]
                    }
                  },
                  "Multiple attributes are invalid.": {
                    "description": "Multiple attributes are invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "Attribute:'FirstName'",
                          "reason": "Attribute:'FirstName' must start with a letter, digit or an '_', and contain only digits, lowercase letters (a-z), and the characters -._~"
                        },
                        {
                          "name": "Attribute:'LastName'",
                          "reason": "Attribute:'LastName' must start with a letter, digit or an '_', and contain only digits, lowercase letters (a-z), and the characters -._~"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "examples": {
                  "User already exists": {
                    "description": "The error response when a user already exists.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "User entity already exists",
                      "code": "user_entity_already_exists",
                      "status": 409,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Aborting user creation. User entity with user ID: Empl10300469 already exists."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/{userId}/id-verifications": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get identity verifications for user",
        "description": "This operation returns a list of all identity verifications that a ReuseID user has carried out.\n",
        "operationId": "getIDVerifications",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the identity verification for the user.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IDVerification"
                  }
                },
                "example": [
                  {
                    "verificationId": "b477c7fc-93d0-4e9d-bc58-7444bc33ef12",
                    "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                    "provider": "signicatvideoid",
                    "dossierId": "66666666-1617-45a7-991d-785c2ad77111",
                    "processId": "88888888-1617-45a7-991d-785c2ad77222",
                    "created": "2023-01-03T07:55:05.233Z",
                    "orchestrationId": "7777777-1617-45a7-991d-785c2ad77111"
                  },
                  {
                    "verificationId": "b412c7fb-91j2-5g5m-gs98-7304bc33ef33",
                    "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                    "provider": "signicatvideoid",
                    "dossierId": "54456566-1777-45a7-321d-115c2ad77132",
                    "processId": "87081841-1617-45a7-991d-785c2ad77233",
                    "created": "2023-01-03T07:55:05.233Z",
                    "orchestrationId": "3775172-3640-44b7-811e-555c2fe30156"
                  }
                ]
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Add identity verification",
        "description": "This operation adds an entry to the list of identity verifications that a ReuseID user has carried out.\n",
        "operationId": "addIDVerification",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IDVerificationAddRequest"
              },
              "example": {
                "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                "provider": "signicatvideoid",
                "dossierId": "66666666-1617-45a7-991d-785c2ad77111",
                "processId": "88888888-1617-45a7-991d-785c2ad77222",
                "orchestrationId": "7777777-1617-45a7-991d-785c2ad77111"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successfully added an identity verification.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IDVerification"
                },
                "example": {
                  "verificationId": "b477c7fc-93d0-4e9d-bc58-7444bc33ef12",
                  "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                  "provider": "signicatvideoid",
                  "dossierId": "66666666-1617-45a7-991d-785c2ad77111",
                  "processId": "88888888-1617-45a7-991d-785c2ad77222",
                  "created": "2023-01-03T07:55:05.233Z",
                  "orchestrationId": "7777777-1617-45a7-991d-785c2ad77111"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          }
        }
      }
    },
    "/users/resolve": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Resolve external reference",
        "description": "This operation returns the `userId` for a ReuseID user that corresponds to the external reference that you specified.\n",
        "operationId": "resolveUserIDByExtref",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalRefResolveRequest"
              },
              "example": {
                "externalRef": "Empl10300469"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successfully resolved the external reference and fetched the ReuseID user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserIdValue"
                },
                "example": {
                  "externalRef": "Empl10300469",
                  "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with external reference: bobdylan."
                }
              }
            }
          }
        }
      }
    },
    "/credentials/passkeys/registrations": {
      "post": {
        "tags": [
          "Passkey registration"
        ],
        "summary": "Start passkey registration",
        "description": "This operation initiates a passkey registration valid for the given domain, for a ReuseID user.\n\n### How to add a passkey name and display name\n\nDuring this operation, we attempt to retrieve the following user attributes from the ReuseID user:\n- `passkeys-name`\n- `passkeys-displayname`\n\nIf they do exist, then they are used as the `name` and `displayName` respectively when creating the passkey.\n\nDepending on the passkey provider that the ReuseID user is using, these may be displayed in the overlays to help identify the passkey during registration and authentication operations.\n\nIf they do not exist, then the `userId` supplied in the request is used instead when creating the passkey.\n\n**Note**: To add these user attributes to a user, you can use the [Update user](/apis/reuseid/#tag/User/operation/updateUser) endpoint.\n",
        "operationId": "addPasskeyRegistration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasskeyRegistrationRequest"
              },
              "example": {
                "rpRedirectUri": "https://customerdomain.com/final",
                "userId": "8710745d-18bd-441d-91f8-44fd040323a9",
                "passkey": {
                  "domain": "acme.com",
                  "name": "myPassKeyName"
                },
                "operationProperties": {
                  "sessionTimeout": 30000,
                  "userVerification": "preferred"
                },
                "tags": [
                  "tag1",
                  "tag2"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The request to start passkey registration was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasskeyRegistrationResponse"
                },
                "example": {
                  "transactionId": "e625212d-48c8-4a35-89c5-0e1a7ac348aa",
                  "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                  "state": "PENDING",
                  "created": "2025-06-06T09:38:18.359Z",
                  "passkey": {
                    "name": "myPassKeyName",
                    "domain": "app.signicat.com"
                  },
                  "user": {
                    "id": "8710745d-18bd-441d-91f8-44fd040323a9",
                    "externalRef": "tttt22"
                  },
                  "rpRedirectUri": "https://myredirectdomain.com/final",
                  "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/registrations/start?transactionId=1f63b88a-4fed-4018-b80a-04e2cec065bf&messageId=d79dbbff-9e50-448f-92b0-966f6ea4dad5",
                  "operationProperties": {
                    "sessionTimeout": 30000,
                    "sessionExpiryTime": "2025-06-06T09:43:18.345863918Z",
                    "userVerification": "preferred"
                  },
                  "tags": [
                    "Tag 1",
                    "Tag 2"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/passkeys/authentications": {
      "post": {
        "tags": [
          "Passkey authentication"
        ],
        "summary": "Start Passkey authentication",
        "description": "This operation initiates a passkey authentication for a ReuseID user.\n",
        "operationId": "addPasskeyAuthentication",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasskeyAuthenticationRequest"
              },
              "example": {
                "rpRedirectUri": "https://www.customuserdomain.com",
                "operationProperties": {
                  "domain": "example.com",
                  "sessionTimeout": "300000",
                  "userVerification": "PREFERRED"
                },
                "tags": [
                  "tag 1",
                  "tag 2"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The request to start authentication was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasskeyAuthenticationResponse"
                },
                "example": {
                  "transactionId": "9ed44da4-fc3e-4c39-b26a-079587801001",
                  "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                  "state": "PENDING",
                  "created": "2025-06-06T10:39:24.668Z",
                  "rpRedirectUri": "https://www.myredirectdomain.com",
                  "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/authentications/start?transactionId=adb4ee62-e306-4ae0-b1e5-2e0f9fa287c0&messageId=4d04347c-6605-4004-b4d9-e9f716fb8030",
                  "operationProperties": {
                    "sessionTimeout": 30000,
                    "sessionExpiryTime": "2025-06-06T10:44:21.800784910Z",
                    "userVerification": "preferred",
                    "domain": "app.signicat.com"
                  },
                  "tags": [
                    "tag 1",
                    "tag 2"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "examples": {
                  "Not found. The server cannot find the requested resource.": {
                    "description": "Not found. The server cannot find the requested resource.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "userId",
                          "reason": "userId cannot be null or empty"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/signatures": {
      "post": {
        "tags": [
          "MobileID device signature"
        ],
        "summary": "Start signing",
        "description": "This operation initiates a MobileID device signing on a ReuseID user's device.",
        "operationId": "addSignature",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignatureRequest"
              },
              "example": {
                "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                "device": {
                  "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
                },
                "operationProperties": {
                  "sessionTimeout": "90000",
                  "preOperationContext": {
                    "title": "Consent Sign",
                    "content": "Pay me 100$",
                    "mimeType": "text/plain"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The request to start signing was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceSignature"
                },
                "example": {
                  "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                  "accountId": "a-sdge-Abcdefghijk123456789",
                  "state": "PENDING",
                  "operationProperties": {
                    "preOperationContext": {
                      "title": "Consent Sign",
                      "content": "Pay me 100$",
                      "mimeType": "text/plain"
                    },
                    "pushSent": false,
                    "sessionExpiryTime": "2022-08-19T06:04:53.123Z",
                    "sendPush": false
                  },
                  "created": "2022-08-19T06:03:23.123Z",
                  "device": {
                    "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                    "name": "sampleDevice"
                  },
                  "user": {
                    "externalRef": "Empl10300469",
                    "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "The request parameter is invalid.": {
                    "description": "The request parameter is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "userId",
                          "reason": "userId cannot be null or empty"
                        }
                      ]
                    }
                  },
                  "Multiple request parameters are invalid.": {
                    "description": "Multiple request parameters are invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "userId",
                          "reason": "userId cannot be null or empty"
                        },
                        {
                          "name": "preOperationContext",
                          "reason": "Operation context's content cannot be null"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/registrations": {
      "post": {
        "tags": [
          "MobileID device registration"
        ],
        "summary": "Start registration",
        "description": "This operation initiates a MobileID device registration or re-registration for a ReuseID user.",
        "operationId": "addRegistration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistrationRequest"
              },
              "example": {
                "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                "device": {
                  "name": "My iPhone"
                },
                "operationProperties": {
                  "registrationMode": "REGISTRATION",
                  "authLevel": "TWO_FACTOR",
                  "sessionTimeout": "90000"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The request to start registration was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceRegistration"
                },
                "example": {
                  "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                  "accountId": "a-sdge-Abcdefghijk123456789",
                  "state": "PENDING",
                  "operationProperties": {
                    "activationCode": "928401",
                    "authLevel": "TWO_FACTOR",
                    "sessionTimeout": "90000",
                    "sessionExpiryTime": "2021-01-21T24:17:57.123Z",
                    "registrationMode": "REGISTRATION"
                  },
                  "created": "2021-01-21T22:47:27.123Z",
                  "device": {
                    "name": "My iPhone"
                  },
                  "user": {
                    "externalRef": "Empl10300469",
                    "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "The request parameter is invalid.": {
                    "description": "The request parameter is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "userId",
                          "reason": "userId cannot be null or empty"
                        }
                      ]
                    }
                  },
                  "Multiple request parameters are invalid.": {
                    "description": "Multiple request parameters are invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "userId",
                          "reason": "Invalid UUID string: f4efbade-d474-4697-b910"
                        },
                        {
                          "name": "registrationMode",
                          "reason": "Registration mode must be one of REGISTRATION|RE_REGISTRATION"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/authentications": {
      "post": {
        "tags": [
          "MobileID device authentication"
        ],
        "summary": "Start authentication",
        "description": "This operation initiates a MobileID device authentication on a ReuseID user's device.\n",
        "operationId": "addAuthentication",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthenticationRequest"
              },
              "examples": {
                "The device is specified.": {
                  "description": "The device is specified.",
                  "value": {
                    "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                    "device": {
                      "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
                    },
                    "operationProperties": {
                      "sessionTimeout": "90000"
                    },
                    "tags": [
                      "some tag",
                      "another tag"
                    ]
                  }
                },
                "Broadcast mode is enabled.": {
                  "description": "Broadcast mode is enabled.",
                  "value": {
                    "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                    "device": {},
                    "operationProperties": {
                      "sessionTimeout": "90000",
                      "broadcast": true
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The request to start authentication was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceAuthentication"
                },
                "examples": {
                  "The device is specified.": {
                    "description": "The device is specified.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "PENDING",
                      "operationProperties": {
                        "sessionExpiryTime": "2022-08-19T06:03:07.123Z",
                        "pushSent": false
                      },
                      "created": "2022-08-19T06:01:37.123Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "sampleDevice"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      },
                      "tags": [
                        "some tag",
                        "another tag"
                      ]
                    }
                  },
                  "Broadcast mode is enabled.": {
                    "description": "Broadcast mode is enabled.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "PENDING",
                      "operationProperties": {
                        "sessionExpiryTime": "2022-08-19T06:03:07.123Z",
                        "broadcast": true,
                        "pushSent": false
                      },
                      "created": "2022-08-19T06:01:37.123Z",
                      "device": {},
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "examples": {
                  "Not found. The server cannot find the requested resource.": {
                    "description": "Not found. The server cannot find the requested resource.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "userId",
                          "reason": "userId cannot be null or empty"
                        }
                      ]
                    }
                  },
                  "Multiple request parameters are invalid.": {
                    "description": "Multiple request parameters are invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1d",
                      "invalidParams": [
                        {
                          "name": "userId",
                          "reason": "userId cannot be null or empty"
                        },
                        {
                          "name": "authLevel",
                          "reason": "Authentication level must be one of ONE_FACTOR|TWO_FACTOR"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          }
        }
      }
    },
    "/users/{userId}": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get user",
        "description": "This operation returns information about a ReuseID user.\n",
        "operationId": "getUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the ReuseID user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                },
                "example": {
                  "externalRef": "Empl10300469",
                  "segment": "SE",
                  "id": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                  "created": "2022-08-23T12:28:57.123Z",
                  "state": "ACTIVE",
                  "attributes": {
                    "firstname": "George",
                    "lastname": "Harrison"
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User"
        ],
        "summary": "Delete user",
        "description": "This operation deletes a ReuseID user.\n\n**Note**: You can only delete users that have their `state` set to `LOCKED`. This means that you cannot delete `ACTIVE` users.\n",
        "operationId": "deleteUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted the ReuseID user."
          },
          "400": {
            "description": "The ReuseID user must be in a LOCKED state to be deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid operation",
                  "code": "invalid_operation",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "User entity must be in LOCKED state in order to be deleted."
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "User"
        ],
        "summary": "Update user",
        "description": "This operations updates the parameters of a ReuseID user such as the user attributes, user state and user segment.\n\n### How to update user attributes\n\n- To update user attributes, you must specify the key-value pairs that you want to add, update or remove.\n- If an attribute is not mentioned, then it stays the same.\n\nTo learn about the update logic, see the table below:\n\n| **Action** | **Description** |\n| :-- | :-- |\n| Add new attribute | If the attribute in the list does not exist, then the new attribute is added. |\n| Update existing attribute | If the attribute in the list already exists, then the existing attribute is updated (patched). |\n| Remove existing attribute | If the attribute in the list already exists and null is specified, then the existing attribute is removed. |\n| No action | If the attribute in the list does not exist and null is specified, then no action occurs. |\n\nTo learn about how this works in practice, see the example below:\n\n1. The following attributes are set in the **Create user** operation:\n  ```json\n  {\n      \"externalRef\":\"test1\",\n      \"attributes\": {\n          \"abc\": \"123\",\n          \"def\": \"456\",\n          \"ghi\": \"789\"\n      }\n  }\n  ```\n2. Next, the following attributes are set in the **Update user** operation:\n  ```json\n  {\n      \"abc\": \"example1\",\n      \"xxx\": \"example2\",\n      \"ghi\": null\n  }\n  ```\n3. As a result, the following attributes are returned:\n  ```json\n  {\n      \"abc\": \"example1\",\n      \"def\": \"456\",\n      \"xxx\": \"example2\"\n  }\n  ```\n",
        "operationId": "updateUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserUpdateRequest"
              },
              "example": {
                "segment": "NO",
                "attributes": {
                  "lastname": null,
                  "age": "44"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successfully updated the ReuseID user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                },
                "example": {
                  "externalRef": "Empl10300469",
                  "segment": "NO",
                  "id": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                  "created": "2021-01-21T22:47:27.123Z",
                  "lastUsed": "2021-01-21T22:47:27.123Z",
                  "state": "ACTIVE",
                  "attributes": {
                    "firstname": "George",
                    "age": "44"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "The request identifier is invalid.": {
                    "description": "The request identifier is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "detail": "userId must start with a letter or digit and contain only digits, lowercase letters (a-f), and the character -",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c"
                    }
                  },
                  "The request parameter is invalid.": {
                    "description": "The request parameter is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "state",
                          "reason": "User state must be one of ACTIVE|LOCKED"
                        }
                      ]
                    }
                  },
                  "Multiple request parameters are invalid.": {
                    "description": "Multiple request parameters are invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid request parameter",
                      "code": "invalid_request_parameter",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "state",
                          "reason": "User state must be one of ACTIVE|LOCKED"
                        },
                        {
                          "name": "Attribute:'FirstName'",
                          "reason": "Attribute:'FirstName' must start with a letter, digit or an '_', and contain only digits, lowercase letters (a-z), and the characters -._~"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity already exists",
                  "code": "user_entity_already_exists",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Aborting user creation. User entity with user ID: Empl10300469 already exists."
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/{deviceId}": {
      "get": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Get device",
        "description": "This operation returns information about a ReuseID user's device.\n\n**Note**: To return a more extensive set of device information, you must set the `detailed` query parameter to `true`.\n",
        "operationId": "getDevice",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "detailed",
            "in": "query",
            "description": "A parameter that determines whether the `deviceDetails` object is returned in the response.\n\n**Note**: To return this object, you must set this parameter to `true`.\n",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "A parameter that determines whether the `deviceDetails` object is returned in the response.\n\n**Note**: To return this object, you must set this parameter to `true`.\n",
              "example": true
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the device.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Device"
                },
                "examples": {
                  "The default response.": {
                    "description": "The default response, when detailed is not set to 'true'.",
                    "value": {
                      "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                      "name": "sampleDevice",
                      "state": "ACTIVE",
                      "lastOperationType": "AUTHENTICATION",
                      "lastUsed": "2021-01-21T22:47:27.123Z",
                      "created": "2021-01-21T22:47:27.123Z"
                    }
                  },
                  "The detailed response.": {
                    "description": "The detailed response, when detailed is set to 'true'.",
                    "value": {
                      "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                      "name": "sampleDevice",
                      "state": "ACTIVE",
                      "lastOperationType": "AUTHENTICATION",
                      "lastUsed": "2021-01-21T22:47:27.123Z",
                      "created": "2021-01-21T22:47:27.123Z",
                      "deviceDetails": {
                        "applicationId": "encap",
                        "currentClientApiVersion": "3.15.0",
                        "activatedClientApiVersion": "3.15.0",
                        "activatedEncapRelease": "R_3_3",
                        "deviceHash": "Xsx6d7bmhh9ovUvhqp5KLOs480%2FWCq3bq9%2FC0apC4TU%3D",
                        "pushAddress": "ap7cmrQQTc0zb5aCPgXV0JxvrFeOO6CguQklentLMsc",
                        "operatingSystemType": "iOS",
                        "activatedAuthenticationMethods": [
                          "DEVICE",
                          "DEVICE:PIN"
                        ],
                        "activationTime": "2017-04-05T12:23:00.000Z",
                        "lock": {
                          "lockReason": [
                            "LOCKED_BY_ADMIN",
                            "DEVICE_VERIFICATION_FAILED"
                          ]
                        },
                        "attestation": {
                          "appAttestStatus": "VERIFIED",
                          "appAttestDate": "2022-06-24T20:56:01.366Z"
                        },
                        "recoveries": [
                          {
                            "recoveryId": "f87ab8a1-6321-4af4-8b9c-f16d8b31b055",
                            "recoveryMethod": "CLOUD_BACKUP_RECOVERY_CODE",
                            "recoveryStatus": "RECOVERED",
                            "createdDate": "2023-02-28T11:52:17.437Z",
                            "updatedDate": "2023-02-28T11:57:16.372Z",
                            "recoveredDate": "2023-02-28T11:57:16.310Z"
                          }
                        ],
                        "recoveryLock": false
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid_request",
                  "code": "invalid_request",
                  "status": 400,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "userId parameter is missing"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "examples": {
                  "Not found. The server cannot find the requested resource.": {
                    "description": "Not found. The server cannot find the requested resource.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "User entity does not exist",
                      "code": "user_entity_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                    }
                  },
                  "The device does not exist.": {
                    "description": "The device does not exist.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Device does not exist",
                      "code": "device_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1d",
                      "detail": "Failed getting device by ID : ed85c025-4e6c-47e2-86ec-f0e58f739ee6 for user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789."
                    }
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Delete device",
        "description": "This operation deletes a ReuseID user's device.",
        "operationId": "deleteDevice",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "generateEvent",
            "in": "query",
            "description": "A parameter that determines whether an event is generated if the device state is changed.\n\nNote: If no value is set, then the default value false is used. This means that no event is generated if the device state is changed.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines whether an event is generated if the device state is changed.\n\nNote: If no value is set, then the default value false is used. This means that no event is generated if the device state is changed.\n",
              "example": false
            },
            "example": false
          }
        ],
        "responses": {
          "202": {
            "description": "Successfully deleted the device."
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid_request",
                  "code": "invalid_request",
                  "status": 400,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "userId parameter is missing"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "examples": {
                  "Not found. The server cannot find the requested resource.": {
                    "description": "Not found. The server cannot find the requested resource.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "User entity does not exist",
                      "code": "user_entity_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                    }
                  },
                  "The device does not exist.": {
                    "description": "The device does not exist.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Device does not exist",
                      "code": "device_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1d",
                      "detail": "Failed getting device by ID : ed85c025-4e6c-47e2-86ec-f0e58f739ee6 for user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "The device is deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device is deleted",
                  "code": "device_is_deleted",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot update device with state DELETED"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Update device",
        "description": "This operation updates the name and/or state of a ReuseID user's device.\n",
        "operationId": "updateDevice",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "generateEvent",
            "in": "query",
            "description": "A parameter that determines whether an event is generated if the device state is changed.\n\nNote: If no value is set, then the default value false is used. This means that no event is generated if the device state is changed.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines whether an event is generated if the device state is changed.\n\nNote: If no value is set, then the default value false is used. This means that no event is generated if the device state is changed.\n",
              "example": false
            },
            "example": false
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeviceUpdateRequest"
              },
              "example": {
                "name": "My New iPhone",
                "state": "LOCKED"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successfully updated the device.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Device"
                },
                "example": {
                  "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                  "name": "My New iPhone",
                  "state": "LOCKED",
                  "lastOperationType": "AUTHENTICATION",
                  "lastUsed": "2021-01-21T22:47:27.123Z",
                  "created": "2021-01-21T22:47:27.123Z"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "The request parameter is invalid.": {
                    "description": "The request parameter is invalid.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "The user ID parameter is missing.": {
                    "description": "The user ID parameter is missing.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid_request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "userId parameter is missing"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "examples": {
                  "Not found. The server cannot find the requested resource.": {
                    "description": "Not found. The server cannot find the requested resource.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "User entity does not exist",
                      "code": "user_entity_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                    }
                  },
                  "The device does not exist.": {
                    "description": "The device does not exist.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Device does not exist",
                      "code": "device_does_not_exist",
                      "status": 404,
                      "traceId": "4bf239c088089f2bca77d3a413909f1d",
                      "detail": "Failed getting device by ID : ed85c025-4e6c-47e2-86ec-f0e58f739ee6 for user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "The device is deleted.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device is deleted",
                  "code": "device_is_deleted",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot update device with state DELETED"
                }
              }
            }
          }
        }
      }
    },
    "/users/{userId}/transactions": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get transactions for user",
        "description": "This operation returns a list of all transactions that a ReuseID user has carried out.\n",
        "operationId": "getUserTransactions",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "credentialType",
            "in": "query",
            "description": "A required parameter that determines the credential type of the transactions that are returned for this operation.\n\n**Allowed values**: It must be  either `device` or `passkey`.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "A required parameter that determines the credential type of the transactions that are returned for this operation.\n\n**Allowed values**: It must be  either `device` or `passkey`.\n",
              "example": "device"
            },
            "example": "device"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
              "example": 10
            },
            "example": 10
          },
          {
            "name": "offset",
            "in": "query",
            "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the transactions for the ReuseID user's devices.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserTransactions"
                },
                "example": {
                  "next": "/users/db4b1fc1-57fa-46fd-94c6-58aa2bd59d44/transactions?limit=3&offset=22c80f75-3d2e-41e1-a1dd-69050eaa17b5&credentialType=device",
                  "limit": 3,
                  "transactions": [
                    {
                      "transactionId": "8b53869e-359b-4c0b-be78-e0cce3cf1b17",
                      "ref": "/credentials/devices/authentications/8b53869e-359b-4c0b-be78-e0cce3cf1b17",
                      "operationType": "AUTHENTICATION",
                      "state": "COMPLETED",
                      "created": "2025-09-24T11:00:26.000Z",
                      "expires": "2025-09-24T11:05:26.000Z",
                      "credentialId": "c5745756-be09-484e-8578-b5d43fcbdef4",
                      "credentialType": "DEVICE"
                    },
                    {
                      "transactionId": "9ac1b8e2-a6f3-4fe1-987d-48172c9925bb",
                      "ref": "/credentials/devices/registrations/9ac1b8e2-a6f3-4fe1-987d-48172c9925bb",
                      "operationType": "REGISTRATION",
                      "state": "COMPLETED",
                      "created": "2025-09-24T10:59:47.000Z",
                      "expires": "2025-09-24T11:04:47.000Z",
                      "credentialId": "c5745756-be09-484e-8578-b5d43fcbdef4",
                      "credentialType": "DEVICE"
                    },
                    {
                      "transactionId": "7229ba35-3e17-43a7-9a1b-ab497b4b9007",
                      "ref": "/credentials/devices/authentications/7229ba35-3e17-43a7-9a1b-ab497b4b9007",
                      "operationType": "AUTHENTICATION",
                      "state": "COMPLETED",
                      "created": "2025-09-07T13:42:39.000Z",
                      "expires": "2025-09-07T13:47:39.000Z",
                      "credentialId": "0f23f8ec-3899-42a2-9f22-b7c8eec8f3e6",
                      "credentialType": "DEVICE"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "examples": {
                  "The user ID parameter is missing.": {
                    "description": "The user ID parameter is missing.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid_request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "userId parameter is missing"
                    }
                  },
                  "offset does not exist": {
                    "description": "offset does not exist",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid_request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Offset 58ccbe4f-5c81-4425-bb7d-f6378f35d402 does not exist"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Internal error",
                  "code": "internal_error",
                  "status": 500,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "error occurred"
                }
              }
            }
          }
        }
      }
    },
    "/users/{userId}/id-verifications/{verificationId}": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get identity verification",
        "description": "This operation returns a specific identity verification that a ReuseID user has carried out.\n",
        "operationId": "getIDVerification",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "verificationId",
            "in": "path",
            "description": "The ID of the identity verification, in a valid UUID format.\n\n**Note**: The `verificationId` is created when the identity verification is added.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the identity verification, in a valid UUID format.\n\n**Note**: The `verificationId` is created when the identity verification is added.\n",
              "example": "b477c7fc-93d0-4e9d-bc58-7444bc33ef12"
            },
            "example": "b477c7fc-93d0-4e9d-bc58-7444bc33ef12"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the identity verification for the user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IDVerification"
                },
                "example": {
                  "verificationId": "b477c7fc-93d0-4e9d-bc58-7444bc33ef12",
                  "userId": "0e99b25c-abde-4553-973b-8d94d49cd87e",
                  "provider": "signicatvideoid",
                  "dossierId": "66666666-1617-45a7-991d-785c2ad77111",
                  "processId": "88888888-1617-45a7-991d-785c2ad77222",
                  "created": "2023-01-03T07:55:05.233Z",
                  "orchestrationId": "7777777-1617-45a7-991d-785c2ad77111"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "The user identity verification does not exist",
                  "code": "user_id_verification_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching identity verification with verification ID : b477c7fc-93d0-4e9d-bc58-7444bc33ef12 and user ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User"
        ],
        "summary": "Delete identity verification",
        "description": "This operation deletes a specific identity verification that a ReuseID user has carried out.\n",
        "operationId": "deleteIDVerification",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "verificationId",
            "in": "path",
            "description": "The ID of the identity verification, in a valid UUID format.\n\n**Note**: The `verificationId` is created when the identity verification is added.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the identity verification, in a valid UUID format.\n\n**Note**: The `verificationId` is created when the identity verification is added.\n",
              "example": "b477c7fc-93d0-4e9d-bc58-7444bc33ef12"
            },
            "example": "b477c7fc-93d0-4e9d-bc58-7444bc33ef12"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted the identity verification."
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "The user identity verification does not exist",
                  "code": "user_id_verification_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching identity verification with verification ID : b477c7fc-93d0-4e9d-bc58-7444bc33ef12 and user ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          }
        }
      }
    },
    "/users/{userId}/credentials": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get credentials for user",
        "description": "This operation returns a list of all device and/or passkey credentials for a ReuseID user.\n",
        "operationId": "getCredentials",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "credentialType",
            "in": "query",
            "description": "A required parameter that determines the credential type of the transactions that are returned for this operation.\n\n**Allowed values**: It must be  either `device` or `passkey`.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "A required parameter that determines the credential type of the transactions that are returned for this operation.\n\n**Allowed values**: It must be  either `device` or `passkey`.\n",
              "example": "device"
            },
            "example": "device"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
              "example": 10
            },
            "example": 10
          },
          {
            "name": "offset",
            "in": "query",
            "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginationCredentials"
                },
                "example": {
                  "next": "/users/db4b1fc1-57fa-46fd-94c6-58aa2bd59d44/credentials?credentialType=device&limit=3&offset=381007a5-56d6-48f2-a9f3-1f6b114b62b8",
                  "credentials": [
                    {
                      "type": "DEVICE",
                      "id": "0f23f8ec-3899-42a2-9f22-b7c8eec8f3e6",
                      "name": "device name",
                      "state": "ACTIVE",
                      "lastOperationType": "AUTHENTICATION",
                      "lastUsed": "2025-09-07T13:42:41.141Z",
                      "ref": "/credentials/devices/0f23f8ec-3899-42a2-9f22-b7c8eec8f3e6?userId=db4b1fc1-57fa-46fd-94c6-58aa2bd59d44"
                    },
                    {
                      "type": "DEVICE",
                      "id": "17013a66-01b4-4c3d-8767-a4a0a233024f",
                      "name": "device name",
                      "state": "DELETED",
                      "lastOperationType": "REGISTRATION",
                      "lastUsed": "2025-09-06T18:38:37.655Z",
                      "ref": "/credentials/devices/17013a66-01b4-4c3d-8767-a4a0a233024f?userId=db4b1fc1-57fa-46fd-94c6-58aa2bd59d44"
                    },
                    {
                      "type": "DEVICE",
                      "id": "29653db6-5f3f-4be3-b799-4e4d2a72afb5",
                      "name": "device name",
                      "state": "DELETED",
                      "lastOperationType": "AUTHENTICATION",
                      "lastUsed": "2025-08-26T07:40:26.627Z",
                      "ref": "/credentials/devices/29653db6-5f3f-4be3-b799-4e4d2a72afb5?userId=db4b1fc1-57fa-46fd-94c6-58aa2bd59d44"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The user ID parameter is missing.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid_request",
                  "code": "invalid_request",
                  "status": 400,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "userId parameter is missing"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Internal error",
                  "code": "internal_error",
                  "status": 500,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "error occurred"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/passkeys/{passkeyId}": {
      "get": {
        "tags": [
          "Passkey management"
        ],
        "summary": "Get passkey",
        "description": "This operation returns the `passkey` object, which contains information about a ReuseID user's passkey.",
        "operationId": "getPasskey",
        "parameters": [
          {
            "name": "passkeyId",
            "in": "path",
            "description": "The ID of the ReuseID user's passkey.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's passkey.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched passkey properties.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasskeyServiceGetPasskeyResponse"
                },
                "example": {
                  "id": "8812343d3-73c5-4bc6-bb5a-xde38089ce02",
                  "keyId": "M3NQdUxFLWJVaENKOVVXQlNjd2g2UQ",
                  "accountId": "a-sdge-UWPzmkeEVjkxJPkQtm0b",
                  "name": "myPassKeyName",
                  "publicKey": "pQECAyYgASFYIKX7DMSfoBbTydTaBdljbOWJQhfOd+HubLLKU5R1pwV1IlggxEg1nWI6fts1Q8ary2Qtz4Kwd6EAVpsR9BvPKvEXMxk=",
                  "domain": "acme.com",
                  "created": "2025-06-10T04:12:31.132Z",
                  "lastUsed": "2025-06-10T04:12:31.132Z",
                  "aaGuid": "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4",
                  "userVerification": true,
                  "userPresence": true
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Passkey ID does not exist",
                  "code": "passkey_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot obtain passkey transaction properties for the given passkeyId e0c9183f-a890-41fb-b908-df4817b30957"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passkey management"
        ],
        "summary": "Delete passkey",
        "description": "This operation deletes a ReuseID user's passkey.",
        "operationId": "deletePasskey",
        "parameters": [
          {
            "name": "passkeyId",
            "in": "path",
            "description": "The ID of the ReuseID user's passkey.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's passkey.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted the passkey."
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Passkey ID does not exist",
                  "code": "passkey_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot obtain passkey transaction properties for the given passkeyId e0c9183f-a890-41fb-b908-df4817b30957"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/passkeys/{passkeyId}/transactions": {
      "get": {
        "tags": [
          "Passkey management"
        ],
        "summary": "Get passkey transactions",
        "description": "This operation returns a list of the transactions that a ReuseID user's passkey has carried out.",
        "operationId": "getPasskeyTransactions",
        "parameters": [
          {
            "name": "passkeyId",
            "in": "path",
            "description": "The ID of the ReuseID user's passkey.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's passkey.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
              "example": 10
            },
            "example": 10
          },
          {
            "name": "offset",
            "in": "query",
            "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched passkey transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasskeyTransactionsResponse"
                },
                "example": {
                  "transactions": [
                    {
                      "transactionId": "5b5402eb-30d6-4b33-a209-bb2709b41262",
                      "ref": "/credentials/passkeys/d7e07b27-a32a-4a85-a4ad-23689d651d50?userId=8710745d-18bd-441d-91f8-44fd040323a9",
                      "operationType": "AUTHENTICATION",
                      "state": "COMPLETED",
                      "created": "2025-06-02T07:44:00.172Z",
                      "passkeyId": "d7e07b27-a32a-4a85-a4ad-23689d651d50"
                    },
                    {
                      "transactionId": "99c78bcd-df0d-4f01-a92d-6b62eee0ee62",
                      "ref": "/credentials/passkeys/d7e07b27-a32a-4a85-a4ad-23689d651d50?userId=8710745d-18bd-441d-91f8-44fd040323a9",
                      "operationType": "REGISTRATION",
                      "state": "COMPLETED",
                      "created": "2025-06-02T07:42:46.055Z",
                      "passkeyId": "d7e07b27-a32a-4a85-a4ad-23689d651d50"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Passkey ID does not exist",
                  "code": "passkey_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Cannot obtain passkey transaction properties for the given passkeyId e0c9183f-a890-41fb-b908-df4817b30957"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/passkeys/registrations/{transactionId}": {
      "get": {
        "tags": [
          "Passkey registration"
        ],
        "summary": "Get ongoing passkey registration",
        "description": "This operation returns the registration response for an ongoing passkey registration.",
        "operationId": "getPasskeyRegistration",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched properties of the passkey registration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasskeyRegistrationResponse"
                },
                "examples": {
                  "Passkey registration PENDING.": {
                    "description": "Response sample of when a passkey registration is in progress.",
                    "value": {
                      "transactionId": "6ee33f52-e5e3-4f37-9c7b-7b3c3c40a88d",
                      "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                      "state": "PENDING",
                      "created": "2025-06-10T06:06:17.362Z",
                      "passkey": {
                        "name": "myPassKeyName",
                        "domain": "app.signicat.com"
                      },
                      "user": {
                        "id": "8710745d-18bd-441d-91f8-44fd040323a9",
                        "externalRef": "tttt22"
                      },
                      "rpRedirectUri": "https://www.myredirectdomain.com/final",
                      "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/registrations/start?transactionId=f0fc294e-2eac-4fb4-8f87-c2bc248c3b27&messageId=f2ab2a14-d99a-4fa7-a3f5-eee52f71ad52",
                      "operationProperties": {
                        "sessionTimeout": 30000,
                        "sessionExpiryTime": "2025-06-10T06:11:17.304453737Z",
                        "userVerification": "preferred"
                      },
                      "tags": [
                        "Tag 1",
                        "Tag 2"
                      ]
                    }
                  },
                  "Passkey registration COMPLETED.": {
                    "description": "Response sample of when a passkey registration has been completed successfully.",
                    "value": {
                      "transactionId": "e2a024de-2997-47ab-890e-d9991223ed64",
                      "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                      "state": "COMPLETED",
                      "created": "2025-06-10T06:12:17.447Z",
                      "completed": "2025-06-10T04:12:31.137Z",
                      "passkey": {
                        "id": "e0c9183f-a890-41fb-b908-df4817b30958",
                        "name": "myPassKeyName",
                        "domain": "app.signicat.com",
                        "created": "2025-06-10T04:12:31.132Z",
                        "aaGuid": "00000000-0000-0000-0000-000000000000",
                        "userVerificationRequested": true,
                        "userPresenceRequested": true
                      },
                      "user": {
                        "id": "8710745d-18bd-441d-91f8-44fd040323a9",
                        "externalRef": "tttt22"
                      },
                      "rpRedirectUri": "https://www.myredirectdomain.com/final",
                      "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/registrations/start?transactionId=03c56f4c-4359-4b17-b2b7-3bcf7c1d56f0&messageId=5e94ac2d-680c-49c7-a61b-e880a362a34f",
                      "operationProperties": {
                        "sessionTimeout": 30000,
                        "sessionExpiryTime": "2025-06-10T06:17:17.432078999Z",
                        "userVerification": "preferred",
                        "userVerificationRequired": true,
                        "userPresenceRequired": true
                      },
                      "riskAttributes": {
                        "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"
                      },
                      "tags": [
                        "Tag 1",
                        "Tag 2"
                      ]
                    }
                  },
                  "Passkey registration FAILED.": {
                    "description": "Response sample of when a passkey registration has failed.",
                    "value": {
                      "transactionId": "76d4230f-1b66-4b26-a9ec-d623f44c0d3a",
                      "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                      "state": "FAILED",
                      "errorCode": "CANCELLED_BY_SP",
                      "errorDescription": "Cancelled by SP",
                      "created": "2025-06-10T06:22:14.490Z",
                      "passkey": {
                        "name": "myPassKeyName",
                        "domain": "app.signicat.com"
                      },
                      "user": {
                        "id": "8710745d-18bd-441d-91f8-44fd040323a9",
                        "externalRef": "tttt22"
                      },
                      "rpRedirectUri": "https://www.myredirectdomain.com",
                      "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/registrations/start?transactionId=a0ab4af4-4566-4b40-aa59-d2f6d3e79697&messageId=e3268599-9d57-4d36-9cfb-385432d512d8",
                      "operationProperties": {
                        "sessionTimeout": 30000,
                        "sessionExpiryTime": "2025-06-10T06:27:14.473723280Z",
                        "userVerification": "preferred"
                      },
                      "riskAttributes": {},
                      "tags": [
                        "Tag 1",
                        "Tag 2"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passkey registration"
        ],
        "summary": "Cancel ongoing passkey registration",
        "description": "This operation cancels an ongoing passkey registration.",
        "operationId": "cancelPasskeyRegistration",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully cancelled the passkey registration request."
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/passkeys/authentications/{transactionId}": {
      "get": {
        "tags": [
          "Passkey authentication"
        ],
        "summary": "Get ongoing passkey authentication",
        "description": "This operation returns the authentication response for an ongoing passkey registration.",
        "operationId": "getPasskeyAuthentication",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the state of the authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PasskeyAuthenticationResponse"
                },
                "examples": {
                  "Passkey authentication PENDING.": {
                    "description": "Response sample of when a passkey authentication is in progress.",
                    "value": {
                      "transactionId": "3603ac05-2546-4dcb-af46-87ceb3791e93",
                      "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                      "state": "PENDING",
                      "created": "2025-06-06T13:12:26.765Z",
                      "rpRedirectUri": "https://www.myredirectdomain.com",
                      "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/authentications/start?transactionId=2173d173-82cd-4c26-8e0f-ca585cf4937e&messageId=8af7438d-2551-4868-81b8-04deecba9af6",
                      "operationProperties": {
                        "sessionTimeout": 300000,
                        "sessionExpiryTime": "2025-06-06T13:17:26.715905743Z",
                        "userVerification": "preferred",
                        "domain": "app.signicat.com"
                      },
                      "tags": [
                        "Tag 1",
                        "Tag 2"
                      ]
                    }
                  },
                  "Passkey authentication COMPLETED.": {
                    "description": "Response sample of when a passkey authentication has been completed successfully.",
                    "value": {
                      "transactionId": "3603ac05-2546-4dcb-af46-87ceb3791e93",
                      "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                      "state": "COMPLETED",
                      "created": "2025-06-06T13:12:26.765Z",
                      "completed": "2025-06-06T11:14:46.908Z",
                      "passkey": {
                        "id": "5eb2c378-05f2-4864-b0b9-2a4ae88d178a"
                      },
                      "user": {
                        "id": "8710745d-18bd-441d-91f8-44fd040323a9",
                        "externalRef": "tttt22"
                      },
                      "rpRedirectUri": "https://www.myredirectdomain.com",
                      "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/authentications/start?transactionId=2173d173-82cd-4c26-8e0f-ca585cf4937e&messageId=8af7438d-2551-4868-81b8-04deecba9af6",
                      "operationProperties": {
                        "sessionTimeout": 300000,
                        "sessionExpiryTime": "2025-06-06T13:17:26.715905743Z",
                        "userVerification": "preferred",
                        "userVerificationRequired": true,
                        "userPresenceRequired": true,
                        "domain": "app.signicat.com"
                      },
                      "riskAttributes": {
                        "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"
                      },
                      "tags": [
                        "Tag 1",
                        "Tag 2"
                      ]
                    }
                  },
                  "Passkey authentication FAILED.": {
                    "description": "Response sample of when a passkey authentication has failed.",
                    "value": {
                      "transactionId": "fd0565e3-1775-41b0-83c6-48b7c31b7599",
                      "accountId": "a-sdge-N27GjPSzXO8JLcf8G1AN",
                      "state": "FAILED",
                      "errorCode": "CANCELLED_BY_USER",
                      "errorDescription": "Cancelled by user",
                      "created": "2025-06-06T13:18:36.950Z",
                      "completed": "2025-06-06T11:18:46.876Z",
                      "rpRedirectUri": "https://www.myredirectdomain.com",
                      "idpRedirectUri": "https://mycompany.app.signicat.com/passkeys/web/authentications/start?transactionId=b12146f5-8c1a-4330-9940-7425dc6c47d0&messageId=024727b2-2d08-4551-b3c2-3603a54313d8",
                      "operationProperties": {
                        "sessionTimeout": 300000,
                        "sessionExpiryTime": "2025-06-06T13:23:36.936791008Z",
                        "userVerification": "preferred",
                        "domain": "app.signicat.com"
                      },
                      "riskAttributes": {
                        "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"
                      },
                      "tags": [
                        "Tag 1",
                        "Tag 2"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Passkey authentication"
        ],
        "summary": "Cancel ongoing passkey authentication",
        "description": "This operation cancels an ongoing passkey authentication.",
        "operationId": "cancelPasskeyAuthentication",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully cancelled the passkey authentication request."
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/{deviceId}/transactions": {
      "get": {
        "tags": [
          "MobileID device management"
        ],
        "summary": "Get device transactions",
        "description": "This operation returns a list of the transactions that a ReuseID user's device has carried out.",
        "operationId": "getDeviceTransactions",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user's device, as returned when the device was registered.\n",
              "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
            },
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the number of objects (transactions) that are shown on each page.\n\n**Allowed values**:\n- It must be a whole number ranging from `1` to `100`.\n- If no value is set, then the default value `100` is used.\n",
              "example": 10
            },
            "example": 10
          },
          {
            "name": "offset",
            "in": "query",
            "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "A parameter that determines the first transaction to show in the operation response.\n\n**Allowed values**:\n- You must specify this transaction using its `transactionId`.\n- If no value is set, then the result starts with the first transaction in the ReuseID user's history.\n",
              "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
            },
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the transactions for the ReuseID user's device.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileIDTransaction"
                },
                "example": {
                  "previous": "/devices/d910994d-80b2-4125-a6b1-062b5b2f43ba/transactions?limit=1&offset=39277b72-53c2-4780-ad56-a8c8d8a33542&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51",
                  "next": "/devices/7fd01f14-151b-48f4-9aa6-7cfa2140989e/transactions?limit=1&offset=a1c66944-e5e3-46e3-ba36-750622205ef3&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51",
                  "limit": 1,
                  "transactions": [
                    {
                      "transactionId": "c5c25109-53ab-4f76-9724-93f77a9b4a7d",
                      "ref": "/authentications/mapped-from-c5c25109-53ab-4f76-9724-93f77a9b4a7d",
                      "operationType": "AUTHENTICATION",
                      "state": "SUCCESS",
                      "created": "2023-08-11T11:30:05.000Z",
                      "expires": "2023-08-11T11:31:05.000Z",
                      "deviceId": "db441aa4-dd01-4bf7-8795-f75a94ec8d61"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "examples": {
                  "The user ID parameter is missing.": {
                    "description": "The user ID parameter is missing.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid_request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "userId parameter is missing"
                    }
                  },
                  "offset does not exist": {
                    "description": "offset does not exist",
                    "value": {
                      "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                      "title": "Invalid_request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Offset 58ccbe4f-5c81-4425-bb7d-f6378f35d402 does not exist"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "User entity does not exist",
                  "code": "user_entity_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching user with user ID : 90e1b3e5-93a7-458e-b42b-d1b57e65e26a and account ID : a-sdge-Abcdefghijk123456789. "
                }
              }
            }
          },
          "500": {
            "description": "Internal server error.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Internal error",
                  "code": "internal_error",
                  "status": 500,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "error occurred"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/signatures/{transactionId}": {
      "get": {
        "tags": [
          "MobileID device signature"
        ],
        "summary": "Get state of ongoing signing",
        "description": "This operation returns the signing response for an ongoing MobileID device signing.",
        "operationId": "getSignature",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the state of the signing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceSignature"
                },
                "examples": {
                  "Signing PENDING.": {
                    "description": "Response sample of when a signing is in progress.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "PENDING",
                      "operationProperties": {
                        "preOperationContext": {
                          "title": "Consent Sign",
                          "content": "Pay me 100$",
                          "mimeType": "text/plain"
                        },
                        "pushSent": false,
                        "sessionExpiryTime": "2022-08-19T06:04:53.123Z",
                        "sendPush": false
                      },
                      "created": "2022-08-19T06:03:23.123Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "sampleDevice"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      }
                    }
                  },
                  "Signing COMPLETED.": {
                    "description": "Response sample of when a signing has been completed successfully.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "COMPLETED",
                      "operationProperties": {
                        "authLevel": "TWO_FACTOR",
                        "authMethod": "DEVICE_PIN",
                        "preOperationContext": {
                          "title": "Consent Sign",
                          "content": "Pay me 100$",
                          "mimeType": "text/plain"
                        },
                        "pushSent": false,
                        "sessionExpiryTime": "2022-08-19T06:04:53.123Z",
                        "sendPush": false,
                        "geoFencing": {
                          "countryCode": "NO",
                          "clientStatus": "OK",
                          "serverBoundaryValidation": "SUCCESS"
                        },
                        "clientData": "<client data>"
                      },
                      "riskAttributes": {},
                      "created": "2022-08-19T06:03:23.123Z",
                      "completed": "2022-08-19T06:03:32.123Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "sampleDevice"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      },
                      "signature": "suppressed ..."
                    }
                  },
                  "Signing FAILED.": {
                    "description": "Response sample of when a signing has failed.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "FAILED",
                      "operationProperties": {
                        "authLevel": "TWO_FACTOR",
                        "preOperationContext": {
                          "title": "Consent Sign",
                          "content": "Pay me 100$",
                          "mimeType": "text/plain"
                        },
                        "pushSent": true,
                        "sessionTimeout": "90000",
                        "sessionExpiryTime": "2022-08-19T06:10:58.123Z"
                      },
                      "errorCode": "CANCELLED_BY_DEVICE",
                      "errorDescription": "The operation failed because the session was cancelled by the device.",
                      "created": "2022-08-22T09:09:28.123Z",
                      "completed": "2022-08-22T09:09:41.123Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "sampleDevice"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MobileID device signature"
        ],
        "summary": "Cancel ongoing signing",
        "description": "This operation cancels an ongoing MobileID device signing.",
        "operationId": "cancelSignature",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully cancelled the signing request."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/registrations/{transactionId}": {
      "get": {
        "tags": [
          "MobileID device registration"
        ],
        "summary": "Get state of ongoing registration",
        "description": "This operation returns the registration response for an ongoing MobileID device registration.",
        "operationId": "getRegistration",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the state of the registration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceRegistration"
                },
                "examples": {
                  "Registration PENDING.": {
                    "description": "Response sample of when a registration is in progress.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "PENDING",
                      "operationProperties": {
                        "activationCode": "928401",
                        "authLevel": "TWO_FACTOR",
                        "sessionTimeout": "90000",
                        "sessionExpiryTime": "2021-01-21T24:17:57.123Z",
                        "registrationMode": "REGISTRATION"
                      },
                      "created": "2021-01-21T22:47:27.123Z",
                      "device": {
                        "name": "My iPhone"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      }
                    }
                  },
                  "Registration COMPLETED.": {
                    "description": "Response sample of when a registration has been completed successfully.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "COMPLETED",
                      "operationProperties": {
                        "activationCode": "928401",
                        "authLevel": "TWO_FACTOR",
                        "sessionExpiryTime": "2021-01-21T22:48:57.123Z",
                        "registrationMode": "REGISTRATION",
                        "geoFencing": {
                          "countryCode": "NO",
                          "clientStatus": "OK",
                          "serverBoundaryValidation": "SUCCESS"
                        },
                        "activatedAuthenticationMethods": [
                          "DEVICE",
                          "DEVICE:PIN"
                        ]
                      },
                      "riskAttributes": {
                        "hwKeyClientStatus": "OK_SIGNED_SUCCESS",
                        "deviceHash": "DCkhP7PqJPtCWlhdIo8EIiioJXadZtTb5E1V8GMmKOc=",
                        "signerHashes": "MWFgoYYrQg07r3I1NIX7J8GZUQIn6YclVVzUZ3arxrk="
                      },
                      "created": "2021-01-21T22:47:27.123Z",
                      "completed": "2021-01-21T22:52:27.654Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "My iPhone"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MobileID device registration"
        ],
        "summary": "Cancel ongoing registration",
        "description": "This operation cancels an ongoing MobileID device registration.",
        "operationId": "cancelRegistration",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully cancelled the registration request."
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/recoveries/{transactionId}": {
      "get": {
        "tags": [
          "MobileID account recovery"
        ],
        "summary": "Get details of account recovery",
        "description": "This operation returns information about a recovery that a ReuseID user carried out for a specific device.\n\n   ### How to get the transaction ID\n\n   To get the `transactionId` required for the operation request, you need to do the following steps:\n   1. Use the [Get device transactions](/apis/reuseid/#tag/MobileID-device-management/operation/getDeviceTransactions) endpoint to see all device transactions for a specified device.\n   2. Look for transactions with `operationType` returned as `RECOVERY`.\n   3. Locate the `transactionId` in this response.\n",
        "operationId": "getAccountRecovery",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the details of the account recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountRecoveryDetails"
                },
                "examples": {
                  "Account recovery fetch COMPLETED.": {
                    "description": "Sample response when account recovery has been completed successfully.",
                    "value": {
                      "transactionId": "a75064fe-c528-478d-81d3-0a7b404b84b9",
                      "accountId": "a-ppge-abcd1234ABCDxxxxxxx",
                      "state": "COMPLETED",
                      "device": {
                        "id": "b6759679-f956-4691-aebf-6ff5e6f924ec",
                        "name": "",
                        "state": "ACTIVE",
                        "lastOperationType": "REGISTRATION",
                        "lastUsed": "2024-06-25T06:18:13.002Z",
                        "created": "2024-06-25T06:18:12.969Z"
                      },
                      "user": {
                        "externalRef": "1234567890",
                        "id": "23ae6e6c-242d-4834-bbed-a9308218e5c4",
                        "created": "2024-06-20T09:46:14.133Z",
                        "lastUsed": "2024-06-25T06:18:12.937Z",
                        "state": "ACTIVE"
                      },
                      "created": "2024-06-25T06:18:23.000UTC",
                      "operationProperties": {
                        "sessionExpiryTime": "2024-06-25T06:23:23.000UTC",
                        "activatedAuthenticationMethods": [
                          "DEVICE",
                          "DEVICE:PIN"
                        ]
                      },
                      "riskAttributes": [
                        {
                          "name": "is_debuggable",
                          "value": "true"
                        },
                        {
                          "name": "is_power_connected",
                          "value": "false"
                        },
                        {
                          "name": "is_debugger_connected",
                          "value": "false"
                        },
                        {
                          "name": "is_secure_screen_lock_enabled",
                          "value": "false"
                        },
                        {
                          "name": "is_debug_enabled",
                          "value": "true"
                        },
                        {
                          "name": "is_emulator",
                          "value": "true"
                        },
                        {
                          "name": "is_root_available",
                          "value": "false"
                        }
                      ],
                      "recoveryMethod": "CLOUD_BACKUP_SERVER_SIDE_FACE",
                      "recoveryStatus": "RECOVERED"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "detail": "Getting account recovery details failed. Transaction ID: 8eea29b2-8de6-4db5-8725-941905d7a792",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/device-hashes/{deviceHashBase64UrlEncoded}": {
      "get": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Get devices with device hash",
        "description": "This operation returns a list of devices associated with a given device hash, grouped by the user that registered them.",
        "operationId": "getDevicesWithDeviceHash",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account.\n\n**Note**: This is an optional parameter, as the account ID is fetched from the access token that you use when initiating the request.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The ID of the Signicat account.\n\n**Note**: This is an optional parameter, as the account ID is fetched from the access token that you use when initiating the request.\n",
              "example": "a-sdge-Abcdefghijk123456789"
            },
            "example": "a-sdge-Abcdefghijk123456789"
          },
          {
            "name": "deviceHashBase64UrlEncoded",
            "in": "path",
            "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The device hash that the operation will be carried out for.\n\n**Note**: This must be URL-safe Base64 encoded.\n",
              "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
            },
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          }
        ],
        "responses": {
          "200": {
            "description": "The request to fetch devices by device hash was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DHLiveDetailsForUser"
                  }
                },
                "example": [
                  {
                    "userId": "b13069a0-408f-4981-bcdb-a42a8d1060ee",
                    "devices": [
                      {
                        "deviceId": "294ffdd7-4306-49dc-aa5e-72c4bed89d18",
                        "lastUsed": "2026-03-31T08:21:40.584",
                        "state": "ACTIVE",
                        "accountId": "a-sdge-UWPzmkeEVjkxJPkQtm0b"
                      }
                    ]
                  },
                  {
                    "userId": "8ebc86af-c341-404b-8cf0-7077449d6cf4",
                    "devices": [
                      {
                        "deviceId": "46af605e-a4c0-47da-9554-b6c0dc3fcd3a",
                        "lastUsed": "2026-03-20T10:13:47.107",
                        "state": "DELETED",
                        "accountId": "a-sdge-UWPzmkeEVjkxJPkQtm0b"
                      }
                    ]
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Invalid device hash",
                  "code": "invalid_device_hash",
                  "status": 400,
                  "detail": "Reason: Device hash must decode to 32 bytes",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Device hash does not exist",
                  "code": "device_hash_does_not_exist",
                  "status": 404,
                  "detail": "Failed fetching devices for device hash: xVJ9HYE-WJL40_K04CIDZzuD9jD5I9sLVZ3d47o08U0=. Reason : The given device hash is not found",
                  "traceId": "a44b9b927bbfee096396c5a910a87342"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/device-hashes/allowlist": {
      "get": {
        "tags": [
          "MobileID device hash management"
        ],
        "summary": "Allowlist - Get all device hashes",
        "description": "This operation lists all device hashes from the allowlist.",
        "operationId": "getDeviceHashesFromAllowlist",
        "responses": {
          "200": {
            "description": "The request to get all account device hashes from allowlist was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AccountDeviceHash"
                  }
                },
                "example": [
                  {
                    "deviceHash": "A_JX6Xcwf9M-PG00SOC83sPwVubyY3qenCbHQtpwLSk=",
                    "created": "2026-08-17T10:56:18.814Z",
                    "comment": "Not a suspicious device hash"
                  },
                  {
                    "deviceHash": "yVJ9HYE-WJL40_K04CIDZzuD9jD5I9sLVZ3d47o08U0=",
                    "created": "2026-08-17T10:55:54.584Z",
                    "comment": "Not a suspicious device hash"
                  }
                ]
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Account does not exist",
                  "code": "account_does_not_exist",
                  "status": 404,
                  "detail": "Failed fetching account with ID : a-sdge-N27GjPSzXO8JLcf8G1AB. Account does not exist.",
                  "traceId": "00000000000000000000000000000000"
                }
              }
            }
          }
        }
      }
    },
    "/credentials/devices/authentications/{transactionId}": {
      "get": {
        "tags": [
          "MobileID device authentication"
        ],
        "summary": "Get state of ongoing authentication",
        "description": "This operation returns the authentication response for an ongoing MobileID device authentication.\n",
        "operationId": "getAuthentication",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the state of the authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceAuthentication"
                },
                "examples": {
                  "Authentication PENDING.": {
                    "description": "Response sample of when an authentication is in progress.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "PENDING",
                      "operationProperties": {
                        "sessionExpiryTime": "2022-08-19T06:03:07.123Z",
                        "pushSent": false
                      },
                      "created": "2022-08-19T06:01:37.123Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "sampleDevice"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      },
                      "tags": [
                        "some tag",
                        "another tag"
                      ]
                    }
                  },
                  "Authentication COMPLETED.": {
                    "description": "Response sample of when an authentication has been completed successfully.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sdge-Abcdefghijk123456789",
                      "state": "COMPLETED",
                      "operationProperties": {
                        "authMethod": "DEVICE_PIN",
                        "pushSent": false,
                        "sessionExpiryTime": "2022-08-19T06:03:07.123Z",
                        "authLevel": "TWO_FACTOR",
                        "geoFencing": {
                          "countryCode": "NO",
                          "clientStatus": "OK",
                          "serverBoundaryValidation": "SUCCESS"
                        },
                        "clientData": "<client data>"
                      },
                      "riskAttributes": {},
                      "created": "2022-08-19T06:01:37.123Z",
                      "completed": "2022-08-19T06:01:44.123Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "sampleDevice"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      }
                    }
                  },
                  "Authentication FAILED.": {
                    "description": "Response sample of when an authentication has failed.",
                    "value": {
                      "transactionId": "7daa489e-6b35-46ca-83a4-1bba2ea35f68",
                      "accountId": "a-sqge-Abcdefghijk123456789",
                      "state": "FAILED",
                      "operationProperties": {
                        "authLevel": "TWO_FACTOR",
                        "sessionTimeout": "90000",
                        "sessionExpiryTime": "2022-08-22T09:10:58.123Z",
                        "pushSent": true
                      },
                      "errorCode": "LOCKED_PIN_VERIFICATION_FAILED",
                      "errorDescription": "The operation failed because the device is locked by PIN verification.",
                      "created": "2022-08-22T09:09:28.123Z",
                      "completed": "2022-08-22T09:09:41.123Z",
                      "device": {
                        "id": "20874199-f4d1-4e9d-86ee-dd4a46030acb",
                        "name": "sampleDevice"
                      },
                      "user": {
                        "externalRef": "Empl10300469",
                        "id": "0e99b25c-abde-4553-973b-8d94d49cd87e"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "MobileID device authentication"
        ],
        "summary": "Cancel ongoing authentication",
        "description": "This operation cancels an ongoing MobileID device authentication.\n",
        "operationId": "cancelAuthentication",
        "parameters": [
          {
            "name": "transactionId",
            "in": "path",
            "description": "The ID of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the transaction.",
              "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
            },
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully cancelled the authentication request."
          },
          "403": {
            "description": "Forbidden. The user is not authorised to perform this operation.",
            "content": {
              "application/json": {
                "example": {
                  "code": "missing_permission",
                  "detail": "The subject with ID 'dev-ghastly-thread-446' does not have the required permission 'reuseid:user:read' on the target resource 'a-sdge-c2z0wgHkZjpBnS7uB621'",
                  "status": 403,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "title": "You do not have the required permission to perform this operation on the target resource",
                  "type": "https://developer.signicat.com/errors?code=missing_permission"
                }
              }
            }
          },
          "404": {
            "description": "Not found. The server cannot find the requested resource.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/reuseid/#section/Using-this-API/Errors",
                  "title": "Transaction ID does not exist",
                  "code": "transaction_id_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "There is no request with the specified transaction ID"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "postOperationContext": {
        "description": "The context of the operation which is sent to your app, through a secure end-to-end encrypted channel, **after** the operation is successfully completed.<br /><br /> **Note**: To learn more, see our [Operation context](/docs/mobile-identity/mobileid/features/operation-context) feature documentation.",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the operation context.\n"
          },
          "content": {
            "type": "string",
            "description": "The content of the operation context.\n\n**Allowed values**:\n- It must be something that your application is able to process, for example a string.\n- It cannot exceed the maximum character length in the [Operation context maximum character lengths](#section/Common-concepts/Operation-context-maximum-character-lengths) table.\n\n**Note**: ReuseID handles this as a binary blob.\n"
          },
          "mimeType": {
            "type": "string",
            "description": "The MIME type of the operation context `content`.\n\n**Note**: This must be a valid MIME type, such as `text/plain`.\n",
            "example": "text/plain"
          }
        },
        "required": [
          "content",
          "mimeType",
          "title"
        ]
      },
      "preOperationContext": {
        "description": "The context of the operation which is sent to your app, through a secure end-to-end encrypted channel, **before** the operation is completed.<br /><br /> **Note**: To learn more, see our [Operation context](/docs/mobile-identity/mobileid/features/operation-context) feature documentation.",
        "properties": {
          "title": {
            "type": "string",
            "description": "The title of the operation context.\n"
          },
          "content": {
            "type": "string",
            "description": "The content of the operation context.\n\n**Allowed values**:\n- It must be something that your application is able to process, for example a string.\n- It cannot exceed the maximum character length in the [Operation context maximum character lengths](#section/Common-concepts/Operation-context-maximum-character-lengths) table.\n\n**Note**: ReuseID handles this as a binary blob.\n"
          },
          "mimeType": {
            "type": "string",
            "description": "The MIME type of the operation context `content`.\n\n**Note**: This must be a valid MIME type, such as `text/plain`.\n",
            "example": "text/plain"
          }
        },
        "required": [
          "content",
          "mimeType",
          "title"
        ]
      },
      "RecoveryLockRequest": {
        "type": "object",
        "properties": {
          "recoveryLock": {
            "type": "boolean",
            "description": "A parameter that determines whether the recovery lock is activated, which can be used to lock the account recovery feature for a ReuseID user's device.\n\n**Example**: When `false`, the account recovery feature is not locked for the ReuseID user's device and recovery operations can be performed.\n",
            "example": true,
            "writeOnly": true
          }
        }
      },
      "RecoveryLock": {
        "type": "object",
        "properties": {
          "recoveryLock": {
            "type": "boolean",
            "description": "A property that informs you whether the recovery lock is activated, which determines if the account recovery feature is locked for a ReuseID user's device.\n\n**Example**: When `false`, the account recovery feature is not locked for the ReuseID user's device and recovery operations can be performed.\n",
            "example": false
          }
        }
      },
      "GeofenceSettings": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "description": "The geofencing mode.\n\n**Allowed values**: It can be either `OFF`, `OPTIONAL`, or `REQUIRED`.\n"
          },
          "allowedContinents": {
            "type": "string",
            "description": "The continents where authentication **is allowed** for a specific device.\n\n**Allowed values**:\n- Must be given in a two-letter continent code format, represented as `AF`, `NA`, `OC`, `AN`, `AS`, `EU`, and `SA`.\n- Must be formatted as a comma-separated list.\n"
          },
          "allowedCountries": {
            "type": "string",
            "description": "The countries where authentication **is allowed** for a specific device.\n\n**Note**: These countries are in addition to those covered by the allowed continents parameter.\n\n**Allowed values**:\n- Must be given in an ISO 3166-1 alpha-2 two-letter country code format.\n- For a list of countries and corresponding codes, see the [GeoNames](https://www.geonames.org/countries/) website.\n- Must be formatted as a comma-separated list.\n"
          },
          "deniedCountries": {
            "type": "string",
            "description": "The countries where authentication **is not allowed** for a specific device.\n\n**Note**: These countries will be excluded from those covered by the allowed continents parameter.\n\n**Allowed values**:\n- Must be given in an ISO 3166-1 alpha-2 two-letter country code format.\n- For a list of countries and corresponding codes, see the [GeoNames](https://www.geonames.org/countries/) website.\n- Must be formatted as a comma-separated list.\n"
          }
        }
      },
      "GeofenceSettingsResponse": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "description": "The geofencing mode.\n\n**Possible values**: `OFF`, `OPTIONAL`, or `REQUIRED`.\n"
          },
          "allowedContinents": {
            "type": "string",
            "description": "The continents where authentication **is allowed** for the given device.\n\n**Possible values**: `AF`, `NA`, `OC`, `AN`, `AS`, `EU`, and `SA`.\n"
          },
          "allowedCountries": {
            "type": "string",
            "description": "The countries where authentication **is allowed** for the given device.\n\n**Note**: These countries are in addition to those covered by the allowed continents parameter.\n\n**Possible values**: For a list of countries and corresponding codes, see the [GeoNames](https://www.geonames.org/countries/) website.\n"
          },
          "deniedCountries": {
            "type": "string",
            "description": "The countries where authentication **is not allowed** for a specific device.\n\n**Note**: These countries will be excluded from those covered by the allowed continents parameter.\n\n**Possible values**: For a list of countries and corresponding codes, see the [GeoNames](https://www.geonames.org/countries/) website.\n"
          }
        }
      },
      "DHLockDevicesResponse": {
        "type": "object",
        "properties": {
          "lockedDevices": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UserRequest": {
        "type": "object",
        "properties": {
          "externalRef": {
            "type": "string",
            "description": "An identifier generated by you, that points to the `userId` generated by ReuseID.\n\n**Allowed values**:\n- It must be unique in the scope of the account.\n- It cannot exceed the maximum character length of 128 characters.\n",
            "example": "Empl10300469"
          },
          "segment": {
            "type": "string",
            "description": "A parameter that allows you to segment ReuseID users and their corresponding transactions.\n\n**Allowed values**:\n- It can have any value.\n- It cannot exceed the maximum character length of 128 characters.\n\n**Example**: Group ReuseID users by country using country codes such as `NO`, `SE`, `DK`.\n",
            "example": "NO"
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "An object that allows you to add user attributes to the ReuseID user, given as key-value pairs.\n\n**Allowed values**:\n- The keys can only start with a letter (`a-z`), digit or an underscore (`_`).\n- The keys can only contain digits, lowercase letters (`a-z`), or certain special characters (`-._~:@`).\n- The keys cannot exceed the maximum character length of 128 characters.\n- The values cannot exceed the maximum character length of 256 characters.\n\n**Example**: They could contain contact information such as name, address and phone number.\n",
            "example": {
              "firstname": "George",
              "lastName": "Harrison"
            }
          }
        }
      },
      "User": {
        "type": "object",
        "properties": {
          "externalRef": {
            "type": "string",
            "description": "The identifier generated by you, that points to the `userId` generated by ReuseID.\n",
            "example": "Empl10300469"
          },
          "segment": {
            "type": "string",
            "description": "The segment that was assigned to the ReuseID user and their corresponding transactions.\n",
            "example": "NO"
          },
          "id": {
            "type": "string",
            "description": "The ID (`userId`) of the ReuseID user, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the ReuseID user was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "lastUsed": {
            "type": "string",
            "description": "The timestamp when the ReuseID user last carried out an operation such as a registration, authentication or signing.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "state": {
            "type": "string",
            "description": "The state of the ReuseID user, returned as an enum.\n\n**Possible values**: See the [User states](/apis/reuseid/#section/Common-concepts/User-states) table.\n",
            "enum": [
              "ACTIVE",
              "LOCKED"
            ],
            "example": "ACTIVE"
          },
          "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.\n",
            "example": {
              "firstname": "George",
              "lastName": "Harrison"
            }
          }
        }
      },
      "IDVerificationAddRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "description": "The name of the provider that performed the identity verification.\n\n**Note**: This should be the same as the provider used in the [Create process](/apis/id-document-and-biometric-verification/#tag/Processes/operation/createProcess) request.\n",
            "example": "signicatvideoid",
            "minLength": 1
          },
          "dossierId": {
            "type": "string",
            "description": "The ID of the identity verification dossier, in a valid UUID format.\n\n**Note**: You can obtain this from the [Create dossier](/apis/id-document-and-biometric-verification/#tag/Dossiers/operation/createDossier) response body.\n",
            "example": "12ced477-7ba2-41a6-9f38-4b9f0172bc11",
            "minLength": 1
          },
          "processId": {
            "type": "string",
            "description": "The ID of the identity verification process, in a valid UUID format.\n\n**Note**: You can obtain this from the [Create process](/apis/id-document-and-biometric-verification/#tag/Processes/operation/createProcess) response body.\n",
            "example": "7bc36291-b096-4d25-bccc-56680c38c515",
            "minLength": 1
          },
          "orchestrationId": {
            "type": "string",
            "description": "The ID of the orchestration, used for workflow synchronisation, in a valid UUID format.\n",
            "example": "8cc36291-b096-4d25-bccc-66680c38c516",
            "minLength": 1
          }
        },
        "required": [
          "dossierId",
          "orchestrationId",
          "processId",
          "provider"
        ]
      },
      "IDVerification": {
        "type": "object",
        "properties": {
          "verificationId": {
            "type": "string",
            "description": "The ID of the identity verification, in a valid UUID format.",
            "example": "f42ac67e-7eb6-40fb-b72e-c48fd9bbd013"
          },
          "userId": {
            "type": "string",
            "description": "The ID of the ReuseID user, in a valid UUID format.",
            "example": "801d7c7f-5d1e-46dc-827a-460e9c622cd4"
          },
          "provider": {
            "type": "string",
            "description": "The name of the provider that performed the identity verification.\n",
            "example": "signicatvideoid"
          },
          "dossierId": {
            "type": "string",
            "description": "The ID of the identity verification dossier, in a valid UUID format.\n",
            "example": "12ced477-7ba2-41a6-9f38-4b9f0172bc11"
          },
          "processId": {
            "type": "string",
            "description": "The ID of the identity verification process, in a valid UUID format.\n",
            "example": "7bc36291-b096-4d25-bccc-56680c38c515"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the identity verification was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-22T21:47:27.233Z"
          },
          "orchestrationId": {
            "type": "string",
            "description": "The ID of the orchestration used, for workflow synchronisation, in a valid UUID format.\n",
            "example": "8bc36291-b096-4d25-bccc-56680c38c515"
          }
        }
      },
      "ExternalRefResolveRequest": {
        "type": "object",
        "properties": {
          "externalRef": {
            "type": "string",
            "description": "An identifier generated by you, that points to the `userId` generated by ReuseID.\n\n**Allowed values**:\n- It must be unique in the scope of the account.\n- It cannot exceed the maximum character length of 128 characters.\n",
            "example": "Empl10300469",
            "minLength": 1
          }
        },
        "required": [
          "externalRef"
        ]
      },
      "UserIdValue": {
        "type": "object",
        "properties": {
          "externalRef": {
            "type": "string",
            "description": "The identifier generated by you, that points to the `userId` generated by ReuseID.\n",
            "example": "Empl10300469"
          },
          "segment": {
            "type": "string",
            "description": "The segment that was assigned to the ReuseID user and their corresponding transactions.\n",
            "example": "NO"
          },
          "userId": {
            "type": "string",
            "description": "The ID (`userId`) of the ReuseID user, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        }
      },
      "PasskeyRegistrationResponse": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "The ID of the transaction.",
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that carried out the operation.",
            "example": "a-sdge-Abcdefghijk123456789"
          },
          "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",
            "example": "PENDING"
          },
          "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": "#/components/schemas/RegPasskey",
            "description": "An object that contains information about the passkey for the operation."
          },
          "user": {
            "$ref": "#/components/schemas/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": "#/components/schemas/PasskeysServiceOperationProperties",
            "description": "An object that contains the configured properties of the operation, which determined how it was carried out."
          },
          "riskAttributes": {
            "$ref": "#/components/schemas/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"
            }
          }
        }
      },
      "PasskeyUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID (`userId`) of the ReuseID user, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          "externalRef": {
            "type": "string",
            "description": "The identifier generated by you, that points to the `userId` generated by ReuseID.",
            "example": "Empl10300469"
          },
          "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.",
            "example": {
              "firstname": "George",
              "lastName": "Harrison"
            }
          }
        }
      },
      "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.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          "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"
          }
        }
      },
      "PasskeyRegOperationPropertiesRequest": {
        "type": "object",
        "properties": {
          "sessionTimeout": {
            "type": "integer",
            "format": "int64",
            "description": "The duration until the operation times out, given in milliseconds.\n\n**Note**: The maximum and default values vary depending on what is passed for the `userVerification` parameter. This is explained in the table linked below.\n\n**Allowed values**:\n- It cannot be less that the minimum value of `30000` milliseconds.\n- It cannot exceed the maximum value in the [Passkey session timeout values](/apis/reuseid/#section/Common-concepts/Passkey-session-timeout-values) table.\n- If no value is set, then the default in the [Passkey session timeout values](/apis/reuseid/#section/Common-concepts/Passkey-session-timeout-values) table is used.\n"
          },
          "userVerification": {
            "type": "string",
            "description": "A parameter that determines the passkey user verification.\n\n**Note**: There is no guarantee that the browser handling the authentication uses or acknowledges this parameter.\n\n**Allowed values**:\n- See the [Passkey user verification](/apis/reuseid/#section/Common-concepts/Passkey-user-verification) table.\n- If no value is set, then the default value `preferred` is used.\n"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "  The user attributes to return.\n\n  **Allowed 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"
            }
          }
        }
      },
      "PasskeyRegistrationRequest": {
        "type": "object",
        "properties": {
          "passkey": {
            "$ref": "#/components/schemas/PasskeyRequest",
            "description": "An object used to configure the properties of the passkey for the operation."
          },
          "rpRedirectUri": {
            "type": "string",
            "description": "Your redirect URI, where the ReuseID user's browser is redirected to after the passkey operation is completed."
          },
          "operationProperties": {
            "$ref": "#/components/schemas/PasskeyRegOperationPropertiesRequest",
            "description": "An object used to configure the properties of the operation, which determines how it is carried out."
          },
          "tags": {
            "type": "array",
            "description": "A parameter that can be used to add tags to the callback events, so that you can filter them.",
            "items": {
              "type": "string"
            }
          },
          "userId": {
            "type": "string",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e",
            "minLength": 1
          }
        },
        "required": [
          "userId"
        ]
      },
      "PasskeyRequest": {
        "type": "object",
        "properties": {
          "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",
            "example": "Passkey for my mail account"
          },
          "domain": {
            "type": "string",
            "description": "The domain that the passkey is valid for.",
            "example": "mydomain.acme.com"
          }
        }
      },
      "PasskeyAuthOperationPropertiesRequest": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "description": "The domain used for passkey authentication."
          },
          "sessionTimeout": {
            "type": "integer",
            "format": "int64",
            "description": "The duration until the operation times out, given in milliseconds.\n\n**Note**: The maximum and default values vary depending on what is passed for the `userVerification` parameter. This is explained in the table linked below.\n\n**Allowed values**:\n- It cannot be less that the minimum value of `30000` milliseconds.\n- It cannot exceed the maximum value in the [Passkey session timeout values](/apis/reuseid/#section/Common-concepts/Passkey-session-timeout-values) table.\n- If no value is set, then the default in the [Passkey session timeout values](/apis/reuseid/#section/Common-concepts/Passkey-session-timeout-values) table is used.\n"
          },
          "userVerification": {
            "type": "string",
            "description": "A parameter that determines the passkey user verification.\n\n**Note**: There is no guarantee that the browser handling the authentication uses or acknowledges this parameter.\n\n**Allowed values**:\n- See the [Passkey user verification](/apis/reuseid/#section/Common-concepts/Passkey-user-verification) table.\n- If no value is set, then the default value `preferred` is used.\n"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "  The user attributes to return.\n\n  **Allowed 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"
            }
          }
        }
      },
      "PasskeyAuthenticationRequest": {
        "type": "object",
        "properties": {
          "rpRedirectUri": {
            "type": "string",
            "description": "Your redirect URI, where the ReuseID user's browser is redirected to after the passkey operation is completed."
          },
          "operationProperties": {
            "$ref": "#/components/schemas/PasskeyAuthOperationPropertiesRequest",
            "description": "An object used to configure the properties of the operation, which determines how it is carried out."
          },
          "tags": {
            "type": "array",
            "description": "A parameter that can be used to add tags to the callback events, so that you can filter them.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "AuthPasskey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the ReuseID user's passkey.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          }
        }
      },
      "PasskeyAuthenticationResponse": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "The ID of the transaction.",
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that carried out the operation.",
            "example": "a-sdge-Abcdefghijk123456789"
          },
          "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",
            "example": "PENDING"
          },
          "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",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "completed": {
            "type": "string",
            "description": "The timestamp when the operation was completed.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:33.456Z"
          },
          "passkey": {
            "$ref": "#/components/schemas/AuthPasskey",
            "description": "An object that contains information about the passkey for the operation."
          },
          "user": {
            "$ref": "#/components/schemas/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": "#/components/schemas/PasskeysServiceOperationProperties",
            "description": "An object that contains the configured properties of the operation, which determined how it was carried out."
          },
          "riskAttributes": {
            "$ref": "#/components/schemas/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"
            }
          }
        }
      },
      "DeviceAuthSignRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the ReuseID user's device.\n\n**Note**: This field is mandatory, unless the `broadcast` operation property is set to `true`.\n",
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          }
        }
      },
      "SignatureOperationPropertiesRequest": {
        "type": "object",
        "properties": {
          "authMethod": {
            "type": "string",
            "description": "The authentication method to use for the operation.\n\n**Allowed values**:\n- See the [Authentication methods](/apis/reuseid/#section/Common-concepts/Authentication-methods) table.\n- If no value is set, then the ReuseID user can choose between all configured authentication methods supported on the device except for server-side face authentication (`DEVICE_SERVER_SIDE_FACE`), which must always be passed explicitly.\n",
            "example": "DEVICE_PIN"
          },
          "authLevel": {
            "type": "string",
            "description": "The authentication level to use for the operation.\n\n**Allowed values**:\n- See the [Authentication levels](/apis/reuseid/#section/Common-concepts/Authentication-levels) table.\n- If no value is set, then the default level `TWO_FACTOR` is used.\n",
            "example": "TWO_FACTOR"
          },
          "pushPayload": {
            "type": "string",
            "description": "A custom payload that is sent to the ReuseID user's device in the push notification.\n\nThe custom payload is sent in plain text, and all characters must be in the Basic Multilingual Plane (BMP).\n\n**Note**: Data requiring a secure channel should use the post-operation context and the pre-operation context, as the push channel is not secure.\n",
            "example": "Authentication operation"
          },
          "preOperationContext": {
            "$ref": "#/components/schemas/preOperationContext"
          },
          "postOperationContext": {
            "$ref": "#/components/schemas/postOperationContext"
          },
          "sendPush": {
            "type": "boolean",
            "description": "A parameter that determines whether to send push.\n\n**Note**: For push notifications to be sent, you need to enable them in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#push-notifications).\n",
            "example": false
          },
          "broadcast": {
            "type": "boolean",
            "description": "A parameter that determines whether to broadcast the operation to all of the ReuseID user's active devices.\n\n**Note**:\n- The default is `false`. To enable broadcast, you must set this property to `true`.\n- If enabled, the device object in the request should either be empty or not supplied.\n- If enabled, consider whether you specify `authMethod` in the request. Only devices that support the authentication method receive the broadcast, meaning you might limit the devices that can be used.\n",
            "example": true
          },
          "sessionTimeout": {
            "type": "string",
            "description": "The duration until the operation times out, given in milliseconds.\n\n**Allowed values**: It cannot exceed the maximum configured value of `18720000` milliseconds.\n",
            "example": "240000"
          },
          "metadata": {
            "type": "string",
            "description": "A parameter that can be used to send meta data for the operation.\n\n**Note**: This value is never changed and is returned in the operation response.\n\n**Allowed values**: It cannot exceed the maximum character length of 1024 characters.\n"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "The user attributes to return.\n\n**Allowed value**:\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"
            }
          }
        }
      },
      "SignatureRequest": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e",
            "minLength": 1
          },
          "device": {
            "$ref": "#/components/schemas/DeviceAuthSignRequest",
            "description": "The device object, which contains the properties of the ReuseID user's device to be used for this operation.\n\n- If broadcast is not enabled, then you must supply this object.\n- If broadcast is enabled, then you do not need to supply this object.\n\n**Note**: To learn more, see our [Broadcast](/docs/mobile-identity/mobileid/features/broadcast) feature documentation and `broadcast` operation property.\n"
          },
          "tags": {
            "type": "array",
            "description": "A parameter that can be used to add tags to the callback events, so that you can filter them.",
            "items": {
              "type": "string"
            }
          },
          "operationProperties": {
            "$ref": "#/components/schemas/SignatureOperationPropertiesRequest",
            "description": "An object used to configure the properties of the operation, which determines how it is carried out."
          }
        },
        "required": [
          "userId"
        ]
      },
      "AppAttestation": {
        "type": "object",
        "description": "An object that describes the properties of the attestation.\n\n**Note**: In order for this object to be returned in the response, it must be enabled in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#app-attestation).\n",
        "properties": {
          "playIntegrityStatus": {
            "type": "string",
            "description": "The Play Integrity attestation status of the ReuseID user's device that was used for the operation.\n\n**Possible values**: See the [Play Integrity statuses](/apis/reuseid/#section/Common-concepts/Play-Integrity-statuses) table.\n",
            "example": "VERIFIED"
          },
          "playIntegrityDate": {
            "type": "string",
            "description": "The timestamp when the Play Integrity attestation was performed on the ReuseID user's device.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`\n",
            "example": "2022-06-24T20:56:03.025Z"
          },
          "appAttestStatus": {
            "type": "string",
            "description": "The App Attest attestation status of the ReuseID user's device that was used for the operation\n\n**Possible values**: See the [App Attest statuses](/apis/reuseid/#section/Common-concepts/App-Attest-statuses) table.\n",
            "example": "VERIFIED"
          },
          "appAttestDate": {
            "type": "string",
            "description": "The timestamp when the App Attest attestation was performed on the ReuseID user's device.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`\n",
            "example": "2022-06-24T20:55:03.025Z"
          }
        }
      },
      "DeviceSignature": {
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "description": "The signed JSON Web Token (JWT) of the transaction.\n\nTo learn more, see our [Signature](/docs/mobile-identity/mobileid/features/signature) feature documentation.\n"
          },
          "operationProperties": {
            "$ref": "#/components/schemas/SignatureOperationProperties",
            "description": "An object that contains the configured properties of the operation, which determined how it was carried out."
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that carried out the operation.",
            "example": "a-sdge-Abcdefghijk123456789"
          },
          "transactionId": {
            "type": "string",
            "description": "The ID of the transaction.",
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          "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",
            "example": "PENDING"
          },
          "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",
            "example": "LOCKED_PIN_VERIFICATION_FAILED"
          },
          "errorDescription": {
            "type": "string",
            "description": "The descriptive error message that is given if the operation fails.",
            "example": "Operation failed because the device is locked by pin verification"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the initial response was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "completed": {
            "type": "string",
            "description": "The timestamp when the operation was completed.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:33.456Z"
          },
          "device": {
            "$ref": "#/components/schemas/SimpleDevice",
            "description": "An object that contains information about the ReuseID user's device used for the operation."
          },
          "user": {
            "$ref": "#/components/schemas/SimpleUser",
            "description": "An object that contains information about the ReuseID user used for the operation."
          },
          "riskAttributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "An object that contains the risk attributes collected for the device.\n\n**Possible values**: See the [Risk attributes](/apis/reuseid/#section/Common-concepts/Risk-attributes) table.\n\n**Note**: To learn how to configure which attributes are collected, see our [Application configuration](/docs/mobile-identity/mobileid/features/application-configuration#risk-data) feature documentation.\n",
            "example": {
              "hwKeyClientStatus": "OK_SIGNED_SUCCESS",
              "deviceHash": "DCkhP7PqJPtCWlhdIo8EIiioJXadZtTb5E1V8GMmKOc=",
              "signerHashes": "MWFgoYYrQg07r3I1NIX7J8GZUQIn6YclVVzUZ3arxrk="
            }
          },
          "tags": {
            "type": "array",
            "description": "The tags that you added so that the callback events can be filtered.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Geofencing": {
        "type": "object",
        "description": "An object that contains information about the geofencing validation.\n\n**Note**: In order for this object to be returned in the response, it must be enabled in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#geofencing).\n",
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "The country code in an ISO 3166-1 Alpha-2 format, as reported by the SDK.\n\n**Possible values**: For a list of countries and corresponding codes, see the [GeoNames](https://www.geonames.org/countries/) website.\n",
            "example": "NO"
          },
          "clientStatus": {
            "type": "string",
            "description": "The status of the geofencing operation, as reported by the SDK.\n\n**Possible values**: See the [Geofencing client statuses](/apis/reuseid/#section/Common-concepts/Geofencing-client-statuses) table.\n",
            "example": "GEOCODER_NOT_SUPPORTED"
          },
          "serverBoundaryValidation": {
            "type": "string",
            "description": "The status of the geofencing server validation, after evaluating the country against the allowed region.\n\n**Possible values**: See the [Geofencing server boundary validation statuses](/apis/reuseid/#section/Common-concepts/Geofencing-server-boundary-validation-statuses) table.\n",
            "example": "VERIFIED"
          }
        }
      },
      "Location": {
        "type": "object",
        "properties": {
          "accuracy": {
            "type": "string",
            "description": "The location accuracy of the ReuseID user's device that was used for the operation.",
            "example": "0.564"
          },
          "altitude": {
            "type": "string",
            "description": "The location altitude of the ReuseID user's device that was used for the operation.",
            "example": "76.2352.3563"
          },
          "latitude": {
            "type": "string",
            "description": "The location latitude of the ReuseID user's device that was used for the operation.",
            "example": "12.34234.143"
          },
          "longitude": {
            "type": "string",
            "description": "The location longitude of the ReuseID user's device that was used for the operation.",
            "example": "32.24314.1431"
          }
        }
      },
      "SignatureOperationProperties": {
        "type": "object",
        "properties": {
          "pushSent": {
            "type": "boolean",
            "description": "A property that informs you whether a push notification was sent.",
            "example": false
          },
          "location": {
            "$ref": "#/components/schemas/Location",
            "description": "An object that describes the location of the device that was used for the operation.\n\n**Note**: To be returned in the response, you need to enable it in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#risk-data).\n"
          },
          "attestation": {
            "$ref": "#/components/schemas/AppAttestation"
          },
          "geofencing": {
            "$ref": "#/components/schemas/Geofencing"
          },
          "sessionExpiryTime": {
            "type": "string",
            "description": "The timestamp when the operation expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "clientData": {
            "type": "string",
            "description": "The data that the client application optionally passed at the point of the authentication.\n",
            "example": "<client data>"
          },
          "postOperationContext": {
            "$ref": "#/components/schemas/postOperationContext"
          },
          "authLevel": {
            "type": "string",
            "description": "The authentication level that was used for the operation.\n\n**Possible values**: See the [Authentication levels](/apis/reuseid/#section/Common-concepts/Authentication-levels) table.\n",
            "example": "TWO_FACTOR"
          },
          "sessionTimeout": {
            "type": "string",
            "description": "The specified timeout for the operation, given in milliseconds.\n",
            "example": "240000"
          },
          "metadata": {
            "type": "string",
            "description": "The meta data that was set for the operation.\n"
          },
          "authMethod": {
            "type": "string",
            "description": "The authentication method that was used for the operation.\n\n**Possible values**:\n- See the [Authentication methods](/apis/reuseid/#section/Common-concepts/Authentication-methods) table.\n",
            "example": "DEVICE_PIN"
          },
          "sendPush": {
            "type": "boolean",
            "description": "A parameter that determined whether to send push.\n\n**Note**: For push notifications to be sent, you need to enable them in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#push-notifications).\n",
            "example": false
          },
          "broadcast": {
            "type": "boolean",
            "description": "A parameter that determined whether to broadcast the operation to all of the ReuseID user's active devices.\n",
            "example": true
          },
          "pushPayload": {
            "type": "string",
            "description": "  A custom payload that was sent to the ReuseID user's device in the push notification.\n",
            "example": "Authentication operation"
          },
          "preOperationContext": {
            "$ref": "#/components/schemas/preOperationContext"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "The user attributes that were requested for the operation.\n\n**Possible values**:\n- If no value was set, then the user object returned after a successful operation will not include any attributes.\n- If a non-existent user attribute was set, then this will be silently ignored.\n",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "SimpleDevice": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the ReuseID user's device (`deviceId`).",
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          "name": {
            "type": "string",
            "description": "The name of the ReuseID user's device.",
            "example": "My iPhone"
          }
        }
      },
      "SimpleUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID (`userId`) of the ReuseID user, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          "segment": {
            "type": "string",
            "description": "The segment that was assigned to the ReuseID user and their corresponding transactions.\n",
            "example": "NO"
          },
          "externalRef": {
            "type": "string",
            "description": "The identifier generated by you, that points to the `userId` generated by ReuseID.\n",
            "example": "Empl10300469"
          },
          "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.\n",
            "example": {
              "firstname": "George",
              "lastName": "Harrison"
            }
          }
        }
      },
      "DeviceRegistrationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name to set for the ReuseID user's device being registered.\n\n**Allowed values**:\nIt cannot exceed the maximum character length of 128   characters.\n",
            "example": "My iPhone"
          },
          "id": {
            "type": "string",
            "description": "The ID of the ReuseID user's device.\n\n- When the registration mode is set to `REGISTRATION`, you must not supply a value as the `deviceId` is generated by this operation.\n- When the registration mode is set to `RE_REGISTRATION`, you must supply the `deviceId` of the device to be re-registered.\n",
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          }
        }
      },
      "RegistrationOperationPropertiesRequest": {
        "type": "object",
        "properties": {
          "postOperationContext": {
            "$ref": "#/components/schemas/postOperationContext"
          },
          "registrationMode": {
            "type": "string",
            "description": "A parameter that determines the registration mode to use for the operation.\n\n**Allowed values**:\n- See the [Device registration modes](/apis/reuseid/#section/Common-concepts/Device-registration-modes) table.\n- If no value is set, then the default mode `REGISTRATION` is used.\n",
            "example": "RE_REGISTRATION"
          },
          "authLevel": {
            "type": "string",
            "description": "The authentication level to use for the operation.\n\n**Allowed values**:\n- See the [Authentication levels](/apis/reuseid/#section/Common-concepts/Authentication-levels) table.\n- If no value is set, then the default level `TWO_FACTOR` is used.\n",
            "example": "TWO_FACTOR"
          },
          "sessionTimeout": {
            "type": "string",
            "description": "The duration until the operation times out, given in milliseconds.\n\n**Allowed values**: It cannot exceed the maximum configured value of `18720000` milliseconds.\n",
            "example": "240000"
          },
          "metadata": {
            "type": "string",
            "description": "A parameter that can be used to send meta data for the operation.\n\n**Note**: This value is never changed and is returned in the operation response.\n\n**Allowed values**: It cannot exceed the maximum character length of 1024 characters.\n"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "The user attributes to return.\n\n**Allowed 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"
            }
          }
        }
      },
      "RegistrationRequest": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e",
            "minLength": 1
          },
          "device": {
            "$ref": "#/components/schemas/DeviceRegistrationRequest",
            "description": "The device object, which contains the properties of the ReuseID user's device to be registered or re-registered:\n\n- When the registration mode is set to `REGISTRATION`, you can optionally supply this object.\n- When the registration mode is set to `RE_REGISTRATION`, you must supply this object.\n"
          },
          "tags": {
            "type": "array",
            "description": "A parameter that can be used to add tags to the callback events, so that you can filter them.",
            "items": {
              "type": "string"
            }
          },
          "operationProperties": {
            "$ref": "#/components/schemas/RegistrationOperationPropertiesRequest",
            "description": "An object used to configure the properties of the operation, which determines how it is carried out.\n"
          }
        },
        "required": [
          "userId"
        ]
      },
      "DeviceRegistration": {
        "type": "object",
        "properties": {
          "operationProperties": {
            "$ref": "#/components/schemas/registrationOperationProperties",
            "description": "An object that contains the configured properties of the operation, which determined how it was carried out."
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that carried out the operation.",
            "example": "a-sdge-Abcdefghijk123456789"
          },
          "transactionId": {
            "type": "string",
            "description": "The ID of the transaction.",
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          "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",
            "example": "PENDING"
          },
          "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",
            "example": "LOCKED_PIN_VERIFICATION_FAILED"
          },
          "errorDescription": {
            "type": "string",
            "description": "The descriptive error message that is given if the operation fails.",
            "example": "Operation failed because the device is locked by PIN verification"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the initial response was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "completed": {
            "type": "string",
            "description": "The timestamp when the operation was completed.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:33.456Z"
          },
          "device": {
            "$ref": "#/components/schemas/SimpleDevice",
            "description": "An object that contains information about the ReuseID user's device that was used for the operation."
          },
          "user": {
            "$ref": "#/components/schemas/SimpleUser",
            "description": "An object that contains information about the ReuseID user that was used for the operation."
          },
          "riskAttributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "An object that contains the risk attributes collected for the device.\n\n**Possible values**: See the [Risk attributes](/apis/reuseid/#section/Common-concepts/Risk-attributes) table.\n\n**Note**: To learn how to configure which attributes are collected, see our [Application configuration](/docs/mobile-identity/mobileid/features/application-configuration#risk-data) feature documentation.\n",
            "example": {
              "hwKeyClientStatus": "OK_SIGNED_SUCCESS",
              "deviceHash": "DCkhP7PqJPtCWlhdIo8EIiioJXadZtTb5E1V8GMmKOc=",
              "signerHashes": "MWFgoYYrQg07r3I1NIX7J8GZUQIn6YclVVzUZ3arxrk="
            }
          },
          "tags": {
            "type": "array",
            "description": "The tags that you added so that the callback events can be filtered.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "registrationOperationProperties": {
        "type": "object",
        "properties": {
          "activationCode": {
            "type": "string",
            "description": "The activation code, required to complete the registration operation on the device.\n",
            "example": "928401"
          },
          "location": {
            "$ref": "#/components/schemas/Location",
            "description": "An object that describes the location of the ReuseID user's device that was used for the operation.\n\n**Note**: In order for this object to be returned in the response, you must enable it in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#risk-data).\n"
          },
          "attestation": {
            "$ref": "#/components/schemas/AppAttestation"
          },
          "geofencing": {
            "$ref": "#/components/schemas/Geofencing"
          },
          "sessionExpiryTime": {
            "type": "string",
            "description": "The timestamp when the operation expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "activatedAuthenticationMethods": {
            "type": "array",
            "description": "A list of the activated authentication methods.",
            "example": "[DEVICE, DEVICE:PIN]",
            "items": {
              "type": "string"
            }
          },
          "postOperationContext": {
            "$ref": "#/components/schemas/postOperationContext"
          },
          "authLevel": {
            "type": "string",
            "description": "The authentication level that was used for the operation.\n\n**Possible values**:\n- See the [Authentication levels](/apis/reuseid/#section/Common-concepts/Authentication-levels) table.\n",
            "example": "TWO_FACTOR"
          },
          "sessionTimeout": {
            "type": "string",
            "description": "The specified timeout for the operation, given in milliseconds.\n",
            "example": "240000"
          },
          "metadata": {
            "type": "string",
            "description": "The meta data that was set for the operation.\n"
          },
          "registrationMode": {
            "type": "string",
            "description": "The registration mode that was used for the operation.\n\n**Possible values**: See the [Device registration modes](/apis/reuseid/#section/Common-concepts/Device-registration-modes) table.\n",
            "example": "RE_REGISTRATION"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "The user attributes that were requested for the operation.\n\n**Possible values**:\n- If no value was set, then the user object returned after a successful operation will not include any attributes.\n- If a non-existent user attribute was set, then this will be silently ignored.\n",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "AuthenticationOperationPropertiesRequest": {
        "type": "object",
        "properties": {
          "authMethod": {
            "type": "string",
            "description": "The authentication method to use for the operation.\n\n**Allowed values**:\n- See the [Authentication methods](/apis/reuseid/#section/Common-concepts/Authentication-methods) table.\n- If no value is set, then the ReuseID user can choose between all configured authentication methods supported on the device except for server-side face authentication (`DEVICE_SERVER_SIDE_FACE`), which must always be passed explicitly.\n",
            "example": "DEVICE_PIN"
          },
          "authLevel": {
            "type": "string",
            "description": "The authentication level to use for the operation.\n\n**Allowed values**:\n- See the [Authentication levels](/apis/reuseid/#section/Common-concepts/Authentication-levels) table.\n- If no value is set, then the default level `TWO_FACTOR` is used.\n",
            "example": "TWO_FACTOR"
          },
          "pushPayload": {
            "type": "string",
            "description": "A custom payload that is sent to the ReuseID user's device in the push notification.\n\nThe custom payload is sent in plain text, and all characters must be in the Basic Multilingual Plane (BMP).\n\n**Note**: Data requiring a secure channel should use the post-operation context and the pre-operation context, as the push channel is not secure.\n",
            "example": "Authentication operation"
          },
          "preOperationContext": {
            "$ref": "#/components/schemas/preOperationContext"
          },
          "postOperationContext": {
            "$ref": "#/components/schemas/postOperationContext"
          },
          "sendPush": {
            "type": "boolean",
            "description": "A parameter that determines whether to send push.\n\n**Note**: For push notifications to be sent, you need to enable them in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#push-notifications).\n",
            "example": false
          },
          "broadcast": {
            "type": "boolean",
            "description": "A parameter that determines whether to broadcast the operation to all of the ReuseID user's active devices.\n\n**Note**:\n- The default is `false`. To enable broadcast, you must set this property to `true`.\n- If enabled, the device object in the request should either be empty or not supplied.\n- If enabled, consider whether you specify `authMethod` in the request. Only devices that support the authentication method receive the broadcast, meaning you might limit the devices that can be used.\n",
            "example": true
          },
          "sessionTimeout": {
            "type": "string",
            "description": "The duration until the operation times out, given in milliseconds.\n\n**Allowed values**: It cannot exceed the maximum configured value of `18720000` milliseconds.\n",
            "example": "240000"
          },
          "metadata": {
            "type": "string",
            "description": "A parameter that can be used to send meta data for the operation.\n\n**Note**: This value is never changed and is returned in the operation response.\n\n**Allowed values**: It cannot exceed the maximum character length of 1024 characters.\n"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "The user attributes to return.\n\n**Allowed value**:\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"
            }
          }
        }
      },
      "AuthenticationRequest": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The ID of the ReuseID user that will carry out the operation, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e",
            "minLength": 1
          },
          "device": {
            "$ref": "#/components/schemas/DeviceAuthSignRequest",
            "description": "The device object, which contains the properties of the ReuseID user's device to be used for this operation.\n\n- If broadcast is not enabled, then you must supply this object.\n- If broadcast is enabled, then you do not need to supply this object.\n\n**Note**: To learn more, see our [Broadcast](/docs/mobile-identity/mobileid/features/broadcast) feature documentation and `broadcast` operation property.\n"
          },
          "tags": {
            "type": "array",
            "description": "A parameter that can be used to add tags to the callback events, so that you can filter them.",
            "items": {
              "type": "string"
            }
          },
          "operationProperties": {
            "$ref": "#/components/schemas/AuthenticationOperationPropertiesRequest",
            "description": "An object used to configure the properties of the operation, which determines how it is carried out."
          }
        },
        "required": [
          "userId"
        ]
      },
      "AuthenticationOperationProperties": {
        "type": "object",
        "properties": {
          "authMethod": {
            "type": "string",
            "description": "The authentication method that was used for the operation.\n\n**Possible values**:\n- See the [Authentication methods](/apis/reuseid/#section/Common-concepts/Authentication-methods) table.\n",
            "example": "DEVICE_PIN"
          },
          "authLevel": {
            "type": "string",
            "description": "The authentication level that was used for the operation.\n\n**Possible values**: See the [Authentication levels](/apis/reuseid/#section/Common-concepts/Authentication-levels) table.\n",
            "example": "TWO_FACTOR"
          },
          "pushPayload": {
            "type": "string",
            "description": "  A custom payload that was sent to the ReuseID user's device in the push notification.\n",
            "example": "Authentication operation"
          },
          "preOperationContext": {
            "$ref": "#/components/schemas/preOperationContext"
          },
          "postOperationContext": {
            "$ref": "#/components/schemas/postOperationContext"
          },
          "sendPush": {
            "type": "boolean",
            "description": "A parameter that determined whether to send push.\n\n**Note**: For push notifications to be sent, you need to enable them in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#push-notifications).\n",
            "example": false
          },
          "broadcast": {
            "type": "boolean",
            "description": "A parameter that determined whether to broadcast the operation to all of the ReuseID user's active devices.\n",
            "example": true
          },
          "sessionTimeout": {
            "type": "string",
            "description": "The specified timeout for the operation, given in milliseconds.\n",
            "example": "240000"
          },
          "metadata": {
            "type": "string",
            "description": "The meta data that was set for the operation.\n"
          },
          "requestedUserAttributes": {
            "type": "array",
            "description": "The user attributes that were requested for the operation.\n\n**Possible values**:\n- If no value was set, then the user object returned after a successful operation will not include any attributes.\n- If a non-existent user attribute was set, then this will be silently ignored.\n",
            "items": {
              "type": "string"
            }
          },
          "clientData": {
            "type": "string",
            "description": "The data that the client application optionally passed at the point of the authentication.\n",
            "example": "<client data>"
          },
          "pushSent": {
            "type": "boolean",
            "description": "A property that informs you whether a push notification was sent.",
            "example": false
          },
          "location": {
            "$ref": "#/components/schemas/Location",
            "description": "An object that describes the location of the device that was used for the operation.\n\n**Note**: To be returned in the response, you need to enable it in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#risk-data).\n"
          },
          "attestation": {
            "$ref": "#/components/schemas/AppAttestation"
          },
          "geofencing": {
            "$ref": "#/components/schemas/Geofencing"
          },
          "sessionExpiryTime": {
            "type": "string",
            "description": "The timestamp when the operation expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          }
        }
      },
      "DeviceAuthentication": {
        "type": "object",
        "properties": {
          "operationProperties": {
            "$ref": "#/components/schemas/AuthenticationOperationProperties",
            "description": "An object that contains the configured properties of the operation, which determined how it was carried out."
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that carried out the operation.",
            "example": "a-sdge-Abcdefghijk123456789"
          },
          "transactionId": {
            "type": "string",
            "description": "The ID of the transaction.",
            "example": "7daa489e-6b35-46ca-83a4-1bba2ea35f68"
          },
          "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",
            "example": "PENDING"
          },
          "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",
            "example": "LOCKED_PIN_VERIFICATION_FAILED"
          },
          "errorDescription": {
            "type": "string",
            "description": "The descriptive error message that is given if the operation fails.",
            "example": "Operation failed because the device is locked by pin verification"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the initial response was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "completed": {
            "type": "string",
            "description": "The timestamp when the operation was completed.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:33.456Z"
          },
          "device": {
            "$ref": "#/components/schemas/SimpleDevice",
            "description": "An object that contains information about the ReuseID user's device for the operation."
          },
          "user": {
            "$ref": "#/components/schemas/SimpleUser",
            "description": "An object that contains information about the ReuseID user for the operation."
          },
          "riskAttributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "An object that contains the risk attributes collected for the device.\n\n**Possible values**: See the [Risk attributes](/apis/reuseid/#section/Common-concepts/Risk-attributes) table.\n",
            "example": {
              "hwKeyClientStatus": "OK_SIGNED_SUCCESS",
              "deviceHash": "DCkhP7PqJPtCWlhdIo8EIiioJXadZtTb5E1V8GMmKOc=",
              "signerHashes": "MWFgoYYrQg07r3I1NIX7J8GZUQIn6YclVVzUZ3arxrk="
            }
          },
          "tags": {
            "type": "array",
            "description": "The tags that you added so that the callback events can be filtered.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UserUpdateRequest": {
        "type": "object",
        "properties": {
          "externalRef": {
            "type": "string",
            "description": "An identifier generated by you, that points to the `userId` generated by ReuseID.\n\n**Allowed values**:\n- It must be unique in the scope of the account.\n- It cannot exceed the maximum character length of 128 characters.\n",
            "example": "Empl10300469"
          },
          "segment": {
            "type": "string",
            "description": "A parameter that allows you to segment ReuseID users and their corresponding transactions.\n\n**Allowed values**:\n- It can have any value.\n- It cannot exceed the maximum character length of 128 characters.\n\n**Example**: Group ReuseID users by country using country codes such as `NO`, `SE`, `DK`.\n",
            "example": "NO"
          },
          "state": {
            "type": "string",
            "description": "The new state to set for the ReuseID user.\n\n**Allowed values**:\n- An enum that must be either `ACTIVE` or `LOCKED`.\n- See the [User states](/apis/reuseid/#section/Common-concepts/User-states) table.\n",
            "enum": [
              "ACTIVE",
              "LOCKED"
            ],
            "example": "ACTIVE"
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "An object that allows you to add user attributes to the ReuseID user, given as key-value pairs.\n\n**Allowed values**:\n- The keys can only start with a letter (`a-z`), digit or an underscore (`_`).\n- The keys can only contain digits, lowercase letters (`a-z`), or certain special characters (`-._~:@`).\n- The keys cannot exceed the maximum character length of 128 characters.\n- The values cannot exceed the maximum character length of 256 characters.\n\n**Example**: They could contain contact information such as name, address and phone number.\n",
            "example": {
              "firstname": "George",
              "lastName": "Harrison"
            }
          }
        }
      },
      "DeviceUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The new name to set for the ReuseID user's device.\nIt cannot exceed the maximum character length of 128   characters.\n",
            "example": "My New iPhone"
          },
          "state": {
            "type": "string",
            "description": "The new state to set for the ReuseID user's device.\n\n**Allowed values**:\n- An enum that must be either `ACTIVE` or `LOCKED`.\n- See the [Device states](/apis/reuseid/#section/Common-concepts/Device-states) table.\n",
            "example": "LOCKED"
          }
        }
      },
      "AccountRecovery": {
        "type": "object",
        "properties": {
          "recoveryId": {
            "type": "string",
            "description": "The ID of the recovery.",
            "example": "11a107d7-42ac-4171-92b4-1fdb23c6e1f2"
          },
          "recoveryMethod": {
            "type": "string",
            "description": "The recovery method that was used for the recovery.\n\n**Possible values**: See the [Recovery methods](/apis/reuseid/#section/Common-concepts/Recovery-methods) table.\n",
            "example": "CLOUD_BACKUP_RECOVERY_CODE"
          },
          "recoveryStatus": {
            "type": "string",
            "description": "The status of the recovery.\n\n**Possible values**: See the [Recovery statuses](/apis/reuseid/#section/Common-concepts/Recovery-statuses) table.\n",
            "example": "ACTIVATED"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the recovery was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2022-06-24T20:56:01.405Z"
          },
          "modified": {
            "type": "string",
            "description": "The timestamp when the recovery was updated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2022-06-24T20:56:01.405Z"
          },
          "recovered": {
            "type": "string",
            "description": "The timestamp when the recovery was used.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2022-06-24T20:56:01.373Z"
          }
        }
      },
      "Device": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the ReuseID user's device (`deviceId`).",
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          "name": {
            "type": "string",
            "description": "The name of the ReuseID user's device.",
            "example": "My iPhone"
          },
          "state": {
            "type": "string",
            "description": "The state of the ReuseID user's device.\n\n**Possible values**: See the [Device states](/apis/reuseid/#section/Common-concepts/Device-states) table.\n",
            "enum": [
              "ACTIVE",
              "LOCKED",
              "DELETED"
            ],
            "example": "ACTIVE"
          },
          "lastOperationType": {
            "type": "string",
            "description": "The last operation type that the ReuseID user's device carried out.\n\n**Possible values**: See the [Operation types](/apis/reuseid/#section/Common-concepts/Operation-types) table.\n",
            "example": "AUTHENTICATION"
          },
          "lastUsed": {
            "type": "string",
            "description": "The timestamp when the ReuseID user's device last carried out an operation.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the ReuseID user's device was originally activated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27"
          },
          "deviceDetails": {
            "$ref": "#/components/schemas/DeviceDetails",
            "description": "An object that contains a more extensive set of information about the ReuseID user's device.\n\n**Note**: This is only returned when the `detailed` query parameter is set to `true`.\n"
          }
        }
      },
      "DeviceDetails": {
        "type": "object",
        "properties": {
          "lock": {
            "$ref": "#/components/schemas/DeviceLock",
            "description": "An object that contains information about why the device is locked.\n\n**Note**: This object is only returned when the ReuseID user's device is locked.\n"
          },
          "activationTime": {
            "type": "string",
            "description": "The timestamp when the ReuseID user's device was originally activated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`\n",
            "example": "2017-04-05T12:23:00.000Z",
            "readOnly": true
          },
          "deviceHash": {
            "type": "string",
            "description": "A SHA256 hash of the unique hardware device ID of the ReuseID user's device.",
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480%2FWCq3bq9%2FC0apC4TU%3D",
            "readOnly": true
          },
          "applicationId": {
            "type": "string",
            "description": "The application ID being used for the ReuseID user's device.",
            "example": "encap",
            "readOnly": true
          },
          "currentClientApiVersion": {
            "type": "string",
            "description": "The Encap client API version that the ReuseID user's device used for its last operation.",
            "example": "3.15.0"
          },
          "activatedClientApiVersion": {
            "type": "string",
            "description": "The Encap client API version that the ReuseID user's device was originally activated on.",
            "example": "3.15.0"
          },
          "activatedEncapRelease": {
            "type": "string",
            "description": "The Encap server release version that the ReuseID user's device was originally activated on.",
            "example": "R_3_3",
            "readOnly": true
          },
          "pushAddress": {
            "type": "string",
            "description": "The push address for the ReuseID user's device.\n\nThis address is used when sending a push to the device using Firebase Cloud Messaging (FCM) or Apple Push Notification Service (APNS).\n",
            "example": "ap7cmrQQTc0zb5aCPgXV0JxvrFeOO6CguQklentLMsc",
            "readOnly": true
          },
          "operatingSystemType": {
            "type": "string",
            "description": "The operating system type of the ReuseID user's device.\n",
            "example": "iOS",
            "readOnly": true
          },
          "activatedAuthenticationMethods": {
            "type": "array",
            "description": "A list of the activated authentication methods for the ReuseID user's device.\n\n**Possible values**: See the [Authentication methods](/apis/reuseid/#section/Common-concepts/Authentication-methods) table.\n",
            "example": [
              "DEVICE",
              "DEVICE:PIN"
            ],
            "items": {
              "type": "string"
            },
            "readOnly": true
          },
          "attestation": {
            "$ref": "#/components/schemas/AppAttestation"
          },
          "recoveries": {
            "type": "array",
            "description": "A list of all recoveries that a ReuseID user's device has carried out.\n",
            "items": {
              "$ref": "#/components/schemas/AccountRecovery"
            }
          },
          "recoveryLock": {
            "type": "boolean",
            "description": "A property that informs you whether the recovery lock is activated, which determines if the account recovery feature is locked for a ReuseID user's device.\n\n**Example**: When `false`, the account recovery feature is not locked for the ReuseID user's device and recovery operations can be performed.\n"
          }
        }
      },
      "DeviceLock": {
        "type": "object",
        "properties": {
          "lockReason": {
            "type": "array",
            "description": "A list that contains all reasons why the ReuseID user's device has been locked.\n\n**Possible values**: See the [Lock reason](/apis/reuseid/#section/Common-concepts/Lock-reason) table.\n",
            "example": [
              "LOCKED_BY_ADMIN",
              "DEVICE_VERIFICATION_FAILED"
            ],
            "items": {
              "type": "string"
            },
            "readOnly": true
          }
        }
      },
      "CredentialTransaction": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "The ID of the transaction.",
            "example": "3c68023d-c524-401c-b632-e495c498e2d0"
          },
          "ref": {
            "type": "string",
            "description": "A link to the operation object for the transaction.",
            "example": "/registrations/3c68023d-c524-401c-b632-e495c498e2d0"
          },
          "operationType": {
            "type": "string",
            "description": "The operation type that was used for the transaction.\n\n**Possible values**: See the [Operation types](/apis/reuseid/#section/Common-concepts/Operation-types) table.\n",
            "example": "ACTIVATION"
          },
          "state": {
            "type": "string",
            "description": "The state of the transaction.",
            "example": "SUCCESS"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the transaction was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
          },
          "expires": {
            "type": "string",
            "description": "The timestamp when the transaction expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
          },
          "credentialId": {
            "type": "string",
            "description": "The ID of the ReuseID user's credential that was used for the operation.\n"
          },
          "credentialType": {
            "type": "string",
            "description": "The type of the ReuseID user's credential that was used for the operation.\n"
          }
        }
      },
      "UserTransactions": {
        "type": "object",
        "properties": {
          "previous": {
            "type": "string",
            "description": "A URI that can used to get the previous set of transactions.",
            "example": "/devices/6d7783a9-34d7-4f19-8ceb-ada763ffed2a/transactions?limit=10&offset=4e5ea8f1-9ee1-409e-8fc0-2dbc5b9b315a&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "next": {
            "type": "string",
            "description": "A URI that can be used to get the next set of transactions.",
            "example": "/devices/7fd01f14-151b-48f4-9aa6-7cfa2140989e/transactions?limit=10&offset=80a8b98d-7a88-4239-947e-b938ecd55f5b&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "The number of objects (transactions) that are shown on each page.\n\n**Allowed values**: It must be a whole number ranging from `1` to `100`.\n",
            "example": 10
          },
          "transactions": {
            "type": "array",
            "description": "A list of all transactions that the ReuseID user has carried out, for the set credential type.",
            "items": {
              "$ref": "#/components/schemas/CredentialTransaction"
            }
          }
        }
      },
      "Credential": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of the ReuseID user's credential.\n\n**Possible values**: It can be either `DEVICE` or `PASSKEY`.\n",
            "example": "DEVICE"
          },
          "id": {
            "type": "string",
            "description": "The ID of the ReuseID user's credential.\n\n**Possible values**: Depending on the type of credential returned, this can be either the `deviceId` or the `passkeyId`.\n",
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          "name": {
            "type": "string",
            "description": "The name of the ReuseID user's credential.",
            "example": "my iPhone"
          },
          "state": {
            "type": "string",
            "description": "The state of the ReuseID user's credential.\n\n**Possible values**: It can be either `PENDING`, `COMPLETED` or `FAILED`.\n",
            "example": "PENDING"
          },
          "lastOperationType": {
            "type": "string",
            "description": "The last operation type that the ReuseID user's credential carried out.\n\n**Possible values**: See the [Operation types](/apis/reuseid/#section/Common-concepts/Operation-types) table.\n",
            "example": "AUTHENTICATION"
          },
          "lastUsed": {
            "type": "string",
            "description": "The timestamp when the ReuseID user's credential last carried out an operation.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27"
          },
          "created": {
            "type": "string",
            "writeOnly": true
          },
          "ref": {
            "type": "string",
            "description": "A link to the operation object for the credential.\n"
          }
        }
      },
      "PaginationCredentials": {
        "type": "object",
        "properties": {
          "previous": {
            "type": "string",
            "description": "A URI that can be used to get the previous set of credentials.",
            "example": "/devices/6d7783a9-34d7-4f19-8ceb-ada763ffed2a/transactions?limit=10&offset=4e5ea8f1-9ee1-409e-8fc0-2dbc5b9b315a&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "next": {
            "type": "string",
            "description": "A URI that can be used to get the next set of credentials.",
            "example": "/devices/7fd01f14-151b-48f4-9aa6-7cfa2140989e/transactions?limit=10&offset=80a8b98d-7a88-4239-947e-b938ecd55f5b&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "The number of objects (credentials) that are shown on each page.\n\n**Allowed values**: It must be a whole number ranging from `1` to `100`.\n",
            "example": 10
          },
          "credentials": {
            "type": "array",
            "description": "A list of all of the ReuseID user's credentials, for the set credential type.",
            "items": {
              "$ref": "#/components/schemas/Credential"
            }
          }
        }
      },
      "PasskeyServiceGetPasskeyResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the passkey, in a valid UUID format."
          },
          "keyId": {
            "type": "string",
            "description": "The generated key ID for the ReuseID user's passkey."
          },
          "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"
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that carried out the operation."
          },
          "publicKey": {
            "type": "string",
            "description": "The public key of the passkey."
          },
          "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"
          },
          "lastUsed": {
            "type": "string",
            "description": "The timestamp when the passkey was last used.\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."
          },
          "userVerification": {
            "type": "boolean",
            "description": "A flag that indicates whether a user verification check was carried out during the creation of a passkey."
          },
          "userPresence": {
            "type": "boolean",
            "description": "A flag that indicates whether a user presence check was carried out during the creation of a passkey."
          }
        }
      },
      "PasskeyTransaction": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "The ID of the transaction.",
            "example": "3c68023d-c524-401c-b632-e495c498e2d0"
          },
          "ref": {
            "type": "string",
            "description": "A link to the operation object for the transaction.",
            "example": "/registrations/3c68023d-c524-401c-b632-e495c498e2d0"
          },
          "operationType": {
            "type": "string",
            "description": "The operation type that was used for the transaction.\n\n**Possible values**: See the [Operation types](/apis/reuseid/#section/Common-concepts/Operation-types) table.\n",
            "example": "ACTIVATION"
          },
          "state": {
            "type": "string",
            "description": "The state of the transaction.",
            "example": "SUCCESS"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the transaction was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
          },
          "expires": {
            "type": "string",
            "description": "The timestamp when the transaction expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
          },
          "passkeyId": {
            "type": "string",
            "description": "The ID of the ReuseID user's credential that was used for the operation.\n"
          }
        }
      },
      "PasskeyTransactionsResponse": {
        "type": "object",
        "properties": {
          "previous": {
            "type": "string",
            "description": "A URI that can be used to get the previous set of transactions.",
            "example": "/credentials/passkeys/6d7783a9-34d7-4f19-8ceb-ada763ffed2a/transactions?limit=10&offset=80a8b98d-7a88-4239-947e-b938ecd55f5b&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "next": {
            "type": "string",
            "description": "A URI that can be used to get the next set of transactions.",
            "example": "/credentials/passkeys/6d7783a9-34d7-4f19-8ceb-ada763ffed2a/transactions?limit=10&offset=80a8b98d-7a88-4239-947e-b938ecd55f5b&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "The number of objects (transactions) that are shown on each page.\n\n**Possible values**: This is a whole number ranging from `1` to `100`.\n",
            "example": 10
          },
          "transactions": {
            "type": "array",
            "description": "A list of passkey transactions.",
            "items": {
              "$ref": "#/components/schemas/PasskeyTransaction"
            }
          }
        }
      },
      "MobileIDTransaction": {
        "type": "object",
        "properties": {
          "previous": {
            "type": "string",
            "description": "A URI that can be used to get the previous set of transactions.",
            "example": "/devices/6d7783a9-34d7-4f19-8ceb-ada763ffed2a/transactions?limit=10&offset=4e5ea8f1-9ee1-409e-8fc0-2dbc5b9b315a&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "next": {
            "type": "string",
            "description": "A URI that can be used to get the next set of transactions.",
            "example": "/devices/7fd01f14-151b-48f4-9aa6-7cfa2140989e/transactions?limit=10&offset=80a8b98d-7a88-4239-947e-b938ecd55f5b&userId=6f29e1d4-6b36-4b80-9187-52dfc61c4a51"
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "The number of objects (device transactions) that are shown on each page.\n\n**Possible values**: It must be a whole number ranging from `1` to `100`.\n",
            "example": 10
          },
          "transactions": {
            "type": "array",
            "description": "A list of all transactions that the ReuseID user's device has carried out.",
            "items": {
              "$ref": "#/components/schemas/Transaction"
            }
          }
        }
      },
      "Transaction": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "The ID of the device transaction.",
            "example": "3c68023d-c524-401c-b632-e495c498e2d0"
          },
          "ref": {
            "type": "string",
            "description": "A link to the operation object for the device transaction.",
            "example": "/registrations/3c68023d-c524-401c-b632-e495c498e2d0"
          },
          "operationType": {
            "type": "string",
            "description": "The operation type that was used for the transaction.\n\n**Possible values**: See the [Operation types](/apis/reuseid/#section/Common-concepts/Operation-types) table.\n",
            "example": "ACTIVATION"
          },
          "state": {
            "type": "string",
            "description": "The state of the device transaction.",
            "example": "SUCCESS"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the device transaction was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
          },
          "expires": {
            "type": "string",
            "description": "The timestamp when the device transaction expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
          },
          "deviceId": {
            "type": "string",
            "description": " The ID of the ReuseID user's device that was used for the operation.\n"
          }
        }
      },
      "AccountRecoveryDetails": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string",
            "description": "The transaction ID of the recovery session.",
            "example": "11a107d7-42ac-4171-92b4-1fdb23c6e1f2"
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that the device belongs to.",
            "example": "a-ppge-abcd1234ABCDxxxxxxx"
          },
          "state": {
            "type": "string",
            "description": "The state of the recovery operation."
          },
          "device": {
            "$ref": "#/components/schemas/Device",
            "description": "The device performing the recovery."
          },
          "user": {
            "$ref": "#/components/schemas/BaseUser",
            "description": "The user performing the recovery."
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the recovery session was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2022-06-24T20:56:01.405Z"
          },
          "operationProperties": {
            "$ref": "#/components/schemas/OperationProperties",
            "description": "An object that contains the configured properties of the operation, which determined how it was carried out."
          },
          "riskAttributes": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "An object that contains the risk attributes collected for the device.\n\n**Possible values**: See the [Risk attributes](/apis/reuseid/#section/Common-concepts/Risk-attributes) table.\n\n**Note**: To learn how to configure which attributes are collected, see the [Application configuration](/docs/mobile-identity/mobileid/features/application-configuration#risk-data) feature documentation.\n"
          },
          "location": {
            "$ref": "#/components/schemas/Location",
            "description": "An object that describes the location of the ReuseID user's device that was used for the operation.\n\n**Note**: To be returned in the response, you need to enable it in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#location-risk-data).\n"
          },
          "attestation": {
            "$ref": "#/components/schemas/AppAttestation",
            "description": "An object that describes the properties of the attestation.\n\n**Note**: To be returned in the response, you need to enable it in your [application configuration](/docs/mobile-identity/mobileid/features/application-configuration#app-attestation).\n"
          },
          "recoveryMethod": {
            "type": "string",
            "description": "The recovery method that is used for the recovery.\n\n**Possible values**: See the [Recovery methods](/apis/reuseid/#section/Common-concepts/Recovery-methods) table.\n"
          },
          "recoveryStatus": {
            "type": "string",
            "description": "The status of the recovery.\n\n**Possible values**: See the [Recovery statuses](/apis/reuseid/#section/Common-concepts/Recovery-statuses) table.\n"
          }
        }
      },
      "BaseUser": {
        "type": "object",
        "properties": {
          "externalRef": {
            "type": "string",
            "description": "The identifier generated by you, that points to the `userId` generated by ReuseID.\n",
            "example": "Empl10300469"
          },
          "segment": {
            "type": "string",
            "description": "The segment that was assigned to the ReuseID user and their corresponding transactions.\n",
            "example": "NO"
          },
          "id": {
            "type": "string",
            "description": "The ID (`userId`) of the ReuseID user, in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the ReuseID user was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "lastUsed": {
            "type": "string",
            "description": "The timestamp when the ReuseID user last carried out an operation such as a registration, authentication or signing.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.123Z"
          },
          "state": {
            "type": "string",
            "description": "The state of the ReuseID user, returned as an enum.\n\n**Possible values**: See the [User states](/apis/reuseid/#section/Common-concepts/User-states) table.\n",
            "enum": [
              "ACTIVE",
              "LOCKED"
            ],
            "example": "ACTIVE"
          }
        }
      },
      "OperationProperties": {
        "type": "object",
        "properties": {
          "sessionExpiryTime": {
            "type": "string",
            "description": "The timestamp when the recovery session expires.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2022-06-24T21:56:01.405Z"
          },
          "activatedAuthenticationMethods": {
            "type": "array",
            "description": "A list of the activated authentication methods.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "DHLiveDetails": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "string",
            "description": "The ID of the user's device (<code>deviceId</code>).",
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          "lastUsed": {
            "type": "string",
            "description": "The timestamp when the user's device last carried out an operation.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.281Z"
          },
          "state": {
            "type": "string",
            "description": "The state of the device.",
            "example": "ACTIVE"
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account that carried out the operation.",
            "example": "a-sdge-Abcdefghijk123456789"
          }
        }
      },
      "DHLiveDetailsForUser": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The ID of the user (<code>userId</code>), in a valid UUID format.",
            "example": "0e99b25c-abde-4553-973b-8d94d49cd87e"
          },
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DHLiveDetails"
            }
          }
        }
      },
      "AccountDeviceHash": {
        "type": "object",
        "properties": {
          "deviceHash": {
            "type": "string",
            "description": "URL-safe Base64 encoded device hash.",
            "example": "Xsx6d7bmhh9ovUvhqp5KLOs480_WCq3bq9_C0apC4TU="
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the device hash was added to the allowlist.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n"
          },
          "comment": {
            "type": "string",
            "description": "An optional comment detailing why this device hash was added to the allowlist.\n\n**Note**: This filed has a maximum length of 1024 characters!\n",
            "maxLength": 1024
          }
        }
      }
    }
  }
}