> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Application API для обновления приложения

> PATCH /organizations/me/{org_id}/applications/{app_id}/: обновление метаданных приложений Didit для клиентов реселлера, брендов и сред.



Промпт для обновления приложения
        Скопировать промпт в буфер обмена



      
      

\<pre>

\`Partially update one Didit application's metadata (name, public URLs, redirect URIs, description). Credentials (client_id, api_key, uuid) are NEVER changed by this call.

Endpoint:
PATCH https://apx.didit.me/auth/v2/organizations/me/{org_id}/applications/{app_id}/

Authentication:
Authorization: Bearer <access_token>
The access token must belong to an OWNER or ADMIN of the organization.

Path parameters:
\- org_id (UUID, required) — Organization that owns the application.
\- app_id (UUID, required) — Application UUID to update.

Request body — PATCH semantics. Send ONLY the fields you want to change. Omitted fields are preserved.
\- name (string, optional) — Display name.
\- website_url (string, URL, optional) — Public homepage.
\- redirect_uris (array of strings, optional) — Allowlisted OAuth-style redirect URIs. The array REPLACES the previous value entirely.
\- terms_url (string, URL, optional) — Terms-of-service link.
\- privacy_url (string, URL, optional) — Privacy policy link.
\- description (string, optional) — Internal note (not shown to end users).
\- products is read-only: a products key in the body is ignored.
\- data_location (string, optional) — The application's data location, chosen when it was created. Naming the location it already has is accepted; any other location answers 400. One exception: the live application created with your organization (at sign-up or by POST /programmatic/verify-email/) has its location chosen by the first update that names data_location, once, while none of its API keys has been used and it has no verification session. Only "eu" (European Union, Ireland) is available today.

What does NOT change:
\- uuid, client_id, api_key — credentials stay the same. Existing integrations keep working; no key rotation happens here.
\- data_location — set when the application is created (see above for the one exception).

curl example — rename and move to a new domain:
curl -X PATCH "https://apx.didit.me/auth/v2/organizations/me/<ORG_ID>/applications/<APP_ID>/" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Production App",
"website_url": "https://app.acme.example"
}'

curl example — add a second redirect URI (full replacement of the array):
curl -X PATCH "https://apx.didit.me/auth/v2/organizations/me/<ORG_ID>/applications/<APP_ID>/" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"redirect_uris": [
  "https://acme.example/callback",
  "https://staging.acme.example/callback"
]
}'

Response (200 OK):
The full application record after the change, including products (same shape as GET /organizations/me/{org_id}/applications/{app_id}/). uuid, client_id, and api_key are unchanged.

When to call:
\- Reseller customer rebrands → rename their application.
\- Domain migration → update website_url, terms_url, privacy_url.
\- Add or remove a staging redirect URI.
\- Refresh terms / privacy URLs shown in the verification flow.

Failure modes:
\- 400 — { "<field>": ["Enter a valid URL."] } for malformed website_url / redirect_uris / terms_url / privacy_url.
\- 400 — { "data_location": ["An application's data location can't be changed after it is created."] } for a location other than the application's own, and { "data_location": ["This data location is not available yet."] } for "au" or "mx". Nothing is changed.
\- 503 — { "detail": "We couldn't confirm that this application is unused. Try again in a moment.", "code": "data_location_check_unavailable" } only while choosing the first application's location. Nothing is changed; retry.
\- 401: { "detail": "Invalid access token" } or { "detail": "Expired access token" } when the token is malformed or expired.
\- 403: { "detail": "Only organization owners and admins can manage applications." } when you are a member of the organization but not an owner or admin.
\- 403: { "detail": "Your access to this organization is suspended." } when your membership in the organization is suspended.
\- 403: { "detail": "You do not have permission to perform this action." } when the request has no Authorization header.
\- 404: { "detail": "Organization not found." } when the organization does not exist or you are not a member of it, or { "detail": "Application not found." } when the application is not in that organization.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Вставьте в

Используйте этот endpoint, чтобы каждое приложение соответствовало клиенту, бренду, среде или внутреннему сценарию использования, который оно представляет.Для реселлеров это позволяет переименовывать или обновлять приложение каждого клиента без передачи учётных данных между клиентами. Для прямых клиентов это помогает разделять продукты, регионы или среды, сохраняя всё в рамках одной организации.> [!NOTE]
>
> Этот endpoint обновляет метаданные приложения. `api_key` остаётся прежним, если вы не выполните ротацию учётных данных отдельно.## Расположение данныхРасположение данных приложения (`data_location`) выбирается при его создании и не может быть изменено после этого: обновление, которое указывает уже имеющееся у приложения расположение, принимается, а любое другое расположение возвращает ответ 400.Исключение: продакшн-приложение, созданное вместе с вашей организацией при регистрации или через [Проверка электронной почты](https://docs.didit.me/ru/auth-api/verify-email.md). Первое обновление, в котором указано `data_location`, выбирает расположение один раз, при условии что ни один из API-ключей приложения не использовался и у приложения нет сессии верификации. Шаг консоли **Назовите первое приложение** использует это, чтобы сохранить выбранное там расположение. На данный момент единственное доступное расположение: `eu`, Европейский союз (Ирландия).


## OpenAPI

````yaml ru/openapi-auth.json PATCH /organizations/me/{org_id}/applications/{app_id}/
openapi: 3.0.0
info:
  version: 1.0.0
  title: Didit Auth API
  description: >-
    API программной регистрации и аутентификации для разработчиков и AI-агентов.
    Регистрация за 2 вызова API: без использования браузера. Самая удобная для
    агентов платформа верификации личности.


    ## Базовый URL


    Все endpoint в этой спецификации размещены по адресу
    `https://apx.didit.me/auth/v2`. Это другой хост, отличный от API верификации
    (`https://verification.didit.me/v3`). Не путайте их: этот хост
    аутентификации выдаёт ваши **токены доступа JWT** и позволяет просматривать
    список и управлять вашими **организациями** и **приложениями**. На хосте
    верификации вы вызываете сессии, сценарии, AML и т. д., аутентифицируясь с
    помощью **`api_key`**, возвращаемого этим API.


    ## Как устроен процесс аутентификации


    1. `POST /programmatic/register/`: отправьте email + пароль.

    2. Получите 6-значный буквенно-цифровой код по электронной почте.

    3. `POST /programmatic/verify-email/`: отправьте код. Вы получите обратно
    JWT `access_token`, `refresh_token`, организацию и стандартное приложение с
    `client_id` + `api_key`.

    4. Сохраните `api_key`. Используйте его в качестве `x-api-key` для каждого
    вызова к `https://verification.didit.me/v3/...`.

    5. В дальнейшем с любой машины `POST /programmatic/login/` обменивает ваши
    email + пароль на свежий JWT, после чего вызовите `GET /organizations/me/` и
    endpoint приложений для восстановления или ротации учётных данных.


    JWT требуется только для endpoint **Управления аккаунтом** в этой
    спецификации; трафик к API верификации использует долгоживущий `api_key`, а
    не JWT.


    ## Соглашения


    - Все тела запросов и ответов представляют собой JSON (`Content-Type:
    application/json`).

    - **Используйте реальный, доставляемый адрес электронной почты при
    тестировании `POST /programmatic/register/`.** Endpoint отправляет код
    подтверждения синхронно, поэтому адреса на зарезервированных тестовых
    доменах (`@example.com`, `@example.org`, `@*.test`, `@*.example`,
    `@*.invalid`) отклоняются службой доставки почты, и запрос возвращает `500`.
    Замените плейсхолдер `you@yourdomain.com` в примерах на почтовый ящик,
    который вы действительно можете прочитать.

    - Ошибки валидации возвращают HTTP `400` в одном из двух форматов:
    `{"field": ["message", ...]}` для проблем на уровне полей или `{"detail":
    "message"}` для ошибок бизнес-правил. Некоторые валидаторы (сложность пароля
    при регистрации, истечение срока действия кода при проверке email) в
    настоящее время возвращают простой массив `["message"]` вместо структуры с
    ключами полей - это известная несогласованность на стороне сервера, поэтому
    клиентский код должен принимать оба формата.

    - Ошибки аутентификации возвращаются в виде `{"detail": "..."}` с кодом HTTP
    `401` (недействительный bearer token) или `403` (отсутствует bearer token /
    недостаточно прав).

    - Ответы с ограничением частоты запросов содержат поле `wait` с временем
    задержки в секундах.
servers:
  - url: https://apx.didit.me/auth/v2
    description: Продакшн-сервер аутентификации
security: []
tags:
  - name: Programmatic Auth
    description: >-
      Жизненный цикл аккаунта с электронной почтой и паролем: регистрация,
      подтверждение, вход. Возвращает JWT `access_token`, который вы используете
      для endpoint'ов управления аккаунтом, а также (при подтверждении)
      `client_id` и `api_key` вашего первого приложения.
  - name: Account Management
    description: >-
      Аутентифицированные endpoint (JWT bearer), которые возвращают список
      организаций и позволяют создавать, получать или обновлять приложения.
      Используйте их для восстановления или ротации `api_key`, с помощью
      которого вы аутентифицируете вызовы API верификации.
paths:
  /organizations/me/{org_id}/applications/{app_id}/:
    patch:
      tags:
        - Account Management
      summary: Обновить приложение
      description: >-
        Обновить метаданные приложения (название, URL-адреса, URI
        перенаправления). `api_key` и `client_id` никогда не ротируются. Поле
        `products` доступно только для чтения: ключ `products` в теле запроса
        игнорируется. Параметр `data_location` нельзя изменить после создания
        приложения, за исключением одного раза для продакшн-приложения,
        созданного вместе с вашей организацией, пока оно не используется (см.
        тело запроса). Требуется JWT владельца/администратора.
      operationId: update_organization_application
      parameters:
        - name: org_id
          in: path
          required: true
          description: UUID организации, владеющей приложением.
          schema:
            type: string
            format: uuid
            example: a1b2c3d4-5678-90ab-cdef-111111111111
        - name: app_id
          in: path
          required: true
          description: UUID обновляемого приложения.
          schema:
            type: string
            format: uuid
            example: b2c3d4e5-6789-01bc-defg-222222222222
      requestBody:
        required: true
        description: >-
          Отправляйте только те поля, которые хотите изменить. Семантика PATCH:
          неуказанные поля сохраняются.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationUpdateRequest'
            examples:
              RenameCustomerApplication:
                summary: Переименовать и перенести на новый домен
                value:
                  name: Acme Production App
                  website_url: https://app.acme.example
              UpdateRedirectUris:
                summary: Добавить второй URI перенаправления
                value:
                  redirect_uris:
                    - https://acme.example/callback
                    - https://staging.acme.example/callback
              UpdatePolicies:
                summary: >-
                  Обновить URL условий использования и политики
                  конфиденциальности
                value:
                  terms_url: https://acme.example/v2/terms
                  privacy_url: https://acme.example/v2/privacy
      responses:
        '200':
          description: >-
            Приложение обновлено. Ответ содержит полную запись приложения после
            изменения, включая `products`; значения `uuid`, `client_id` и
            `api_key` остаются без изменений.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
              examples:
                Success:
                  value:
                    uuid: b2c3d4e5-6789-01bc-defg-222222222222
                    name: Acme Production App
                    client_id: S9LIYGSoWNuGMLHsvEt9dQ
                    api_key: sk_live_example_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                    website_url: https://app.acme.example
                    redirect_uris:
                      - https://acme.example/callback
                    terms_url: https://acme.example/terms
                    privacy_url: https://acme.example/privacy
                    description: null
                    created_at: '2025-06-01T10:00:00Z'
                    data_location: eu
                    products:
                      - product: identity
                        status: enabled
                        modules:
                          user_verification: true
                          business_verification: true
                          case_management: true
                      - product: transactions
                        status: disabled
                        modules:
                          travel_rule: true
                          case_management: true
                      - product: authentication
                        status: disabled
                        modules: {}
        '400':
          description: >-
            Ошибка валидации в теле запроса: например, некорректный URL, пока
            недоступный `data_location` или `data_location`, не принадлежащий
            самому приложению. Изменения не внесены.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
              examples:
                InvalidUrl:
                  value:
                    website_url:
                      - Enter a valid URL.
                DataLocationFixed:
                  summary: >-
                    Другое расположение данных, отличное от собственного
                    расположения приложения
                  value:
                    data_location:
                      - >-
                        An application's data location can't be changed after it
                        is created.
                DataLocationNotAvailable:
                  summary: Локация данных скоро появится
                  value:
                    data_location:
                      - This data location is not available yet.
        '401':
          description: >-
            Токен доступа некорректен, недействителен или истёк. Получите новый
            с помощью `POST /programmatic/login/`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              examples:
                InvalidToken:
                  value:
                    detail: Invalid access token
                ExpiredToken:
                  value:
                    detail: Expired access token
        '403':
          description: >-
            Вы не можете обновлять это приложение. Участник организации, не
            являющийся владельцем или администратором, получает `Only
            organization owners and admins can manage applications.` Владелец
            или администратор, чей доступ к организации приостановлен, получает
            `Your access to this organization is suspended.` Запрос без
            заголовка `Authorization` получает `You do not have permission to
            perform this action.`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              examples:
                NotOwnerOrAdmin:
                  summary: Участник, не являющийся владельцем или администратором
                  value:
                    detail: >-
                      Only organization owners and admins can manage
                      applications.
                Suspended:
                  summary: Членство приостановлено
                  value:
                    detail: Your access to this organization is suspended.
                MissingToken:
                  summary: Отсутствует заголовок Authorization
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Организация не существует, вы не являетесь ее участником либо
            приложение не существует в этой организации.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              examples:
                OrganizationNotFound:
                  summary: Организация не найдена, или вы не являетесь её участником
                  value:
                    detail: Organization not found.
                ApplicationNotFound:
                  summary: Такое приложение отсутствует в этой организации
                  value:
                    detail: Application not found.
        '503':
          description: >-
            Только когда при обновлении выбирается другое расположение данных
            для продакшн-приложения, созданного вместе с вашей организацией:
            Didit не удалось подтвердить, что приложение пока не содержит сессий
            верификации, поэтому изменения не были внесены. Повторите запрос.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailableError'
              examples:
                DataLocationCheckUnavailable:
                  value:
                    detail: >-
                      We couldn't confirm that this application is unused. Try
                      again in a moment.
                    code: data_location_check_unavailable
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: >-
            curl -X PATCH
            "https://apx.didit.me/auth/v2/organizations/me/$ORG_ID/applications/$APP_ID/"
            \
              -H "Authorization: Bearer $ACCESS_TOKEN" \
              -H "Content-Type: application/json" \
              -d '{
                "name": "Acme Production App",
                "website_url": "https://app.acme.example"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Use the access token that account.login returns.
            client = Didit(account_token="YOUR_ACCESS_TOKEN")

            result = client.account.applications.update(
                "a1b2c3d4-5678-90ab-cdef-111111111111",
                "b2c3d4e5-6789-01bc-defg-222222222222",
                name="Acme Production App",
                website_url="https://app.acme.example",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Use the access token that account.login returns.
            const didit = new Didit({ accountToken: "YOUR_ACCESS_TOKEN" });

            const result = await didit.account.applications.update(
              "a1b2c3d4-5678-90ab-cdef-111111111111",
              "b2c3d4e5-6789-01bc-defg-222222222222",
              {
                name: "Acme Production App",
                website_url: "https://app.acme.example",
              },
            );
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Use the access token that account.login returns.\nclient := didit.NewClient(option.WithAccountToken(\"YOUR_ACCESS_TOKEN\"))\n\nresult, err := client.Account.Applications.Update(ctx, \"a1b2c3d4-5678-90ab-cdef-111111111111\", \"b2c3d4e5-6789-01bc-defg-222222222222\", didit.ApplicationUpdateRequest{\n\tName:       didit.String(\"Acme Production App\"),\n\tWebsiteURL: didit.String(\"https://app.acme.example\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.ApplicationUpdateRequest;


            // Use the access token that account.login returns.

            Didit client =
            Didit.builder().accountToken("YOUR_ACCESS_TOKEN").build();


            var result =
            client.account().applications().update("a1b2c3d4-5678-90ab-cdef-111111111111",
            "b2c3d4e5-6789-01bc-defg-222222222222",
            ApplicationUpdateRequest.builder()
                    .name("Acme Production App")
                    .websiteUrl("https://app.acme.example")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Use the access token that account.login returns.

            $didit = new DiditClient(accountToken: 'YOUR_ACCESS_TOKEN');


            $result =
            $didit->account->applications->update('a1b2c3d4-5678-90ab-cdef-111111111111',
            'b2c3d4e5-6789-01bc-defg-222222222222', [
                'name' => 'Acme Production App',
                'website_url' => 'https://app.acme.example',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Use the access token that account.login returns.
            didit = Didit::Client.new(account_token: "YOUR_ACCESS_TOKEN")

            result = didit.account.applications.update(
              "a1b2c3d4-5678-90ab-cdef-111111111111",
              "b2c3d4e5-6789-01bc-defg-222222222222",
              name: "Acme Production App",
              website_url: "https://app.acme.example"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Use the access token that account.login returns.

            using var client = new DiditClient(new DiditClientOptions {
            AccountToken = "YOUR_ACCESS_TOKEN" });


            var result = await
            client.Account.Applications.UpdateAsync("a1b2c3d4-5678-90ab-cdef-111111111111",
            "b2c3d4e5-6789-01bc-defg-222222222222", new ApplicationUpdateRequest

            {
                Name = "Acme Production App",
                WebsiteUrl = "https://app.acme.example",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    ApplicationUpdateRequest:
      type: object
      description: >-
        Тело запроса PATCH для метаданных приложения. Передавайте только те
        поля, которые хотите изменить; пропущенные поля сохраняются. Поля
        `uuid`, `client_id` и `api_key` нельзя обновить. Поле `products`
        доступно только для чтения: ключ `products` в теле запроса игнорируется.
        Поле `data_location` нельзя изменить после создания приложения: указание
        уже заданного расположения принимается, а любое другое вернёт 400.
        Единственным исключением является продакшн-приложение, созданное вместе
        с вашей организацией: первое обновление, задающее `data_location`,
        однократно выбирает его при условии, что ни один API-ключ приложения ещё
        не использовался и у него нет сессий верификации.
      properties:
        name:
          type: string
          description: Отображаемое имя приложения.
          example: Acme Production App
        website_url:
          type: string
          description: URL веб-сайта или приложения, связанный с этим приложением.
          example: https://app.acme.example
        redirect_uris:
          type: array
          items:
            type: string
          description: >-
            Разрешённые URI перенаправления для потоков перенаправления OAuth и
            верификации.
          example:
            - https://acme.example/callback
        terms_url:
          type: string
          description: URL условий использования, отображаемый в процессе верификации.
        privacy_url:
          type: string
          description: >-
            URL политики конфиденциальности, отображаемый в процессе
            верификации.
        description:
          type: string
          description: Внутреннее описание приложения.
        data_location:
          $ref: '#/components/schemas/ApplicationDataLocation'
    Application:
      type: object
      description: >-
        Полная запись приложения. `uuid`, `client_id` и `api_key` никогда не
        меняются после создания. `data_location` также не меняется, за
        исключением одного раза для продакшн-приложения, созданного вместе с
        вашей организацией, до начала его использования (см. запрос на
        обновление).
      properties:
        uuid:
          type: string
          format: uuid
          description: UUID приложения. Используйте как `{app_id}` в последующих вызовах.
          example: b2c3d4e5-6789-01bc-defg-222222222222
        name:
          type: string
          description: Отображаемое имя приложения, показываемое в консоли Didit.
          example: Acme Production App
        client_id:
          type: string
          description: >-
            Публичный идентификатор клиента, безопасный для встраивания в
            сценарии авторизации наподобие OAuth.
          example: S9LIYGSoWNuGMLHsvEt9dQ
        api_key:
          type: string
          description: >-
            Долгоживущий секрет (также называемый `client_secret`). Используйте
            в качестве заголовка `x-api-key` для каждого вызова к
            `https://verification.didit.me/v3/...` (сессии, сценарии, AML и т.
            д.). Относитесь к нему как к конфиденциальным данным; никогда не
            раскрывайте на стороне клиента. Новые ключи начинаются с `sk_live_`
            (продакшн-приложение) или `sk_test_` (приложение в песочнице), за
            которыми следуют 43 URL-безопасных символа (буквы, цифры, `-` и
            `_`). Ключи, созданные до ввода этого формата, не имеют префикса и
            продолжают работать без изменений. В течение 72 часов после
            восстановления аккаунта запросы на получение списка, просмотр и
            обновление возвращают здесь пустую строку вместо ключа.
          example: sk_live_example_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        website_url:
          type: string
          nullable: true
          description: URL веб-сайта или приложения, связанный с этим приложением.
          example: https://acme.example
        redirect_uris:
          type: array
          items:
            type: string
          description: >-
            Разрешённые URI перенаправления для потоков перенаправления OAuth и
            верификации.
          example:
            - https://acme.example/callback
        terms_url:
          type: string
          nullable: true
          description: URL условий использования, отображаемый в процессе верификации.
          example: https://acme.example/terms
        privacy_url:
          type: string
          nullable: true
          description: >-
            URL политики конфиденциальности, отображаемый в процессе
            верификации.
          example: https://acme.example/privacy
        description:
          type: string
          nullable: true
          description: >-
            Внутреннее описание приложения (не отображается конечным
            пользователям).
        created_at:
          type: string
          format: date-time
          example: '2025-06-01T10:00:00Z'
        data_location:
          $ref: '#/components/schemas/ApplicationDataLocation'
        products:
          type: array
          readOnly: true
          description: >-
            Продукты приложения. Всегда все три в следующем порядке: `identity`,
            `transactions`, `authentication`. В новом приложении включён продукт
            `identity` со всеми активными модулями, а `transactions` и
            `authentication` отключены. Только для чтения: ключ `products` в
            теле создания или обновления игнорируется.
          items:
            $ref: '#/components/schemas/ApplicationProduct'
          example:
            - product: identity
              status: enabled
              modules:
                user_verification: true
                business_verification: true
                case_management: true
            - product: transactions
              status: disabled
              modules:
                travel_rule: true
                case_management: true
            - product: authentication
              status: disabled
              modules: {}
    ValidationError:
      description: >-
        Тело ошибки валидации. Предполагаемый формат обёртки представляет собой
        словарь `{field: ["message", ...]}` для ошибок на уровне полей или
        одноключевую обёртку `{detail: "..."}` для ошибок бизнес-правил.
        Некоторые валидаторы (стойкость пароля при регистрации, действительность
        кода при verify-email) в настоящее время возвращают простой массив
        `["message"]` (известная несогласованность на стороне сервера). Схема
        ниже сохраняет эту ветку с простым массивом, чтобы клиентский код,
        сгенерированный из этой спецификации, мог десериализовать текущие
        ответы, однако новому клиентскому коду следует обрабатывать её в формате
        с ключом соответствующего поля (`{password: [...]}` или `{code:
        [...]}`), и контракт сервера со временем придёт к этому виду.
      oneOf:
        - type: object
          additionalProperties:
            type: array
            items:
              type: string
          example:
            email:
              - Enter a valid email address.
        - type: object
          properties:
            detail:
              type: string
          example:
            detail: An account with this email already exists.
        - type: array
          items:
            type: string
          example:
            - Invalid or expired verification code.
    AuthError:
      type: object
      description: Оболочка ошибки аутентификации, авторизации или отсутствия ресурса.
      properties:
        detail:
          type: string
          example: Invalid access token
    ServiceUnavailableError:
      type: object
      description: >-
        Не удалось выполнить запрос прямо сейчас, никакие изменения не внесены.
        Повторите попытку через некоторое время.
      properties:
        detail:
          type: string
          example: >-
            We couldn't confirm that this application is unused. Try again in a
            moment.
        code:
          type: string
          example: data_location_check_unavailable
    ApplicationDataLocation:
      type: string
      enum:
        - eu
        - au
        - mx
      description: >-
        Место хранения и обработки данных верификации приложения выбирается при
        создании приложения. `eu`: Европейский союз (Ирландия), по умолчанию.
        `au` (Австралия, Сидней) и `mx` (Мексика) станут доступны в ближайшее
        время: запрос с их указанием возвращает 400 `This data location is not
        available yet.` Приложение песочницы организации всегда располагается в
        Европейском союзе.
      example: eu
    ApplicationProduct:
      type: object
      description: >-
        Один продукт приложения и его состояние. Только для чтения: endpoints
        приложения возвращают его и игнорируют в теле запроса.
      properties:
        product:
          type: string
          enum:
            - identity
            - transactions
            - authentication
          description: >-
            `identity` (Верификация личности), `transactions` (Мониторинг
            транзакций) или `authentication` (Аутентификация).
          example: identity
        status:
          type: string
          enum:
            - enabled
            - early_access
            - disabled
          description: >-
            Включён ли продукт для этого приложения. `early_access` применяется
            только к `authentication`, которую Didit включает для вас.
          example: enabled
        modules:
          type: object
          additionalProperties:
            type: boolean
          description: >-
            Переключатели модулей продукта, каждый со значением `true` или
            `false`. `identity` включает `user_verification`,
            `business_verification` и `case_management`. `transactions` включает
            `travel_rule` и `case_management`. `authentication` не содержит
            модулей (`{}`). `case_management` представляет собой одну настройку,
            отображаемую как в `identity`, так и в `transactions`, поэтому она
            имеет одинаковое значение в обоих разделах.
          example:
            user_verification: true
            business_verification: true
            case_management: true
      required:
        - product
        - status
        - modules
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Подписанный по алгоритму RS256 JWT `access_token`, возвращаемый вызовами
        `POST /programmatic/login/` или `POST /programmatic/verify-email/`.
        Передавайте как `Authorization: Bearer <access_token>`. Срок действия по
        умолчанию составляет 86400 секунд (24 часа). Этот token действителен
        только для endpoints управления аккаунтом на `apx.didit.me/auth/v2`. API
        верификации (`verification.didit.me/v3`) использует вместо него
        долгоживущий `api_key` в заголовке `x-api-key`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.