> ## 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：トラベルルール

> DiditのManagement APIで、トラベルルールの取引相手VASPをアプリケーションごとに承認・制限・ブロックします。設定した判定は取引ルールに反映できます。



VASP判定設定APIのプロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`Make or change my application's decision on a Travel Rule counterparty VASP.

Endpoint:
PUT https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/decision/

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

vasp_id is the id GET /v3/travel-rule/vasps/ returns for a directory entry or a Didit network member.

Example call:
curl -X PUT "https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/decision/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"decision": "BLOCKED", "reason": "Unlicensed in its home jurisdiction"}'

Body:
\- decision (required) - APPROVED, RESTRICTED or BLOCKED.
\- reason (optional) - up to 255 characters. It replaces the previous reason; leaving it out clears it.

The response is {"decision": {decision, reason, decided_by, updated_at, inherited_from}} as it now applies.

How it works:
\- The decision is private to my application: no other Didit customer sees it, and it never changes the shared directory entry or how a transfer is routed.
\- A decision on a brand also covers each of its entities that has no decision of its own (inherited_from names the brand there). A decision on an entity overrides the brand's for that entity.
\- It acts only through my transaction rules, through the rule field counterparty_dd_status. Install the presets travel-rule-counterparty-blocked (declines) and travel-rule-counterparty-restricted (holds for review), or write my own rule on that field.

Failure modes:
\- 400 - decision missing or not APPROVED, RESTRICTED or BLOCKED, or reason longer than 255 characters.
\- 404 - no directory entry or listed Didit network member has this id, or the id is my own VASP profile.

Full guide: /transaction-monitoring/travel-rule#your-decision-on-a-counterparty.`

\</pre>



      
      

貼り付け先



## OpenAPI

````yaml ja/openapi-25.json PUT /v3/travel-rule/vasps/{vasp_id}/decision/
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}/decision/:
    put:
      tags:
        - Travel Rule
      summary: VASPに対する判定を設定する
      description: >-
        取引相手に対するアプリケーションの判定を作成または変更します。判定はAPPROVED、RESTRICTED、BLOCKEDのいずれかで、任意で理由を付けられます。共有ディレクトリのエントリが変更されることはなく、取引ルール（counterparty_dd_status）を通じてのみ作用します。ブランドに対する判定は、そのブランドのエンティティのうち独自の判定を持たない各エンティティにも適用されます。
      operationId: updateTravelRuleVaspDecision
      parameters:
        - name: vasp_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: GET /v3/travel-rule/vasps/の行のIDで、ディレクトリのエントリまたはDiditネットワークのメンバーです。
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleCounterpartyDecisionRequest'
            example:
              decision: BLOCKED
              reason: Unlicensed in its home jurisdiction
      responses:
        '200':
          description: 現在適用されている判定です。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleCounterpartyDecisionResponse'
              example:
                decision:
                  decision: BLOCKED
                  reason: Unlicensed in its home jurisdiction
                  decided_by: ''
                  updated_at: '2026-10-14T10:05:00Z'
                  inherited_from: null
        '400':
          description: >-
            判定が指定されていないか、APPROVED、RESTRICTED、BLOCKEDのいずれでもありません。または、理由が255文字を超えています。
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
              example:
                decision:
                  - '"MAYBE" is not a valid choice.'
        '404':
          description: >-
            このidのディレクトリエントリまたは掲載されているDiditネットワークメンバーはありません。自社のVASPプロファイルが自社の取引相手になることはありません。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: No directory entry or Didit network member has this id.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X PUT
            https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/decision/
            \
              -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
              -d '{"decision": "BLOCKED", "reason": "Unlicensed in its home jurisdiction"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.update_vasp_decision(
                "11111111-2222-3333-4444-555555555555",
                decision="BLOCKED",
                reason="Unlicensed in its home jurisdiction",
            )
            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.updateVaspDecision("11111111-2222-3333-4444-555555555555",
            {
              decision: "BLOCKED",
              reason: "Unlicensed in its home jurisdiction",
            });

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

            import me.didit.types.TravelRuleCounterpartyDecisionRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().updateVaspDecision("11111111-2222-3333-4444-555555555555",
            TravelRuleCounterpartyDecisionRequest.builder()
                    .decision(TravelRuleCounterpartyDecisionRequest.Decision.of("BLOCKED"))
                    .reason("Unlicensed in its home jurisdiction")
                    .build());
            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->updateVaspDecision('11111111-2222-3333-4444-555555555555',
            [
                'decision' => 'BLOCKED',
                'reason' => 'Unlicensed in its home jurisdiction',
            ]);

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

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

            result = didit.travel_rule.update_vasp_decision(
              "11111111-2222-3333-4444-555555555555",
              decision: "BLOCKED",
              reason: "Unlicensed in its home jurisdiction"
            )
            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.UpdateVaspDecisionAsync("11111111-2222-3333-4444-555555555555",
            new TravelRuleCounterpartyDecisionRequest

            {
                Decision = "BLOCKED",
                Reason = "Unlicensed in its home jurisdiction",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleCounterpartyDecisionRequest:
      type: object
      required:
        - decision
      properties:
        decision:
          type: string
          enum:
            - APPROVED
            - RESTRICTED
            - BLOCKED
        reason:
          type: string
          maxLength: 255
          description: 任意。以前の理由を置き換えます。省略すると理由はクリアされます。
    TravelRuleCounterpartyDecisionResponse:
      type: object
      properties:
        decision:
          allOf:
            - $ref: '#/components/schemas/TravelRuleCounterpartyDecision'
          nullable: true
          description: >-
            アプリケーションに対して取引相手に適用される判定です。取引相手自身の判定、それがない場合は（ブランドに属するエンティティであれば）ブランドの判定です。判定がない場合はnullです。
    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
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API
        keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権（なし、読み取り、書き込み）、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください:
        https://docs.didit.me/console/api-keys

````

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