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

# ウォレットスクリーニングPDFレポートAPI

> スクリーニングエンドポイントのJSONを再送信すると、ウォレットスクリーニング結果をDiditブランドのPDFで出力できます。ステートレスで、プロバイダー呼び出しや追加請求は発生しません。



ウォレットスクリーニングPDFのプロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`Render a previously returned on-demand wallet-screening result as a Didit-branded PDF, through the Didit Management API.

Endpoint:
POST https://verification.didit.me/v3/wallet-screening/pdf/

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

Goal:
\- Turn a wallet-screening JSON result into a downloadable PDF report. This is stateless: nothing is persisted, no provider is called again, and there is no additional billing.

Prerequisites:
\- You must already have the exact JSON body that POST /v3/wallet-screening/ returned, including its report_signature field. This endpoint does not accept a hand-built or edited payload.

Request body (application/json):
\- The full, unmodified response body from POST /v3/wallet-screening/ (or its console equivalent), including report_signature.

Example call:
curl -X POST "https://verification.didit.me/v3/wallet-screening/pdf/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d "$RESULT" \
-o wallet_screening_report.pdf

Response:
\- Body is binary (application/pdf). DO NOT parse as JSON.
\- Content-Type: application/pdf
\- Content-Disposition: attachment; filename=wallet_screening_<address>.pdf

Failure modes:
\- 400 - the body is not a JSON object matching the wallet-screening result shape, or report_signature is missing or invalid (the result was edited, truncated, or hand-built instead of reposted verbatim).
\- 401 - missing or invalid x-api-key.

For the underlying screening call, see /management-api/transactions/screen-wallet.`

\</pre>



      
      

貼り付け先

## ステートレスである理由スタンドアロンのウォレットスクリーニングは取引テーブルに何も書き込まないため、このエンドポイントがPDFを生成する元となる保存済みのレコードはありません。代わりに、`POST /v3/wallet-screening/`から受け取ったJSONをそのまま再送信すると、Diditはプロバイダーを再度呼び出すことなく、そのペイロードをPDFとして生成します。## `report_signature`フィールドすべての`POST /v3/wallet-screening/`レスポンスには、`report_signature`フィールドが含まれるようになりました。これはアプリケーションに紐づく不透明な署名です。このエンドポイントはPDFを生成する前にこの署名を検証します。そのため、呼び出し元が`risk_score`、`severity`、`sanctions_hit`などのフィールドを編集して、Diditが実際には出していない結果について、見た目上は問題のないDiditブランドのPDFを取得することはできません。`report_signature`を含むレスポンス本文全体を、必ず**変更せずに**再送信してください。キーの順序を入れ替えることは問題ありませんが、署名された値を変更することはできません。```bash theme={null}
# 1. Run the screening and save the full response
RESULT=$(curl -s -X POST https://verification.didit.me/v3/wallet-screening/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet_address": "0x28c6c06298d514db089934071355e5743bf21d60", "blockchain": "ETH"}')

# 2. Repost it verbatim to render the PDF
curl -X POST https://verification.didit.me/v3/wallet-screening/pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$RESULT" \
  -o wallet_screening_report.pdf
```## 請求プロバイダーの呼び出しは行われず、請求も一切発生しません。このエンドポイントは、`POST /v3/wallet-screening/`を呼び出した時点で支払い済みの結果を再表示するだけです。## エラー| ステータス | 意味 |
| - | - |
| `400` | リクエスト本文がウォレットスクリーニング結果の形式に一致するJSONオブジェクトではない、または`report_signature`が欠落しているか、再送信されたフィールドと一致しません。 |
| `401` | `x-api-key`が欠落しているか無効です。 |## 次のステップ> [card] [ウォレットのスクリーニング](https://docs.didit.me/ja/management-api/transactions/screen-wallet.md)
>
> 元となるオンデマンドのウォレットスクリーニングを実行し、ここに再投稿するJSON結果を取得します。> [card] [オンデマンドのウォレットスクリーニング](https://docs.didit.me/ja/transaction-monitoring/wallet-screening.md)
>
> スタンドアロンのウォレットスクリーニングエンドポイントと結果モデルの概要です。


## OpenAPI

````yaml ja/openapi-25.json POST /v3/wallet-screening/pdf/
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/wallet-screening/pdf/:
    post:
      tags:
        - Transactions
      summary: ウォレットスクリーニングの結果をPDFとしてレンダリングする
      description: >-
        `POST
        /v3/wallet-screening/`と対になるステートレスなエンドポイントです。そのエンドポイントが返したJSONボディを、付加された`report_signature`も含めてそのまま再送信すると、同じ結果のDiditブランドのPDFが返されます。プロバイダーは呼び出されず、課金も保存も一切行われません。Diditがすでに生成した結果を再レンダリングするだけです。署名によってPDFは改変されていない結果に紐付けられます。再送信前に`risk_score`、`severity`、`sanctions_hit`、その他の署名対象フィールドを編集すると`400`で失敗します。
      operationId: screenWalletPdf
      requestBody:
        required: true
        description: >-
          `POST
          /v3/wallet-screening/`から返された、変更を加えていないJSONオブジェクト（`report_signature`を含む）。
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/WalletScreeningResult'
              required:
                - report_signature
              description: >-
                `POST
                /v3/wallet-screening/`のレスポンスと同じ形式です。`report_signature`を含め、そのレスポンス本文をそのまま渡してください。
      responses:
        '200':
          description: レンダリングされたPDF書類。バイナリの`application/pdf`として直接返されます。JSONラッパーはありません。
          headers:
            Content-Disposition:
              description: >-
                `attachment;
                filename=wallet_screening_{address}.pdf`。再投稿された結果の`wallet_address`（または`transaction_hash`）から生成されます。
              schema:
                type: string
                example: >-
                  attachment;
                  filename=wallet_screening_0x28c6c06298d514db0899.pdf
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '400':
          description: >-
            リクエストボディがウォレットスクリーニング結果の形式に一致するJSONオブジェクトではないか、`report_signature`がない、または再送信されたフィールドと一致しません（再送信前に編集または切り詰められています）。
          content:
            application/json:
              schema:
                type: object
              examples:
                Not an object:
                  value:
                    non_field_errors:
                      - >-
                        Expected a JSON object matching a wallet-screening
                        result.
                Missing or invalid signature:
                  value:
                    report_signature:
                      - >-
                        This wallet-screening result is missing or fails its
                        report signature - repost the exact JSON returned by the
                        wallet-screening endpoint, unmodified.
        '401':
          description: '`x-api-key`がないか無効です。'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            # $RESULT is the saved JSON body from POST /v3/wallet-screening/

            curl -X POST
            'https://verification.didit.me/v3/wallet-screening/pdf/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d "$RESULT" \
              -o wallet_screening_report.pdf
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            content = client.wallet_screening.screen_pdf(
                provider="your-provider",
                screening_type="WALLET_SCREENING",
                risk_score=1,
                severity="UNKNOWN",
                status="SCREENED",
                summary="your-summary",
                wallet_address="your-wallet-address",
                blockchain="your-blockchain",
                source_of_funds=[{}],
                destination_of_funds=[{}],
                counterparty_connections=[{}],
                sanctions_hit=True,
                dominant_risk_category="your-dominant-risk-category",
                report_signature="your-report-signature",
            )
            with open("download.pdf", "wb") as file:
                file.write(content)
        - lang: javascript
          label: Node.js
          source: >-
            import { writeFile } from "node:fs/promises";

            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const content = await didit.walletScreening.screenPdf({
              provider: "your-provider",
              screening_type: "WALLET_SCREENING",
              risk_score: 1,
              severity: "UNKNOWN",
              status: "SCREENED",
              summary: "your-summary",
              wallet_address: "your-wallet-address",
              blockchain: "your-blockchain",
              source_of_funds: [{}],
              destination_of_funds: [{}],
              counterparty_connections: [{}],
              sanctions_hit: true,
              dominant_risk_category: "your-dominant-risk-category",
              report_signature: "your-report-signature",
            });

            await writeFile("download.pdf", Buffer.from(await
            content.arrayBuffer()));
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.WalletScreening.ScreenPDF(ctx, didit.WalletScreeningResultParam{\n\tProvider:                \"your-provider\",\n\tScreeningType:           \"WALLET_SCREENING\",\n\tRiskScore:               1,\n\tSeverity:                \"UNKNOWN\",\n\tStatus:                  \"SCREENED\",\n\tSummary:                 \"your-summary\",\n\tWalletAddress:           \"your-wallet-address\",\n\tBlockchain:              \"your-blockchain\",\n\tSourceOfFunds:           []didit.WalletScreeningResultParamSourceOfFunds{{}},\n\tDestinationOfFunds:      []didit.WalletScreeningResultParamDestinationOfFunds{{}},\n\tCounterpartyConnections: []didit.WalletScreeningResultParamCounterpartyConnections{{}},\n\tSanctionsHit:            true,\n\tDominantRiskCategory:    didit.String(\"your-dominant-risk-category\"),\n\tReportSignature:         \"your-report-signature\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import java.nio.file.Path;
            import java.util.List;
            import me.didit.Didit;
            import me.didit.types.WalletScreeningResult;

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

            client.walletScreening().screenPdf(WalletScreeningResult.builder()
                    .provider("your-provider")
                    .screeningType(WalletScreeningResult.ScreeningType.of("WALLET_SCREENING"))
                    .riskScore(1L)
                    .severity(WalletScreeningResult.Severity.of("UNKNOWN"))
                    .status(WalletScreeningResult.Status.of("SCREENED"))
                    .summary("your-summary")
                    .walletAddress("your-wallet-address")
                    .blockchain("your-blockchain")
                    .sourceOfFunds(List.of(WalletScreeningResult.SourceOfFunds.builder()
                            .build()))
                    .destinationOfFunds(List.of(WalletScreeningResult.DestinationOfFunds.builder()
                            .build()))
                    .counterpartyConnections(List.of(WalletScreeningResult.CounterpartyConnections.builder()
                            .build()))
                    .sanctionsHit(true)
                    .dominantRiskCategory("your-dominant-risk-category")
                    .reportSignature("your-report-signature")
                    .build())
                    .writeTo(Path.of("download.pdf"));
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

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

            $content = $didit->walletScreening->screenPdf([
                'provider' => 'your-provider',
                'screening_type' => 'WALLET_SCREENING',
                'risk_score' => 1,
                'severity' => 'UNKNOWN',
                'status' => 'SCREENED',
                'summary' => 'your-summary',
                'wallet_address' => 'your-wallet-address',
                'blockchain' => 'your-blockchain',
                'source_of_funds' => [[]],
                'destination_of_funds' => [[]],
                'counterparty_connections' => [[]],
                'sanctions_hit' => true,
                'dominant_risk_category' => 'your-dominant-risk-category',
                'report_signature' => 'your-report-signature',
            ]);
            $content->saveTo('download.pdf');
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            content = didit.wallet_screening.screen_pdf(
              provider: "your-provider",
              screening_type: "WALLET_SCREENING",
              risk_score: 1,
              severity: "UNKNOWN",
              status: "SCREENED",
              summary: "your-summary",
              wallet_address: "your-wallet-address",
              blockchain: "your-blockchain",
              source_of_funds: [{}],
              destination_of_funds: [{}],
              counterparty_connections: [{}],
              sanctions_hit: true,
              dominant_risk_category: "your-dominant-risk-category",
              report_signature: "your-report-signature"
            )
            File.binwrite("download.pdf", content)
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var content = await client.WalletScreening.ScreenPdfAsync(new
            WalletScreeningResult

            {
                Provider = "your-provider",
                ScreeningType = "WALLET_SCREENING",
                RiskScore = 1,
                Severity = "UNKNOWN",
                Status = "SCREENED",
                Summary = "your-summary",
                WalletAddress = "your-wallet-address",
                Blockchain = "your-blockchain",
                SourceOfFunds = new WalletScreeningResultSourceOfFunds[] { new() },
                DestinationOfFunds = new WalletScreeningResultDestinationOfFunds[] { new() },
                CounterpartyConnections = new WalletScreeningResultCounterpartyConnections[] { new() },
                SanctionsHit = true,
                DominantRiskCategory = "your-dominant-risk-category",
                ReportSignature = "your-report-signature",
            });

            await content.SaveToAsync("download.pdf");
components:
  schemas:
    WalletScreeningResult:
      type: object
      properties:
        provider:
          type: string
          description: スクリーニングを実行したプロバイダーです(例:`merklescience`、`crystal`)。
        screening_type:
          type: string
          enum:
            - WALLET_SCREENING
          description: このエンドポイントでは常に`WALLET_SCREENING`です。
        risk_score:
          type: integer
          description: >-
            0〜100に正規化されたリスクスコア。値が高いほど、リスクのあるエンティティへのエクスポージャーが大きいことを意味します。Merkle
            Scienceはアドレスを0〜5で評価し、それぞれ0、15、35、55、75、95に対応します。
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            `risk_score`から導出されるリスク区分です。`0-9`はUNKNOWN、`10-39`はLOW、`40-69`はMEDIUM、`70-89`はHIGH、`90-100`はCRITICALです。`UNKNOWN`は最も低い区分であり、データなしを表す別の状態ではありません。`risk_score`が0(問題のないアドレスでよくあるケース)の場合は不利な評価がないことを意味し、1から9の範囲のゼロ以外のスコアはLOW未満ではあるものの実際のシグナルです。区分だけでなく`risk_score`を確認してください。`UNKNOWN`を低リスクや問題なしという積極的な評価として扱わないでください。合格として表示しないでください。
        status:
          type: string
          enum:
            - SCREENED
            - PENDING
            - ERROR
          description: スクリーニング結果のステータス。
        summary:
          type: string
          description: スクリーニング結果の、人が読める形式の概要。
        wallet_address:
          type: string
          description: スクリーニングされたアドレスで、そのまま返されます。
        transaction_hash:
          type: string
          nullable: true
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に`null`です。
        blockchain:
          type: string
          description: スクリーニングされたブロックチェーン。
        block_timestamp:
          type: string
          nullable: true
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に`null`です。
        total_value_usd:
          type: number
          nullable: true
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に`null`です。
        fee_usd:
          type: number
          nullable: true
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に`null`です。
        sender_rows:
          type: array
          items:
            type: object
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に空です。
        receiver_rows:
          type: array
          items:
            type: object
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に空です。
        transaction_flows:
          type: array
          items:
            type: object
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に空です。
        transaction_flows_status:
          type: string
          nullable: true
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に`null`です。
        transaction_flows_error:
          type: string
          nullable: true
          description: 取引スクリーニングのフィールドで、結果の形式と共通です。ウォレットスクリーニングの結果では常に`null`です。
        source_of_funds:
          type: array
          description: このアドレスが資金を受け取った送金元（エンティティ別に帰属を特定）。各エントリはエクスポージャーの内訳です。
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  正規化されたリスクカテゴリ。例:
                  `exchange_licensed`、`dex`、`defi`、`payment_processor`、`mixer`、`darknet_market`、`sanctioned`、`stolen_funds`、`high_risk_exchange`。
              percentage:
                type: number
                description: その方向の総エクスポージャーに占める割合（0〜100）。
              amount_usd:
                type: number
                nullable: true
                description: このエンティティに帰属するUSD価値。
              entity_name:
                type: string
                nullable: true
                description: 帰属先エンティティの名称（例：取引所、ミキサー、制裁対象グループ）。
              entity_type:
                type: string
                nullable: true
                description: >-
                  プロバイダーにおけるエンティティの種類です(例:`Exchange`、`DeFi`、`Sanctions`、`Theft`)。
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  より詳細なサブタイプ（例: `Mandatory KYC and AML`、`OFAC`、`Yield
                  Aggregator`）。
              hops:
                type: integer
                nullable: true
                description: >-
                  プロバイダーが報告する場合の、エンティティまでのホップ数（直接の取引相手の場合は1）。Merkle
                  Scienceでは常に`null`です。Merkle
                  Scienceはエクスポージャーが直接か間接かのみを報告するため、`exposure_type`を使用してください。
              description:
                type: string
                nullable: true
                description: プロバイダーによるエンティティのラベルどおりの`entity_type / entity_subtype`。
              is_direct:
                type: boolean
                description: '`exposure_type`が`direct`の場合はtrue。'
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: 資金がこのエンティティから来たもの(`incoming`)か、このエンティティへ送られたもの(`outgoing`)か。
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: '`direct`（1ホップ）または`indirect`（マルチホップ）のエクスポージャー。'
              provider_entity_id:
                type: string
                nullable: true
                description: エンティティに対するプロバイダー独自の識別子です。
              provider_entity_type_id:
                type: string
                nullable: true
                description: '`entity_type`に対するプロバイダー独自の識別子です。'
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: '`entity_subtype`に対するプロバイダー独自の識別子です。'
              country:
                type: string
                nullable: true
                description: エンティティの主たる国(ISO 3166-1 alpha-2)。プロバイダーが把握していない場合は空または`null`です。
              raw_amount:
                type: number
                nullable: true
                description: 資産自体の単位での金額（プロバイダーが報告する場合）。
              raw_currency:
                type: string
                nullable: true
                description: プロバイダーが報告する場合の`raw_amount`の単位。
        destination_of_funds:
          type: array
          description: >-
            このアドレスが資金を送った送金先（エンティティ別に帰属を特定）。項目の形式は`source_of_funds`と同じで、`exposure_direction`
            = `outgoing`です。
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  正規化されたリスクカテゴリ。例:
                  `exchange_licensed`、`dex`、`defi`、`payment_processor`、`mixer`、`darknet_market`、`sanctioned`、`stolen_funds`、`high_risk_exchange`。
              percentage:
                type: number
                description: その方向の総エクスポージャーに占める割合（0〜100）。
              amount_usd:
                type: number
                nullable: true
                description: このエンティティに帰属するUSD価値。
              entity_name:
                type: string
                nullable: true
                description: 帰属先エンティティの名称（例：取引所、ミキサー、制裁対象グループ）。
              entity_type:
                type: string
                nullable: true
                description: >-
                  プロバイダーにおけるエンティティの種類です(例:`Exchange`、`DeFi`、`Sanctions`、`Theft`)。
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  より詳細なサブタイプ（例: `Mandatory KYC and AML`、`OFAC`、`Yield
                  Aggregator`）。
              hops:
                type: integer
                nullable: true
                description: >-
                  プロバイダーが報告する場合の、エンティティまでのホップ数（直接の取引相手の場合は1）。Merkle
                  Scienceでは常に`null`です。Merkle
                  Scienceはエクスポージャーが直接か間接かのみを報告するため、`exposure_type`を使用してください。
              description:
                type: string
                nullable: true
                description: プロバイダーによるエンティティのラベルどおりの`entity_type / entity_subtype`。
              is_direct:
                type: boolean
                description: '`exposure_type`が`direct`の場合はtrue。'
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: 資金がこのエンティティから来たもの(`incoming`)か、このエンティティへ送られたもの(`outgoing`)か。
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: '`direct`（1ホップ）または`indirect`（マルチホップ）のエクスポージャー。'
              provider_entity_id:
                type: string
                nullable: true
                description: エンティティに対するプロバイダー独自の識別子です。
              provider_entity_type_id:
                type: string
                nullable: true
                description: '`entity_type`に対するプロバイダー独自の識別子です。'
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: '`entity_subtype`に対するプロバイダー独自の識別子です。'
              country:
                type: string
                nullable: true
                description: エンティティの主たる国(ISO 3166-1 alpha-2)。プロバイダーが把握していない場合は空または`null`です。
              raw_amount:
                type: number
                nullable: true
                description: 資産自体の単位での金額（プロバイダーが報告する場合）。
              raw_currency:
                type: string
                nullable: true
                description: プロバイダーが報告する場合の`raw_amount`の単位。
        counterparty_connections:
          type: array
          description: >-
            プロバイダーがスクリーニング対象のアドレスに紐付けたエンティティ。Merkle
            Scienceの場合、これらはアドレス自体の所有者タグとユーザータグから取得されるため、同じエンティティが2回表示されることがあり、資金フローは含まれません。`received_usd`、`sent_usd`、`received_hops`、`sent_hops`は`null`で、`percentage`は0です。ここでは`risk_level`や`is_direct`に基づいて処理を分岐しないでください。判定には`sanctions_hit`、`dominant_risk_category`、`risk_factors[].is_high_risk`を、直接性の判断には`source_of_funds`/`destination_of_funds`内の`exposure_type`を使用してください。
          items:
            type: object
            properties:
              entity_name:
                type: string
                nullable: true
                description: 帰属先のエンティティ名。
              entity_type:
                type: string
                nullable: true
                description: プロバイダーにおけるエンティティの種類です。
              entity_subtype:
                type: string
                nullable: true
                description: プロバイダーにおけるエンティティのサブタイプです。
              risk_level:
                type: string
                description: >-
                  小文字で、プロバイダーに依存します。Merkle
                  Scienceの場合は、アドレス自体の0〜5のリスク等級（`no_risk`、`low`、`medium_low`、`medium`、`high`、`critical`）で、エンティティのカテゴリーが高リスクの場合は`high`に引き上げられます。エンティティ独自の等級ではありません。
              categories:
                type: array
                items:
                  type: string
                description: エンティティの正規化されたリスクカテゴリー。
              received_usd:
                type: number
                nullable: true
                description: エンティティから受け取ったUSD額(プロバイダーが報告する場合)。
              sent_usd:
                type: number
                nullable: true
                description: エンティティに送ったUSD額(プロバイダーが報告する場合)。
              received_hops:
                type: integer
                nullable: true
                description: 受取側のエンティティまでのホップ数です(プロバイダーが報告した場合)。
              sent_hops:
                type: integer
                nullable: true
                description: 送信側のエンティティまでのホップ数です(プロバイダーが報告した場合)。
              percentage:
                type: number
                description: プロバイダーが報告している場合は、そのアドレスのエクスポージャーに占める割合。それ以外の場合は0。
              is_direct:
                type: boolean
                description: >-
                  Merkle Scienceでは常に`true`です。Merkle
                  Scienceの接続は取引相手ではなく帰属情報であるためです。
              country:
                type: string
                nullable: true
                description: 判明している場合、エンティティの国。
              provider_entity_id:
                type: string
                nullable: true
                description: エンティティに対するプロバイダー独自の識別子です。
        network_nodes:
          type: array
          items:
            type: object
          description: 取引スクリーニング用のエクスポージャーグラフのノードです。ウォレットスクリーニングの結果では空になります。
        network_edges:
          type: array
          items:
            type: object
          description: 取引スクリーニング用のエクスポージャーグラフのエッジです。ウォレットスクリーニングの結果では空になります。
        sanctions_hit:
          type: boolean
          description: アドレスに直接的または間接的な制裁エクスポージャーがある場合はtrue。
        pep_counterparty:
          type: boolean
          description: >-
            重要な公的地位を有する者
            (PEP)への該当状況。PEPの検出結果がない場合は`null`となり、現時点ではPEPの結果を報告するプロバイダーがないため、すべての結果がこれに該当します。`false`は、スクリーニングで明示的に否定的な結果が出た場合にのみ返されます。`null`をPEPチェック完了と解釈しないでください。
          nullable: true
        dominant_risk_category:
          type: string
          nullable: true
          description: >-
            最も重みの高い高リスクカテゴリです(例:
            `sanctioned`、`mixer`、`stolen_funds`)。支配的なカテゴリがない場合は`null`です。
        risk_factors:
          type: array
          description: >-
            `risk_score`の順位付きの説明で、この判定を導いた要因を示します。プロバイダーは独自のモデルでアドレスを評価し、判定のみを返すため（Merkle
            Scienceは0〜5の整数を返します）、スコアだけでは対応に活かせません。高リスクのものを先頭に、次に各ドライバーを経由した金額の大きい順に並べ、上位5件までに制限されます。`source_of_funds`と`destination_of_funds`には常に完全な内訳が含まれます。`risk_score`が高いにもかかわらず`is_high_risk`のエントリがない場合は、プロバイダーが制裁や帰属エンティティとの一致を報告しておらず、独自のエクスポージャーモデルのみでアドレスを評価したことを意味します。このことは`summary`に明記されます。
          items:
            type: object
            properties:
              source:
                type: string
                enum:
                  - attribution
                  - exposure
                description: >-
                  `attribution`はプロバイダーがそのアドレス自体を何と判断しているか（独自のタグやクラスター）を示し、`exposure`はその資金が実際にどこへ移動したかを示します。
              category:
                type: string
                description: 正規化されたリスクカテゴリ。エクスポージャーの内訳と同じ語彙を使用します。
              label:
                type: string
                description: >-
                  この要因に対するプロバイダー独自の表記（例：`Gambling / Crypto
                  only`）で、プロバイダーのコンソールに表示されるものと同じです。
              entity_name:
                type: string
                nullable: true
                description: ドライバーの背後にある帰属先エンティティ。たとえばギャンブルサイトや取引所などです。
              direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                  - unknown
                  - attribution
                description: >-
                  資金フローの方向です。要因がアドレス自体のタグである場合は`attribution`、プロバイダーが方向を報告しなかった場合は`unknown`となります。
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                  - unknown
                  - attribution
                description: >-
                  `direct`（1ホップ）または`indirect`（マルチホップ）、アドレス自体のタグの場合は`attribution`、取引相手までのホップ数をプロバイダーが示さなかった場合は`unknown`。`unknown`は`direct`ではなく、未分類として扱ってください。
              amount_usd:
                type: number
                format: float
                nullable: true
                description: このドライバーに帰属するUSD価値。
              percentage:
                type: number
                format: float
                description: >-
                  双方向を合算した、そのアドレスのスクリーニング対象の総量に占める割合。方向ごとに正規化される`source_of_funds`/`destination_of_funds`内の`percentage`とは異なり、リスト全体で比較・合計できます。
              is_high_risk:
                type: boolean
                description: >-
                  カテゴリがDiditで高リスクとして扱うもの(`sanctioned`、`mixer`、`stolen_funds`、`ransomware`、`scam`、`darknet_market`、`terrorist_financing`、`child_exploitation`、`hacked_exchange`、`high_risk_exchange`、`seized_funds`)かどうか。
              description:
                type: string
                description: >-
                  ドライバーの1行表現です。例: `9.01% indirect outgoing exposure to Gambling
                  / Crypto only (Example Gambling)`。
        raw_response:
          type: object
          additionalProperties: true
          description: >-
            プロバイダー独自のペイロードです。形式はプロバイダーごとに異なり、予告なく変更される場合があります。解析せずに、正規化されたフィールドを参照してください。
        report_signature:
          type: string
          description: >-
            この結果そのものに対する不透明なHMAC-SHA256署名で、アプリケーションにスコープされています。単体では意味を持ちません。PDFとして出力するには、このフィールドを含むレスポンス本文全体を変更せずに`POST
            /v3/wallet-screening/pdf/`へ再送信してください。`report_signature`が欠落している場合、または署名対象のフィールド（例:
            `risk_score`、`severity`、`sanctions_hit`）が再送信前に編集されていた場合、PDFエンドポイントはリクエストを`400`で拒否します。
      required:
        - provider
        - screening_type
        - risk_score
        - severity
        - status
        - summary
        - wallet_address
        - blockchain
        - sanctions_hit
        - dominant_risk_category
        - source_of_funds
        - destination_of_funds
        - counterparty_connections
        - report_signature
  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.