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

# KYB主要人物送信API

> Didit APIのエンドポイントで、KYBセッションの準備済み主要人物を申告し、KYC認証が必要な各当事者の認証を開始します。



## OpenAPI

````yaml ja/openapi-25.json POST /v3/session/{sessionId}/kyb/parties/submit/
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/session/{sessionId}/kyb/parties/submit/:
    post:
      tags:
        - Sessions
      summary: KYBの関係者ドラフトを送信する
      description: >-
        保存済みのドラフトを企業の主要人物として宣言します。これはAPIキーで実行するホスト型の主要人物ステップです。Diditはワークフローの役割設定と所有構造のしきい値から検証が必要な関係者を判断し、それぞれについて個人のKYCセッション（法人の所有者の場合はKYBサブセッション）を1件作成し、ワークフローが求めるメールを送信して、セッションを進めます。各子セッションはホスト型フローと同様に請求されます。ドラフトは消費されます。送信が成功した後に呼び出しを繰り返しても何も変更されず、`200`で`already_submitted:
        true`と既存の関係者を返します。セッションは主要人物ステップにある必要があります。各人物の`kyc_session_url`を本人に送信するか、埋め込んでください。`write:businesses`が必要です。
      operationId: post_v3_session_kyb_parties_submit
      parameters:
        - name: sessionId
          in: path
          required: true
          description: 法人確認 (KYB) セッションのUUIDです。APIキーのアプリケーションに属している必要があります。
          schema:
            type: string
            format: uuid
            example: 33333333-4444-5555-6666-777777777777
        - name: node_id
          in: query
          required: false
          description: >-
            KYBステップのワークフローノード。ワークフローに複数のKYBノードがある場合にのみ必要です。デフォルトでは、Diditはセッション自身のノードを使用します。
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                locale:
                  type: string
                  maxLength: 10
                  description: セッションの移行先となるステップのレスポンスを翻訳するために使用するロケール。
            example:
              locale: es
      responses:
        '200':
          description: 申告された（または既に申告済みの）関係者。
          content:
            application/json:
              schema:
                type: object
                properties:
                  valid:
                    type: boolean
                  next_step:
                    type: string
                    nullable: true
                    description: セッションの現在のステップ。
                  status:
                    type: string
                    description: 企業セッションのステータス。
                  advanced:
                    type: boolean
                    description: この呼び出しで当事者が申告され、セッションが次に進んだ場合は`true`です。
                  already_submitted:
                    type: boolean
                    description: 当事者が以前の呼び出しで申告済みだった場合は`true`です。
                  kyb_key_people_status:
                    type: string
                  parties:
                    type: array
                    items:
                      $ref: '#/components/schemas/KYBKeyPeopleParty'
              example:
                valid: true
                next_step: FINISHED
                status: In Progress
                advanced: true
                already_submitted: false
                kyb_key_people_status: In Progress
                parties: []
        '401':
          description: >-
            スコープ付きAPIキーの有効期限が切れています。`401`が返されるのはこの場合のみです。キーが指定されていない場合、無効な場合、または取り消されている場合は`403`が返されます。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: 人が読めるエラーメッセージ。
              examples:
                Expired key:
                  summary: キーの有効期限が過ぎています
                  value:
                    detail: This API key has expired.
        '402':
          description: 子検証セッションに使用できるクレジットが組織に残っていません。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: 人が読めるエラーメッセージ。
              example:
                detail: Insufficient credits.
        '403':
          description: >-
            認証または認可に失敗しました。キーがない場合、別のアプリケーションのキーの場合、このエンドポイントに必要な権限を持たないスコープ付きキーの場合、キーのIP許可リスト外からのリクエストの場合は`403`を返し、誤った、失効した、または期限切れのキーの場合は`401`を返します。`detail`で区別してください。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: 人が読めるエラーメッセージ。
              examples:
                Missing or invalid credentials:
                  summary: x-api-keyヘッダーがないか、キーの検証に失敗しました
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Other application:
                  summary: セッションとは別のアプリケーションに属する有効なキー
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without decisions write:
                  summary: 'スコープ付きキーにdecisions: write権限がない'
                  value:
                    detail: This API key has no write access to decisions.
                IP not allowed:
                  summary: キーのIP許可リスト外からのリクエスト
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            セッションが存在しない、削除されている、別のアプリケーションに属している、またはスコープ付きキーの制限外です。これらを区別する詳細は返されません。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: 人が読めるエラーメッセージ。
              example:
                detail: Session not found.
        '409':
          description: >-
            `kyb_no_party_drafts`: 送信するものがありません。`kyb_parties_already_submitted`:
            関係者の申告後に下書きが追加されました。`kyb_step_mismatch`:
            セッションが主要人物ステップにありません（`next_step`が現在のステップを示します）。`kyb_session_not_writable`:
            セッションは終了しています。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: 人が読めるエラーメッセージ。
                  code:
                    type: string
                  next_step:
                    type: string
              example:
                detail: There are no draft parties to submit.
                code: kyb_no_party_drafts
        '429':
          description: >-
            レート制限を超過しました。書き込み（POST、PATCH、DELETE）リクエストはAPIキーごとに1分あたり300件までです。`Retry-After`秒待ってから再試行してください。`X-RateLimit-*`ヘッダーで利用枠を確認できます。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: 人が読めるエラーメッセージ。
              examples:
                Rate limited:
                  summary: 現在の1分間の上限を使い切りました
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
          headers:
            Retry-After:
              description: 再試行までに待機する秒数。
              schema:
                type: integer
                minimum: 1
                example: 30
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.submit_kyb_parties(
                "33333333-4444-5555-6666-777777777777",
                locale="es",
            )
            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.sessions.submitKybParties("33333333-4444-5555-6666-777777777777",
            {
              locale: "es",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.SubmitKYBParties(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsSubmitKYBPartiesParams{\n\tLocale: didit.String(\"es\"),\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.SessionsSubmitKybPartiesParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().submitKybParties("33333333-4444-5555-6666-777777777777",
            SessionsSubmitKybPartiesParams.builder()
                    .locale("es")
                    .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->sessions->submitKybParties('33333333-4444-5555-6666-777777777777',
            [
                'locale' => 'es',
            ]);

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

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

            result = didit.sessions.submit_kyb_parties(
              "33333333-4444-5555-6666-777777777777",
              locale: "es"
            )
            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.Sessions.SubmitKybPartiesAsync("33333333-4444-5555-6666-777777777777",
            new SessionsSubmitKybPartiesParams

            {
                Locale = "es",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    KYBKeyPeopleParty:
      type: object
      description: >-
        法人確認
        (KYB)セッションの主要人物の当事者と、その子検証。同じ当事者は、企業セッションの判定の`key_people_checks[].submitted.parties[]`にも含まれます。
      required:
        - uuid
        - entity_type
        - source
        - name
        - is_active
        - is_skipped
        - requires_verification
        - roles
        - kyc_session_deleted
        - kyb_sub_session_deleted
      properties:
        uuid:
          type: string
          format: uuid
          description: 関係者の識別子。
        entity_type:
          type: string
          enum:
            - person
            - company
          description: 当事者が個人か企業か。
        source:
          type: string
          enum:
            - REGISTRY
            - USER
          description: '`REGISTRY`：法人登記から取得したものです。`USER`：主要人物画面で入力したものです。'
        name:
          type: string
          description: 当事者の表示名です。
        first_name:
          type: string
          nullable: true
          description: 名（個人）。
        last_name:
          type: string
          nullable: true
          description: 姓(個人)。
        company_name:
          type: string
          nullable: true
          description: 会社名（企業の当事者）。
        registration_number:
          type: string
          nullable: true
          description: 会社の登記番号（企業の当事者）。
        email:
          type: string
          format: email
          nullable: true
          description: 認証リンクの送信先メールアドレス。
        nationality:
          type: string
          nullable: true
          description: 個人の場合は国籍、企業の場合は設立国。
        phone_number:
          type: string
          nullable: true
          description: 当事者について収集された電話番号。
        date_of_birth:
          type: string
          format: date
          nullable: true
          description: 生年月日（個人）。
        position:
          type: string
          nullable: true
          description: 自由記述の役職（個人）。
        custom_fields:
          type: object
          additionalProperties: true
          description: 当事者について収集された、ワークフローで定義されたカスタムフィールド。フィールドキーをキーとします。
        is_active:
          type: boolean
          description: 当事者が有効かどうか。
        is_skipped:
          type: boolean
          description: 当事者が検証を免除されているかどうか。再生成するとクリアされます。
        requires_verification:
          type: boolean
          description: 役割と所有構造のルールにより、この当事者の検証が必要かどうか。
        roles:
          type: array
          description: 当事者が企業内で持つ役割。
          items:
            type: object
            required:
              - role
              - ownership_percent
              - voting_percent
            properties:
              role:
                type: string
                enum:
                  - director
                  - non_executive_director
                  - secretary
                  - chairman
                  - ubo
                  - shareholder
                  - representative
                  - founder
                  - legal_advisor
                  - authorized_signatory
                  - trustee
                  - beneficiary
                  - settlor
                  - protector
                  - company_officer
                  - investor
                  - other
                description: 役割コード。
              ownership_percent:
                type: number
                nullable: true
                description: この役割の所有割合（判明している場合）。
              voting_percent:
                type: number
                nullable: true
                description: この役割の議決権比率（判明している場合）。
        kyc_session_id:
          type: string
          format: uuid
          nullable: true
          description: 個人向けの子KYCセッション（個人）。
        kyc_session_status:
          type: string
          nullable: true
          enum:
            - Not Started
            - In Progress
            - Approved
            - Declined
            - In Review
            - Expired
            - Abandoned
            - Kyc Expired
            - Resubmitted
            - Awaiting User
            - null
          description: 子KYCセッションのステータスです。削除されたセッションは、削除時点のステータスを保持します。
        kyc_session_url:
          type: string
          format: uri
          nullable: true
          description: >-
            子KYCセッションのホスト型リンクです。セッションが存在しない場合や削除された場合、および`sessions:
            write`を持たないスコープ付きAPIキーの場合は`null`です。
        kyc_session_deleted:
          type: boolean
          description: 子KYCセッションが削除されたため、確定することはありません。
        kyb_sub_session_id:
          type: string
          format: uuid
          nullable: true
          description: 子KYBセッション（法人の当事者）。
        kyb_sub_session_status:
          type: string
          nullable: true
          enum:
            - Not Started
            - In Progress
            - Approved
            - Declined
            - In Review
            - Expired
            - Abandoned
            - Kyc Expired
            - Resubmitted
            - Awaiting User
            - null
          description: 子KYBセッションのステータス。
        kyb_sub_session_url:
          type: string
          format: uri
          nullable: true
          description: 子KYBセッションのホスト型リンクです。`null`になる条件は`kyc_session_url`と同じです。
        kyb_sub_session_deleted:
          type: boolean
          description: '`kyc_session_deleted`の法人当事者版。'
        verification_workflow_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - adaptive_age_verification
            - biometric_authentication
            - address_verification
            - questionnaire_verification
            - email_verification
            - phone_verification
            - null
          description: 子セッションが実行するワークフローの種類。
        verification_workflow_id:
          type: string
          format: uuid
          nullable: true
          description: 子セッションが実行するワークフロー。
        verification_workflow_label:
          type: string
          nullable: true
          description: そのワークフローのラベル。
        verification_workflow_features:
          type: array
          nullable: true
          description: 子セッションのワークフローに含まれる機能と、その現在のステータスです。
          items:
            type: object
            required:
              - feature
              - status
            properties:
              feature:
                type: string
                description: '機能コード。例: `ID_VERIFICATION`、`LIVENESS`。'
              status:
                type: string
                description: 機能のステータス。実行されるまでは`Not Finished`です。
        didit_internal_id:
          type: string
          format: uuid
          nullable: true
          description: 認証された人物のDidit識別子です（判明した時点で設定されます）。
  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.