> ## 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 디렉터리 항목 조회 API: Travel Rule 경로

> ID로 Travel Rule 디렉터리 또는 Didit 네트워크의 VASP 하나를 조회하고, 애플리케이션이 해당 VASP에 연결된 경로를 확인합니다.

VASP 디렉터리 항목 조회 API 프롬프트
프롬프트를 클립보드에 복사

<pre>
  \`Read one VASP of the Travel Rule directory by the id GET /v3/travel-rule/vasps/ returned.

  Endpoint:
  GET [https://verification.didit.me/v3/travel-rule/vasps/\{vasp\_id}/](https://verification.didit.me/v3/travel-rule/vasps/\{vasp_id}/)

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

  The response is the same object as one row of the search: kind, name, lei, jurisdiction, domains, reachable, aliases, networks, routes, umbrella, entities, contacts and the due-diligence fields. Read routes\[] for what my application can use today: an unavailable network route carries its reason (no\_membership or network\_switched\_off). On a sandbox application every route is unavailable with reason sandbox\_application, because sandbox sends only to the Didit Test VASP.

  Due diligence on the same id:

  * dd\_score (0-100, higher is safer), risk\_level, dd\_score\_breakdown, responsiveness and essential\_checks - the shared assessment. Didit network members are not scored.
  * decision, entity\_screening, questionnaires - my application's own records, private to it. Manage them with GET/PUT/DELETE /v3/travel-rule/vasps/{vasp_id}/decision/, GET/POST /v3/travel-rule/vasps/{vasp_id}/screening/ and GET/POST /v3/travel-rule/vasps/{vasp_id}/questionnaires/.
  * My Travel Rule transfers with this VASP: GET /v3/travel-rule/transfers/?counterparty={vasp_id}.

  Failure modes:

  * 404 - no directory entry or listed Didit network member has this id.

  Full guide: /transaction-monitoring/travel-rule#directory.\`
</pre>

붙여넣을 곳


## OpenAPI

````yaml ko/openapi-25.json GET /v3/travel-rule/vasps/{vasp_id}/
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/{vasp_id}/:
    get:
      tags:
        - Travel Rule
      summary: VASP 디렉터리 항목 조회
      description: >-
        검색에서 반환된 ID 기준 디렉터리 항목 또는 Didit 네트워크 멤버 1개이며, 동일한 필드 및 애플리케이션에서 해당 항목으로
        연결되는 경로가 포함됩니다.
      operationId: getTravelRuleVasp
      parameters:
        - name: vasp_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: GET /v3/travel-rule/vasps/ 행의 id입니다.
      responses:
        '200':
          description: 항목입니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaspDirectoryEntry'
        '404':
          description: 이 id를 가진 항목 또는 등록된 Didit 네트워크 멤버가 없습니다.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: No directory entry has this id.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/ \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.retrieve_vasp(
                "11111111-2222-3333-4444-555555555555",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.travelRule.retrieveVasp("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.RetrieveVASP(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().retrieveVasp("11111111-2222-3333-4444-555555555555");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->travelRule->retrieveVasp('11111111-2222-3333-4444-555555555555');

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


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            result =
            didit.travel_rule.retrieve_vasp("11111111-2222-3333-4444-555555555555")

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.TravelRule.RetrieveVaspAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    VaspDirectoryEntry:
      type: object
      description: >-
        디렉터리의 VASP 또는 Didit 네트워크의 멤버이며, 애플리케이션이 해당 대상과 연결된 경로를 포함합니다. 고객은
        애플리케이션이 활성 상태이고, Travel Rule이 켜져 있으며, 프로필이 검색 가능하고, 법적 이름과 확인된 컴플라이언스
        이메일이 있으며, Didit이 해당 애플리케이션을 테스트, 데모 또는 내부용으로 표시하지 않은 경우에만 Didit 네트워크의
        멤버가 됩니다. 각 행에는 공유 실사 평가(dd_score, risk_level, responsiveness,
        essential_checks)와 다른 고객에게는 표시되지 않는 애플리케이션 자체의 결정, 엔티티 스크리닝 및 설문지도
        포함됩니다.
      properties:
        id:
          type: string
          format: uuid
          description: GET /v3/travel-rule/vasps/{vasp_id}/ 호출을 위한 항목의 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 또는 해당 브랜드의 엔터티 중 하나로 연결 가능한 경로가 있는지 여부입니다. Didit 네트워크
            멤버의 경우 항상 true이지만, 모든 행이 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: >-
              Travel Rule 네트워크의 멤버 디렉터리에 등록된 이 VASP의 현재 목록입니다. TRISA 목록은 TRISA에서
              해당 VASP가 누구인지를 나타냅니다. 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: 소스가 마지막으로 해당 등재 정보를 표시한 시점입니다. 소스가 3주 동안 표시하지 않은 등재 정보는 삭제됩니다.
              source:
                type: string
                enum:
                  - trisa_directory
                  - staff
                description: '해당 목록의 출처: 공개 TRISA 디렉터리 또는 Didit 직원.'
        routes:
          type: array
          items:
            type: object
            description: >-
              애플리케이션이 이 VASP에 Travel Rule 데이터를 전송할 수 있는 방법 1개이며, 디스패치가 시도하는 순서대로
              나열됩니다. 네트워크 경로는 해당 네트워크의 멤버십(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, 디렉터리가 검증한 TRP endpoint의 경우 directory, EMAIL
                  레일의 경우 contact, Didit 네트워크 멤버의 경우 didit_network입니다. 경로를 사용할 수
                  없는 경우 비어 있습니다.
        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: 애플리케이션에 해당 VASP로 연결 가능한 경로가 있는지 여부입니다.
          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: >-
            dd_score의 검증 구성 요소에 의해 점수가 매겨진 항목의 Didit 인증 상태입니다. Didit 네트워크 멤버의 경우
            항상 COMPLETED입니다.
        dd_score:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            디렉터리 항목의 공유 실사 점수(0~100, 높을수록 안전함, dd_score_semantic 참조)로,
            dd_score_breakdown에 포함된 점수의 합계입니다. 점수가 매겨지지 않는 Didit 네트워크 멤버의 경우
            null입니다. 아직 평가되지 않은 항목(dd_assessed_at이 null)은 risk_level이 비어 있는 상태로
            0을 표시하므로, 원시 점수 대신 risk_level을 확인하십시오.
        reachable_rails:
          type: array
          items:
            type: string
            enum:
              - INTERNAL
              - TRP
              - GTR
              - TRUST
              - VERIFYVASP
              - SYGNA
              - EMAIL
          description: 엔트리에 기록된 레일입니다. 현재 애플리케이션에서 사용할 수 있는 항목은 경로를 확인하십시오.
        is_didit_customer:
          type: boolean
          description: >-
            Didit 네트워크 멤버(이들의 경우 dd_status는 항상 COMPLETED이고 dd_score는 null이며
            risk_level은 비어 있음) 및 Didit 고객과 연결된 디렉터리 항목의 경우 true입니다.
        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이 항목을 새로고침하거나 큐레이션할 때, 그리고 주간 디렉터리 새로고침 시입니다.
            Didit 네트워크 멤버인 경우 null입니다.
        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 요청 응답 여부: 지난 90일 동안 Didit 고객이 해당 VASP를 대상으로 시작한 요청
            중 VASP가 응답한 비율입니다. 네트워크나 프로토콜 레일을 통해 전송되었거나, 공유 주소(항목의 컴플라이언스 주소 또는
            플랫폼 연락처)로 이메일 전송된 요청만 집계에 포함됩니다. 고객이 직접 입력한 주소나 고객의 개인 연락처로 전송된 요청은
            포함되지 않습니다. 만료된 요청은 미응답으로 처리되며, 완료된 교환, 거부 또는 데이터 불일치는 응답으로 처리됩니다.
            취소된 요청이나 도달할 수 없는 레일은 어느 쪽에도 해당하지 않습니다. Didit 네트워크 멤버의 경우 항상 카운트가 0인
            UNKNOWN입니다.
          properties:
            status:
              type: string
              enum:
                - RESPONSIVE
                - UNRESPONSIVE
                - UNKNOWN
              description: >-
                해당 기간 내 결정된 요청이 5개 미만인 경우 UNKNOWN, 그중 응답된 요청이 10퍼센트 미만인 경우
                UNRESPONSIVE, 그 외의 경우 RESPONSIVE입니다.
            answered:
              type: integer
              description: 해당 기간 동안 VASP가 응답하여 결정이 완료된 요청입니다.
            total:
              type: integer
              description: 해당 기간 동안 결정이 완료된 요청(응답 완료 및 만료 포함)입니다.
            computed_at:
              type: string
              format: date-time
              nullable: true
        essential_checks:
          type: object
          description: >-
            플랫폼의 검증된 출처만으로 생성된 디렉터리 항목의 필수 검사 보고서입니다: 등록(EU의 임시 MiCA 등록부, 공개
            TRISA 디렉터리 또는 글로벌 LEI 등록부 등 공식 등록부에 VASP가 등재되어 있는지 여부), 라이선스(MiCA
            인가가 기록되어 있고 유효한지 여부), 도메인(해당 항목의 도메인이 TRP endpoint 또는 등록부에 기재된 웹사이트와
            일치하는지 여부), LEI(LEI 기록이 활성 상태이고 발급되었으며 항목의 명칭 및 국가와 일치하는지 여부).
            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: >-
        귀하의 애플리케이션을 위해 실행되고 비용이 청구된 거래 상대방 엔터티의 제재 및 부정적 언론 보도 스크리닝 1건입니다. 귀하의
        애플리케이션에만 비공개로 유지되며, 다른 고객에게는 절대 표시되지 않습니다.
      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: >-
            스크리닝이 최신 상태이고 상태가 검토 중(In Review) 또는 거부됨(Declined)인 동안 true입니다. 최신
            스크리닝에 플래그가 지정되어 있고 거래 상대방 스크리닝이 켜져 있는 동안 귀하의 규칙에서
            counterparty_risk_level은 HIGH입니다.
    TravelRuleCounterpartyQuestionnaire:
      type: object
      description: >-
        애플리케이션이 거래 상대방에게 전송한 실사 설문지 1개입니다. 기록된 컴플라이언스 주소로 일회용 응답 링크와 함께 이메일로
        전송되는 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: 설문지가 ANSWERED 상태이고 valid_until이 지나지 않은 동안 true입니다.
        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: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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