> ## 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.

# Поиск по каталогу VASP: маршруты Travel Rule

> Didit: поиск по каталогу VASP Travel Rule и сети Didit с фильтрами и маршрутами, которые вашему приложению нужны для каждого VASP.



Промпт API поиска в справочнике VASP
        Скопировать промпт в буфер обмена



      
      

\<pre>

\`Search the VASP directory Didit routes outbound Travel Rule transfers with: the shared directory entries plus the members of the Didit network, each with the routes my application has to it today.

Endpoint:
GET https://verification.didit.me/v3/travel-rule/vasps/?search=<term>

Authentication:
Use the x-api-key header with my Didit API key.

Query parameters (all optional):
\- search - a name or alias fragment, an exact LEI, or a domain (example.com or a URL on it).
\- network - GTR, TRUST, VERIFYVASP, SYGNA or TRISA: only entries that network's member directory currently lists.
\- jurisdiction - ISO 3166 alpha-2 or alpha-3 country code.
\- reachable - true: only VASPs my application has an available route to; false: only entries it cannot reach today.
\- kind - directory (shared entries) or didit (Didit network members).
\- risk - LOW, MEDIUM or HIGH: only directory entries whose risk_level is that band.
\- responsiveness - RESPONSIVE, UNRESPONSIVE or UNKNOWN: only directory entries with that responsiveness.status.
Didit network members are not scored, so risk and responsiveness return directory entries only.
\- limit (default 50) / offset - pagination; count/next/previous describe the page window.
An unknown network, country code, risk band or responsiveness status answers 400 naming the field.

What to read from each result:
\- id - use it with GET /v3/travel-rule/vasps/{vasp_id}/.
\- kind, name, lei, jurisdiction, domains, aliases - who the VASP is and the other names it is found by.
\- routes[] - {rail, status, reason, via} in the order dispatch tries them. status is available or unavailable; an unavailable network route carries reason no_membership or network_switched_off and is never a way to reach the VASP. reachable is true when at least one route is available. On a sandbox application every route is unavailable with reason sandbox_application (sandbox sends only to the Didit Test VASP), every row has reachable false, and reachable=true returns no rows.
\- networks[] - the network member directories that list the VASP, with its code there. A TRISA listing is never a route: Didit has no TRISA rail.
\- umbrella / entities[] - a brand and the regulated entities that receive its transfers. A transfer naming the brand goes to the entity in the jurisdiction it states (beneficiary_data.counterparty_vasp_jurisdiction); two entities that fit equally are never guessed between, so without a route of the brand's own it is COUNTERPARTY_VASP_NOT_FOUND.
\- contacts[] - compliance contacts the EMAIL rail writes to: scope platform (curated by Didit or learned from an answered request) or application (private to my application).
\- dd_score (0-100, higher is safer: dd_score_semantic is always higher_is_safer) and risk_level (LOW at 70 or more, MEDIUM 40-69, HIGH below 40) - the shared due-diligence assessment of a directory entry. Didit network members are not scored: dd_score is null and risk_level empty.
\- dd_score_breakdown - {component: {points, max, reason, detail}} for jurisdiction, verification, protocol, lei, history, essentials and responsiveness.
\- responsiveness - {status, answered, total, computed_at}: RESPONSIVE, UNRESPONSIVE (answered less than 10 percent of at least 5 decided requests in the last 90 days) or UNKNOWN.
\- essential_checks - {level, checked_at, checks[{id, status, reason, detail}], passed, failed, unknown, total} for registration, licence, domain and lei. Empty until first checked.
\- decision, entity_screening, questionnaires[] - my application's own decision (APPROVED, RESTRICTED or BLOCKED), latest sanctions screening and due-diligence questionnaires on the VASP. Private to my application: no other customer sees them.

Didit network members are other Didit customers with a live application, Travel Rule on, a discoverable profile with a legal name and a confirmed compliance email, reached on the INTERNAL rail. Network routes need a membership: mine (connected in the Marketplace) or Didit's, and Didit's own memberships are not live yet.

My own VASP profile never appears in my own results.

Full guide: /transaction-monitoring/travel-rule#directory.`

\</pre>



      
      

Вставьте в



## OpenAPI

````yaml ru/openapi-25.json GET /v3/travel-rule/vasps/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: >-
    API верификации личности. Аутентификация выполняется с помощью заголовка
    x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/vasps/:
    get:
      tags:
        - Travel Rule
      summary: Поиск по справочнику VASP
      description: >-
        Поиск по каталогу VASP с пагинацией и сортировкой по названию: общие
        записи каталога, которые Didit формирует на основе временного реестра
        MiCA от ESMA, публичного каталога TRISA, глобального реестра LEI и
        собственной модерации, а также участников сети Didit. Каждая строка
        содержит маршруты, доступные вашему приложению на сегодняшний день.
        Профиль вашего собственного приложения никогда не отображается в списке.
        Строки также содержат общую оценку надлежащей проверки (due diligence) и
        собственное решение вашего приложения, скрининг юридических лиц и
        анкеты.
      operationId: listTravelRuleVasps
      parameters:
        - name: search
          in: query
          schema:
            type: string
            maxLength: 255
          description: >-
            Фрагмент имени или псевдонима (без учёта регистра), точный LEI или
            домен (example.com или URL на нём). Участники сети Didit
            сопоставляются по юридическому наименованию, LEI или домену адреса
            электронной почты комплаенс-отдела.
        - name: network
          in: query
          schema:
            type: string
            enum:
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
              - TRISA
          description: >-
            Только записи справочника, которые в данный момент указаны в
            каталоге участников сети.
        - name: jurisdiction
          in: query
          schema:
            type: string
          description: >-
            Двухбуквенный (alpha-2) или трехбуквенный (alpha-3) код страны по
            стандарту ISO 3166. Для любых других значений возвращается 400.
        - name: reachable
          in: query
          schema:
            type: boolean
          description: >-
            true: только VASP, до которых у вашего приложения есть доступный
            маршрут (включая участников сети Didit). false: только записи
            справочника, недоступные в настоящее время.
        - name: kind
          in: query
          schema:
            type: string
            enum:
              - directory
              - didit
          description: Только записи справочника или только участники сети Didit.
        - name: risk
          in: query
          schema:
            type: string
            enum:
              - LOW
              - MEDIUM
              - HIGH
          description: >-
            Только записи справочника, у которых risk_level относится к этому
            диапазону. Участники сети Didit, для которых скоринг не проводится,
            никогда не соответствуют этому условию.
        - name: responsiveness
          in: query
          schema:
            type: string
            enum:
              - RESPONSIVE
              - UNRESPONSIVE
              - UNKNOWN
          description: >-
            Только записи справочника, у которых responsiveness.status равен
            этому значению. Участники сети Didit никогда не соответствуют этому
            условию.
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
            minimum: 0
      responses:
        '200':
          description: Результаты каталога VASP с пагинацией, отсортированные по названию.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    nullable: true
                  previous:
                    type: string
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/VaspDirectoryEntry'
        '400':
          description: >-
            Недопустимый фильтр: в теле ответа указано каждое поле, например
            неизвестная сеть, код страны, диапазон риска или статус
            отзывчивости.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
              example:
                jurisdiction:
                  - Use an ISO 3166 alpha-2 or alpha-3 country code.
                network:
                  - '"SWIFT" is not a valid choice.'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/travel-rule/vasps/?search=counterparty&reachable=true'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.travel_rule.list_vasps():
                print(item)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            for await (const item of didit.travelRule.listVasps()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.TravelRule.ListVASPsAutoPaging(ctx, didit.TravelRuleListVASPsParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            for (var item : client.travelRule().listVasps()) {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            foreach ($didit->travelRule->listVasps() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            didit.travel_rule.list_vasps.auto_paging_each do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            await foreach (var item in await client.TravelRule.ListVaspsAsync())
            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    VaspDirectoryEntry:
      type: object
      description: >-
        VASP из справочника или участник сети Didit с маршрутами, доступными
        вашему приложению к нему. Клиент является участником сети Didit только
        тогда, когда его приложение находится в продакшене, Travel Rule включён,
        его профиль доступен для поиска, указаны юридическое наименование и
        подтверждённый комплаенс-email, а Didit не пометил приложение как
        тестовое, демонстрационное или внутреннее. Каждая строка также содержит
        общую оценку комплексной проверки (dd_score, risk_level, responsiveness,
        essential_checks) и собственные решение, скрининг сущностей и анкеты
        вашего приложения, которые не видит ни один другой клиент.
      properties:
        id:
          type: string
          format: uuid
          description: Идентификатор записи для GET /v3/travel-rule/vasps/{vasp_id}/.
        kind:
          type: string
          enum:
            - directory
            - didit
          description: >-
            directory для записи из общего каталога; didit для участника сети
            Didit.
        name:
          type: string
        lei:
          type: string
        jurisdiction:
          type: string
          description: >-
            Код страны ISO 3166 в том виде, в котором его предоставляет
            источник.
        domains:
          type: array
          items:
            type: string
          description: Веб-домены VASP. Всегда пусто для участников сети Didit.
        reachable:
          type: boolean
          description: >-
            Есть ли у вашего приложения доступный маршрут к этому VASP или к
            одному из его юридических лиц для бренда. Всегда true для участника
            сети Didit, за исключением приложения в песочнице, где каждая строка
            равна false.
        aliases:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              kind:
                type: string
                enum:
                  - trading_name
                  - other_legal_name
                  - network_name
                  - attribution
                  - merged
                  - staff
                description: >-
                  trading_name, other_legal_name (из глобального реестра LEI),
                  network_name (название в сети Travel Rule), attribution
                  (название организации, присвоенное кошелькам VASP
                  блокчейн-аналитикой), merged (название дублирующей записи,
                  объединённой с этой) или staff.
          description: Другие наименования, по которым можно найти VASP.
        networks:
          type: array
          items:
            type: object
            description: >-
              Текущая запись этого VASP в справочнике участников сети Travel
              Rule. Запись TRISA указывает, кем является VASP в TRISA; у Didit
              нет транспорта TRISA, поэтому он никогда не является маршрутом.
            properties:
              network:
                type: string
                enum:
                  - GTR
                  - TRUST
                  - VERIFYVASP
                  - SYGNA
                  - TRISA
              code:
                type: string
                description: Идентификатор VASP в этой сети.
              listed_name:
                type: string
                description: Наименование, под которым сеть указывает VASP.
              country:
                type: string
                description: Страна, указанная сетью, если она предоставлена.
              verified_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Когда сотрудники Didit верифицировали запись. Null для
                  записей, прочитанных из публичного справочника.
              last_seen_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Время последнего отображения записи источником. Запись,
                  которую источник не отображает в течение трёх недель,
                  удаляется.
              source:
                type: string
                enum:
                  - trisa_directory
                  - staff
                description: 'Источник записи: публичный каталог TRISA или сотрудники Didit.'
        routes:
          type: array
          items:
            type: object
            description: >-
              Один из способов передачи данных Travel Rule этому VASP вашим
              приложением в порядке попыток отправки. Для сетевого маршрута
              требуется членство в этой сети: ваше собственное (подключённое в
              Marketplace) или Didit, когда Didit его получит. Без него маршрут
              отображается как недоступный с указанием причины и никогда не
              предлагается как способ связаться с VASP.
            properties:
              rail:
                type: string
                enum:
                  - INTERNAL
                  - TRP
                  - GTR
                  - TRUST
                  - VERIFYVASP
                  - SYGNA
                  - EMAIL
              status:
                type: string
                enum:
                  - available
                  - unavailable
              reason:
                type: string
                enum:
                  - ''
                  - no_membership
                  - network_switched_off
                  - sandbox_application
                description: >-
                  Причина, по которой недоступный маршрут не может быть
                  использован: no_membership (ни у вас, ни у Didit нет участия в
                  этой сети), network_switched_off (вы отключили эту сеть в
                  настройках) или sandbox_application (приложение в песочнице
                  отправляет данные только в Didit Test VASP, поэтому маршруты
                  для него недоступны). Пусто, если маршрут доступен.
              via:
                type: string
                enum:
                  - ''
                  - own_membership
                  - didit_membership
                  - directory
                  - contact
                  - didit_network
                description: >-
                  Способ достижения доступного маршрута: own_membership или
                  didit_membership для сетевого канала, directory для
                  проверенного каталогом TRP endpoint, contact для EMAIL-канала,
                  didit_network для участника сети Didit. Пусто, если маршрут
                  недоступен.
        umbrella:
          type: object
          nullable: true
          description: >-
            Бренд, регулируемым субъектом которого является эта запись. Null,
            если она не входит в его состав.
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        entities:
          type: array
          items:
            type: object
            description: >-
              Регулируемая организация бренда: юридическое лицо, принимающее
              перевод.
            properties:
              id:
                type: string
                format: uuid
              name:
                type: string
              lei:
                type: string
              jurisdiction:
                type: string
              reachable:
                type: boolean
                description: Есть ли у вашего приложения доступный маршрут к нему.
          description: >-
            Для бренда: регулируемые организации, принимающие его переводы.
            Перевод с указанием бренда направляется доступной организации в
            указанной в нём юрисдикции
            (beneficiary_data.counterparty_vasp_jurisdiction), иначе
            организации, связанной с кошельком назначения атрибуцией
            блокчейн-аналитики, иначе единственной доступной организации, если
            юрисдикция не указана. Выбор между двумя одинаково подходящими
            организациями никогда не делается наугад.
        contacts:
          type: array
          items:
            type: object
            description: >-
              Комплаенс-контакт, на который может отправлять сообщения транспорт
              EMAIL.
            properties:
              id:
                type: string
                format: uuid
              email:
                type: string
                format: email
              name:
                type: string
              source:
                type: string
                enum:
                  - staff
                  - application
                  - learned
                description: >-
                  staff: курируется Didit; application: добавлен вашим
                  приложением; learned: адрес, ответивший на запрос Travel Rule
                  по ссылке для ответа.
              scope:
                type: string
                enum:
                  - platform
                  - application
                description: >-
                  platform: контакты используются для переводов каждого клиента
                  Didit; application: контакты приватны для вашего приложения, и
                  оно видит только свои.
              verified_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Когда кто-либо по этому адресу ответил на запрос. Null, если
                  ответа ещё не было.
          description: Контакты платформы для этого VASP и контакты вашего приложения.
        dd_status:
          type: string
          enum:
            - NOT_STARTED
            - IN_PROGRESS
            - COMPLETED
            - REJECTED
          description: >-
            Статус верификации записи в Didit, оцениваемый верификационным
            компонентом dd_score. Всегда COMPLETED для участника сети Didit.
        dd_score:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            Общая оценка комплексной проверки благонадёжности записи каталога,
            от 0 до 100, где более высокое значение означает большую
            безопасность (см. dd_score_semantic): сумма баллов в
            dd_score_breakdown. Null для участника сети Didit, который не
            оценивается. Для записи, которая ещё не была оценена (dd_assessed_at
            имеет значение null), отображается 0 с пустым risk_level, поэтому
            ориентируйтесь на risk_level, а не на исходную оценку.
        reachable_rails:
          type: array
          items:
            type: string
            enum:
              - INTERNAL
              - TRP
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
              - EMAIL
          description: >-
            Каналы, зафиксированные в записи. Прочитайте маршруты, чтобы узнать,
            что ваше приложение может использовать на сегодняшний день.
        is_didit_customer:
          type: boolean
          description: >-
            true для участника сети Didit (для них dd_status всегда равен
            COMPLETED, dd_score равен null, а risk_level пуст) и для записи
            справочника, привязанной к клиенту Didit.
        dd_score_breakdown:
          type: object
          description: >-
            Один объект на каждый компонент dd_score. Компоненты, их вес (макс.)
            и коды причин: jurisdiction, 25 (jurisdiction_not_high_risk,
            jurisdiction_high_risk, jurisdiction_unknown); verification, 15
            (dd_status_completed, dd_status_in_progress, dd_status_not_started,
            dd_status_rejected); protocol, 15 (native_rail, email_only,
            no_rail); lei, 10 (lei_valid, lei_missing); history, 10 (history,
            no_history); essentials, 15 (essential_checks, no_essential_checks);
            responsiveness, 10 (responsive, unresponsive,
            responsiveness_unknown). Пусто для участника сети Didit.
          additionalProperties:
            type: object
            properties:
              points:
                type: number
                description: >-
                  Баллы, начисленные за этот компонент, с округлением до одного
                  десятичного знака.
              max:
                type: integer
                description: 'Вес компонента: баллы, которые он вносит в лучшем случае.'
              reason:
                type: string
                description: Машиночитаемый код вердикта компонента.
              detail:
                type: string
                description: Однострочное объяснение на английском языке.
        dd_assessed_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Когда в последний раз рассчитывались dd_score, risk_level и
            responsiveness: после того, как обмен с этой записью завершается,
            оканчивается, истекает, не совпадает или отклоняется, когда Didit
            обновляет или систематизирует запись, а также при еженедельном
            обновлении каталога. Null для участника сети Didit.
        dd_score_semantic:
          type: string
          enum:
            - higher_is_safer
          description: 'Направление интерпретации dd_score: всегда higher_is_safer.'
        risk_level:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
            - ''
          description: >-
            Диапазон, в который попадает dd_score: LOW (70 или выше), MEDIUM (от
            40 до 69) или HIGH (ниже 40). Не заполнено для участников сети Didit
            и записей, которые ещё не были оценены. Фильтруйте по нему с помощью
            risk. Ваша собственная отметка в скрининге никогда не меняет это
            общее значение: вместо этого она устанавливает
            counterparty_risk_level в HIGH в ваших правилах.
        responsiveness:
          type: object
          description: >-
            Отвечает ли VASP на запросы Travel Rule: доля запросов,
            инициированных клиентами Didit в его адрес за последние 90 дней, на
            которые он ответил. Учитываются только запросы, отправленные через
            сеть или протокольный канал, либо по электронной почте на общий
            адрес (комплаенс-адрес записи или контакт платформы); запрос,
            отправленный на адрес, введённый клиентом вручную, или личному
            контакту клиента, не учитывается никогда. Запрос с истекшим сроком
            действия считается оставшимся без ответа; завершённый обмен данными,
            отказ или несоответствие данных считаются ответом; отменённый запрос
            или недоступный канал не считаются ни тем, ни другим. Всегда UNKNOWN
            с нулевыми счётчиками для участника сети Didit.
          properties:
            status:
              type: string
              enum:
                - RESPONSIVE
                - UNRESPONSIVE
                - UNKNOWN
              description: >-
                UNKNOWN при менее чем 5 запросах, по которым принято решение, за
                период; UNRESPONSIVE, если ответ был дан менее чем на 10
                процентов из них; в остальных случаях RESPONSIVE.
            answered:
              type: integer
              description: Решённые запросы за период, на которые VASP ответил.
            total:
              type: integer
              description: 'Решённые запросы за период: получившие ответ плюс истёкшие.'
            computed_at:
              type: string
              format: date-time
              nullable: true
        essential_checks:
          type: object
          description: >-
            Отчёт об основных проверках записи каталога, сформированный
            исключительно на основе верифицированных платформой источников:
            регистрация (официальный реестр содержит VASP: временный реестр MiCA
            ЕС, публичный каталог TRISA или глобальный реестр LEI), лицензия
            (авторизация MiCA зафиксирована и действительна), домен (домен
            записи совпадает с её endpoint TRP или сайтом, указанным в реестре)
            и LEI (запись LEI активна, выпущена и соответствует наименованиям и
            стране записи). Компонент essentials в dd_score представляет собой
            долю успешно пройденных проверок среди завершённых. Поле пусто до
            тех пор, пока еженедельное обновление каталога впервые не проверит
            запись, и всегда пусто для участников сети Didit.
          properties:
            level:
              type: string
              enum:
                - essential
            checked_at:
              type: string
              format: date-time
            checks:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    enum:
                      - registration
                      - licence
                      - domain
                      - lei
                  status:
                    type: string
                    enum:
                      - pass
                      - fail
                      - unknown
                    description: >-
                      unknown, если ни один из зарегистрированных источников не
                      может вынести решение по проверке.
                  reason:
                    type: string
                    description: Машиночитаемый код вердикта.
                  detail:
                    type: string
                    description: Однострочное объяснение на английском языке.
            passed:
              type: integer
            failed:
              type: integer
            unknown:
              type: integer
            total:
              type: integer
        decision:
          allOf:
            - $ref: '#/components/schemas/TravelRuleCounterpartyDecision'
          nullable: true
          description: >-
            Решение вашего приложения по этому VASP или, для сущности без
            собственного решения, решение её бренда (inherited_from указывает
            бренд). Null, если решения нет. Доступно только вашему приложению.
        entity_screening:
          allOf:
            - $ref: '#/components/schemas/TravelRuleCounterpartyScreening'
          nullable: true
          description: >-
            Последний скрининг по санкциям и негативным публикациям в СМИ для
            этого VASP в вашем приложении. Null, если вы никогда не проводили
            его скрининг. Доступно только вашему приложению.
        questionnaires:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleCounterpartyQuestionnaire'
          description: >-
            Анкеты комплексной проверки вашего приложения с этим VASP, сначала
            новые. Доступно только вашему приложению.
      example:
        id: 0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91
        kind: directory
        name: Example Counterparty VASP
        lei: 529900EXAMPLECPTY001
        jurisdiction: DE
        domains:
          - counterparty.example
        reachable: true
        aliases:
          - name: Example Counterparty
            kind: trading_name
        networks:
          - network: GTR
            code: EXAMPLE01
            listed_name: Example Counterparty VASP
            country: DE
            verified_at: '2026-10-12T09:30:00Z'
            last_seen_at: '2026-10-12T09:30:00Z'
            source: staff
        routes:
          - rail: GTR
            status: unavailable
            reason: no_membership
            via: ''
          - rail: EMAIL
            status: available
            reason: ''
            via: contact
        umbrella: null
        entities: []
        contacts:
          - id: 6c1f9b8e-2d4a-4f7e-8b3c-5a9d0e1f2a3b
            email: travelrule@counterparty.example
            name: Travel Rule desk
            source: staff
            scope: platform
            verified_at: null
        dd_status: NOT_STARTED
        dd_score: 62
        dd_score_breakdown:
          jurisdiction:
            points: 25
            max: 25
            reason: jurisdiction_not_high_risk
            detail: DEU is not on the high-risk jurisdiction list
          verification:
            points: 3.8
            max: 15
            reason: dd_status_not_started
            detail: due diligence status NOT_STARTED
          protocol:
            points: 6
            max: 15
            reason: email_only
            detail: reachable over the email fallback only
          lei:
            points: 10
            max: 10
            reason: lei_valid
            detail: valid LEI on record
          history:
            points: 5
            max: 10
            reason: no_history
            detail: no exchange history
          essentials:
            points: 7.5
            max: 15
            reason: no_essential_checks
            detail: no decided essential check yet
          responsiveness:
            points: 5
            max: 10
            reason: responsiveness_unknown
            detail: 0 decided recent requests, too few to judge
        dd_assessed_at: '2026-10-12T09:30:00Z'
        dd_score_semantic: higher_is_safer
        risk_level: MEDIUM
        responsiveness:
          status: UNKNOWN
          answered: 0
          total: 0
          computed_at: '2026-10-12T09:30:00Z'
        essential_checks: {}
        reachable_rails:
          - GTR
          - EMAIL
        is_didit_customer: false
        decision:
          decision: APPROVED
          reason: Licensed in DE, questionnaire reviewed
          decided_by: ''
          updated_at: '2026-10-14T10:05:00Z'
          inherited_from: null
        entity_screening:
          id: 7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d
          status: Approved
          total_hits: 0
          score: null
          screened_at: '2026-10-14T09:58:00Z'
          fresh: true
          flagged: false
        questionnaires:
          - id: 8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d
            status: ANSWERED
            form_version: '1'
            sent_to: travelrule@counterparty.example
            sent_at: '2026-09-02T08:00:00Z'
            expires_at: '2026-10-02T08:00:00Z'
            answered_at: '2026-09-04T15:20:00Z'
            valid_until: '2027-09-04T15:20:00Z'
            current: true
            answers:
              legal_name: >-
                Example Counterparty VASP, incorporated in the example
                jurisdiction.
              licensing: >-
                Crypto-asset service provider authorised under MiCA by its
                national regulator, licence active.
              jurisdictions: EU and EEA. We do not serve the United States.
              aml_program: >-
                Written AML/CFT policy, annual independent review, last
                completed in March 2026.
              compliance_officer: >-
                Head of Compliance, reachable at
                compliance@counterparty.example.
              sanctions_screening: >-
                Customers at onboarding and daily; counterparties on every
                transfer.
              transaction_monitoring: >-
                Rule-based monitoring with analyst review; suspicious activity
                reports filed with the FIU.
              travel_rule: TRP and email; we answer requests within one business day.
              custody: >-
                Segregated customer wallets held with a qualified custodian,
                insured.
              ownership: >-
                No shareholder holds 25 percent or more; parent company Example
                Holding Group.
              record_keeping: >-
                Five-year record-keeping for Travel Rule and transaction data,
                as our regulator requires.
              data_protection: Encrypted at rest and in transit, stored in the EU.
    TravelRuleCounterpartyDecision:
      type: object
      description: >-
        Решение вашего приложения по VASP-контрагенту. Доступно только вашему
        приложению: оно никогда не изменяет общую запись каталога, и другой
        клиент никогда его не увидит. Оно действует только через ваши правила
        транзакций (поле правила counterparty_dd_status и пресеты
        travel-rule-counterparty-blocked и travel-rule-counterparty-restricted);
        оно никогда не меняет маршрутизацию перевода.
      properties:
        decision:
          type: string
          enum:
            - APPROVED
            - RESTRICTED
            - BLOCKED
          description: >-
            APPROVED: ваша команда подтвердила контрагента. RESTRICTED: переводы
            в его адрес могут быть выполнены после проверки. BLOCKED: ваша
            команда отклонила его.
        reason:
          type: string
          maxLength: 255
          description: >-
            Указанная вами причина в виде произвольного текста; пустая строка,
            если причина не указана.
        decided_by:
          type: string
          description: >-
            Пользователь консоли, который принял или последним изменил решение.
            Пусто, если оно было принято с помощью API-ключа.
        updated_at:
          type: string
          format: date-time
        inherited_from:
          type: object
          nullable: true
          description: >-
            Бренд, решению которого следует эта сущность, поскольку вы не
            приняли решение по самой сущности. Null, если решение принято самим
            контрагентом.
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
    TravelRuleCounterpartyScreening:
      type: object
      description: >-
        Один скрининг контрагента на наличие санкций и негативных публикаций в
        СМИ, выполненный для вашего приложения и выставленный ему в счёт.
        Конфиденциально для вашего приложения: другой клиент никогда этого не
        увидит.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Одобрена: нет возможных совпадений, требующих внимания. На проверке
            или Отклонена: возможное совпадение по санкциям или негативным
            публикациям в СМИ.
        total_hits:
          type: integer
          description: Количество возможных совпадений, возвращённых скринингом.
        score:
          type: number
          nullable: true
          description: >-
            Наивысшая оценка риска среди возможных совпадений. Значение null,
            если совпадений не найдено.
        screened_at:
          type: string
          format: date-time
        fresh:
          type: boolean
          description: >-
            Выполнен ли скрининг менее чем fresh_days (30 дней) назад. Недавний
            скрининг используется повторно и не оплачивается снова.
        flagged:
          type: boolean
          description: >-
            true, пока скрининг актуален и имеет статус In Review или Declined.
            Пока ваш последний скрининг помечен флагом и скрининг контрагентов
            остаётся включённым, counterparty_risk_level в ваших правилах имеет
            значение HIGH.
    TravelRuleCounterpartyQuestionnaire:
      type: object
      description: >-
        Одна анкета надлежащей проверки, отправленная вашим приложением
        контрагенту: стандартная анкета Didit, направленная на
        зарегистрированный комплаенс-адрес электронной почты с одноразовой
        ссылкой для ответа. Доступна только вашему приложению.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - SENT
            - ANSWERED
            - EXPIRED
          description: >-
            SENT: ожидание ответов. ANSWERED: контрагент ответил на все вопросы.
            EXPIRED: ссылка на ответ закрыта без ответа (истёк срок её действия
            или её заменила более новая анкета), либо срок действия ответов
            истёк согласно valid_until.
        form_version:
          type: string
          description: >-
            Версия стандартной анкеты Didit, к которой относятся ответы. В
            настоящее время 1.
        sent_to:
          type: string
          format: email
        sent_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Срок для ответа составляет 30 дней после отправки. После этого
            ссылка перестаёт действовать.
        answered_at:
          type: string
          format: date-time
          nullable: true
        valid_until:
          type: string
          format: date-time
          nullable: true
          description: >-
            Срок актуальности ответов: 365 дней после ответа. Null до
            предоставления ответов.
        current:
          type: boolean
          description: >-
            true, пока анкета находится в статусе ANSWERED и срок valid_until не
            истёк.
        answers:
          type: object
          additionalProperties:
            type: string
          description: >-
            Ответы, сгруппированные по id вопроса: legal_name, licensing,
            jurisdictions, aml_program, compliance_officer, sanctions_screening,
            transaction_monitoring, travel_rule, custody, ownership,
            record_keeping, data_protection. Длина каждого ответа составляет до
            2 000 символов. Поле пустое, пока ответы не даны.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

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