{
  "openapi": "3.1.0",
  "info": {
    "title": "Signicat MobileID Admin API",
    "version": "1.0",
    "description": "- **Base URL**: `https://api.signicat.com/mobileid/admin/`\n- **Documentation**: See the [MobileID](/docs/mobile-identity/mobileid/) 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 MobileID Admin API enables you to carry out administrative tasks and configuration management for the Signicat MobileID service.\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. Onboard to MobileID\n\nYou need to complete the onboarding of your account for MobileID. To do this, you can use the Signicat Dashboard:\n\n1. Go to **Signicat Dashboard** > **Products** > [**MobileID**](https://dashboard.signicat.com/mobileid).\n2. Click the **Add MobileID** button.\n\nSuccess! You can now start making requests to the MobileID Admin API.\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\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."
  },
  "servers": [
    {
      "url": "https://api.signicat.com/mobileid/admin"
    }
  ],
  "tags": [
    {
      "name": "Accounts",
      "description": "The MobileID Admin accounts API provides you with operations related to administering your MobileID account, such as adding an account, and fetching information about an account.\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"
    },
    {
      "name": "APNs tokens",
      "description": "The MobileID Admin **APNs tokens** API provides you with operations related to creating and managing Apple Push Notifications service (APNs) tokens.\n\nAPNs tokens can be used so that your end-users can receive push notifications in your mobile app.\n\n<hr>\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<hr>\n\n## Useful information\n\nAn APNs token can be used by all accounts in the same organisation.\n\n"
    },
    {
      "name": "Application configuration",
      "description": "The MobileID Admin **Application configuration** API provides you with operations related to administering your <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration\" target=\"_blank\">application configuration</a>.\n\n<hr>\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<hr>\n\n## Useful information\n\nAn application configuration is a specific set of application attributes for a mobile application.\nThese attributes determine how the application should work.\n\n#### What does it look like?\n\nAn application configuration consists of the following:\n\n- The UUID of the application configuration.\n- The ID of the application configuration.\n- The name of the application configuration.\n- The APNs UUID of the application configuration.\n- The state of the application configuration.\n- An object containing the properties of the application configuration.\n\n\nYou can also use this API to configure MobileID features, by making changes to the default values in the application configuration properties.\nFor further information, see our <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/\" target=\"_blank\">MobileID feature guides</a>.\n\n#### Always collected risk data\n\nSome risk data is always collected, for debugging purposes. This means that for <code>enabledRiskData</code>:\n\n- If you pass <code>null</code>, the <i>always collected</i> risk data will still be returned.\n- If you specify risk attributes, the <i>always collected</i> risk data will be returned in addition to those you have specified.\n\nYou can find a list of what risk data is always enabled in the MobileID API reference documentation. See <a href=\"http://developer.signicat.com/apis/mobileid/#section/Common-concepts/Risk-attributes\" target=\"_blank\">risk attributes</a> in the **Common concepts** section.\n"
    },
    {
      "name": "Signing certificates",
      "description": "The MobileID Admin signing certificates API allows you to get signing certificates, which can be used for certificate verification.\n\n## Useful information\nJSON Web Tokens (JWTs) are returned as a result of the MobileID signature operation, and are signed with a private key.\n\nA signing certificate contains the corresponding public key, which can be used to verify the signature.\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"
    },
    {
      "name": "End-to-end (E2E) keys",
      "description": "The MobileID Admin end-to-end (E2E) keys API provides you with operations related to creating and managing your E2E keys.\n\nWe use E2E keys to create an extra encryption layer in addition to the TLS between the MobileID server and the SDK. They are required for configuring the Authenticator App and the mobile SDK.\n\n## Useful information\nFor each MobileID account, we create a new E2E key during the onboarding process.\nWe strongly recommend that you use this specific key for the corresponding MobileID account and application configuration.\n\nEnsure that you do not share E2E keys between sandbox and production accounts.\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"
    },
    {
      "name": "Risk indicators configuration",
      "description": "You can use the Risk indicators configuration resource for operations related to retrieving and updating risk indicator properties.\n\n-----\n\n <b>Note</b>: 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": {
    "/e2e-keys/{e2eKeyId}/state": {
      "put": {
        "tags": [
          "End-to-end (E2E) keys"
        ],
        "summary": "Update E2E key",
        "description": "Changing the state of the key. Changing state to DISABLED means that it will no longer be usable for client requests.",
        "operationId": "updateE2EKeyStatus",
        "parameters": [
          {
            "name": "e2eKeyId",
            "in": "path",
            "description": "The ID of the end-to-end key.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "82a634bf-a485-457c-90c4-88ddd56319ac"
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EncapE2EKeyUpdateRequest"
              },
              "example": {
                "state": "DISABLED"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The request to update the E2E key was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EncapUpdateE2EKeyResponse"
                },
                "example": {
                  "state": "DISABLED"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "state",
                          "reason": "state 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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/application-configuration/state": {
      "get": {
        "tags": [
          "Application configuration"
        ],
        "summary": "Get state of application configuration",
        "description": "The **Get state of application configuration** operation returns the state of a specified application configuration.",
        "operationId": "getAppConfigurationState",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the state of the application configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationConfigState"
                },
                "example": {
                  "state": "ENABLED"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing application configuration with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Application configuration"
        ],
        "summary": "Update state of application configuration",
        "description": "The **Update state of application configuration** operation enables you to update the state of a specified application configuration.",
        "operationId": "updateAppConfigurationState",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationConfigState"
              },
              "example": {
                "state": "ENABLED"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successfully updated the state of the application configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationConfigState"
                },
                "example": {
                  "state": "ENABLED"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "state",
                          "reason": "State must be one of: [ENABLED, DISABLED]"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing application configuration with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/application-configuration/apnsuuid": {
      "get": {
        "tags": [
          "Application configuration"
        ],
        "summary": "Get APNs UUID of application configuration",
        "description": "The **Get APNs UUID of application configuration** operation returns the APNs UUID of a specified application configuration.",
        "operationId": "getAppConfigurationApnsUuid",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the APNs UUID of the application configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationConfigApnsUuid"
                },
                "example": {
                  "apnsUuid": "12ef6f3a-a12a-4c5e-bb1b-1d75a9f37d59"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing application configuration with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Application configuration"
        ],
        "summary": "Update APNs UUID of application configuration",
        "description": "The **Update APNs UUID of application configuration** operation enables you to update a specified APNs UUID of an application configuration.",
        "operationId": "updateAppConfigurationApnsUuid",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationConfigApnsUuid"
              },
              "example": {
                "apnsUuid": "12ef6f3a-a12a-4c5e-bb1b-1d75a9f37d59"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successfully updated the APNs UUID of the application configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationConfigApnsUuid"
                },
                "example": {
                  "apnsUuid": "12ef6f3a-a12a-4c5e-bb1b-1d75a9f37d59"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "apnsUuid",
                          "reason": "apnsUuid must be valid GUID"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing application configuration with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/e2e-keys": {
      "get": {
        "tags": [
          "End-to-end (E2E) keys"
        ],
        "summary": "Get E2E keys",
        "description": "The **Get E2E keys** operation returns a list of the E2E key objects for the organisation that the account belongs to. This includes both production and sandbox E2E keys. \n\nThe maximum number of E2E key objects per list is 100.\n\nYou can specify the state of the E2E keys that you would like to list. \n\nIf a state (`state`) is not specified in the query parameters, then the operation will return a list containing E2E keys of **all** states. \n\n----- \n\n**Note**: E2E keys have the account name in the E2E key name (`name`). \n\n----- \n\n",
        "operationId": "getE2EKeys",
        "parameters": [
          {
            "name": "state",
            "in": "query",
            "description": "The state of the E2E keys that you want to list.\n\nThis is an an enum, and can be either `ENABLED` or `DISABLED`.\n\nIf not provided, then **all** E2E key types are listed.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The state of the E2E keys that you want to list.\n\nThis is an an enum, and can be either `ENABLED` or `DISABLED`.\n\nIf not provided, then **all** E2E key types are listed.\n",
              "example": "ENABLED"
            },
            "example": "ENABLED"
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the list of E2E keys.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/E2EKeyList"
                },
                "example": {
                  "e2eKeys": [
                    {
                      "id": "op36b8k9-xr2f-996f-9039-a1baba22bc1b",
                      "name": "E2E key - migrated",
                      "algorithm": "X25519",
                      "description": "E2E key for QA testing",
                      "createdBy": "52e107e6-1ce9-4a4b-a051-612ad888de11",
                      "created": "2023-01-05T12:04:24.812Z",
                      "sha256Fingerprint": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab",
                      "publicKey": "cHVibGljS2V5VmFsdWU=",
                      "state": "ENABLED"
                    },
                    {
                      "id": "aaa124e1-fs4d-2rg4-8a3h-aa123a2c7x33",
                      "name": "Default E2E key - migrated",
                      "algorithm": "SECT233K1",
                      "description": "Default key/cert generated at first db init",
                      "createdBy": "52e107e6-1ce9-4a4b-a051-612ad888de11",
                      "created": "2023-01-05T12:04:24.815Z",
                      "sha256Fingerprint": "98:23:57:55:25:ec:23:84:hw:22:69:2c:s2:ba",
                      "publicKey": "cHVibGljS2V5VmFsdWU=",
                      "state": "ENABLED"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/errors?code=account_id_missing",
                  "title": "An Account ID must be specified for this request",
                  "code": "account_id_missing",
                  "status": 400,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "End-to-end (E2E) keys"
        ],
        "summary": "Add E2E key",
        "description": "Create a new end-to-end key. A new end-to-end key pair is generated by the server and the public key is sent back in the response.",
        "operationId": "addE2EKey",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EncapE2EKeyAddRequest"
              },
              "example": {
                "name": "Default E2E key - migrated",
                "description": "Default key/cert generated at first db init",
                "algorithm": "X25519"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The request to add the E2E key was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/E2EKey"
                },
                "example": {
                  "id": "op36b8k9-xr2f-996f-9039-a1baba22bc1b",
                  "name": "Default E2E key - migrated",
                  "algorithm": "X25519",
                  "description": "Default key/cert generated at first db init",
                  "createdBy": "52e107e6-1ce9-4a4b-a051-612ad888de11",
                  "created": "2023-01-05T12:04:24.812Z",
                  "sha256Fingerprint": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab",
                  "publicKey": "cHVibGljS2V5VmFsdWU=",
                  "state": "ENABLED"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "name",
                          "reason": "name 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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/apns-tokens": {
      "get": {
        "tags": [
          "APNs tokens"
        ],
        "summary": "Get APNS tokens",
        "description": "The **Get APNs tokens** operation returns a list of the APNs tokens for the organisation that the account belongs to.\nThis includes both production and sandbox APNs tokens.\n\nThe maximum number of APNs token objects per list is 100.",
        "operationId": "getAPNSTokens",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the list of APNs tokens.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APNSTokenList"
                },
                "example": {
                  "apnsTokens": [
                    {
                      "id": "82a634bf-a485-457c-90c4-88ddd5631922",
                      "description": "test-token-description",
                      "name": "Test app APNs token",
                      "created": "2022-12-11T12:35:52.000Z",
                      "sha1Fingerprint": "ab:6b:bb:f3:e3:5e:6f:11",
                      "sha256Fingerprint": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab",
                      "keyId": "ABCD1234",
                      "teamId": "EDFG5678"
                    },
                    {
                      "id": "c21d007a-d8ad-4856-a9ab-cee11a65de31",
                      "description": "test-token-description",
                      "name": "Test app APNs token",
                      "created": "2022-12-11T12:35:53.000Z",
                      "sha1Fingerprint": "ab:6b:bb:f3:e3:5e:6f:11",
                      "sha256Fingerprint": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab",
                      "keyId": "ABCD1234",
                      "teamId": "EDFG5678"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/errors?code=account_does_not_exist",
                  "title": "No account exists with the specified Account ID",
                  "code": "account_does_not_exist",
                  "status": 400,
                  "detail": "An account with ID 'a-sdge-abcdefghijk123456789' does not exist.",
                  "traceId": "fc0fb42a9c1821b7d9fe2f62dd45cf7b"
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "APNs tokens"
        ],
        "summary": "Add APNS token",
        "description": "The **Add APNs token** operation enables you to add a new APNs token to your MobileID account.\n\nAn APNs token can be used by all accounts in the same organisation.\n",
        "operationId": "addAPNSToken",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EncapAPNSTokenAddRequest"
              },
              "example": {
                "name": "Test app APNs token",
                "description": "test-token-description",
                "privateKey": "replace with base64 encoded private key",
                "keyId": "ABCD1234",
                "teamId": "EDFG5678"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successfully added an APNs token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APNSToken"
                },
                "example": {
                  "id": "82a634bf-a485-457c-90c4-88ddd56319c1",
                  "description": "test-token-description",
                  "name": "Test app APNs token",
                  "created": "2022-12-11T12:35:52.000Z",
                  "sha1Fingerprint": "ab:6b:bb:f3:e3:5e:6f:11",
                  "sha256Fingerprint": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab",
                  "keyId": "ABCD1234",
                  "teamId": "EDFG5678"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "name",
                          "reason": "name 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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/accounts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get MobileID account",
        "description": "The **Get MobileID account** operation returns the properties of a MobileID account.",
        "operationId": "getAccount",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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": "statistics",
            "in": "query",
            "description": "Control whether the statistics (`AccountStatistics`) is returned in the response object. Statistics are returned by default.\n\n**Note**: Returned statistical data is not live data.\n",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true,
              "description": "Control whether the statistics (`AccountStatistics`) is returned in the response object. Statistics are returned by default.\n\n**Note**: Returned statistical data is not live data.\n",
              "example": true
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the MobileID account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountResponse"
                },
                "examples": {
                  "Sandbox account.": {
                    "description": "Response sample when fetching a sandbox account.",
                    "value": {
                      "created": "2023-09-06T06:47:20.000Z",
                      "modified": "2023-09-06T06:49:23.000Z",
                      "organisationId": "o-d-Abcdefgh1234JC4Cczm4",
                      "id": "a-sdge-abcdefghijk123456789",
                      "name": "Sample Account",
                      "type": "SANDBOX",
                      "state": "ENABLED",
                      "sandboxProperties": {
                        "sandboxDeviceLimit": "100",
                        "numberOfDevices": "0"
                      },
                      "statistics": {
                        "numberOfActiveDevices": "0",
                        "numberOfActiveUsers": "0"
                      },
                      "configurations": [
                        {
                          "description": "Created by admin.",
                          "default": true,
                          "accountId": "a-sdge-abcdefghijk123456789",
                          "id": "5ecbf73d-90bd-46a7-a58e-9ac56d229e3e",
                          "properties": {
                            "applicationId": "a-sdge-abcdefghijk123456789",
                            "inactiveDeviceDeleteRetentionTime": "365"
                          },
                          "additionalFeatures": {
                            "passportScanEnabled": false
                          }
                        }
                      ],
                      "productTimeTrials": {
                        "riskIndicatorsRuleBased": {
                          "validTo": "2026-09-20",
                          "state": "ACTIVE"
                        }
                      },
                      "onboardedForMobileId": true,
                      "onboardedForPasskeys": false
                    }
                  },
                  "Production account.": {
                    "description": "Response sample when fetching a production account.",
                    "value": {
                      "created": "2023-09-06T08:47:34.000Z",
                      "modified": "2023-09-06T09:33:16.000Z",
                      "organisationId": "o-d-Abcdefgh1234JC4Cczm4",
                      "id": "a-pdge-abcdefghijk123456789",
                      "name": "Sample Account",
                      "type": "PRODUCTION",
                      "state": "ENABLED",
                      "statistics": {
                        "numberOfActiveDevices": "0",
                        "numberOfActiveUsers": "0"
                      },
                      "configurations": [
                        {
                          "description": "Created by admin.",
                          "default": true,
                          "accountId": "a-pdge-abcdefghijk123456789",
                          "id": "5cc3cb57-6e83-4bc2-8d89-608030e850b4",
                          "properties": {
                            "applicationId": "a-pdge-abcdefghijk123456789",
                            "inactiveDeviceDeleteRetentionTime": "365"
                          },
                          "additionalFeatures": {
                            "passportScanEnabled": false
                          }
                        }
                      ],
                      "productTimeTrials": {
                        "riskIndicatorsRuleBased": {
                          "validTo": "2026-09-20",
                          "state": "ACTIVE"
                        }
                      },
                      "onboardedForMobileId": true,
                      "onboardedForPasskeys": false
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Account does not exist",
                  "code": "account_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching account with ID : a-sdge-abcdefghijk123455555. Account does not exist."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with Signicat MobileID Config Admin role": [
              "signicat-api"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Add MobileID account",
        "description": "The **Add MobileID account** operation fulfils the onboarding of your account to MobileID by adding an account to the MobileID service.\n\nThis is a prerequisite for all other operations.\n\n-----\n\n**Note:** This operation is a part of the onboarding process.\n\n-----\n\n",
        "operationId": "addAccount",
        "parameters": [
          {
            "name": "onboardingType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "201": {
            "description": "Successfully added a MobileID account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountResponse"
                },
                "examples": {
                  "Sandbox account.": {
                    "description": "Response sample when adding a sandbox account.",
                    "value": {
                      "created": "2023-09-06T06:54:18.000Z",
                      "organisationId": "o-d-Abcdefgh1234JC4Cczm4",
                      "id": "a-sdge-abcdefghijk123456789",
                      "name": "Sample Account",
                      "type": "SANDBOX",
                      "state": "ENABLED",
                      "sandboxProperties": {
                        "sandboxDeviceLimit": "100",
                        "numberOfDevices": "0"
                      },
                      "statistics": {
                        "numberOfActiveDevices": "0",
                        "numberOfActiveUsers": "0"
                      },
                      "configurations": [
                        {
                          "description": "Created by admin.",
                          "default": true,
                          "accountId": "a-sdge-abcdefghijk123456789",
                          "id": "02510f61-6faf-44e0-9d58-e62cfc35d5aa",
                          "properties": {
                            "applicationId": "a-sdge-abcdefghijk123456789",
                            "inactiveDeviceDeleteRetentionTime": "365"
                          },
                          "additionalFeatures": {
                            "passportScanEnabled": false
                          }
                        }
                      ],
                      "onboardedForMobileId": true,
                      "onboardedForPasskeys": false
                    }
                  },
                  "Production account.": {
                    "description": "Response sample when adding a production account.",
                    "value": {
                      "created": "2023-09-06T08:47:34.000Z",
                      "organisationId": "o-d-Abcdefgh1234JC4Cczm4",
                      "id": "a-pdge-abcdefghijk123456789",
                      "name": "Sample Account",
                      "type": "PRODUCTION",
                      "state": "ENABLED",
                      "statistics": {
                        "numberOfActiveDevices": "0",
                        "numberOfActiveUsers": "0"
                      },
                      "configurations": [
                        {
                          "description": "Created by admin.",
                          "default": true,
                          "accountId": "a-pdge-abcdefghijk123456789",
                          "id": "5cc3cb57-6e83-4bc2-8d89-608030e850b4",
                          "properties": {
                            "applicationId": "a-pdge-abcdefghijk123456789",
                            "inactiveDeviceDeleteRetentionTime": "365"
                          },
                          "additionalFeatures": {
                            "passportScanEnabled": false
                          }
                        }
                      ],
                      "onboardedForMobileId": true,
                      "onboardedForPasskeys": false
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Adding new account failed",
                  "code": "add_account_failure",
                  "status": 409,
                  "detail": "Adding account failed. No data has been created in database. Account with ID: a-sdge-abcdefghijk123456789 already exists.",
                  "traceId": "465e9b0ed4c340b8a3b673ea8233f54c"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Accounts"
        ],
        "summary": "Update account",
        "description": "Updates a specified customer account.",
        "operationId": "updateAccount",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountUpdateRequest"
              },
              "example": {
                "state": "ENABLED"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The request to update the customer account was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalAccountResponse"
                },
                "example": {
                  "id": "a-sdge-abcdefghijk123456789",
                  "state": "ENABLED",
                  "organisationId": "1fb22154-8633-417b-a918-cd59a3ccd12f",
                  "encapApiKey": "M2NhZjFmYTItNmUyMi00NGFkLWE0YmUtZTZlMTZ...",
                  "sandboxDeviceLimit": "200"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Invalid Account ID format": {
                    "description": "Invalid Account ID format",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "accountId 'a-spge-accountid31234567890xxx' is not in valid format"
                    }
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "name",
                          "reason": "name can be omitted, but cannot be 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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Account does not exist",
                  "code": "account_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching account with ID : a-sdge-abcdefghijk123455555. Account does not exist."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with Signicat MobileID Config Admin role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/risk-indicators-config": {
      "get": {
        "tags": [
          "Risk indicators configuration"
        ],
        "summary": "Get risk indicators configuration",
        "description": "This operation returns the risk indicators for a specified account.",
        "operationId": "getRiskIndicators",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "The request to fetch the risk indicators was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiskIndicatorsConfig"
                },
                "example": {
                  "riskIndicatorsConfiguration": {
                    "allowedNrOfUsersWithSameDeviceHash": "1"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Account config does not exist",
                  "code": "account_config_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching account configuration with UUID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Risk indicators configuration"
        ],
        "summary": "Update risk indicators configuration",
        "description": "This operation updates the risk indicators for a specified account.",
        "operationId": "updateRiskIndicators",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RiskIndicatorsUpdateRequest"
              },
              "example": {
                "riskIndicatorsConfiguration": {
                  "allowedNrOfUsersWithSameDeviceHash": "4"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The request to update the risk indicators was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RiskIndicatorsConfig"
                },
                "example": {
                  "riskIndicatorsConfiguration": {
                    "allowedNrOfUsersWithSameDeviceHash": "4"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Account config does not exist",
                  "code": "account_config_does_not_exist",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed fetching account configuration with UUID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/application-configuration/properties": {
      "get": {
        "tags": [
          "Application configuration"
        ],
        "summary": " Get properties of application configuration",
        "description": "The **Get properties of application configuration** operation returns the properties of a specified application configuration.",
        "operationId": "getAppConfigurationProperties",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the properties of the application configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationConfigProperties"
                },
                "example": {
                  "amountFailuresAllowed": "3",
                  "activationCodeType": "NUMERIC",
                  "activationCodeLength": "6",
                  "allowedAuthMethods": [
                    "DEVICE",
                    "DEVICE:PIN",
                    "DEVICE:STRONG_TOUCH_ID",
                    "DEVICE:IOS_FACE_ID",
                    "DEVICE:ANDROID_BIOMETRIC_PROMPT",
                    "DEVICE:SERVER_SIDE_FACE"
                  ],
                  "maxPinCodeLength": "6",
                  "pinCodeLength": "6",
                  "pinCodeType": "NUMERIC",
                  "maximumSessionExpiry": "187200000",
                  "sessionExpiry": "300000",
                  "apnExpiry": "1",
                  "enabledRiskData": [
                    "deviceHash",
                    "deviceModel",
                    "deviceManufacturer",
                    "operatingSystemFingerprint",
                    "operatingSystemVersion",
                    "operatingSystemType"
                  ],
                  "hwKeyValidationStrategy": "REQUIRED",
                  "nativePushEnabled": "false",
                  "firebaseTimeToLive": "0",
                  "firebaseServiceAccount": "<Base64 encoded string>",
                  "allowedAuthMethodsForAuthAndActivate": [
                    "DEVICE:PIN"
                  ],
                  "recoveryEnabled": "false",
                  "recoveryCodeMinLength": "6",
                  "recoveryCodeMaxLength": "50",
                  "recoveryCodeFormat": "NUMERIC",
                  "recoveryCodeAmountFailuresAllowed": "3",
                  "apnsNotificationSoundEnabled": "true",
                  "geofencingActivationMode": "OFF",
                  "geofencingAuthenticationMode": "OFF",
                  "geofencingTimeout": "10000",
                  "attestationIosAppAttestMode": "OFF",
                  "attestationIosAppAttestEnvironment": "PRODUCTION",
                  "attestationIosAppAttestTimeout": "20000",
                  "attestationAndroidPlayIntegrityMode": "OFF",
                  "attestationAndroidPlayIntegrityTimeout": "200000",
                  "apnsTimeSensitiveInterruptionLevelEnabled": "true",
                  "clientDebugDataEnabledOsTypes": "IOS,ANDROID",
                  "lockScope": "DEVICE"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing application configuration with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Application configuration"
        ],
        "summary": "Update properties of application configuration",
        "description": "The **Update properties of application configuration** operation enables you to update the properties of a specified application configuration.\n\nIt is not currently possible to update the following properties with this endpoint:\n\n- <code>maximumSessionExpiry</code>\n- <code>clientDebugDataEnabledOsTypes</code>\n\nIf you would like to update them, please contact us at <a href=\"mailto:support@signicat.com\">support@signicat.com</a>.\n\n<hr>\n\n**Note**: You will still see these properties returned in the operation response.\n\n<hr>\n",
        "operationId": "updateAppConfigurationProperties",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationConfigUpdateRequest"
              },
              "example": {
                "amountFailuresAllowed": "3"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successfully updated the properties of the application configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationConfigProperties"
                },
                "example": {
                  "amountFailuresAllowed": "3",
                  "activationCodeType": "NUMERIC",
                  "activationCodeLength": "6",
                  "allowedAuthMethods": [
                    "DEVICE",
                    "DEVICE:PIN",
                    "DEVICE:STRONG_TOUCH_ID",
                    "DEVICE:IOS_FACE_ID",
                    "DEVICE:ANDROID_BIOMETRIC_PROMPT",
                    "DEVICE:SERVER_SIDE_FACE"
                  ],
                  "maxPinCodeLength": "6",
                  "pinCodeLength": "6",
                  "pinCodeType": "NUMERIC",
                  "maximumSessionExpiry": "187200000",
                  "sessionExpiry": "300000",
                  "apnExpiry": "1",
                  "enabledRiskData": [
                    "deviceHash",
                    "deviceModel",
                    "deviceManufacturer",
                    "operatingSystemFingerprint",
                    "operatingSystemVersion",
                    "operatingSystemType"
                  ],
                  "hwKeyValidationStrategy": "REQUIRED",
                  "nativePushEnabled": "false",
                  "firebaseTimeToLive": "0",
                  "firebaseServiceAccount": "<Base64 encoded string>",
                  "allowedAuthMethodsForAuthAndActivate": [
                    "DEVICE:PIN"
                  ],
                  "recoveryEnabled": "false",
                  "recoveryCodeMinLength": "6",
                  "recoveryCodeMaxLength": "50",
                  "recoveryCodeFormat": "NUMERIC",
                  "recoveryCodeAmountFailuresAllowed": "3",
                  "apnsNotificationSoundEnabled": "true",
                  "geofencingActivationMode": "OFF",
                  "geofencingAuthenticationMode": "OFF",
                  "geofencingTimeout": "10000",
                  "attestationIosAppAttestMode": "OFF",
                  "attestationIosAppAttestEnvironment": "PRODUCTION",
                  "attestationIosAppAttestTimeout": "20000",
                  "attestationAndroidPlayIntegrityMode": "OFF",
                  "attestationAndroidPlayIntegrityTimeout": "200000",
                  "apnsTimeSensitiveInterruptionLevelEnabled": "true",
                  "clientDebugDataEnabledOsTypes": "IOS,ANDROID",
                  "lockScope": "DEVICE"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "activationCodeType",
                          "reason": "activationCodeType must be one of: [ALPHA|ALPHANUMERIC|ANY|NUMERIC]"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing application configuration with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/statistics/users/recentdays": {
      "get": {
        "tags": [
          "Statistics"
        ],
        "summary": "Get active users and devices (by day count)",
        "description": "This operation returns active user and device statistics for a Signicat account, aggregated over a period defined by a specified number of days counting back from the current date.\n",
        "operationId": "getUserAccountStatisticsByNumberOfDays",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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": "nrOfDays",
            "in": "query",
            "description": "The number of days over which to aggregate statistics, counting back from the current date.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "description": "The number of days over which to aggregate statistics, counting back from the current date.",
              "example": 150
            },
            "example": 150
          }
        ],
        "responses": {
          "200": {
            "description": "The request to fetch statistics was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Statistic"
                },
                "example": {
                  "fromDate": "2022-08-01",
                  "toDate": "2024-08-31",
                  "users": {
                    "total": 1234,
                    "withActivatedState": 1111,
                    "withLockedState": 123
                  },
                  "devices": {
                    "total": 2234,
                    "withActivatedState": 1111,
                    "withLockedState": 1123
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Invalid request parameters": {
                    "description": "Invalid request parameters",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid request",
                      "code": "invalid_request",
                      "status": 400,
                      "detail": "Your request body parameters have failed validation.",
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "invalidParams": [
                        {
                          "name": "lastUsed",
                          "reason": "lastUsed 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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/statistics/users/dateinterval": {
      "get": {
        "tags": [
          "Statistics"
        ],
        "summary": "Get active users and devices (by date interval)",
        "description": "This operation returns active user and device statistics for a Signicat account, aggregated over a period defined by a specified start and end date.\n",
        "operationId": "getUserAccountStatistics",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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": "fromDate",
            "in": "query",
            "description": "The start date from when the device statistics are aggregated.\n\n**Format**: `yyyy-MM-dd`.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The start date from when the device statistics are aggregated.\n\n**Format**: `yyyy-MM-dd`.\n",
              "example": "2024-04-04"
            },
            "example": "2024-04-04"
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The end date to which the device statistics are aggregated.\n\n**Format**: `yyyy-MM-dd`.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The end date to which the device statistics are aggregated.\n\n**Format**: `yyyy-MM-dd`.\n",
              "example": "2026-06-06"
            },
            "example": "2026-06-06"
          }
        ],
        "responses": {
          "200": {
            "description": "The request to fetch statistics was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Statistic"
                },
                "example": {
                  "fromDate": "2022-08-01",
                  "toDate": "2024-08-31",
                  "users": {
                    "total": 1234,
                    "withActivatedState": 1111,
                    "withLockedState": 123
                  },
                  "devices": {
                    "total": 2234,
                    "withActivatedState": 1111,
                    "withLockedState": 1123
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown property.": {
                    "description": "Unknown property.",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Unknown property",
                      "code": "unknown_property",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Unknown property: 'naaame'"
                    }
                  },
                  "Could not parse JSON request": {
                    "description": "Could not parse JSON request",
                    "value": "{\n    \"type\": \"https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors\",\n  \"title\": \"Request parsing error property\",\n  \"code\": \"request_parsing_error\",\n  \"status\": 400,\n  \"traceId\": \"4bf239c088089f2bca77d3a413909f1c\",\n  \"detail\": \"Could not parse content. Message: 'Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries'\"\n}\n"
                  },
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/statistics/devices": {
      "get": {
        "tags": [
          "Statistics"
        ],
        "summary": "Get detailed device statistics",
        "description": "This operation returns detailed device statistics for a Signicat account.\n",
        "operationId": "getAccountStatistics",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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": "type",
            "in": "query",
            "description": "The type of detailed device statistics that are obtained.\n\n**Allowed values**: It must be either:\n\n| **Allowed values** | **Description** |\n| :-- | :-- |\n| `sdk` | The Encap SDK version used. |\n| `platform` | The mobile device platform. |\n| `model` | The mobile device model name. |\n| `version` | The mobile device operating system version. |\n| `manufacturer` | The mobile device manufacturer. |\n| `allbasic` | Returns `sdk` and `platform` statistics. |\n| `alldetails` | Returns `model`, `version`, and `manufacturer` statistics. |\n",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The type of detailed device statistics that are obtained.\n\n**Allowed values**: It must be either:\n\n| **Allowed values** | **Description** |\n| :-- | :-- |\n| `sdk` | The Encap SDK version used. |\n| `platform` | The mobile device platform. |\n| `model` | The mobile device model name. |\n| `version` | The mobile device operating system version. |\n| `manufacturer` | The mobile device manufacturer. |\n| `allbasic` | Returns `sdk` and `platform` statistics. |\n| `alldetails` | Returns `model`, `version`, and `manufacturer` statistics. |\n",
              "example": "allbasic"
            },
            "example": "allbasic"
          },
          {
            "name": "platform",
            "in": "query",
            "description": "The platform for which the detailed device statistics should be obtained.\n\n**Allowed values**: It must be either `ANDROID` or `IOS`.\n\n**Note**: This parameter is required if you pass either `alldetails`, `model`, `version`, or `manufacturer` as the `type` in the request.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The platform for which the detailed device statistics should be obtained.\n\n**Allowed values**: It must be either `ANDROID` or `IOS`.\n\n**Note**: This parameter is required if you pass either `alldetails`, `model`, `version`, or `manufacturer` as the `type` in the request.\n",
              "example": "Android"
            },
            "example": "Android"
          }
        ],
        "responses": {
          "200": {
            "description": "The request to fetch statistics was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AccountPlatformStatistic"
                    },
                    {
                      "$ref": "#/components/schemas/AccountSDKStatistic"
                    },
                    {
                      "$ref": "#/components/schemas/AccountPlatformModelStatistic"
                    },
                    {
                      "$ref": "#/components/schemas/AccountPlatformVersionStatistic"
                    },
                    {
                      "$ref": "#/components/schemas/AccountPlatformManufacturerStatistic"
                    },
                    {
                      "$ref": "#/components/schemas/AccountPlatformSDKStatistic"
                    },
                    {
                      "$ref": "#/components/schemas/AccountPlatformAllDetailsStatistic"
                    },
                    {
                      "$ref": "#/components/schemas/AccountAllBasicStatistic"
                    }
                  ]
                },
                "examples": {
                  "AllBasic": {
                    "description": "AllBasic",
                    "value": {
                      "accountId": "a-sdge-UWPzmkeEVjkxJPkQtm0a",
                      "aggregatedAt": "2026-04-10T10:32:42Z",
                      "total": 29,
                      "platforms": [
                        {
                          "name": "Android",
                          "count": 29,
                          "percentage": 100
                        }
                      ],
                      "sdkversions": [
                        {
                          "name": "3.21",
                          "count": 29,
                          "percentage": 100
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/statistics/device-hashes": {
      "get": {
        "tags": [
          "Statistics"
        ],
        "summary": "Get device hash statistics",
        "description": "This operation returns statistics about devices that have identical device hashes. It detects and flags all device hashes that belong to two or more users.\n\n**Note**:\n- Normally, each device should have a unique device hash.\n- There are use cases where multiple devices share the same device hash.\n",
        "operationId": "getDeviceHashStatistics",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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": "allowedNrOfUsersWithSameDeviceHash",
            "in": "query",
            "description": "The maximum number of users that can have devices with the same device hash without it being flagged as suspicious.<br /><br />**Allowed values**: The default value is `2`.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "description": "The maximum number of users that can have devices with the same device hash without it being flagged as suspicious.<br /><br />**Allowed values**: The default value is `2`.",
              "example": 3
            },
            "example": 3
          },
          {
            "name": "detailed",
            "in": "query",
            "description": "Determines whether an extended response containing the full set of device IDs and corresponding states is returned.\n",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Determines whether an extended response containing the full set of device IDs and corresponding states is returned.\n",
              "example": true
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "The request to fetch statistics was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DHStatistics"
                },
                "example": {
                  "accountId": "a-sdge-UWPzmkeEVjkxJPkQtm0a",
                  "aggregatedAt": "2026-04-10T10:32:42Z",
                  "count": {
                    "total": 26,
                    "uniqueDeviceHashes": 19,
                    "activeUsers": 23
                  },
                  "suspiciousDeviceHashes": [
                    {
                      "deviceHash": "wBHQ4HC3yLEUvEwnX5EBTBAbKkCia35WwO1dxqiFvYo=",
                      "users": [
                        {
                          "userId": "b13069a0-408f-4981-bcdb-a42a8d1060ee",
                          "devices": [
                            {
                              "deviceId": "3eb60ed3-970c-4cdb-8607-b4a5c8745d39",
                              "state": 3,
                              "lastUsed": "2026-03-31T08:08:48.607000",
                              "created": "2026-03-31T08:08:48.591000"
                            },
                            {
                              "deviceId": "294ffdd7-4306-49dc-aa5e-72c4bed89d18",
                              "state": 2,
                              "lastUsed": "2026-03-31T08:21:40.584000",
                              "created": "2026-03-31T08:21:40.572000"
                            }
                          ]
                        },
                        {
                          "userId": "8ebc86af-c341-404b-8cf0-7077449d6cf4",
                          "devices": [
                            {
                              "deviceId": "46af605e-a4c0-47da-9554-b6c0dc3fcd3a",
                              "state": 3,
                              "lastUsed": "2026-03-20T10:13:47.107000",
                              "created": "2026-03-20T10:13:47.094000"
                            },
                            {
                              "deviceId": "1cf7985e-8dfd-4943-8f7c-878235296c20",
                              "state": 3,
                              "lastUsed": "2026-03-20T10:11:35.249000",
                              "created": "2026-03-20T10:11:35.230000"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/signing-certs": {
      "get": {
        "tags": [
          "Signing certificates"
        ],
        "summary": "Get signing certificates",
        "description": "The **Get list of signing certificates** operation returns a list of signing certificates for MobileID.\n\nYou can specify the state of the signing certificates that you would like to list.\n\nIf a state (`state`) is not specified in the query parameters, then the operation will return a list containing the current signing certificates **and** the signing certificates that were used previously.\n\n-----\n\n**Note**: A previously used signing certificate is a certificate whose corresponding private key has at some point of time, been used for signing JWTs.\n\n-----\n\n",
        "operationId": "getSigningCertificates",
        "parameters": [
          {
            "name": "state",
            "in": "query",
            "description": "The state of the signing certificates that you want to list.\n\nThis is an an enum, and can be either `ACTIVE` or `DEACTIVATED`.\n\nIf not provided, then **all** certificate types are listed.\n",
            "required": false,
            "schema": {
              "type": "string",
              "description": "The state of the signing certificates that you want to list.\n\nThis is an an enum, and can be either `ACTIVE` or `DEACTIVATED`.\n\nIf not provided, then **all** certificate types are listed.\n",
              "example": "ACTIVE"
            },
            "example": "ACTIVE"
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the list of signing certificates.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SigningCertificateList"
                },
                "example": {
                  "signingCertificates": [
                    {
                      "certificate": "<PEM encoded Certificate>",
                      "sha256Fingerprint": "29:ce:22:91:dc:82:3e:ce:c1:33:67:03:c5:af:b3:03:63:29:ce:22:91:dc:82:9a:8a:e9:49:1e:8a:e9:49:1e",
                      "state": "ACTIVE",
                      "activatedAt": "2024-11-09T21:59:00.000Z"
                    },
                    {
                      "certificate": "<PEM encoded Certificate>",
                      "sha256Fingerprint": "11:22:a2:ce:7f:9d:3e:ce:c1:33:67:03:c5:af:b3:03:63:29:ce:22:91:dc:82:9a:8a:e9:49:1e:9b:d0:12:aa",
                      "state": "DEACTIVATED",
                      "activatedAt": "2024-11-09T21:59:00.123Z",
                      "deactivatedAt": "2024-11-09T21:59:00.321Z"
                    }
                  ]
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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"
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with Signicat MobileID Config Admin role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/e2e-keys/{e2eKeyId}": {
      "get": {
        "tags": [
          "End-to-end (E2E) keys"
        ],
        "summary": "Get E2E key",
        "description": "Get details for an end-to-end Key.",
        "operationId": "getE2EKey",
        "parameters": [
          {
            "name": "e2eKeyId",
            "in": "path",
            "description": "The ID of the end-to-end key.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "82a634bf-a485-457c-90c4-88ddd56319ac"
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "The request to fetch the E2E key was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/E2EKey"
                },
                "example": {
                  "id": "op36b8k9-xr2f-996f-9039-a1baba22bc1b",
                  "name": "Default E2E key - migrated",
                  "algorithm": "X25519",
                  "description": "Default key/cert generated at first db init",
                  "createdBy": "52e107e6-1ce9-4a4b-a051-612ad888de11",
                  "created": "2023-01-05T12:04:24.812Z",
                  "sha256Fingerprint": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab",
                  "publicKey": "cHVibGljS2V5VmFsdWU=",
                  "state": "ENABLED"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing E2E key with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "End-to-end (E2E) keys"
        ],
        "summary": "Delete E2E key",
        "description": "Delete a specific end-to-end key.",
        "operationId": "deleteE2EKey",
        "parameters": [
          {
            "name": "e2eKeyId",
            "in": "path",
            "description": "The ID of the end-to-end key.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "82a634bf-a485-457c-90c4-88ddd56319ac"
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "204": {
            "description": "The request to delete the E2E key was successful."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing E2E key with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          },
          "409": {
            "description": "Conflict.",
            "content": {
              "application/json": {
                "example": {
                  "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                  "title": "E2E key in use",
                  "code": "e2e_key_in_use",
                  "status": 409,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Failed deleting E2E key with ID : 04fc7346-1998-411b-8b93-a4fe1b6e4682 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/application-configuration": {
      "get": {
        "tags": [
          "Application configuration"
        ],
        "summary": "Get application configuration",
        "description": "The **Get application configuration** operation returns a specified application configuration.",
        "operationId": "getAppConfiguration",
        "parameters": [
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the application configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationConfig"
                },
                "example": {
                  "uuid": "762e9a1a-01f4-4731-a540-4f75dbeae43c",
                  "appId": "a-sdge-abcdefghijk123456789",
                  "state": "ENABLED",
                  "properties": {
                    "amountFailuresAllowed": "3",
                    "activationCodeType": "NUMERIC",
                    "activationCodeLength": "6",
                    "allowedAuthMethods": [
                      "DEVICE",
                      "DEVICE:PIN",
                      "DEVICE:STRONG_TOUCH_ID",
                      "DEVICE:IOS_FACE_ID",
                      "DEVICE:ANDROID_BIOMETRIC_PROMPT",
                      "DEVICE:SERVER_SIDE_FACE"
                    ],
                    "maxPinCodeLength": "6",
                    "pinCodeLength": "6",
                    "pinCodeType": "NUMERIC",
                    "maximumSessionExpiry": "187200000",
                    "sessionExpiry": "300000",
                    "apnExpiry": "1",
                    "enabledRiskData": [
                      "deviceHash",
                      "deviceModel",
                      "deviceManufacturer",
                      "operatingSystemFingerprint",
                      "operatingSystemVersion",
                      "operatingSystemType"
                    ],
                    "hwKeyValidationStrategy": "REQUIRED",
                    "nativePushEnabled": "false",
                    "firebaseTimeToLive": "0",
                    "firebaseServiceAccount": "<Base64 encoded string>",
                    "allowedAuthMethodsForAuthAndActivate": [
                      "DEVICE:PIN"
                    ],
                    "recoveryEnabled": "false",
                    "recoveryCodeMinLength": "6",
                    "recoveryCodeMaxLength": "50",
                    "recoveryCodeFormat": "NUMERIC",
                    "recoveryCodeAmountFailuresAllowed": "3",
                    "apnsNotificationSoundEnabled": "true",
                    "geofencingActivationMode": "OFF",
                    "geofencingAuthenticationMode": "OFF",
                    "geofencingTimeout": "10000",
                    "attestationIosAppAttestMode": "OFF",
                    "attestationIosAppAttestEnvironment": "PRODUCTION",
                    "attestationIosAppAttestTimeout": "20000",
                    "attestationAndroidPlayIntegrityMode": "OFF",
                    "attestationAndroidPlayIntegrityTimeout": "200000",
                    "clientDebugDataEnabledOsTypes": "IOS, ANDROID",
                    "apnsTimeSensitiveInterruptionLevelEnabled": "true",
                    "lockScope": "DEVICE"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing application configuration with ID : cae9d09d-abaf-486b-a5ca-35ba82435123 for account ID : a-sdge-abcdefghijk123456789."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    },
    "/apns-tokens/{apnsTokenId}": {
      "get": {
        "tags": [
          "APNs tokens"
        ],
        "summary": "Get APNS token",
        "description": "The **Get APNs token** operation returns a specified APNs token for your MobileID account.\n\nAn APNs token can be used by all accounts in the same organisation.\n",
        "operationId": "getAPNSToken",
        "parameters": [
          {
            "name": "apnsTokenId",
            "in": "path",
            "description": "The ID of the APNs token.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "82a634bf-a485-457c-90c4-88ddd56319ac"
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched the list of APNs token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/APNSToken"
                },
                "example": {
                  "id": "82a634bf-a485-457c-90c4-88ddd56319c1",
                  "description": "test-token-description",
                  "name": "Test app APNs token",
                  "created": "2022-12-11T12:35:52.000Z",
                  "sha1Fingerprint": "ab:6b:bb:f3:e3:5e:6f:11",
                  "sha256Fingerprint": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab",
                  "keyId": "ABCD1234",
                  "teamId": "EDFG5678"
                }
              }
            }
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing APNS Token with ID : 9672e0c7-8850-43df-a715-e9a388530383 for account ID : a-sdge-N27GjPSzXO8JLcf8G1AN."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "APNs tokens"
        ],
        "summary": "Delete APNS token",
        "description": "The **Delete APNs token** operation deletes a specified APNs token from your MobileID account.\n\nAn APNs token can be used by all accounts in the same organisation.\n",
        "operationId": "deleteAPNSToken",
        "parameters": [
          {
            "name": "apnsTokenId",
            "in": "path",
            "description": "The ID of the APNs token.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "82a634bf-a485-457c-90c4-88ddd56319ac"
          },
          {
            "name": "signicat-accountid",
            "in": "query",
            "description": "The ID of the Signicat account, in a valid UUID format.\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, in a valid UUID format.\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"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted the APNs token."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "application/json": {
                "examples": {
                  "Account ID missing": {
                    "description": "Account ID missing",
                    "value": {
                      "type": "https://developer.signicat.com/errors?code=account_id_missing",
                      "title": "An Account ID must be specified for this request",
                      "code": "account_id_missing",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "An Account ID must be specified for this request. An AccountID can be specified in three ways. 1) For machine clients configured on an Account, the provided access token will specify the account ID. 2) Account ID can be provided as a query parameter `signicat-accountId=<accountId>`. 3) Account ID can be provided as a HTTP Header `Signicat-AccountId: <accountId>`. A request will be rejected if more than one account ID is specified."
                    }
                  },
                  "Invalid identifier": {
                    "description": "Invalid identifier",
                    "value": {
                      "type": "https://developer.signicat.com/apis/mobileid/#section/Using-this-API/Errors",
                      "title": "Invalid identifier",
                      "code": "invalid_identifier",
                      "status": 400,
                      "traceId": "4bf239c088089f2bca77d3a413909f1c",
                      "detail": "Invalid UUID string: 5505649b6c0b4ff0aedd53935ec"
                    }
                  }
                }
              }
            }
          },
          "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 'mobileid:user:read' on the target resource 'a-sdge-abcdefghijk123456789'",
                  "status": 403,
                  "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/mobileid/#section/Using-this-API/Errors",
                  "title": "Resource not found",
                  "code": "resource_not_found",
                  "status": 404,
                  "traceId": "4bf239c088089f2bca77d3a413909f1c",
                  "detail": "Missing APNS Token with ID : 9672e0c7-8850-43df-a715-e9a388530383 for account ID : a-sdge-N27GjPSzXO8JLcf8G1AN."
                }
              }
            }
          }
        },
        "security": [
          {
            "Access token with client with MobileID Config Editor role": [
              "signicat-api"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "EncapE2EKeyUpdateRequest": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "writeOnly": true
          }
        }
      },
      "EncapUpdateE2EKeyResponse": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "The state of the E2E key.\n\nThis is an an enum, and can be either `ENABLED` or `DISABLED`.\n",
            "enum": [
              "ENABLED",
              "DISABLED"
            ]
          }
        }
      },
      "ApplicationConfigState": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "The state of the application configuration. This can be either `ENABLED` or `DISABLED`",
            "example": "ENABLED"
          }
        },
        "required": [
          "state"
        ]
      },
      "ApplicationConfigApnsUuid": {
        "type": "object",
        "properties": {
          "apnsUuid": {
            "type": "string",
            "description": "The application config's apns UUID",
            "example": "ENABLED"
          }
        },
        "required": [
          "apnsUuid"
        ]
      },
      "EncapE2EKeyAddRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name for the end-to-end key",
            "example": "Default E2E key",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "Description for the end-to-end key",
            "example": "This is the E2E key ..."
          },
          "algorithm": {
            "type": "string",
            "description": "Protocol between mobile SDK and the Server. If not supplied, the default value `X25519` is used",
            "enum": [
              "X25519",
              "SECT233K1"
            ],
            "example": "X25519",
            "minLength": 1
          }
        },
        "required": [
          "algorithm",
          "name"
        ]
      },
      "E2EKey": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of the E2E key.",
            "example": "52e107e6-1ce9-4a4b-a051-612ad888de11"
          },
          "name": {
            "type": "string",
            "description": "The name of the E2E key.",
            "example": "Default E2E key"
          },
          "algorithm": {
            "type": "string",
            "description": "Protocol between mobile SDK and the Server. Possible values `X25519`|`SECT233K1`",
            "example": "X25519"
          },
          "description": {
            "type": "string",
            "description": "The description of the E2E key.",
            "example": "This is the E2E key ..."
          },
          "createdBy": {
            "type": "string",
            "description": "The user ID (`userId`) of the creator of the E2E key.",
            "example": "52e107e6-1ce9-4a4b-a051-612ad888de11"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the E2E key was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-22T21:47:27.123Z"
          },
          "sha256Fingerprint": {
            "type": "string",
            "description": "The SHA256 hash of the E2E key certificate.",
            "example": "21:31:57:72:33:ec:23:84:ad:30:68:1c:e3:ab"
          },
          "publicKey": {
            "type": "string",
            "description": "The E2E key certificate, which has been Base64 encoded.",
            "example": "cHVibGljS2V5VmFsdWU="
          },
          "state": {
            "type": "string",
            "description": "The E2E key state, can be either `ENABLED` or `DISABLED`",
            "example": "ENABLED"
          }
        }
      },
      "EncapAPNSTokenAddRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the APNs token",
            "example": "APNs token name",
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "The description of the APNs token",
            "example": "This is the APNs token ..."
          },
          "privateKey": {
            "type": "string",
            "description": "The Base64 encoded string of APNs token private key",
            "example": "replace with base64 encoded private key",
            "minLength": 1,
            "writeOnly": true
          },
          "keyId": {
            "type": "string",
            "description": "Key ID of the APNs token",
            "example": "key-id",
            "minLength": 1,
            "writeOnly": true
          },
          "teamId": {
            "type": "string",
            "description": "Team ID of Apple Developer Account",
            "example": "team-id",
            "minLength": 1,
            "writeOnly": true
          }
        },
        "required": [
          "keyId",
          "name",
          "privateKey",
          "teamId"
        ]
      },
      "APNSToken": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The UUID for the APNs token",
            "example": "6dbb0262-eecc-4dd0-928d-f20a72ad751f"
          },
          "description": {
            "type": "string",
            "description": "The description of the APNs token",
            "example": "This is the APNs token ..."
          },
          "name": {
            "type": "string",
            "description": "The name of the APNs token",
            "example": "APNs token name"
          },
          "created": {
            "type": "string",
            "description": "The date on which the APNs token was created",
            "example": "2021-01-22T21:47:27.123Z"
          },
          "sha1Fingerprint": {
            "type": "string",
            "description": "The SHA1 hash of the APNs token",
            "example": "sha1Fingerprint"
          },
          "sha256Fingerprint": {
            "type": "string",
            "description": "The SHA256 hash of the APNs token",
            "example": "sha256Fingerprint"
          },
          "keyId": {
            "type": "string",
            "description": "Key ID of the APNs token",
            "example": "test-key-id"
          },
          "teamId": {
            "type": "string",
            "description": "Team ID of Apple Developer Account",
            "example": "test-team-id"
          }
        }
      },
      "AccountConfig": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "A description of the configuration.",
            "example": "Short description of the configuration"
          },
          "default": {
            "type": "boolean"
          },
          "accountId": {
            "type": "string",
            "description": "The ID of the account which the configuration belongs to.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "id": {
            "type": "string",
            "description": "The ID of the configuration.",
            "example": "2e55269a-f191-48ed-83f8-a3c07414a0d0"
          },
          "properties": {
            "$ref": "#/components/schemas/AccountConfigProperties",
            "description": "An object that contains all of the properties for the account."
          },
          "additionalFeatures": {
            "$ref": "#/components/schemas/AccountConfigFeatures",
            "description": "An object that contains the features of the account configuration."
          }
        }
      },
      "AccountConfigFeatures": {
        "type": "object",
        "properties": {
          "passportScanEnabled": {
            "type": "boolean",
            "description": "Value indicating if passport scan feature is enabled for this account configuration",
            "example": false
          }
        }
      },
      "AccountConfigProperties": {
        "type": "object",
        "properties": {
          "applicationId": {
            "type": "string",
            "description": "The ID of the application configuration.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "inactiveDeviceDeleteRetentionTime": {
            "type": "string",
            "description": "The number of days that a device can be inactive before it is deleted. The inactive period starts from the time when the device was last used.\nIf not provided, the default value of 365 will be used",
            "example": "365"
          }
        },
        "required": [
          "inactiveDeviceDeleteRetentionTime"
        ]
      },
      "AccountResponse": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "description": "The timestamp when the MobileID account was created.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-22T21:47:27"
          },
          "modified": {
            "type": "string",
            "description": "The timestamp when the MobileID account was updated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-22T21:52:27"
          },
          "organisationId": {
            "type": "string",
            "description": "The ID of the account's organisation.",
            "example": "o-d-Abcdefgh1234JC4Cczm4"
          },
          "id": {
            "type": "string",
            "description": "The ID of the account.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "name": {
            "type": "string",
            "description": "The name of the account.",
            "example": "acme"
          },
          "type": {
            "type": "string",
            "description": "The type of account.\n\nThis is returned as an enum, and can be either `SANDBOX` or `PRODUCTION`.\n",
            "enum": [
              "SANDBOX",
              "PRODUCTION"
            ],
            "example": "SANDBOX"
          },
          "state": {
            "type": "string",
            "description": "The state of the account.\n\nThis is returned as an enum, and can be either `ENABLED`, `DISABLED` or `DEACTIVATED`.\n",
            "enum": [
              "ENABLED",
              "DISABLED",
              "DEACTIVATED"
            ],
            "example": "ENABLED"
          },
          "sandboxProperties": {
            "$ref": "#/components/schemas/SandboxAccountProperties",
            "description": "An object that is returned if the fetched account type is `SANDBOX`, which contains properties of the sandbox account."
          },
          "statistics": {
            "$ref": "#/components/schemas/AccountStatistics",
            "description": "An object that contains account statistics for the last 180 days."
          },
          "configurations": {
            "type": "array",
            "description": "A list containing account configurations.",
            "items": {
              "$ref": "#/components/schemas/AccountConfig"
            }
          },
          "productTimeTrials": {
            "$ref": "#/components/schemas/ProductTimeTrials",
            "description": "An object that contains existing product time-trials."
          },
          "onboardedForMobileId": {
            "type": "boolean",
            "description": "Flag indicating that this account is onboarded for mobileid"
          },
          "onboardedForPasskeys": {
            "type": "boolean",
            "description": "Flag indicating that this account is onboarded for passkeys"
          }
        }
      },
      "AccountStatistics": {
        "type": "object",
        "properties": {
          "numberOfActiveDevices": {
            "type": "string",
            "description": "The number of active devices over the last 180 days.",
            "example": "0"
          },
          "numberOfActiveUsers": {
            "type": "string",
            "description": "The number of active users over the last 180 days.",
            "example": "0"
          }
        }
      },
      "ProductTimeTrials": {
        "type": "object",
        "properties": {
          "riskIndicatorsRuleBased": {
            "$ref": "#/components/schemas/RiskIndicatorsRuleBasedTimeTrial",
            "description": "The time trial object for rule based risk indicators."
          }
        }
      },
      "RiskIndicatorsRuleBasedTimeTrial": {
        "type": "object",
        "properties": {
          "validTo": {
            "type": "string",
            "description": "The date when the time trial expires.\n\n**Format**: `YYYY-MM-DD`.\n"
          },
          "state": {
            "type": "string",
            "description": "The state of the time trial.\n\n**Possible values**: This is returned as an enum, and can be either `ACTIVE` or `EXPIRED`.\n",
            "enum": [
              "ACTIVE",
              "EXPIRED"
            ],
            "example": "ACTIVE"
          }
        }
      },
      "SandboxAccountProperties": {
        "type": "object",
        "properties": {
          "sandboxDeviceLimit": {
            "type": "string",
            "description": "The maximum number of mobile devices allowed for the sandbox account.",
            "example": "100"
          },
          "numberOfDevices": {
            "type": "string",
            "description": "The number of mobile device currently registered for the sandbox account.",
            "example": "0"
          }
        }
      },
      "RiskIndicatorsProperties": {
        "type": "object",
        "properties": {
          "allowedNrOfUsersWithSameDeviceHash": {
            "type": "string",
            "description": "The maximum number of users that can have devices with the same device hash without it being flagged as suspicious. Allowed values: The default value is 2",
            "example": "2"
          }
        }
      },
      "RiskIndicatorsUpdateRequest": {
        "type": "object",
        "properties": {
          "riskIndicatorsConfiguration": {
            "$ref": "#/components/schemas/RiskIndicatorsProperties",
            "description": "Account configuration properties. To delete an existing property, supply value <code>null</code> for the property to be deleted",
            "example": {
              "riskIndicatorsConfiguration": {
                "allowedNrOfUsersWithSameDeviceHash": "3"
              }
            }
          }
        }
      },
      "RiskIndicatorsConfig": {
        "type": "object",
        "properties": {
          "riskIndicatorsConfiguration": {
            "$ref": "#/components/schemas/RiskIndicatorsProperties",
            "description": "An object that contains a list of risk indicators for the specified account."
          }
        }
      },
      "ApplicationConfigUpdateRequest": {
        "type": "object",
        "properties": {
          "amountFailuresAllowed": {
            "type": "string",
            "description": "The grace amount of failed authentications for any client before they are locked out.\n\n**Allowed values**:\nFrom `0` to `MAXINT`\n",
            "example": "3"
          },
          "activationCodeType": {
            "type": "string",
            "description": "The type of characters that can be used during the generation of the activation code.\n\n**Allowed values**:\n`ALPHA`, `ALPHANUMERIC`, `ANY` or `numeric`\n",
            "example": "NUMERIC"
          },
          "activationCodeLength": {
            "type": "string",
            "description": "The length in characters of the activation code that should be\n\n**Allowed values**:\nFrom `4` to `MAXINT`.\n",
            "example": "10"
          },
          "allowedAuthMethods": {
            "type": "array",
            "description": "Comma-separated list of allowed authentication methods.\n\nDetermines which authentication methods can be activated and used for authentication.\n",
            "example": [
              "DEVICE",
              "DEVICE:PIN"
            ],
            "items": {
              "type": "string"
            }
          },
          "apnConfig": {
            "type": "string",
            "description": "The APN server configuration that defines where to reach the APNs.\n\n**Allowed values**:\n`PRODUCTION` or `SANDBOX`\n",
            "example": "PRODUCTION"
          },
          "enabledRiskData": {
            "type": "array",
            "description": "The risk attributes to collect for the device.\n\n**Note**: To learn how to configure which risk attributes are collected, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#risk-data\" target=\"_blank\">Risk data</a> in our **Application configuration** feature documentation.\n",
            "example": "ALL",
            "items": {
              "type": "string"
            }
          },
          "maxPinCodeLength": {
            "type": "string",
            "description": "The maximum length in characters of the PIN.\n\n**Allowed values**:\nFrom `1` to `MAXINT`.\n",
            "example": "6"
          },
          "pinCodeLength": {
            "type": "string",
            "description": "The length in characters of the PIN. Set `0` to disable PIN code.\n\n**Note**: This is a hint to the client and not enforced by the server (but enforced in the client SDK).\n\n**Allowed values**:\nFrom `1` to `MAXINT`.\n",
            "example": "6"
          },
          "pinCodeType": {
            "type": "string",
            "description": "The type of characters that can be used in the PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**:\n`ANY`, `NUMERIC`, `ALPHA`, `ALPHANUMERIC`\n",
            "example": "NUMERIC"
          },
          "sessionExpiry": {
            "type": "string",
            "description": "The amount of time (in milliseconds) that a new client session remains valid for. After this time has elapsed, the session can no longer be used for any operations.\n\n**Allowed values**:\nFrom `1` to `MAXINT`.\n",
            "example": "300000"
          },
          "minimumRequiredEncapApiVersionAndroid": {
            "type": "string",
            "description": "What Android client SDK version should be allowed. This can be used to narrow (not extend) the SDK version.\n\n**Allowed values**:\nSemantic version, such as `3.7.0`.\n\n**Example**: If the server minimum is `3.5.0`, and you only want to allow `3.6.0` clients, then this can be achieved. However, there is no effect if you set `3.3.0`.\n",
            "example": "3.7.0"
          },
          "minimumRequiredEncapApiVersionIos": {
            "type": "string",
            "description": "What iOS client SDK version should be allowed. This can be used to narrow (not extend) the SDK version.\n\n**Allowed values**:\nSemantic version, such as `3.7.0`.\n\n**Example**: If the server minimum is `3.5.0`, and you only want to allow `3.6.0` clients, then this can be achieved. However, there is no effect if you set `3.3.0`.\n",
            "example": "3.7.0"
          },
          "hwKeyValidationStrategy": {
            "type": "string",
            "description": " Defines the enforcement policy for hardware supported key validation\n\n - `REQUIRED_IF_SUPPORTED` Enforces hardware key validation if the device supports hardware keys. If a hardware key is registered, this strategy rejects Activations and Authentications if the provided signature is invalid. Devices lacking hardware support are permitted to proceed with the operation.\n - `REQUIRED` Hardware key validation is mandatory for all devices. Activation will fail if the client reports it cannot generate a hardware-supported key or any technical failure occurred during key generation. Authentication will fail if the client does not provide a valid signature from its hardware-supported key.\n\n **Allowed values**:\n `REQUIRED` or `REQUIRED_IF_SUPPORTED`\n",
            "example": "REQUIRED"
          },
          "apnExpiry": {
            "type": "string",
            "description": "The amount of time (in milliseconds) that APNs will try to deliver the message for.\nIf not delivered within this time, then the message is discarded.\n\n**Allowed values**:\nFrom `1`to `MAXINT`.\n\n**Note**: APNS will attempt to deliver the message at least once, regardless of the set expiration time.\n",
            "example": "86400000"
          },
          "encapApiBlacklistAndroid": {
            "type": "string",
            "description": "Android SDK API versions to blacklist (and reject). See the android configuration chapter in the server manual for smart device for details.\n\n**Allowed values**:\nComma-separated semantic version such as: `3.5.3, 3.6.8`.\n",
            "example": "3.5.3, 3.6.8"
          },
          "encapApiBlacklistIos": {
            "type": "string",
            "description": "IOS SDK API versions to blacklist (and reject). See the ios configuration chapter in the server manual for smart device for details.\n\n**Allowed values**:\nComma-separated semantic version such as: `3.5.3, 3.6.8`.\n",
            "example": "3.5.3, 3.6.8"
          },
          "nativePushEnabled": {
            "type": "string",
            "description": "Enable the server to send push messages with Fire Cloud Messaging or Apple APNs.\n\n**Allowed values**:\n`true` or `false`\n",
            "example": "false"
          },
          "firebaseTimeToLive": {
            "type": "string",
            "description": "Firebase Cloud Messaging. Maximum lifespan of the message in milliseconds. This means deliver _now or never_.\n\nFCM guarantees best effort for messages with this lifespan.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n\n**Default value**: `0`\n",
            "example": "0"
          },
          "firebaseServiceAccount": {
            "type": "string",
            "description": "Firebase Cloud Messaging. The contents of the serviceAccount.json (credentials file) for your Firebase Cloud Messaging project.\";\n**Note**: The field has to be Base64 encoded.\n",
            "example": "<Base64 encoded string>"
          },
          "attestationAndroidPackageName": {
            "type": "string",
            "description": "Play Integrity Attestation, the APK package name.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "the package name"
          },
          "apnsBundleId": {
            "type": "string",
            "description": "Apples bundle ID for the application. Used as topic on the push message sent to APNs, required when using `APNS_TOKEN`.\n",
            "example": "the bundle id"
          },
          "allowedAuthMethodsForAuthAndActivate": {
            "type": "array",
            "description": "Comma-separated list of allowed authentication methods for activation of a new authentication method.\n\nDetermines which authentication methods can be used to authenticate during activation of a new authentication method.\n\n**Note**:\nThe value(s) here must be present in the `ALLOWED_AUTH_METHODS` parameter. Offline authentication methods cannot be used here.\n",
            "example": [
              "DEVICE:PIN"
            ],
            "items": {
              "type": "string"
            }
          },
          "recoveryEnabled": {
            "type": "string",
            "description": "Enable users to set up recovery with an alternative set of user credentials.\n\n**Allowed values**:\n`true` or `false`\n",
            "example": "true"
          },
          "recoveryCodeMinLength": {
            "type": "string",
            "description": "The minimum number of characters for the recovery PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "6"
          },
          "recoveryCodeMaxLength": {
            "type": "string",
            "description": "The maximum number of characters for the recovery PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "50"
          },
          "recoveryCodeFormat": {
            "type": "string",
            "description": "The type of characters that can be used in the recovery PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**: `ALPHA`, `ALPHANUMERIC`, `ANY`, `NUMERIC`\n",
            "example": "ALPHA"
          },
          "recoveryCodeAmountFailuresAllowed": {
            "type": "string",
            "description": "The grace amount of failed recovery code attempts for any client before the recovery for the client is locked.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "3"
          },
          "apnsNotificationSoundEnabled": {
            "type": "string",
            "description": "Enable notification sound for push messages to iOS devices.\n\n**Allowed values**: `true`, `false`\n",
            "example": "false"
          },
          "geofencingActivationMode": {
            "type": "string",
            "description": "The geofencing mode to use for the registration.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL`, or `OFF`.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#geofencing\" target=\"_blank\">Geofencing</a> in our **Application configuration** feature documentation.\n",
            "example": "OPTIONAL"
          },
          "geofencingActivationAllowedContinents": {
            "type": "string",
            "description": "Comma-separated list of continents where registration **is allowed**, in a  two-letter continent code format.\n\n**Allowed values**:\n`AF`, `NA`, `OC`, `AN`, `AS`, `EU`, or `SA`.\n",
            "example": "EU"
          },
          "geofencingActivationAllowedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where registration **is allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries are in addition to those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "US"
          },
          "geofencingActivationDeniedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where registration **is not allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries will be excluded from those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "RU"
          },
          "geofencingAuthenticationMode": {
            "type": "string",
            "description": "The geofencing mode to use for the authentication.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL`, or `OFF`.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#geofencing\" target=\"_blank\">Geofencing</a> in our **Application configuration** feature documentation.\n",
            "example": "OFF"
          },
          "geofencingAuthenticationAllowedContinents": {
            "type": "string",
            "description": "Comma-separated list of continents where authentication **is allowed**, in a  two-letter continent code format.\n\n**Allowed values**:\n`AF`, `NA`, `OC`, `AN`, `AS`, `EU`, or `SA`.\n",
            "example": "EU"
          },
          "geofencingAuthenticationAllowedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where authentication **is allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries are in addition to those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "US"
          },
          "geofencingAuthenticationDeniedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where authentication **is not allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries will be excluded from those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "RU"
          },
          "geofencingTimeout": {
            "type": "string",
            "description": "The maximum time (given in milliseconds) to wait for the location lookup and reverse geocoding to complete on the SDK.\n\nThe timing starts when the SDK calls the finish operation.\n\nIf the timeout is exceeded, then the SDK will continue without a country.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "10000"
          },
          "attestationIosAppAttestMode": {
            "type": "string",
            "description": "The iOS App Attest attestation mode to use for the operation.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL` or `OFF`.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#app-attestation\" target=\"_blank\">App attestation</a> in our **Application configuration** feature documentation.\n",
            "example": "OFF"
          },
          "attestationIosAppAttestEnvironment": {
            "type": "string",
            "description": "The environment for an app that uses the App Attest service to validate itself.\n\n**Allowed values**:\n`DEVELOPMENT`, `PRODUCTION`\n",
            "example": "PRODUCTION"
          },
          "attestationIosAppAttestTimeout": {
            "type": "string",
            "description": "iOS app attestation timeout, after this time, in milliseconds, the attestation request will time out.\n**Allowed values**:\nFrom `1` to `MAXINT`\n",
            "example": "20000"
          },
          "attestationIosAppAttestAppId": {
            "type": "string",
            "description": "Application ID which is a concatenation of a 10-digit team identifier, a period, and the app's `CFBundleIdentifier` value.\n\n**Note**: This is required when using Apple App Attest service.\n",
            "example": "some app id"
          },
          "apnsTimeSensitiveInterruptionLevelEnabled": {
            "type": "string",
            "description": "Sets the interruption level for push messages to iOS devices to **time-sensitive**.\n\nWhen enabled, push notifications can notify the end-users, even when the device is in **Focus** mode.\n",
            "example": "false"
          },
          "attestationAndroidPlayIntegrityMode": {
            "type": "string",
            "description": "The Android Play Integrity attestation mode to use for the operation.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL` or `OFF`.\n\n**Important**: Play Integrity attestation was introduced in version 3.17 and is only applicable for clients 3.17 or newer.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#app-attestation\" target=\"_blank\">App attestation</a> in our **Application configuration** feature documentation.\n",
            "example": "REQUIRED"
          },
          "attestationAndroidPlayIntegrityTimeout": {
            "type": "string",
            "description": "Play Integrity attestation timeout, in milliseconds, the timeout for a request made to Play Integrity.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "30000"
          },
          "attestationAndroidPlayIntegrityDecryptionKey": {
            "type": "string",
            "description": "Play Integrity attestation decryption key, used to decrypt the integrity token.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "<key>"
          },
          "attestationAndroidPlayIntegrityVerificationKey": {
            "type": "string",
            "description": "Play Integrity attestation verification key, used to validate the integrity token.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "<key>"
          },
          "lockScope": {
            "type": "string",
            "description": "This setting determines the lock behavior following failed authentication attempts.\n\n**Allowed values**:\n`AUTH_METHOD` or `DEVICE`\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#application-behaviour\" target=\"_blank\">Application behaviour</a> in our **Application configuration** feature documentation.\n",
            "example": "DEVICE"
          }
        }
      },
      "ApplicationConfigProperties": {
        "type": "object",
        "properties": {
          "amountFailuresAllowed": {
            "type": "string",
            "description": "The grace amount of failed authentications for any client before they are locked out.\n\n**Allowed values**:\nFrom `0` to `MAXINT`\n",
            "example": "3"
          },
          "activationCodeType": {
            "type": "string",
            "description": "The type of characters that can be used during the generation of the activation code.\n\n**Allowed values**:\n`ALPHA`, `ALPHANUMERIC`, `ANY` or `numeric`\n",
            "example": "NUMERIC"
          },
          "activationCodeLength": {
            "type": "string",
            "description": "The length in characters of the activation code that should be\n\n**Allowed values**:\nFrom `4` to `MAXINT`.\n",
            "example": "10"
          },
          "allowedAuthMethods": {
            "type": "array",
            "description": "Comma-separated list of allowed authentication methods.\n\nDetermines which authentication methods can be activated and used for authentication.\n",
            "example": [
              "DEVICE",
              "DEVICE:PIN"
            ],
            "items": {
              "type": "string"
            }
          },
          "apnConfig": {
            "type": "string",
            "description": "The APN server configuration that defines where to reach the APNs.\n\n**Allowed values**:\n`PRODUCTION` or `SANDBOX`\n",
            "example": "PRODUCTION"
          },
          "enabledRiskData": {
            "type": "array",
            "description": "The risk attributes to collect for the device.\n\n**Note**: To learn how to configure which risk attributes are collected, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#risk-data\" target=\"_blank\">Risk data</a> in our **Application configuration** feature documentation.\n",
            "example": "ALL",
            "items": {
              "type": "string"
            }
          },
          "maxPinCodeLength": {
            "type": "string",
            "description": "The maximum length in characters of the PIN.\n\n**Allowed values**:\nFrom `1` to `MAXINT`.\n",
            "example": "6"
          },
          "pinCodeLength": {
            "type": "string",
            "description": "The length in characters of the PIN. Set `0` to disable PIN code.\n\n**Note**: This is a hint to the client and not enforced by the server (but enforced in the client SDK).\n\n**Allowed values**:\nFrom `1` to `MAXINT`.\n",
            "example": "6"
          },
          "pinCodeType": {
            "type": "string",
            "description": "The type of characters that can be used in the PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**:\n`ANY`, `NUMERIC`, `ALPHA`, `ALPHANUMERIC`\n",
            "example": "NUMERIC"
          },
          "maximumSessionExpiry": {
            "type": "string",
            "description": "The maximum amount of time (in milliseconds) that the `sessionExpiry` can be set to.\n\n**Allowed values**:\nFrom `1` to `MAXINT`.\n\n**Default value**: `187200000` (52 hours).\n\n**Note**: This value cannot be configured.\n",
            "example": "1000000"
          },
          "sessionExpiry": {
            "type": "string",
            "description": "The amount of time (in milliseconds) that a new client session remains valid for. After this time has elapsed, the session can no longer be used for any operations.\n\n**Allowed values**:\nFrom `1` to `MAXINT`.\n",
            "example": "300000"
          },
          "minimumRequiredEncapApiVersionAndroid": {
            "type": "string",
            "description": "What Android client SDK version should be allowed. This can be used to narrow (not extend) the SDK version.\n\n**Allowed values**:\nSemantic version, such as `3.7.0`.\n\n**Example**: If the server minimum is `3.5.0`, and you only want to allow `3.6.0` clients, then this can be achieved. However, there is no effect if you set `3.3.0`.\n",
            "example": "3.7.0"
          },
          "minimumRequiredEncapApiVersionIos": {
            "type": "string",
            "description": "What iOS client SDK version should be allowed. This can be used to narrow (not extend) the SDK version.\n\n**Allowed values**:\nSemantic version, such as `3.7.0`.\n\n**Example**: If the server minimum is `3.5.0`, and you only want to allow `3.6.0` clients, then this can be achieved. However, there is no effect if you set `3.3.0`.\n",
            "example": "3.7.0"
          },
          "apnExpiry": {
            "type": "string",
            "description": "The amount of time (in milliseconds) that APNs will try to deliver the message for.\nIf not delivered within this time, then the message is discarded.\n\n**Allowed values**:\nFrom `1`to `MAXINT`.\n\n**Note**: APNS will attempt to deliver the message at least once, regardless of the set expiration time.\n",
            "example": "86400000"
          },
          "hwKeyValidationStrategy": {
            "type": "string",
            "description": " Defines the enforcement policy for hardware supported key validation\n\n - `REQUIRED_IF_SUPPORTED` Enforces hardware key validation if the device supports hardware keys. If a hardware key is registered, this strategy rejects Activations and Authentications if the provided signature is invalid. Devices lacking hardware support are permitted to proceed with the operation.\n - `REQUIRED` Hardware key validation is mandatory for all devices. Activation will fail if the client reports it cannot generate a hardware-supported key or any technical failure occurred during key generation. Authentication will fail if the client does not provide a valid signature from its hardware-supported key.\n - `OPTIONAL` Performs hardware key validation without enforcement. Validation failures generate risk data but, unlike other strategies, do not cause Activation or Authentication operations to fail.\n\n **Allowed values**:\n `REQUIRED`, `REQUIRED_IF_SUPPORTED` or `OPTIONAL`\n",
            "example": "REQUIRED"
          },
          "encapApiBlacklistAndroid": {
            "type": "string",
            "description": "Android SDK API versions to blacklist (and reject). See the android configuration chapter in the server manual for smart device for details.\n\n**Allowed values**:\nComma-separated semantic version such as: `3.5.3, 3.6.8`.\n",
            "example": "3.5.3, 3.6.8"
          },
          "encapApiBlacklistIos": {
            "type": "string",
            "description": "IOS SDK API versions to blacklist (and reject). See the ios configuration chapter in the server manual for smart device for details.\n\n**Allowed values**:\nComma-separated semantic version such as: `3.5.3, 3.6.8`.\n",
            "example": "3.5.3, 3.6.8"
          },
          "nativePushEnabled": {
            "type": "string",
            "description": "Enable the server to send push messages with Fire Cloud Messaging or Apple APNs.\n\n**Allowed values**:\n`true` or `false`\n",
            "example": "false"
          },
          "firebaseTimeToLive": {
            "type": "string",
            "description": "Firebase Cloud Messaging. Maximum lifespan of the message in milliseconds. This means deliver _now or never_.\n\nFCM guarantees best effort for messages with this lifespan.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n\n**Default value**: `0`\n",
            "example": "0"
          },
          "firebaseServiceAccount": {
            "type": "string",
            "description": "Firebase Cloud Messaging. The contents of the `serviceAccount.json` (credentials file) for your Firebase Cloud Messaging project.\n\n**Note**: The field is Base64 encoded.\n",
            "example": "QjY0IGVuY29kZWQgc3RyaW5nLi4u"
          },
          "apnsBundleId": {
            "type": "string",
            "description": "Apples bundle ID for the application. Used as topic on the push message sent to APNs, required when using `APNS_TOKEN`.\n",
            "example": "the bundle id"
          },
          "allowedAuthMethodsForAuthAndActivate": {
            "type": "array",
            "description": "Comma-separated list of allowed authentication methods for activation of a new authentication method.\n\nDetermines which authentication methods can be used to authenticate during activation of a new authentication method.\n\n**Note**:\nThe value(s) here must be present in the `ALLOWED_AUTH_METHODS` parameter. Offline authentication methods cannot be used here.\n",
            "example": [
              "DEVICE:PIN"
            ],
            "items": {
              "type": "string"
            }
          },
          "recoveryEnabled": {
            "type": "string",
            "description": "Enable users to set up recovery with an alternative set of user credentials.\n\n**Allowed values**:\n`true` or `false`\n",
            "example": "true"
          },
          "recoveryCodeMinLength": {
            "type": "string",
            "description": "The minimum number of characters for the recovery PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "6"
          },
          "recoveryCodeMaxLength": {
            "type": "string",
            "description": "The maximum number of characters for the recovery PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "50"
          },
          "recoveryCodeFormat": {
            "type": "string",
            "description": "The type of characters that can be used in the recovery PIN.\n\n**Note**: This is a hint to the client and not enforced by the server.\n\n**Allowed values**: `ALPHA`, `ALPHANUMERIC`, `ANY`, `NUMERIC`\n",
            "example": "ALPHA"
          },
          "recoveryCodeAmountFailuresAllowed": {
            "type": "string",
            "description": "The grace amount of failed recovery code attempts for any client before the recovery for the client is locked.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "3"
          },
          "apnsNotificationSoundEnabled": {
            "type": "string",
            "description": "Enable notification sound for push messages to iOS devices.\n\n**Allowed values**: `true`, `false`\n",
            "example": "false"
          },
          "geofencingActivationMode": {
            "type": "string",
            "description": "The geofencing mode to use for the registration.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL`, or `OFF`.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#geofencing\" target=\"_blank\">Geofencing</a> in our **Application configuration** feature documentation.\n",
            "example": "OPTIONAL"
          },
          "geofencingActivationAllowedContinents": {
            "type": "string",
            "description": "Comma-separated list of continents where registration **is allowed**, in a  two-letter continent code format.\n\n**Allowed values**:\n`AF`, `NA`, `OC`, `AN`, `AS`, `EU`, or `SA`.\n",
            "example": "EU"
          },
          "geofencingActivationAllowedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where registration **is allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries are in addition to those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "US"
          },
          "geofencingActivationDeniedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where registration **is not allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries will be excluded from those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "RU"
          },
          "geofencingAuthenticationMode": {
            "type": "string",
            "description": "The geofencing mode to use for the authentication.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL`, or `OFF`.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#geofencing\" target=\"_blank\">Geofencing</a> in our **Application configuration** feature documentation.\n",
            "example": "OFF"
          },
          "geofencingAuthenticationAllowedContinents": {
            "type": "string",
            "description": "Comma-separated list of continents where authentication **is allowed**, in a  two-letter continent code format.\n\n**Allowed values**:\n`AF`, `NA`, `OC`, `AN`, `AS`, `EU`, or `SA`.\n",
            "example": "EU"
          },
          "geofencingAuthenticationAllowedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where authentication **is allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries are in addition to those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "US"
          },
          "geofencingAuthenticationDeniedCountries": {
            "type": "string",
            "description": "Comma-separated list of countries where authentication **is not allowed**, in an ISO 3166-1 alpha-2 two-letter country code format.\n\nThese countries will be excluded from those covered by the allowed continents parameter.\n\nYou can find a list of countries and corresponding codes at [GeoNames](https://www.geonames.org/countries/).\n",
            "example": "RU"
          },
          "geofencingTimeout": {
            "type": "string",
            "description": "The maximum time (given in milliseconds) to wait for the location lookup and reverse geocoding to complete on the SDK.\n\nThe timing starts when the SDK calls the finish operation.\n\nIf the timeout is exceeded, then the SDK will continue without a country.\n\n**Allowed values**:\nFrom `0` to `MAXINT`.\n",
            "example": "10000"
          },
          "attestationIosAppAttestMode": {
            "type": "string",
            "description": "The iOS App Attest attestation mode to use for the operation.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL` or `OFF`.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#app-attestation\" target=\"_blank\">App attestation</a> in our **Application configuration** feature documentation.\n",
            "example": "OFF"
          },
          "attestationIosAppAttestEnvironment": {
            "type": "string",
            "description": "The environment for an app that uses the App Attest service to validate itself.\n\n**Allowed values**:\n`DEVELOPMENT`, `PRODUCTION`\n",
            "example": "PRODUCTION"
          },
          "attestationIosAppAttestTimeout": {
            "type": "string",
            "description": "iOS app attestation timeout, after this time, in milliseconds, the attestation request will time out.\n**Allowed values**:\nFrom `1` to `MAXINT`\n",
            "example": "20000"
          },
          "attestationIosAppAttestAppId": {
            "type": "string",
            "description": "Application ID which is a concatenation of a 10-digit team identifier, a period, and the app's `CFBundleIdentifier` value.\n\n**Note**: This is required when using Apple App Attest service.\n",
            "example": "some app id"
          },
          "clientDebugDataEnabledOsTypes": {
            "type": "string",
            "description": "A comma-separated list of operating system types to enable client debug data for.\n\nIt can be set for neither, one, or both platforms.\n\n**Allowed values**:\n`null` (empty field), `IOS`, `ANDROID`.\n\n**Note**: This value cannot be configured.\n",
            "example": "IOS, ANDROID"
          },
          "apnsTimeSensitiveInterruptionLevelEnabled": {
            "type": "string",
            "description": "Sets the interruption level for push messages to iOS devices to **time-sensitive**.\n\nWhen enabled, push notifications can notify the end-users, even when the device is in **Focus** mode.\n",
            "example": "false"
          },
          "attestationAndroidPlayIntegrityMode": {
            "type": "string",
            "description": "The Android Play Integrity attestation mode to use for the operation.\n\n**Allowed values**:\n`REQUIRED`, `OPTIONAL` or `OFF`.\n\n**Important**: Play Integrity attestation was introduced in version 3.17 and is only applicable for clients 3.17 or newer.\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#app-attestation\" target=\"_blank\">App attestation</a> in our **Application configuration** feature documentation.\n",
            "example": "REQUIRED"
          },
          "attestationAndroidPlayIntegrityTimeout": {
            "type": "string",
            "description": "Play Integrity attestation timeout, in milliseconds, the timeout for a request made to Play Integrity.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "30000"
          },
          "attestationAndroidPlayIntegrityDecryptionKey": {
            "type": "string",
            "description": "Play Integrity attestation decryption key, used to decrypt the integrity token.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "<key>"
          },
          "attestationAndroidPlayIntegrityVerificationKey": {
            "type": "string",
            "description": "Play Integrity attestation verification key, used to validate the integrity token.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "<key>"
          },
          "attestationAndroidPackageName": {
            "type": "string",
            "description": "Play Integrity Attestation, the APK package name.\n\n**Note**: This is required if `attestationAndroidPlayIntegrityMode` is `REQUIRED` or `OPTIONAL`.\n",
            "example": "Package"
          },
          "lockScope": {
            "type": "string",
            "description": "Configured value that determines the lock behavior following failed authentication attempts.\n\n**Possible values**:\n`AUTH_METHOD` or `DEVICE`\n\n**Note**: To learn more, see <a href=\"https://developer.signicat.com/docs/mobile-identity/mobileid/features/application-configuration/#application-behaviour\" target=\"_blank\">Application behaviour</a> in our **Application configuration** feature documentation.\n",
            "example": "DEVICE"
          }
        }
      },
      "AccountUpdateRequest": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "Account state",
            "enum": [
              "ENABLED",
              "DISABLED"
            ],
            "example": "ENABLED"
          }
        }
      },
      "InternalAccountResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Account ID",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "state": {
            "type": "string",
            "description": "Account state",
            "enum": [
              "ENABLED",
              "DISABLED",
              "DEACTIVATED"
            ],
            "example": "ENABLED"
          },
          "organisationId": {
            "type": "string",
            "description": "Account's organisation ID",
            "example": "o-d-Abcdefgh1234JC4Cczm4",
            "maxLength": 64,
            "minLength": 0
          },
          "sandboxDeviceLimit": {
            "type": "string",
            "description": "The maximum number of devices allowed for sandbox account",
            "example": "100"
          },
          "encapApiKeyId": {
            "type": "string",
            "description": "Account's Encap API key ID",
            "example": "1fb22154-8633-417b-a918-cd59a3ccd12f"
          }
        }
      },
      "Statistic": {
        "type": "object",
        "properties": {
          "fromDate": {
            "type": "string",
            "description": "The start date from when the device statistics are aggregated.\n\n**Format**: `yyyy-MM-dd`.",
            "example": "2022-08-01"
          },
          "toDate": {
            "type": "string",
            "description": "The end date to which the device statistics are aggregated.\n\n**Format**: `yyyy-MM-dd`.",
            "example": "2022-08-31"
          },
          "users": {
            "$ref": "#/components/schemas/StatisticUser"
          },
          "devices": {
            "$ref": "#/components/schemas/StatisticDevice"
          }
        }
      },
      "StatisticDevice": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of ReuseID devices in the specified aggregation period.",
            "example": 2234
          },
          "withActivatedState": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of active ReuseID devices in the specified aggregation period.",
            "example": 1111
          },
          "withLockedState": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of locked ReuseID devices in the specified aggregation period.",
            "example": 1123
          }
        }
      },
      "StatisticUser": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of ReuseID users in the specified aggregation period.",
            "example": 2234
          },
          "withActivatedState": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of active ReuseID users in the specified aggregation period.",
            "example": 1111
          },
          "withLockedState": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of locked ReuseID users in the specified aggregation period.",
            "example": 1123
          }
        }
      },
      "NamedStatistic": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the property.\n\n**Note**: The name depends on what is passed for the `type` and `platform` query parameters in the operation request.\n",
            "example": "3.21"
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "description": "The number of devices with this property.",
            "example": 2553
          },
          "percentage": {
            "type": "integer",
            "format": "int32",
            "description": "The percentage of devices with this property.",
            "example": 43
          }
        }
      },
      "AccountPlatformStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "platforms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          }
        }
      },
      "AccountSDKStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "sdkversions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          }
        }
      },
      "AccountPlatformModelStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "platform": {
            "type": "string",
            "description": "The platform for which the detailed device statistics were obtained.\n\n**Possible values**: It can be either `ANDROID` or `IOS`.\n",
            "example": "Android"
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          }
        }
      },
      "AccountPlatformVersionStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "platform": {
            "type": "string",
            "description": "The platform for which the detailed device statistics were obtained.\n\n**Possible values**: It can be either `ANDROID` or `IOS`.\n",
            "example": "Android"
          },
          "versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            },
            "writeOnly": true
          }
        }
      },
      "AccountPlatformManufacturerStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "platform": {
            "type": "string",
            "description": "The platform for which the detailed device statistics were obtained.\n\n**Possible values**: It can be either `ANDROID` or `IOS`.\n",
            "example": "Android"
          },
          "manufacturers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            },
            "writeOnly": true
          }
        }
      },
      "AccountPlatformSDKStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "platform": {
            "type": "string",
            "description": "The platform for which the detailed device statistics were obtained.\n\n**Possible values**: It can be either `ANDROID` or `IOS`.\n",
            "example": "Android"
          },
          "sdkversions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            },
            "writeOnly": true
          }
        }
      },
      "AccountPlatformAllDetailsStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "platform": {
            "type": "string",
            "description": "The platform for which the detailed device statistics were obtained.\n\n**Possible values**: It can be either `ANDROID` or `IOS`.\n",
            "example": "Android"
          },
          "models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          },
          "versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          },
          "manufacturers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          }
        }
      },
      "AccountAllBasicStatistic": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2026-01-21T22:47:33.456Z"
          },
          "total": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices.",
            "example": 264554
          },
          "platforms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          },
          "sdkversions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedStatistic"
            }
          }
        }
      },
      "DHDeviceProperties": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "string",
            "description": "The ID of the user's device (<code>deviceId</code>).",
            "example": "20874199-f4d1-4e9d-86ee-dd4a46030acb"
          },
          "state": {
            "type": "integer",
            "format": "int64",
            "description": "The state of the device.",
            "example": "ACTIVE"
          },
          "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.221Z"
          },
          "created": {
            "type": "string",
            "description": "The timestamp when the user's device was originally activated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:27.338Z"
          }
        }
      },
      "DHUserIdWithLstOfDevices": {
        "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/DHDeviceProperties"
            }
          }
        }
      },
      "DHDeviceHashWithLstOfUsers": {
        "type": "object",
        "properties": {
          "deviceHash": {
            "type": "string",
            "description": "The device hash that has been flagged as suspicious.",
            "example": "wBHQ4HC3yLEUvEwnX5EBTBAbKkCia35WwO1dxqiFvYo="
          },
          "userCount": {
            "type": "integer",
            "format": "int64",
            "description": "The number of users that have devices with the suspicious device hash.",
            "example": 2
          },
          "deviceCount": {
            "type": "integer",
            "format": "int64",
            "description": "The number of devices with the suspicious device hash.\n\n**Note**: These devices are owned by the users outlined in the `userCount`.\n",
            "example": 5
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DHUserIdWithLstOfDevices"
            }
          }
        }
      },
      "DHObjCount": {
        "type": "object",
        "properties": {
          "devices": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of devices in the specified aggregation period.",
            "example": 201001
          },
          "uniqueDeviceHashes": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of unique device hashes in the aggregation period.",
            "example": 200888
          },
          "activeUsers": {
            "type": "integer",
            "format": "int64",
            "description": "The total number active users in the aggregation period.",
            "example": 103112
          }
        }
      },
      "DHStatistics": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The ID of the Signicat account, in a valid UUID format.",
            "example": "a-sdge-abcdefghijk123456789"
          },
          "aggregatedAt": {
            "type": "string",
            "description": "The timestamp when the statistics were aggregated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21T22:47:33.456Z"
          },
          "count": {
            "$ref": "#/components/schemas/DHObjCount"
          },
          "suspiciousDeviceHashes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DHDeviceHashWithLstOfUsers"
            }
          }
        }
      },
      "ActivatedPeriod": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string"
          },
          "to": {
            "type": "string"
          }
        }
      },
      "SigningCertificate": {
        "type": "object",
        "properties": {
          "certificate": {
            "type": "string",
            "description": "The signing certificate, in PEM format.",
            "example": "-----BEGIN CERTIFICATE-----\nMIICEjCCAXsCAg36MA0GCSqGSIb3DQEBBQUAMIGbMQswCQYDVQQGEwJKUDEOMAwG\nA1UECBMFVG9reW8xEDAOBgNVBAcTB0NodW8ta3UxETAPBgNVBAoTCEZyYW5rNERE\nMRgwFgYDVQQLEw9XZWJDZXJ0IFN1cHBvcnQxGDAWBgNVBAMTD0ZyYW5rNEREIFdl\nYiBDQTEjMCEGCSqGSIb3DQEJARYUc3VwcG9ydEBmcmFuazRkZC5jb20wHhcNMTIw\nODIyMDUyNjU0WhcNMTcwODIxMDUyNjU0WjBKMQswCQYDVQQGEwJKUDEOMAwGA1UE\nCAwFVG9reW8xETAPBgNVBAoMCEZyYW5rNEREMRgwFgYDVQQDDA93d3cuZXhhbXBs\nZS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAm/xmkHmEQrurE/0re/jeFRLl\n8ZPjBop7uLHhnia7lQG/5zDtZIUC3RVpqDSwBuw/NTweGyuP+o8AG98HxqxTBwID\nAQABMA0GCSqGSIb3DQEBBQUAA4GBABS2TLuBeTPmcaTaUW/LCB2NYOy8GMdzR1mx\n8iBIu2H6/E2tiY3RIevV2OW61qY2/XRQg7YPxx3ffeUugX9F4J/iPnnu1zAxxyBy\n2VguKv4SWjRFoRkIfIlHX0qVviMhSlNy2ioFLy7JcPZb+v3ftDGywUqcBiVDoea0\nHn+GmxZA\n-----END CERTIFICATE-----"
          },
          "sha256Fingerprint": {
            "type": "string",
            "description": "The SHA-256 fingerprint of the signing certificate.",
            "example": "11:22:a2:ce:7f:9d:3e:ce:c1:33:67:03:c5:af:b3:03:63:29:ce:22:91:dc:82:9a:8a:e9:49:1e:9b:d0:12:aa"
          },
          "state": {
            "type": "string",
            "description": "The state of the signing certificate.\n\nThis is an an enum, and can be either `ACTIVE` or `DEACTIVATED`.\n\nOnly one signing certificate can have an active state; this is the one that is used for the signing.\n",
            "enum": [
              "ACTIVE",
              "DEACTIVATED"
            ],
            "example": "ACTIVE"
          },
          "activatedAt": {
            "type": "string",
            "description": "The timestamp when the certificate became active.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21"
          },
          "deactivatedAt": {
            "type": "string",
            "description": "The timestamp when the certificate was deactivated.\n\n**Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2022-01-21"
          },
          "activatedPeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivatedPeriod"
            }
          },
          "validFrom": {
            "type": "string",
            "description": "  The timestamp when the certificate became valid.\n\n  **Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2021-01-21'T'21:21:21.000Z"
          },
          "validTo": {
            "type": "string",
            "description": "  The timestamp until the certificate is valid.\n\n  **Format**: `yyyy-MM-dd'T'HH:mm:ss.SSSZ`.\n",
            "example": "2024-01-21'T'21:21:21.000Z"
          }
        }
      },
      "SigningCertificateList": {
        "type": "object",
        "properties": {
          "signingCertificates": {
            "type": "array",
            "description": "A list of signing certificates.",
            "items": {
              "$ref": "#/components/schemas/SigningCertificate"
            }
          }
        }
      },
      "E2EKeyList": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/E2EKey"
            },
            "writeOnly": true
          },
          "e2eKeys": {
            "type": "array",
            "description": "A list of E2E key objects for the organisation that the account belongs to.",
            "items": {
              "$ref": "#/components/schemas/E2EKey"
            }
          }
        }
      },
      "ApplicationConfig": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "The UUID for the application configuration",
            "example": "762e9a1a-01f4-4731-a540-4f75dbeae43c"
          },
          "appId": {
            "type": "string",
            "description": "App ID of the application configuration",
            "example": "05d9b1cb-5b8d-4d3d-b7c8-6709850b7486"
          },
          "appName": {
            "type": "string",
            "description": "The App name of the application configuration",
            "example": "app name"
          },
          "apnsUuid": {
            "type": "string",
            "description": "The APNs UUID of the application configuration",
            "example": "6dbb0262-eecc-4dd0-928d-f20a72ad751f"
          },
          "state": {
            "type": "string",
            "description": "The state of the application configuration, This can be either `ENABLED` or `DISABLED`",
            "example": "ENABLED"
          },
          "properties": {
            "$ref": "#/components/schemas/ApplicationConfigProperties"
          }
        },
        "required": [
          "appId",
          "state",
          "uuid"
        ]
      },
      "APNSTokenList": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "description": "List of APNs Tokens",
            "items": {
              "$ref": "#/components/schemas/APNSToken"
            },
            "writeOnly": true
          },
          "apnsTokens": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/APNSToken"
            }
          }
        }
      }
    }
  }
}