> ## 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 pesquisa no diretório de VASP: rotas Travel Rule

> Na Didit, pesquise o diretório Travel Rule de VASP e a rede Didit, com filtros e as rotas da sua aplicação para cada VASP.



Prompt da API de pesquisa no diretório de VASP
        Copiar o prompt para a área de transferência



      
      

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



      
      

Colar em



## OpenAPI

````yaml pt/openapi-25.json GET /v3/travel-rule/vasps/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de Verificação de identidade. Autentique-se com o cabeçalho x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/vasps/:
    get:
      tags:
        - Travel Rule
      summary: Pesquisar o diretório de VASP
      description: >-
        Pesquisa paginada e ordenada por nome do diretório de VASP: as entradas
        do diretório partilhado, que a Didit compila a partir do registo MiCA
        provisório da ESMA, do diretório público TRISA, do registo global LEI e
        da sua própria curadoria, além dos membros da rede Didit. Cada linha
        inclui as rotas que a sua aplicação tem atualmente para ela. O perfil da
        sua própria aplicação nunca é listado. As linhas incluem também a
        avaliação partilhada de diligência devida e a própria decisão, triagem
        de entidades e questionários da sua aplicação.
      operationId: listTravelRuleVasps
      parameters:
        - name: search
          in: query
          schema:
            type: string
            maxLength: 255
          description: >-
            Um fragmento de nome ou pseudónimo (sem distinção entre maiúsculas e
            minúsculas), um LEI exato ou um domínio (exemplo.com ou um URL no
            mesmo). Os membros da rede Didit correspondem pelo seu nome legal,
            LEI ou domínio do seu e-mail de conformidade.
        - name: network
          in: query
          schema:
            type: string
            enum:
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
              - TRISA
          description: >-
            Apenas entradas de diretório atualmente listadas pelo diretório de
            membros de uma rede.
        - name: jurisdiction
          in: query
          schema:
            type: string
          description: >-
            Código de país ISO 3166 alpha-2 ou alpha-3. 400 para qualquer outro
            valor.
        - name: reachable
          in: query
          schema:
            type: boolean
          description: >-
            true: apenas VASPs para os quais a sua aplicação dispõe de uma rota
            disponível (incluindo membros da rede Didit). false: apenas entradas
            do diretório que não consegue alcançar atualmente.
        - name: kind
          in: query
          schema:
            type: string
            enum:
              - directory
              - didit
          description: Apenas entradas de diretório ou apenas membros da rede Didit.
        - name: risk
          in: query
          schema:
            type: string
            enum:
              - LOW
              - MEDIUM
              - HIGH
          description: >-
            Apenas entradas de diretório cujo risk_level seja este escalão. Os
            membros da rede Didit, que não são pontuados, nunca correspondem.
        - name: responsiveness
          in: query
          schema:
            type: string
            enum:
              - RESPONSIVE
              - UNRESPONSIVE
              - UNKNOWN
          description: >-
            Apenas entradas de diretório cujo responsiveness.status seja este
            valor. Os membros da rede Didit nunca correspondem.
        - 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 do diretório de VASP, ordenados por nome.
          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: >-
            Um filtro não é válido: o corpo indica cada campo, por exemplo, uma
            rede, código de país, faixa de risco ou estado de resposta
            desconhecido.
          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: >-
        Um VASP do diretório ou um membro da rede Didit, com as rotas que a sua
        aplicação tem para o mesmo. Um cliente é membro da rede Didit apenas
        enquanto a sua aplicação estiver em produção, o seu Travel Rule estiver
        ativado, o seu perfil for detetável, tiver uma denominação social e um
        e-mail de conformidade confirmado, e a Didit não tiver marcado a
        aplicação como de teste, demonstração ou interna. Cada linha inclui
        também a avaliação de diligência devida partilhada (dd_score,
        risk_level, responsiveness, essential_checks) e a decisão, triagem de
        entidades e questionários próprios da sua aplicação, que nenhum outro
        cliente vê.
      properties:
        id:
          type: string
          format: uuid
          description: O id da entrada, para GET /v3/travel-rule/vasps/{vasp_id}/.
        kind:
          type: string
          enum:
            - directory
            - didit
          description: >-
            directory para uma entrada do diretório partilhado; didit para um
            membro da rede Didit.
        name:
          type: string
        lei:
          type: string
        jurisdiction:
          type: string
          description: Código de país ISO 3166, tal como fornecido pela fonte.
        domains:
          type: array
          items:
            type: string
          description: Os domínios web do VASP. Sempre vazios para membros da rede Didit.
        reachable:
          type: boolean
          description: >-
            Se a sua aplicação tem uma rota disponível para este VASP ou para
            uma das suas entidades de uma marca. Sempre true para um membro da
            rede Didit, exceto numa aplicação sandbox, onde todas as linhas são
            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 (do registo global de LEI),
                  network_name (o nome numa rede da Travel Rule), attribution (o
                  nome da entidade que a análise de blockchain atribui às
                  carteiras do VASP), merged (o nome de uma entrada duplicada
                  fundida nesta) ou staff.
          description: Outros nomes pelos quais o VASP é identificado.
        networks:
          type: array
          items:
            type: object
            description: >-
              Uma listagem atual deste VASP no diretório de membros de uma rede
              Travel Rule. Uma listagem TRISA indica quem é o VASP na TRISA; a
              Didit não tem canal TRISA, pelo que nunca é uma rota.
            properties:
              network:
                type: string
                enum:
                  - GTR
                  - TRUST
                  - VERIFYVASP
                  - SYGNA
                  - TRISA
              code:
                type: string
                description: O identificador do VASP nessa rede.
              listed_name:
                type: string
                description: O nome sob o qual a rede lista o VASP.
              country:
                type: string
                description: O país indicado pela rede, quando disponibilizado.
              verified_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Quando a equipa da Didit verificou a listagem. Nulo para
                  listagens lidas a partir de um diretório público.
              last_seen_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Quando a fonte apresentou a listagem pela última vez. Uma
                  listagem que a fonte não tenha apresentado durante três
                  semanas é removida.
              source:
                type: string
                enum:
                  - trisa_directory
                  - staff
                description: >-
                  De onde provém a listagem: do diretório público TRISA ou da
                  equipa da Didit.
        routes:
          type: array
          items:
            type: object
            description: >-
              Uma forma de a sua aplicação entregar dados de Travel Rule a este
              VASP, pela ordem pela qual o envio os tenta. Uma rota de rede
              necessita de uma adesão nessa rede: a sua própria (ligada no
              Marketplace) ou a da Didit assim que a Didit a detenha. Sem ela, a
              rota é listada como indisponível com o respetivo motivo, nunca
              como uma forma de contactar o 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: >-
                  O motivo pelo qual uma rota indisponível não pode ser
                  utilizada: no_membership (nem você nem a Didit possuem adesão
                  nessa rede), network_switched_off (desativou essa rede nas
                  suas definições) ou sandbox_application (uma aplicação de
                  sandbox envia apenas para o Didit Test VASP, pelo que nenhuma
                  rota está disponível para ela). Vazio quando a rota está
                  disponível.
              via:
                type: string
                enum:
                  - ''
                  - own_membership
                  - didit_membership
                  - directory
                  - contact
                  - didit_network
                description: >-
                  Como se alcança uma rota disponível: own_membership ou
                  didit_membership para uma via de rede, directory para um
                  endpoint TRP verificado pelo diretório, contact para a via
                  EMAIL, didit_network para um membro da rede Didit. Vazio
                  quando a rota está indisponível.
        umbrella:
          type: object
          nullable: true
          description: >-
            A marca da qual esta entrada é uma entidade regulada. Nulo quando
            não faz parte de nenhuma.
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        entities:
          type: array
          items:
            type: object
            description: >-
              Uma entidade regulada de uma marca: a entidade legal que recebe
              uma transferência.
            properties:
              id:
                type: string
                format: uuid
              name:
                type: string
              lei:
                type: string
              jurisdiction:
                type: string
              reachable:
                type: boolean
                description: Se a sua aplicação tem uma rota disponível para o mesmo.
          description: >-
            Para uma marca, as entidades regulamentadas que recebem as suas
            transferências. Uma transferência que indique a marca segue para a
            entidade acessível na jurisdição indicada
            (beneficiary_data.counterparty_vasp_jurisdiction); caso contrário,
            para a entidade atribuída pela análise de blockchain associada à
            carteira de destino; caso contrário, para a única entidade acessível
            quando nenhuma jurisdição for indicada. Nunca se escolhe entre duas
            entidades igualmente adequadas por suposição.
        contacts:
          type: array
          items:
            type: object
            description: >-
              Um contacto de conformidade para o qual o canal EMAIL pode
              escrever.
            properties:
              id:
                type: string
                format: uuid
              email:
                type: string
                format: email
              name:
                type: string
              source:
                type: string
                enum:
                  - staff
                  - application
                  - learned
                description: >-
                  staff: com curadoria da Didit; application: adicionado pela
                  sua aplicação; learned: um endereço que respondeu a um pedido
                  da Travel Rule através da respetiva ligação de resposta.
              scope:
                type: string
                enum:
                  - platform
                  - application
                description: >-
                  os contactos da plataforma são utilizados para as
                  transferências de todos os clientes da Didit; os contactos da
                  aplicação são privados da sua aplicação, que vê apenas os seus
                  próprios.
              verified_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Quando alguém neste endereço respondeu a um pedido. Nulo
                  quando ainda não o fez.
          description: >-
            Os contactos da plataforma para este VASP e os da sua própria
            aplicação.
        dd_status:
          type: string
          enum:
            - NOT_STARTED
            - IN_PROGRESS
            - COMPLETED
            - REJECTED
          description: >-
            Estado de verificação da Didit para a entrada, pontuado pela
            componente de verificação do dd_score. Sempre COMPLETED para um
            membro da rede Didit.
        dd_score:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            A pontuação partilhada de diligência devida de uma entrada do
            diretório, de 0 a 100, onde quanto mais alto, mais seguro (consulte
            dd_score_semantic): a soma dos pontos em dd_score_breakdown. Nulo
            para um membro da rede Didit, que não é pontuado. Uma entrada ainda
            não avaliada (dd_assessed_at nulo) apresenta 0 com um risk_level
            vazio; por isso, consulte risk_level em vez da pontuação bruta.
        reachable_rails:
          type: array
          items:
            type: string
            enum:
              - INTERNAL
              - TRP
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
              - EMAIL
          description: >-
            Vias registadas na entrada. Consulte as rotas para ver o que a sua
            aplicação pode utilizar hoje.
        is_didit_customer:
          type: boolean
          description: >-
            true para um membro da rede Didit (dd_status é sempre COMPLETED,
            dd_score é null e risk_level fica vazio nestes casos) e para uma
            entrada do diretório associada a um cliente da Didit.
        dd_score_breakdown:
          type: object
          description: >-
            Um objeto por componente de dd_score. Componentes, o respetivo peso
            (máx.) e os respetivos 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). Vazio para um
            membro da rede Didit.
          additionalProperties:
            type: object
            properties:
              points:
                type: number
                description: >-
                  Pontos com que o componente contribui, arredondados a uma casa
                  decimal.
              max:
                type: integer
                description: >-
                  O peso do componente: os pontos com que contribui no melhor
                  dos casos.
              reason:
                type: string
                description: Código legível por máquina do veredito do componente.
              detail:
                type: string
                description: Explicação em inglês numa única linha.
        dd_assessed_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Quando dd_score, risk_level e responsiveness foram calculados pela
            última vez: após uma troca com a entrada ser concluída, terminar,
            expirar, não corresponder ou ser recusada, quando a Didit atualiza
            ou faz a curadoria da entrada, e na atualização semanal do
            diretório. Nulo para um membro da rede Didit.
        dd_score_semantic:
          type: string
          enum:
            - higher_is_safer
          description: 'Em que sentido o dd_score aponta: sempre higher_is_safer.'
        risk_level:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
            - ''
          description: >-
            A faixa em que dd_score se insere: LOW (70 ou mais), MEDIUM (40 a
            69) ou HIGH (abaixo de 40). Vazio para um membro da rede Didit e
            para uma entrada ainda não avaliada. Filtre por este parâmetro com
            risk. A sua própria triagem sinalizada nunca altera este valor
            partilhado: em vez disso, define counterparty_risk_level como HIGH
            nas suas regras.
        responsiveness:
          type: object
          description: >-
            Indica se o VASP responde a pedidos de Travel Rule: a percentagem de
            pedidos iniciados por clientes Didit em direção a ele nos últimos 90
            dias que foram respondidos. Apenas contam os pedidos enviados
            através de uma via de rede ou protocolo, ou por e-mail para um
            endereço partilhado (o endereço de conformidade do registo ou um
            contacto da plataforma); um pedido enviado para um endereço
            introduzido manualmente por um cliente, ou para o contacto privado
            de um cliente, nunca conta. Um pedido expirado conta como não
            respondido; uma troca concluída, uma recusa ou uma divergência de
            dados contam como resposta; um pedido cancelado ou uma via
            inacessível não contam como nenhum dos dois. Sempre UNKNOWN com
            contagens a zero para um membro da rede Didit.
          properties:
            status:
              type: string
              enum:
                - RESPONSIVE
                - UNRESPONSIVE
                - UNKNOWN
              description: >-
                UNKNOWN com menos de 5 pedidos decididos no intervalo;
                UNRESPONSIVE quando menos de 10 por cento foram respondidos;
                RESPONSIVE nos restantes casos.
            answered:
              type: integer
              description: Pedidos decididos na janela, aos quais o VASP respondeu.
            total:
              type: integer
              description: 'Pedidos decididos na janela: respondidos mais expirados.'
            computed_at:
              type: string
              format: date-time
              nullable: true
        essential_checks:
          type: object
          description: >-
            O relatório de verificações essenciais de uma entrada do diretório,
            construído exclusivamente a partir de fontes verificadas da
            plataforma: registo (um registo oficial lista o VASP: o registo
            provisório do MiCA da UE, o diretório público da TRISA ou o registo
            global de LEI), licença (uma autorização MiCA está registada e em
            vigor), domínio (o domínio da entrada corresponde ao respetivo
            endpoint TRP ou ao website indicado no seu registo) e lei (o
            respetivo registo LEI está ativo, emitido e consistente com os nomes
            e o país da entrada). O componente de verificações essenciais do
            dd_score é a proporção de verificações decididas com resultado
            positivo. Fica vazio até que a atualização semanal do diretório
            verifique a entrada pela primeira vez, e está sempre vazio para
            membros da rede 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 quando nenhuma fonte registada consegue decidir a
                      verificação.
                  reason:
                    type: string
                    description: Código legível por máquina do veredito.
                  detail:
                    type: string
                    description: Explicação em inglês numa única linha.
            passed:
              type: integer
            failed:
              type: integer
            unknown:
              type: integer
            total:
              type: integer
        decision:
          allOf:
            - $ref: '#/components/schemas/TravelRuleCounterpartyDecision'
          nullable: true
          description: >-
            A decisão da sua aplicação sobre este VASP ou, para uma entidade sem
            decisão própria, a da sua marca (inherited_from indica a marca).
            Nulo quando não existe nenhuma. Privada para a sua aplicação.
        entity_screening:
          allOf:
            - $ref: '#/components/schemas/TravelRuleCounterpartyScreening'
          nullable: true
          description: >-
            A triagem mais recente de sanções e notícias adversas da sua
            aplicação sobre este VASP. Nula se nunca o tiver analisado. Privada
            para a sua aplicação.
        questionnaires:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleCounterpartyQuestionnaire'
          description: >-
            Os questionários de diligência prévia da sua aplicação com este
            VASP, os mais recentes primeiro. Privados para a sua aplicação.
      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: >-
        A decisão da sua aplicação sobre um VASP de contraparte. Privada para a
        sua aplicação: nunca altera a entrada do diretório partilhado e outro
        cliente nunca a vê. Atua apenas através das suas regras de transação (o
        campo de regra counterparty_dd_status e as predefinições
        travel-rule-counterparty-blocked e travel-rule-counterparty-restricted);
        nunca altera a forma como uma transferência é encaminhada.
      properties:
        decision:
          type: string
          enum:
            - APPROVED
            - RESTRICTED
            - BLOCKED
          description: >-
            APPROVED: a sua equipa aprovou a contraparte. RESTRICTED: as
            transferências para a mesma podem prosseguir após revisão. BLOCKED:
            a sua equipa recusou-a.
        reason:
          type: string
          maxLength: 255
          description: Motivo em texto livre que indicou, vazio quando não existe nenhum.
        decided_by:
          type: string
          description: >-
            O utilizador da consola que tomou ou alterou pela última vez a
            decisão. Vazio quando tomada através de uma chave de API.
        updated_at:
          type: string
          format: date-time
        inherited_from:
          type: object
          nullable: true
          description: >-
            A marca cuja decisão esta entidade segue porque não tomou nenhuma
            sobre a própria entidade. Nulo quando a decisão é da própria
            contraparte.
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
    TravelRuleCounterpartyScreening:
      type: object
      description: >-
        Uma triagem de sanções e de notícias adversas da entidade de
        contraparte, executada para e faturada à sua aplicação. Privada para a
        sua aplicação: outro cliente nunca a vê.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - Approved
            - In Review
            - Declined
          description: >-
            Aprovada: nenhuma correspondência possível requer atenção. Em
            análise ou Recusada: uma possível correspondência com sanções ou
            notícias adversas.
        total_hits:
          type: integer
          description: Quantas correspondências possíveis a triagem devolveu.
        score:
          type: number
          nullable: true
          description: >-
            A pontuação de risco mais elevada entre as correspondências
            possíveis. Nulo quando não houve correspondências.
        screened_at:
          type: string
          format: date-time
        fresh:
          type: boolean
          description: >-
            Se a triagem tem menos de fresh_days (30 dias). Uma triagem recente
            é reutilizada em vez de ser faturada novamente.
        flagged:
          type: boolean
          description: >-
            true enquanto a triagem for recente e o respetivo estado for In
            Review ou Declined. Enquanto a sua triagem mais recente estiver
            sinalizada e a triagem de contrapartes permanecer ativa,
            counterparty_risk_level é HIGH nas suas regras.
    TravelRuleCounterpartyQuestionnaire:
      type: object
      description: >-
        Um questionário de diligência devida que a sua aplicação enviou à
        contraparte: o questionário padrão da Didit, enviado por e-mail para um
        endereço de conformidade registado com uma ligação de resposta de
        utilização única. Privado da sua aplicação.
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - SENT
            - ANSWERED
            - EXPIRED
          description: >-
            SENT: a aguardar respostas. ANSWERED: a contraparte respondeu a
            todas as perguntas. EXPIRED: a ligação de resposta expirou sem
            resposta (o prazo terminou ou foi substituída por um questionário
            mais recente), ou as respostas ultrapassaram valid_until.
        form_version:
          type: string
          description: >-
            Versão do questionário padrão do Didit à qual as respostas
            pertencem. Atualmente 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: >-
            O prazo de resposta, 30 dias após o envio. A ligação deixa de
            funcionar após essa data.
        answered_at:
          type: string
          format: date-time
          nullable: true
        valid_until:
          type: string
          format: date-time
          nullable: true
          description: >-
            Duração da validade das respostas: 365 dias após serem respondidas.
            Nulo até ser respondido.
        current:
          type: boolean
          description: >-
            true enquanto o questionário estiver ANSWERED e valid_until não
            tiver expirado.
        answers:
          type: object
          additionalProperties:
            type: string
          description: >-
            As respostas indexadas pelo id da pergunta: legal_name, licensing,
            jurisdictions, aml_program, compliance_officer, sanctions_screening,
            transaction_monitoring, travel_rule, custody, ownership,
            record_keeping, data_protection. Cada resposta tem até 2.000
            carateres. Vazias até serem respondidas.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A chave de API da sua aplicação, a partir de Programadores -> Chaves de
        API na Business Console. A chave principal tem acesso total. Uma chave
        nomeada pode ter o âmbito definido: nenhum, leitura ou escrita por
        recurso, limitada a alguns fluxos ou a sessões aprovadas, a uma lista de
        endereços IP e a uma data de validade. 401 significa que a chave está
        incorreta, revogada ou expirada; 403 significa que nenhuma chave foi
        enviada, que a chave não tem acesso a este recurso ou ação, ou que o
        pedido veio de um endereço fora da sua lista de IP; 404 numa rota de
        sessão significa que a sessão está fora dos fluxos ou estados da chave.
        Uma chave sem acesso a multimédia recebe URLs de imagens, vídeos e PDFs
        como nulos, e uma chave sem permissão de escrita em sessões recebe
        ligações de sessão e tokens como nulos. Consulte
        https://docs.didit.me/console/api-keys.

````

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