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

# API de búsqueda en el directorio de VASP: Travel Rule

> Busca en el directorio de VASP de Travel Rule y en la red de Didit, con filtros y las rutas que tu aplicación tiene hacia cada VASP.



Prompt de la API de búsqueda en el directorio de VASP
        Copiar el prompt al portapapeles



      
      

\<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>



      
      

Pegar en



## OpenAPI

````yaml es/openapi-25.json GET /v3/travel-rule/vasps/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/vasps/:
    get:
      tags:
        - Travel Rule
      summary: Buscar en el directorio de VASP
      description: >-
        Búsqueda paginada y ordenada por nombre en el directorio de VASP: las
        entradas del directorio compartido, que Didit construye a partir del
        registro provisional MiCA de ESMA, el directorio público de TRISA, el
        registro global de LEI y su propia curación, además de los miembros de
        la red de Didit. Cada fila incluye las rutas que tu aplicación tiene hoy
        hacia esa entrada. El perfil de tu propia aplicación nunca aparece en la
        lista. Las filas también incluyen la evaluación de diligencia debida
        compartida y la decisión, el análisis de la entidad y los cuestionarios
        propios de tu aplicación.
      operationId: listTravelRuleVasps
      parameters:
        - name: search
          in: query
          schema:
            type: string
            maxLength: 255
          description: >-
            Un fragmento de nombre o alias (sin distinguir mayúsculas de
            minúsculas), un LEI exacto o un dominio (example.com o una URL de
            ese dominio). Los miembros de la red Didit coinciden por su razón
            social, su LEI o el dominio de su correo electrónico de
            cumplimiento.
        - name: network
          in: query
          schema:
            type: string
            enum:
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
              - TRISA
          description: >-
            Solo las entradas del directorio que el directorio de miembros de
            una red incluye actualmente.
        - name: jurisdiction
          in: query
          schema:
            type: string
          description: >-
            Código de país ISO 3166 alfa-2 o alfa-3. Cualquier otro valor
            devuelve 400.
        - name: reachable
          in: query
          schema:
            type: boolean
          description: >-
            true: solo los VASP a los que tu aplicación tiene una ruta
            disponible (incluidos los miembros de la red de Didit). false: solo
            las entradas del directorio a las que hoy no puede llegar.
        - name: kind
          in: query
          schema:
            type: string
            enum:
              - directory
              - didit
          description: Solo entradas del directorio, o solo miembros de la red de Didit.
        - name: risk
          in: query
          schema:
            type: string
            enum:
              - LOW
              - MEDIUM
              - HIGH
          description: >-
            Solo las entradas del directorio cuyo risk_level está en esta
            franja. Los miembros de la red de Didit, que no reciben puntuación,
            nunca coinciden.
        - name: responsiveness
          in: query
          schema:
            type: string
            enum:
              - RESPONSIVE
              - UNRESPONSIVE
              - UNKNOWN
          description: >-
            Solo las entradas del directorio cuyo responsiveness.status es este
            valor. Los miembros de la red de Didit nunca coinciden.
        - 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: Resultados paginados del directorio de VASP, ordenados por nombre.
          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: >-
            Un filtro no es válido: el cuerpo indica cada campo, por ejemplo, un
            código de red o de país, una banda de riesgo o un estado de
            capacidad de respuesta desconocidos.
          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: >-
        Un VASP del directorio o un miembro de la red de Didit, con las rutas
        que tu aplicación tiene hacia él. Un cliente es miembro de la red de
        Didit solo mientras su aplicación esté en producción, su Travel Rule
        esté activada, su perfil sea localizable, tenga una razón social y un
        correo de cumplimiento confirmado, y Didit no haya marcado la aplicación
        como de prueba, demostración o interna. Cada fila incluye también la
        evaluación de diligencia debida compartida (dd_score, risk_level,
        responsiveness, essential_checks) y la propia decisión, el análisis de
        la entidad y los cuestionarios de tu aplicación, que ningún otro cliente
        ve.
      properties:
        id:
          type: string
          format: uuid
          description: El id de la entrada, para GET /v3/travel-rule/vasps/{vasp_id}/.
        kind:
          type: string
          enum:
            - directory
            - didit
          description: >-
            directory para una entrada del directorio compartido; didit para un
            miembro de la red de Didit.
        name:
          type: string
        lei:
          type: string
        jurisdiction:
          type: string
          description: Código de país ISO 3166, tal como lo proporciona la fuente.
        domains:
          type: array
          items:
            type: string
          description: >-
            Los dominios web del VASP. Siempre vacío para los miembros de la red
            de Didit.
        reachable:
          type: boolean
          description: >-
            Indica si tu aplicación tiene una ruta disponible hacia este VASP o,
            en el caso de una marca, hacia una de sus entidades. Siempre es true
            para un miembro de la red de Didit, salvo en una aplicación de
            sandbox, donde todas las filas son 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 (del registro global de LEI),
                  network_name (el nombre en una red de Travel Rule),
                  attribution (el nombre de entidad que el análisis de
                  blockchain asigna a las wallets del VASP), merged (el nombre
                  de una entrada duplicada fusionada con esta) o staff.
          description: Otros nombres por los que se conoce al VASP.
        networks:
          type: array
          items:
            type: object
            description: >-
              Un registro vigente de este VASP en el directorio de miembros de
              una red de Travel Rule. Un registro en TRISA indica quién es el
              VASP en TRISA; Didit no tiene canal TRISA, así que nunca es una
              ruta.
            properties:
              network:
                type: string
                enum:
                  - GTR
                  - TRUST
                  - VERIFYVASP
                  - SYGNA
                  - TRISA
              code:
                type: string
                description: El identificador del VASP en esa red.
              listed_name:
                type: string
                description: El nombre con el que la red registra al VASP.
              country:
                type: string
                description: El país que indica la red, cuando lo proporciona.
              verified_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Cuándo verificó el personal de Didit el listado. Es null en
                  los listados leídos de un directorio público.
              last_seen_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Fecha y hora en que la fuente mostró la entrada por última
                  vez. Una entrada que la fuente no ha mostrado durante tres
                  semanas se elimina.
              source:
                type: string
                enum:
                  - trisa_directory
                  - staff
                description: >-
                  Origen del registro: el directorio público de TRISA o el
                  personal de Didit.
        routes:
          type: array
          items:
            type: object
            description: >-
              Una de las formas en que tu aplicación puede entregar datos de
              Travel Rule a este VASP, en el orden en que el envío las intenta.
              Una ruta de red necesita una membresía en esa red: la tuya
              (conectada en el Marketplace) o la de Didit cuando Didit tenga
              una. Sin ella, la ruta aparece como no disponible junto con el
              motivo, nunca como una forma de llegar al 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: >-
                  Por qué no se puede usar una ruta no disponible: no_membership
                  (ni tú ni Didit tienen membresía en esa red),
                  network_switched_off (desactivaste esa red en tu
                  configuración) o sandbox_application (una aplicación de
                  sandbox solo envía al Didit Test VASP, así que no tiene
                  ninguna ruta disponible). Vacío cuando la ruta está
                  disponible.
              via:
                type: string
                enum:
                  - ''
                  - own_membership
                  - didit_membership
                  - directory
                  - contact
                  - didit_network
                description: >-
                  Cómo se accede a una ruta disponible: own_membership o
                  didit_membership para un canal de red, directory para un
                  endpoint TRP que verificó el directorio, contact para el canal
                  EMAIL, didit_network para un miembro de la red de Didit. Vacío
                  cuando la ruta no está disponible.
        umbrella:
          type: object
          nullable: true
          description: >-
            La marca de la que esta entrada es una entidad regulada. Null cuando
            no forma parte de ninguna.
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        entities:
          type: array
          items:
            type: object
            description: >-
              Una entidad regulada de una marca: la entidad jurídica que recibe
              una transferencia.
            properties:
              id:
                type: string
                format: uuid
              name:
                type: string
              lei:
                type: string
              jurisdiction:
                type: string
              reachable:
                type: boolean
                description: Indica si tu aplicación tiene una ruta disponible hacia él.
          description: >-
            En una marca, las entidades reguladas que reciben sus
            transferencias. Una transferencia que indica la marca va a la
            entidad accesible en la jurisdicción que declara
            (beneficiary_data.counterparty_vasp_jurisdiction); si no, a la
            entidad que la atribución de análisis de blockchain vinculó a la
            wallet de destino; si no, a la única entidad accesible cuando no se
            declara jurisdicción. Nunca se elige por suposición entre dos
            entidades que encajan por igual.
        contacts:
          type: array
          items:
            type: object
            description: Un contacto de cumplimiento al que puede escribir el canal EMAIL.
            properties:
              id:
                type: string
                format: uuid
              email:
                type: string
                format: email
              name:
                type: string
              source:
                type: string
                enum:
                  - staff
                  - application
                  - learned
                description: >-
                  staff: seleccionada por Didit; application: añadida por tu
                  aplicación; learned: una dirección que respondió a una
                  solicitud de Travel Rule mediante su enlace de respuesta.
              scope:
                type: string
                enum:
                  - platform
                  - application
                description: >-
                  Los contactos platform se usan en las transferencias de todos
                  los clientes de Didit; los contactos application son privados
                  de tu aplicación, que solo ve los suyos.
              verified_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Cuándo alguien en esta dirección respondió a una solicitud.
                  Nulo si aún no lo ha hecho.
          description: >-
            Los contactos de la plataforma para este VASP y los de tu propia
            aplicación.
        dd_status:
          type: string
          enum:
            - NOT_STARTED
            - IN_PROGRESS
            - COMPLETED
            - REJECTED
          description: >-
            Estado de verificación de la entrada según Didit, puntuado por el
            componente de verificación de dd_score. Siempre es COMPLETED para un
            miembro de la red de Didit.
        dd_score:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            La puntuación compartida de diligencia debida de una entrada del
            directorio, de 0 a 100, donde un valor más alto es más seguro
            (consulta dd_score_semantic): la suma de los puntos de
            dd_score_breakdown. Es null para un miembro de la red de Didit, que
            no se puntúa. Una entrada aún no evaluada (dd_assessed_at null)
            muestra 0 con un risk_level vacío, así que lee risk_level en lugar
            de la puntuación sin procesar.
        reachable_rails:
          type: array
          items:
            type: string
            enum:
              - INTERNAL
              - TRP
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
              - EMAIL
          description: >-
            Canales registrados en la entrada. Consulta las rutas para ver qué
            puede usar tu aplicación hoy.
        is_didit_customer:
          type: boolean
          description: >-
            true para un miembro de la red de Didit (en estos, dd_status es
            siempre COMPLETED, dd_score es null y risk_level está vacío) y para
            una entrada del directorio vinculada a un cliente de Didit.
        dd_score_breakdown:
          type: object
          description: >-
            Un objeto por cada componente de dd_score. Componentes, su peso
            (máximo) y sus códigos de motivo: 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). Vacío para un
            miembro de la red de Didit.
          additionalProperties:
            type: object
            properties:
              points:
                type: number
                description: Puntos que aporta el componente, redondeados a un decimal.
              max:
                type: integer
                description: 'El peso del componente: los puntos que aporta como máximo.'
              reason:
                type: string
                description: Código legible por máquina del veredicto del componente.
              detail:
                type: string
                description: Explicación de una línea en inglés.
        dd_assessed_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Cuándo se calcularon por última vez dd_score, risk_level y
            responsiveness: cuando un intercambio con la entrada se completa,
            finaliza, expira, no coincide o se rechaza, cuando Didit actualiza o
            revisa la entrada, y en la actualización semanal del directorio.
            Nulo para un miembro de la red de Didit.
        dd_score_semantic:
          type: string
          enum:
            - higher_is_safer
          description: 'Hacia dónde apunta dd_score: siempre higher_is_safer.'
        risk_level:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
            - ''
          description: >-
            La banda en la que se encuentra dd_score: LOW (70 o más), MEDIUM (de
            40 a 69) o HIGH (menos de 40). Vacío para un miembro de la red de
            Didit y para una entrada aún no evaluada. Filtra por este valor con
            risk. Tu propio análisis marcado nunca cambia este valor compartido:
            en su lugar, hace que counterparty_risk_level sea HIGH en tus
            reglas.
        responsiveness:
          type: object
          description: >-
            Si el VASP responde a las solicitudes de Travel Rule: la proporción
            de las solicitudes que los clientes de Didit le enviaron en los
            últimos 90 días y que respondió. Solo cuentan las solicitudes
            enviadas por una vía de red o de protocolo, o por correo electrónico
            a una dirección compartida (la dirección de cumplimiento de la
            entrada o un contacto de la plataforma); una solicitud enviada a una
            dirección que escribió un cliente, o al contacto privado de un
            cliente, nunca cuenta. Una solicitud expirada cuenta como no
            respondida; un intercambio completado, un rechazo o una discrepancia
            de datos cuentan como respuesta; una solicitud cancelada o una vía
            inaccesible no cuentan ni como una cosa ni como la otra. Siempre es
            UNKNOWN con recuentos en cero para un miembro de la red de Didit.
          properties:
            status:
              type: string
              enum:
                - RESPONSIVE
                - UNRESPONSIVE
                - UNKNOWN
              description: >-
                UNKNOWN cuando hay menos de 5 solicitudes decididas en la
                ventana; UNRESPONSIVE cuando se respondió menos del 10 por
                ciento de ellas; RESPONSIVE en caso contrario.
            answered:
              type: integer
              description: >-
                Solicitudes con decisión en la ventana a las que el VASP
                respondió.
            total:
              type: integer
              description: >-
                Solicitudes con decisión en la ventana: respondidas más
                expiradas.
            computed_at:
              type: string
              format: date-time
              nullable: true
        essential_checks:
          type: object
          description: >-
            El informe de comprobaciones esenciales de una entrada del
            directorio, elaborado solo a partir de las fuentes verificadas de la
            plataforma: registration (un registro oficial incluye al VASP: el
            registro provisional MiCA de la UE, el directorio público de TRISA o
            el registro global de LEI), licence (consta una autorización MiCA y
            está vigente), domain (el dominio de la entrada coincide con su
            endpoint TRP o con el sitio web que indica su registro) y lei (su
            registro LEI está activo, emitido y es coherente con los nombres y
            el país de la entrada). El componente de comprobaciones esenciales
            de dd_score es la proporción de comprobaciones resueltas que se
            superan. Está vacío hasta que la actualización semanal del
            directorio comprueba la entrada por primera vez, y siempre está
            vacío para un miembro de la red de 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 cuando ninguna fuente registrada puede resolver la
                      comprobación.
                  reason:
                    type: string
                    description: Código legible por máquina del veredicto.
                  detail:
                    type: string
                    description: Explicación de una línea en inglés.
            passed:
              type: integer
            failed:
              type: integer
            unknown:
              type: integer
            total:
              type: integer
        decision:
          allOf:
            - $ref: '#/components/schemas/TravelRuleCounterpartyDecision'
          nullable: true
          description: >-
            La decisión de tu aplicación sobre este VASP o, en el caso de una
            entidad sin decisión propia, la de su marca (inherited_from indica
            la marca). Es null cuando no hay ninguna. Es privada de tu
            aplicación.
        entity_screening:
          allOf:
            - $ref: '#/components/schemas/TravelRuleCounterpartyScreening'
          nullable: true
          description: >-
            El análisis más reciente de sanciones y medios adversos que tu
            aplicación hizo de este VASP. Es null si nunca lo analizaste. Es
            privado de tu aplicación.
        questionnaires:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleCounterpartyQuestionnaire'
          description: >-
            Los cuestionarios de diligencia debida de tu aplicación con este
            VASP, del más reciente al más antiguo. Son privados de tu
            aplicación.
      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: >-
        La decisión de tu aplicación sobre un VASP contraparte. Es privada de tu
        aplicación: nunca modifica la entrada compartida del directorio y ningún
        otro cliente la ve. Solo actúa a través de tus reglas de transacción (el
        campo de regla counterparty_dd_status y las reglas predefinidas
        travel-rule-counterparty-blocked y travel-rule-counterparty-restricted);
        nunca cambia cómo se enruta una transferencia.
      properties:
        decision:
          type: string
          enum:
            - APPROVED
            - RESTRICTED
            - BLOCKED
          description: >-
            APPROVED: tu equipo aprobó la contraparte. RESTRICTED: las
            transferencias a ella pueden realizarse tras una revisión. BLOCKED:
            tu equipo la rechazó.
        reason:
          type: string
          maxLength: 255
          description: Motivo en texto libre que indicaste, vacío si no indicaste ninguno.
        decided_by:
          type: string
          description: >-
            El usuario de la consola que tomó la decisión o la modificó por
            última vez. Vacío cuando la tomó una clave de API.
        updated_at:
          type: string
          format: date-time
        inherited_from:
          type: object
          nullable: true
          description: >-
            La marca cuya decisión sigue esta entidad porque no tomaste ninguna
            sobre la propia entidad. Null cuando la decisión es de la propia
            contraparte.
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
    TravelRuleCounterpartyScreening:
      type: object
      description: >-
        Un análisis de sanciones y medios adversos de la entidad contraparte,
        ejecutado para tu aplicación y facturado a ella. Privado para tu
        aplicación: ningún otro cliente lo ve.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Aprobado: ninguna posible coincidencia requiere atención. En
            revisión o Rechazado: una posible coincidencia con sanciones o
            medios adversos.
        total_hits:
          type: integer
          description: Cuántas posibles coincidencias devolvió el análisis.
        score:
          type: number
          nullable: true
          description: >-
            La puntuación de riesgo más alta entre las posibles coincidencias.
            Null cuando no hubo ninguna coincidencia.
        screened_at:
          type: string
          format: date-time
        fresh:
          type: boolean
          description: >-
            Si el análisis tiene menos antigüedad que fresh_days (30 días). Un
            análisis reciente se reutiliza en lugar de volver a facturarse.
        flagged:
          type: boolean
          description: >-
            true mientras el análisis sea reciente y su estado sea In Review o
            Declined. Mientras tu análisis más reciente esté marcado y el
            análisis de contrapartes siga activado, counterparty_risk_level es
            HIGH en tus reglas.
    TravelRuleCounterpartyQuestionnaire:
      type: object
      description: >-
        Un cuestionario de diligencia debida que tu aplicación envió a la
        contraparte: el cuestionario estándar de Didit, enviado por correo
        electrónico a una dirección de cumplimiento registrada, con un enlace de
        respuesta de un solo uso. Privado para tu aplicación.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - SENT
            - ANSWERED
            - EXPIRED
          description: >-
            SENT: a la espera de respuestas. ANSWERED: la contraparte respondió
            todas las preguntas. EXPIRED: el enlace de respuesta se cerró sin
            respuesta (venció su plazo o un cuestionario más reciente lo
            reemplazó), o las respuestas superaron valid_until.
        form_version:
          type: string
          description: >-
            Versión del cuestionario estándar de Didit a la que pertenecen las
            respuestas. Actualmente, 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: >-
            La fecha límite de respuesta, 30 días después del envío. El enlace
            deja de funcionar después de esa fecha.
        answered_at:
          type: string
          format: date-time
          nullable: true
        valid_until:
          type: string
          format: date-time
          nullable: true
          description: >-
            Cuánto tiempo siguen vigentes las respuestas: 365 días después de
            responder. Null hasta que se responde.
        current:
          type: boolean
          description: >-
            true mientras el cuestionario esté en ANSWERED y valid_until no haya
            pasado.
        answers:
          type: object
          additionalProperties:
            type: string
          description: >-
            Las respuestas indexadas por id de pregunta: legal_name, licensing,
            jurisdictions, aml_program, compliance_officer, sanctions_screening,
            transaction_monitoring, travel_rule, custody, ownership,
            record_keeping, data_protection. Cada respuesta tiene un máximo de
            2000 caracteres. Está vacío hasta que se responde.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.

````

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