> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API Impor Sesi Bersama: KYC yang Dapat Digunakan Kembali

> Impor sesi KYC/KYB lewat token berbagi mitra dengan POST /v3/session/import-shared/ di Didit. Tanpa verifikasi ulang, bayar per penggunaan.



Prompt Impor Sesi yang Dibagikan
        Salin prompt ke papan klip



      
      

\<pre>

\`Import a verification session shared by a partner application (Reusable KYC / KYB).

Endpoint:
POST https://verification.didit.me/v3/session/import-shared/

Authentication:
Use the x-api-key header with the receiving application's Didit API key. Privilege: write:sessions.

Request body:
\- share_token (string, required) — JWT minted by the partner via POST /v3/session/{id}/share/. Didit decodes it, reads the embedded session_kind, and clones the matching kind.
\- workflow_id (string, UUID, required) — Workflow in YOUR application to attach the imported session to. KYC token → pass a KYC workflow_id. KYB token → pass a KYB workflow_id.
\- vendor_data (string, optional) — Your stable identifier for the entity. Auto-creates a User or Business entity if it does not already exist.
\- trust_review (boolean, optional, default false) — false → imported session lands in "In Review" so your team can re-review. true → imported session preserves the original status (e.g. "Approved"). Use true only when you fully trust the sharing partner's decision.

curl example:
curl -X POST https://verification.didit.me/v3/session/import-shared/ \
-H "x-api-key: <RECEIVING_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"share_token": "<JWT_FROM_PARTNER>",
"workflow_id": "<YOUR_WORKFLOW_ID>",
"vendor_data": "partner-user-42",
"trust_review": false
}'

Response (201 Created):
\- session_id (UUID) — NEW UUID minted in your application.
\- session_kind ("user" | "business") — same as the original.
\- session_number — fresh sequence in your application.
\- status — original status (if trust_review=true) or "In Review" (if trust_review=false).
\- shared_from_session — pointer to the original session in the source application.
\- vendor_data, workflow_id — what you sent.
\- All cloned feature arrays: KYC tokens clone id_verifications + liveness_checks + face_matches + face + AML + location + POA + phone + email + database_validations + logs; KYB tokens clone registry_checks + key_people_checks + document_verifications + AML + phone + email + location + questionnaire + logs.

Backward compatibility:
Tokens minted before the unified-sharing rollout (no session_kind field) default to "user" when decoded.

Idempotency:
Importing the same share_token twice into the same application is rejected with 403, for user and business sessions alike.

Failure modes:
\- 400 - { "share_token": ["Invalid share token."] } when the token is malformed or was not issued by Didit.
\- 400 - { "share_token": ["Share token has expired."] } when its exp has passed.
\- 400 - { "share_token": ["This token is not valid for this application."] } when the token was issued for another application.
\- 400 - { "share_token": ["Original session does not exist."] } when the shared session was deleted.
\- 403 - { "detail": "This session has already been shared with your application." } when the session was already imported into this application.
\- 404 - { "detail": "Workflow does not exist for this application." } when workflow_id is not a workflow of your application.

When to call:
\- Cross-organization Reusable KYC (bank → fintech, marketplace → payment provider, etc.).
\- Promoting a verified user from your sandbox application to your production application.
\- Group-company sharing across sibling applications.

After import:
\- The new session works like any other session — fetch with GET /v3/session/{session_id}/decision/ (see /sessions-api/retrieve-session) and react to status / data webhooks.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Tempel ke

## Dukungan KYC dan KYBDidit mendekode token berbagi, membaca `session_kind` yang tertanam di dalamnya, lalu mengkloning jenis sesi yang sesuai:- `session_kind: "user"` mengkloning sesi pengguna beserta baris terkait untuk identitas, wajah, Deteksi Liveness, Pencocokan Wajah, AML, lokasi, bukti alamat (POA), telepon, email, validasi database, dan log.
- `session_kind: "business"` mengkloning sesi bisnis beserta baris terkait untuk pemeriksaan registri, data pihak kunci, dokumen, skrining AML, telepon, email, lokasi, kuesioner, dan log.Jika token dibuat sebelum peluncuran berbagi terpadu dan tidak memiliki kolom `session_kind`, Didit menggunakan `"user"` sebagai default demi kompatibilitas mundur.## Apa yang dibuat- **Sesi baru** dengan jenis yang sama di aplikasi Anda, dengan `session_id`, `session_number`, dan `session_url` yang baru.
- Kolom `shared_from_session` pada sesi baru menunjuk ke sesi asli di aplikasi sumber.
- Status sesi baru adalah status asli (`trust_review: true`) atau `IN_REVIEW` (`trust_review: false`).
- Entitas baru (Pengguna atau Bisnis) dibuat otomatis untuk `vendor_data` jika belum ada.## Contoh> [tab] Impor sesi Verifikasi Pengguna (KYC)
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/session/import-shared/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "share_token": "eyJhbGciOiJIUzI1NiJ9...",
>     "workflow_id": "your-kyc-workflow-id",
>     "vendor_data": "partner-user-42",
>     "trust_review": false
>   }'
> ```
>
> **Respons (201 Dibuat):**
>
> ```json theme={null}
> {
>   "session_id": "new-uuid",
>   "session_kind": "user",
>   "shared_from_session": "original-uuid",
>   "status": "In Review",
>   "vendor_data": "partner-user-42",
>   "id_verifications": [...],
>   "liveness_checks": [...],
>   "...": "..."
> }
> ```> [tab] Impor sesi Verifikasi Bisnis (KYB)
>
> ```bash theme={null}
> curl -X POST https://verification.didit.me/v3/session/import-shared/ \
>   -H "x-api-key: YOUR_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "share_token": "eyJhbGciOiJIUzI1NiJ9...",
>     "workflow_id": "your-kyb-workflow-id",
>     "vendor_data": "partner-biz-acme",
>     "trust_review": true
>   }'
> ```
>
> **Respons (201 Dibuat):**
>
> ```json theme={null}
> {
>   "session_id": "new-uuid",
>   "session_kind": "business",
>   "shared_from_session": "original-uuid",
>   "status": "Approved",
>   "vendor_data": "partner-biz-acme",
>   "registry_checks": [...],
>   "key_people_checks": [...],
>   "document_verifications": [...],
>   "...": "..."
> }
> ```## Parameter `trust_review`| Nilai | Efek |
| - | - |
| `true` | Sesi yang diimpor mempertahankan status asli (misalnya `APPROVED`). Gunakan jika Anda sepenuhnya memercayai keputusan mitra berbagi. |
| `false` | Sesi yang diimpor masuk ke `IN_REVIEW` sehingga tim Anda dapat meninjau ulang sebelum bertindak. Default yang aman untuk mitra eksternal. |## Galat| Status | Alasan |
| - | - |
| `400` | `share_token` tidak valid, kedaluwarsa, diterbitkan untuk aplikasi lain, atau mengarah ke sesi yang telah dihapus. Pesan kesalahan berada di bawah kunci `share_token`. |
| `403` | Sesi sudah pernah diimpor ke aplikasi Anda. |
| `404` | `workflow_id` bukan alur kerja milik aplikasi Anda. |## IdempotensiMengimpor `share_token` yang sama dua kali ke aplikasi yang sama akan ditolak dengan `403`, baik untuk sesi pengguna maupun sesi bisnis.## Terkait- [Bagikan sesi](https://docs.didit.me/id/sessions-api/share-session/share.md)
- [Panduan KYC yang Dapat Digunakan Kembali](https://docs.didit.me/id/core-technology/reusable-kyc/share-kyc-via-api.md)
- [Ikhtisar sesi](https://docs.didit.me/id/sessions-api/overview.md)


## OpenAPI

````yaml id/openapi-25.json POST /v3/session/import-shared/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/session/import-shared/:
    post:
      tags:
        - Sessions
      summary: >-
        Tukarkan token berbagi untuk mengkloning sesi verifikasi ke dalam
        aplikasi Anda
      description: >-
        Tukarkan token berbagi untuk mengkloning sesi KYC atau KYB ke dalam
        aplikasi pemanggil dengan `session_id` baru. Tidak bersifat idempoten —
        token hanya dapat ditukarkan sekali per penerima.
      operationId: post_v3_session_import_shared
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - share_token
                - trust_review
                - workflow_id
              properties:
                share_token:
                  type: string
                  description: >-
                    Token berbagi JWT yang diterbitkan oleh [`POST
                    /v3/session/{sessionId}/share/`](/sessions-api/share-session).
                  example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                trust_review:
                  type: boolean
                  description: >-
                    Jika `true`, sesi hasil kloning mempertahankan `status`
                    akhir sumbernya. Jika `false`, statusnya dipaksa menjadi `In
                    Review`.
                  example: false
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    UUID alur kerja di aplikasi pemanggil. ID lintas aplikasi
                    ditolak dengan `404`.
                  example: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                vendor_data:
                  type: string
                  nullable: true
                  description: >-
                    Penimpaan opsional untuk `vendor_data` dari sesi yang
                    dikloning.
                  example: user-1
            example:
              share_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
              trust_review: false
              workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
              vendor_data: user-1
      responses:
        '201':
          description: >-
            Sesi dikloning. Isi respons adalah payload keputusan V3 untuk kedua
            jenis, dibedakan berdasarkan `session_kind`: `"user"` (KYC) dengan
            blok fitur berbasis daftar seperti `id_verifications`,
            `liveness_checks`, `aml_screenings`; `"business"` (KYB) dengan blok
            seperti `registry_checks` dan `key_people_checks`. Keduanya
            menyertakan `shared_from_session` — `session_id` dari sesi asli di
            aplikasi sumber. Dengan `trust_review: false`, `status` sesi yang
            dikloning dipaksa menjadi `In Review`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionDecision'
              examples:
                User session imported:
                  summary: >-
                    Sesi KYC yang dikloning (dipotong — payload keputusan V3
                    lengkap pada kenyataannya)
                  value:
                    session_id: 11111111-2222-3333-4444-555555555555
                    session_kind: user
                    shared_from_session: 99999999-8888-7777-6666-555555555555
                    session_number: 43762
                    session_url: null
                    status: In Review
                    workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                    vendor_data: user-1
                    created_at: '2026-05-17T08:42:11Z'
                    expires_at: '2026-05-24T08:42:11Z'
                Business session imported:
                  summary: >-
                    Sesi KYB yang dikloning (dipotong — payload keputusan KYB V3
                    lengkap pada kenyataannya)
                  value:
                    session_id: 22222222-3333-4444-5555-666666666666
                    session_kind: business
                    shared_from_session: 88888888-7777-6666-5555-444444444444
                    session_number: 982
                    session_url: null
                    status: Approved
                    workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                    vendor_data: company-1
        '400':
          description: >-
            Kesalahan validasi (token tidak valid, kedaluwarsa, target salah,
            atau mereferensikan sesi yang sudah tidak ada).
          content:
            application/json:
              examples:
                Invalid Share Token:
                  summary: JWT tidak valid
                  value:
                    share_token:
                      - Invalid share token.
                Expired Share Token:
                  summary: Token melewati `exp`
                  value:
                    share_token:
                      - Share token has expired.
                Wrong audience:
                  summary: Token tidak terikat ke aplikasi ini
                  value:
                    share_token:
                      - This token is not valid for this application.
                Original missing:
                  summary: Sesi sumber telah dihapus
                  value:
                    share_token:
                      - Original session does not exist.
        '403':
          description: >-
            Kunci API tidak ada (kunci yang salah, dicabut, atau kedaluwarsa
            mendapatkan `401`), atau sesi sumber ini telah diimpor ke dalam
            aplikasi pemanggil (satu penukaran per penerima).
          content:
            application/json:
              examples:
                Forbidden:
                  summary: Dilarang
                  value:
                    detail: You do not have permission to perform this action.
                Already imported:
                  summary: Sumber sudah diimpor satu kali
                  value:
                    detail: >-
                      This session has already been shared with your
                      application.
        '404':
          description: '`workflow_id` bukan milik aplikasi yang memanggil.'
          content:
            application/json:
              examples:
                Workflow not found:
                  summary: Alur kerja tidak diketahui
                  value:
                    detail: Workflow does not exist for this application.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST \
              https://verification.didit.me/v3/session/import-shared/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "share_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                "trust_review": false,
                "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                "vendor_data": "user-1"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.import_shared(
                share_token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                trust_review=False,
                workflow_id="9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                vendor_data="user-1",
            )
            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.importShared({
              share_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
              trust_review: false,
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              vendor_data: "user-1",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ImportShared(ctx, didit.SessionsImportSharedParams{\n\tShareToken:  \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n\tTrustReview: false,\n\tWorkflowID:  \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n\tVendorData:  didit.String(\"user-1\"),\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.SessionsImportSharedParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().importShared(SessionsImportSharedParams.builder()
                    .shareToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...")
                    .trustReview(false)
                    .workflowId("9f9b1234-aaaa-bbbb-cccc-1234567890ab")
                    .vendorData("user-1")
                    .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->importShared([
                'share_token' => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',
                'trust_review' => false,
                'workflow_id' => '9f9b1234-aaaa-bbbb-cccc-1234567890ab',
                'vendor_data' => 'user-1',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.import_shared(
              share_token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
              trust_review: false,
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              vendor_data: "user-1"
            )
            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.ImportSharedAsync(new
            SessionsImportSharedParams

            {
                ShareToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                TrustReview = false,
                WorkflowId = "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                VendorData = "user-1",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionDecision:
      type: object
      properties:
        session_id:
          type: string
          format: uuid
          description: Pengidentifikasi unik sesi.
        session_kind:
          type: string
          enum:
            - user
            - business
          description: >-
            Diskriminator yang menunjukkan apakah ini sesi Verifikasi Pengguna
            (KYC) atau Verifikasi Bisnis (KYB). Jika `user`, array fitur KYC
            (`id_verifications`, `nfc_verifications`, `liveness_checks`,
            `face_matches`, `poa_verifications`, `document_ai_documents`,
            `database_validations`, ...) berlaku dan array bisnis tidak ada.
            Jika `business`, payload memuat `registry_checks`,
            `document_verifications`, `key_people_checks` ditambah array bersama
            (`aml_screenings`, `phone_verifications`, `email_verifications`,
            `ip_analyses`, `questionnaire_responses`). **Ditiadakan ketika
            `include=events` diteruskan** — bentuk event hanya ada untuk sesi
            pengguna, sehingga diskriminator dihapus dari varian tersebut.
        shared_from_session:
          type: string
          format: uuid
          nullable: true
          description: >-
            Untuk sesi yang dikloning dengan `POST /v3/session/import-shared/`:
            `session_id` dari sesi asli di aplikasi sumber. `null` untuk setiap
            sesi lainnya. Dihilangkan jika `include=events` diteruskan.
        shared_from_session_number:
          type: integer
          nullable: true
          description: >-
            `session_number` dari sesi sumber saat sesi ini diimpor dari
            aplikasi lain milik organisasi Anda. `null` jika tidak.
        session_number:
          type: integer
          description: Nomor sesi.
          nullable: true
        session_url:
          type: string
          format: uri
          description: URL sesi.
          nullable: true
        status:
          type: string
          enum:
            - Not Started
            - In Progress
            - Awaiting User
            - In Review
            - Approved
            - Declined
            - Resubmitted
            - Expired
            - Kyc Expired
            - Abandoned
          description: >-
            Status siklus hidup keseluruhan dari sesi — hasil alur kerja
            agregat. Nilai akhir adalah `Approved`, `Declined`, `In Review`,
            `Expired`, `Kyc Expired`, dan `Abandoned`; `Not Started`, `In
            Progress`, `Awaiting User`, dan `Resubmitted` menunjukkan bahwa sesi
            masih bergerak melalui alur kerja.
        status_override:
          type: object
          nullable: true
          description: >-
            Hadir ketika peninjau menetapkan `status` secara manual. Bernilai
            `null` jika statusnya otomatis. Gunakan ini untuk membedakan
            persetujuan manual dari yang otomatis.
          properties:
            overridden_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: Status yang disimpulkan dari pemeriksaan platform itu sendiri.
        decision_trace:
          type: object
          description: >-
            Bagaimana status tersebut tercapai: siapa yang mengaturnya dan
            peringatan mana yang memicunya.
          properties:
            status:
              type: string
              description: Status sesi.
            decided_by:
              type: string
              nullable: true
              enum:
                - manual
                - automatic
                - investigator
                - null
              description: >-
                Pihak yang menetapkan status. `null` selama sesi belum
                diputuskan.
            decided_at:
              type: string
              format: date-time
              nullable: true
            automatic_status:
              type: string
              nullable: true
              description: >-
                Kesimpulan dari pemeriksaan platform itu sendiri, yang berbeda
                dari `status` setelah adanya keputusan manual.
            terminal_node_id:
              type: string
              nullable: true
              description: Node status alur kerja yang mengakhiri sesi, jika ada.
            actor:
              type: object
              nullable: true
              description: Peninjau yang membuat keputusan manual.
              properties:
                user:
                  type: string
                  nullable: true
                actor_type:
                  type: string
                  nullable: true
            warning_counts:
              type: object
              description: >-
                Peringatan per `log_type` (`error`, `warning`, `information`)
                dan `total`.
              additionalProperties:
                type: integer
            status_warnings:
              type: array
              description: Peringatan yang menetapkan status `Declined` atau `In Review`.
              items:
                type: object
                properties:
                  risk:
                    type: string
                  feature:
                    type: string
                    nullable: true
                  node_id:
                    type: string
                    nullable: true
                  log_type:
                    type: string
                    nullable: true
                  check_status:
                    type: string
                    nullable: true
                  source:
                    type: string
                    description: >-
                      Daftar payload asal peringatan tersebut, misalnya
                      `id_verifications`.
                  short_description:
                    type: string
                    nullable: true
        linked_records:
          type: object
          nullable: true
          description: >-
            Ringkasan catatan lain yang ditautkan ke sesi. `null` jika tidak ada
            yang ditampilkan, dan untuk alur kerja yang menyatakan standar
            kepastian usia.
          properties:
            same_face:
              type: object
              nullable: true
              description: >-
                Orang lain yang wajahnya cocok dengan salah satu pencarian wajah
                sesi ini.
              properties:
                count:
                  type: integer
                best_match:
                  type: object
                  nullable: true
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                    similarity_percentage:
                      type: number
                      nullable: true
            earlier_verifications:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                vendor_user_id:
                  type: string
                  format: uuid
                  nullable: true
            networks:
              type: object
              nullable: true
              properties:
                count:
                  type: integer
                open:
                  type: integer
                dismissed:
                  type: integer
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      network_id:
                        type: string
                        format: uuid
                      display_number:
                        type: integer
                        nullable: true
                      name:
                        type: string
                      status:
                        type: string
                      risk_score:
                        type: number
                        nullable: true
        workflow_id:
          type: string
          format: uuid
          description: >-
            Pengidentifikasi stabil dari grup alur kerja yang menghasilkan sesi
            ini. Alur kerja memiliki versi — nilai ini mengidentifikasi alur
            kerja itu sendiri, bukan versi spesifiknya.
          nullable: true
        features:
          type: array
          items:
            type: string
            description: Fitur dari sesi tersebut.
          description: >-
            Daftar fitur verifikasi yang dikonfigurasi untuk sesi ini, sebagai
            nama tampilan: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`,
            `POA`, `PHONE`, `EMAIL_VERIFICATION`, `AML`, `IP_ANALYSIS`,
            `DATABASE_VALIDATION`, `QUESTIONNAIRE`, `AGE_ESTIMATION`,
            `FACE_SEARCH`, `GEOLOCATION` (Verifikasi lokasi) (Sesi Verifikasi
            Bisnis (KYB) menggunakan rangkaian fitur KYB: `KYB_REGISTRY`,
            `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`, `AML`, `PHONE`,
            `EMAIL_VERIFICATION`, `IP_ANALYSIS`, `QUESTIONNAIRE`). Dengan
            `include=events`, setiap entri menjadi objek `{feature, node_id}`
            dan bukan string biasa, dan fitur email diganti namanya: fitur
            tersebut muncul sebagai `EMAIL` dalam mode event, bukan
            `EMAIL_VERIFICATION` yang digunakan di sini.
        vendor_data:
          type: string
          description: Data vendor sesi.
          nullable: true
        metadata:
          type: object
          description: Metadata sesi.
          nullable: true
        expected_details:
          type: object
          description: >-
            Detail yang diharapkan yang diberikan saat pembuatan sesi —
            digunakan untuk validasi silang terhadap data yang diekstraksi (KYC)
            atau untuk mengisi otomatis pencarian registri perusahaan (KYB).
            Mengembalikan persis kunci-kunci yang diberikan; `null` jika tidak
            ada yang diberikan. Sesi KYC memuat kolom terkait orang; sesi Bisnis
            (KYB) memuat `company_name`, `registry_country`, dan
            `registration_number`.
          properties:
            first_name:
              type: string
              description: Nama depan pengguna. Misalnya, `John`.
            last_name:
              type: string
              description: Nama belakang pengguna. Misalnya, `Doe`.
            date_of_birth:
              type: string
              format: date
              description: >-
                Tanggal lahir pengguna dengan format: YYYY-MM-DD. Misalnya,
                `1990-05-15`.
            gender:
              type: string
              nullable: true
              enum:
                - M
                - F
              default: null
              description: Jenis kelamin pengguna. Harus berupa 'M', 'F', atau null.
            nationality:
              type: string
              description: >-
                Kode negara ISO 3166-1 alpha-3 yang mewakili negara asal
                pemohon. Misalnya, `USA`.
            country:
              type: string
              description: >-
                Kode negara ISO 3166-1 alpha-3 yang mewakili negara dokumen
                Bukti Alamat, atau negara dokumen ID pemohon, yang mungkin
                berbeda dari kewarganegaraan. Misalnya, `GBR`.
            address:
              type: string
              description: >-
                Alamat dalam format yang dapat dibaca manusia, menyertakan
                sebanyak mungkin informasi. Misalnya, `123 Main St, San
                Francisco, CA 94105, USA`.
            identification_number:
              type: string
              description: >-
                Nomor dokumen, nomor pribadi, atau nomor pajak pengguna.
                Misalnya, `123456789`.
            ip_address:
              type: string
              format: ipv4
              description: >-
                Alamat IP yang diharapkan untuk sesi. Jika alamat IP sebenarnya
                berbeda dari nilai ini, peringatan akan dicatat. Misalnya,
                `192.168.1.100`.
            expected_document_types:
              type: array
              description: >-
                Jenis dokumen yang dibatasi untuk langkah Verifikasi Identitas
                saat pembuatan sesi. Kosong/tidak diatur berarti tanpa
                pembatasan. Kode: `P` (paspor), `ID` (ID nasional), `DL` (surat
                izin mengemudi), `RP` (izin tinggal), `HIC` (kartu asuransi
                kesehatan), `TC` (kartu pajak), `SSC` (kartu jaminan sosial).
              items:
                type: string
                enum:
                  - P
                  - ID
                  - DL
                  - RP
                  - HIC
                  - TC
                  - SSC
            id_country:
              type: string
              nullable: true
              description: >-
                Negara penerbit dokumen identitas yang diharapkan (ISO 3166-1
                alpha-3), jika dibatasi pada saat pembuatan.
              example: ESP
            poa_country:
              type: string
              nullable: true
              description: >-
                Negara dokumen Bukti Alamat yang diharapkan (ISO 3166-1
                alpha-3), jika dibatasi pada saat pembuatan.
              example: ESP
            company_name:
              type: string
              description: Nama resmi bisnis yang diharapkan. Khusus sesi Bisnis (KYB).
            registry_country:
              type: string
              description: >-
                Negara registri yang diharapkan sebagai `XX` atau `XX-YY` (ISO
                3166-1 alpha-2, secara opsional dengan subdivisi ISO 3166-2
                untuk registri tingkat negara bagian, misalnya `US-CA`). Khusus
                sesi Bisnis (KYB).
            registration_number:
              type: string
              description: >-
                Nomor registrasi perusahaan yang diharapkan. Hanya untuk sesi
                bisnis (KYB).
          nullable: true
        contact_details:
          type: object
          description: >-
            Detail kontak yang diberikan saat sesi dibuat (digunakan untuk email
            notifikasi, verifikasi telepon/email dengan data yang telah diisi
            sebelumnya, dan bahasa komunikasi). Bernilai `null` jika email
            maupun nomor telepon tidak diberikan.
          properties:
            email:
              type: string
              description: >-
                Alamat email pengguna (misalnya, "john.doe@example.com") yang
                akan digunakan selama langkah Verifikasi Email. Jika tidak
                diberikan, pengguna harus memberikannya selama alur verifikasi.
            email_lang:
              type: string
              description: >-
                Kode bahasa (ISO 639-1) untuk notifikasi email. Mengontrol
                bahasa semua komunikasi email (misalnya, "en", "es", "fr").
            send_notification_emails:
              type: boolean
              default: false
              description: >-
                Jika true dan email disediakan, Didit mengirimkan email "Verify
                your identity" awal secara asinkron saat sesi Verifikasi
                Pengguna (KYC) atau Verifikasi Bisnis (KYB) dibuat. Didit juga
                mengirimkan notifikasi status verifikasi untuk sesi yang
                memerlukan peninjauan manual ke alamat email yang disediakan.
            phone:
              type: string
              nullable: true
              description: >-
                Nomor telepon pengguna dalam format E.164 jika tersedia
                (misalnya, +14155552671). Bernilai `null` jika hanya email yang
                diberikan saat pembuatan sesi. Catatan: Kolom ini mengembalikan
                nomor telepon asli yang diberikan saat pembuatan sesi. Jika
                nomor tersebut tidak valid, formatnya mungkin bukan format
                E.164.
          nullable: true
        callback:
          type: string
          format: uri
          description: URL callback sesi.
          nullable: true
        id_verifications:
          type: array
          nullable: true
          description: >-
            **Array laporan Verifikasi Identitas (OCR)** yang dihasilkan oleh
            langkah-langkah dokumen ID dalam graf alur kerja. Selalu berupa
            array JSON — baca `id_verifications[0]` dan lakukan iterasi jika
            alur kerja Anda dapat menjalankan lebih dari satu pemeriksaan ID
            (misalnya pemeriksaan utama ditambah step-up). Bernilai `null`
            sampai setidaknya satu langkah ID menghasilkan data. Setiap item
            adalah laporan lengkap, termasuk `node_id`, `status` tingkat fitur,
            kolom dokumen yang diekstrak, URL gambar, skor kualitas, MRZ,
            parsing alamat, pencocokan lintas-sesi, serta `warnings[]`.
          items:
            type: object
            description: >-
              Satu laporan Verifikasi Identitas - laporan lengkap untuk satu
              langkah Verifikasi Identitas tunggal. `verification_method`
              menunjukkan metode mana dari ketiga metode yang menghasilkannya
              (pengambilan dokumen, pencarian tanpa dokumen, atau masuk dengan
              dompet) dan blok bukti spesifik metode diisi sesuai dengannya.
            properties:
              node_id:
                type: string
                description: >-
                  ID node graf alur kerja dari langkah OCR yang menghasilkan
                  laporan ini.
              verification_method:
                type: string
                enum:
                  - document
                  - id_lookup
                  - wallet
                description: >-
                  Metode Verifikasi Identitas mana yang menghasilkan laporan
                  ini. `document` - pengguna memfoto ID fisik (default, dan
                  nilai pada setiap sesi yang dibuat sebelum metode lain
                  tersedia). `id_lookup` - pengguna mengetikkan nomor identitas
                  nasional mereka dan diperiksa terhadap registri pemerintah
                  atau sumber otoritatif lainnya untuk negara tersebut
                  (`id_lookup.source` menyebutkan sumbernya). `wallet` -
                  pengguna masuk dengan identitas digital pemerintah atau bank.
              assurance:
                type: string
                enum:
                  - documentary
                  - data_match
                  - cryptographic
                description: >-
                  Tingkat jaminan yang diturunkan dari `verification_method`:
                  `documentary` untuk dokumen yang diambil dan diperiksa,
                  `data_match` untuk detail yang cocok dengan catatan yang
                  disimpan oleh sumber yang ditanyakan, `cryptographic` untuk
                  atribut yang diautentikasi dan ditandatangani oleh penyedia
                  identitas.
              wallet_provider:
                type: string
                nullable: true
                description: >-
                  ID dompet katalog jika `verification_method` adalah `wallet`
                  (`mitid`, `bankid_se`, `itsme`, ...). Selain itu bernilai
                  `null`.
              fallback_from:
                type: object
                nullable: true
                description: >-
                  Alasan metode non-dokumen tidak menyelesaikan langkah ID.
                  Ditetapkan saat pencarian atau proses masuk dompet gagal: pada
                  verifikasi dokumen yang dilanjutkan pengguna ketika pengaturan
                  fallback negara tersebut adalah `fallback_to_document`
                  (`action` adalah `fallback_to_document`), atau pada laporan
                  yang ditolak ketika nilainya adalah `decline`. `null` untuk
                  kondisi lainnya.
                properties:
                  method:
                    type: string
                    enum:
                      - id_lookup
                      - wallet
                    description: Metode yang gagal.
                  reason:
                    type: string
                    description: >-
                      Hasil yang mengakhirinya, misalnya `no_match`,
                      `provider_error`, `cancelled`, `timeout`.
                  action:
                    type: string
                    enum:
                      - fallback_to_document
                      - decline
                    description: >-
                      Tindakan yang dikonfigurasi dan diambil:
                      `fallback_to_document` atau `decline`.
              id_lookup:
                type: object
                nullable: true
                description: >-
                  Bukti registri. Hanya ada jika `verification_method` bernilai
                  `id_lookup`; `null` jika tidak.
                properties:
                  source:
                    type: string
                    description: >-
                      Nama yang ditampilkan kepada pelanggan untuk sumber yang
                      dikueri, misalnya `Department of Home Affairs` (registri
                      pemerintah) atau `UK credit bureau and financial services
                      records` (bukan registri pemerintah). Ini adalah
                      satu-satunya pernyataan asal-usul untuk pencarian; jangan
                      berasumsi ini adalah sumber pemerintah.
                  checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: Waktu registri merespons.
                  attempts:
                    type: integer
                    description: Nomor percobaan berbasis 1 yang menghasilkan laporan ini.
                  max_attempts:
                    type: integer
                    description: >-
                      Jumlah percobaan yang dikonfigurasi untuk negara tersebut
                      (1 hingga 5, nilai bawaan 1).
                  outcome:
                    type: string
                    enum:
                      - match
                      - partial_match
                      - no_match
                      - provider_error
                      - format_rejected
                    nullable: true
                    description: >-
                      Jawaban dari registri. Hanya `match`, `partial_match`, dan
                      `no_match` yang diperhitungkan dalam kuota percobaan dan
                      penagihan.
                  comparison:
                    type: array
                    description: >-
                      Satu baris per kolom yang dapat dibandingkan yang dijawab
                      oleh sumber, ditambah satu baris per error sumber. Baris
                      perbandingan menggunakan nama kolom yang dinormalisasi di
                      bawah ini, bukan kunci kolom permintaan negara, karena
                      beberapa kolom permintaan (nama depan dan belakang, atau
                      salah satu alias pengenal) digabungkan menjadi satu
                      perbandingan tunggal. Sumber yang gagal menambahkan baris
                      dengan `field: "provider"` dan `result: "error"`, jadi
                      baca `result` sebelum memperlakukan baris sebagai putusan
                      kolom.
                    items:
                      type: object
                      required:
                        - field
                        - label
                        - provided
                        - record
                        - result
                      properties:
                        field:
                          type: string
                          enum:
                            - identification_number
                            - full_name
                            - date_of_birth
                            - address
                            - provider
                          description: >-
                            Kolom perbandingan yang dinormalisasi. `provider`
                            bukan kolom pengguna: ini menandai baris kesalahan
                            sumber.
                        label:
                          type: string
                          description: >-
                            Label tampilan untuk baris, misalnya `ID number`,
                            `Full name`, `Provider`.
                        provided:
                          type: string
                          nullable: true
                          description: >-
                            Apa yang diketik oleh pengguna. Bernilai `null` pada
                            baris kesalahan `provider`.
                        record:
                          type: string
                          nullable: true
                          description: >-
                            Data yang disimpan oleh sumber. Pada baris kesalahan
                            `provider`, kolom ini memuat pesan kesalahan.
                        result:
                          type: string
                          enum:
                            - match
                            - partial
                            - no_match
                            - error
                          description: >-
                            Hasil perbandingan per kolom. `error` hanya muncul
                            pada baris `provider` dan berarti sumber tersebut
                            tidak merespons; perlakukan ini sebagai bukti
                            tentang kueri, bukan sebagai ketidakcocokan kolom.
                  registry_portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL presigned berdurasi singkat ke potret yang
                      dikembalikan sumber. Hanya empat registri pemerintah yang
                      mengembalikannya (Afrika Selatan, Nigeria, Argentina,
                      Panama).
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Swafoto dibandingkan dengan potret registri, 0-100. Hanya
                      jika registri mengembalikan potret.
              wallet_verification:
                type: object
                nullable: true
                description: >-
                  Bukti kredensial. Hanya ada jika `verification_method`
                  bernilai `wallet`; jika tidak, bernilai `null`.
                properties:
                  provider:
                    type: string
                    description: ID dompet katalog, misalnya `mitid`.
                  provider_name:
                    type: string
                    nullable: true
                    description: >-
                      Nama dompet sebagaimana diketahui pengguna akhir, mis.
                      `MitID`.
                  issuing_authority:
                    type: string
                    nullable: true
                    description: >-
                      Otoritas di balik dompet, misalnya `Danish Agency for
                      Digital Government`.
                  issuing_country:
                    type: string
                    description: Negara ISO 3166-1 alpha-3 tempat dompet ditawarkan.
                  credential_type:
                    type: string
                    nullable: true
                    description: >-
                      Kredensial yang diberikan oleh dompet, misalnya
                      `person_identification`.
                  level_of_assurance:
                    type: string
                    enum:
                      - low
                      - substantial
                      - high
                    nullable: true
                    description: >-
                      Tingkat jaminan yang ditegaskan dompet. Masuk yang
                      menegaskan kurang dari tingkat yang diminta akan gagal
                      alih-alih diturunkan tingkatnya.
                  verified_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: Waktu autentikasi dompet.
                  signature_valid:
                    type: boolean
                    nullable: true
                    description: >-
                      Apakah asersi yang ditandatangani dan dikembalikan oleh
                      dompet tervalidasi.
                  attributes:
                    type: object
                    additionalProperties: true
                    description: >-
                      Atribut yang dibagikan dompet, dengan kunci seperti yang
                      tercantum dalam entri katalog dompet.
                  portrait:
                    type: string
                    format: uri
                    nullable: true
                    description: >-
                      URL presigned berdurasi singkat ke potret yang dibagikan
                      dompet, jika dompet membagikannya.
                  face_match_score:
                    type: number
                    nullable: true
                    description: >-
                      Swafoto dibandingkan dengan potret dompet, 0-100, jika
                      dompet membagikannya.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
                description: >-
                  Status tingkat fitur dari langkah verifikasi identitas ini.
                  Tidak bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
              document_type:
                type: string
                description: Jenis dokumen identitas
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Kode subtipe dokumen yang diterima dari pengaturan dokumen
                  alur kerja, termasuk wilayah dokumen jika berlaku. Contoh:
                  `ID_CARD_GENERIC`, `QUEENSLAND_DRIVER_LICENSE_GENERIC`.
              document_number:
                type: string
                description: Nomor identifikasi dokumen
              personal_number:
                type: string
                description: Nomor identifikasi pribadi
              portrait_image:
                type: string
                format: uri
                description: URL gambar potret
              front_image:
                type: string
                format: uri
                description: URL gambar dokumen bagian depan
              front_video:
                type: string
                format: uri
                description: URL video dokumen bagian depan
              back_image:
                type: string
                format: uri
                description: URL gambar belakang dokumen
              back_video:
                type: string
                format: uri
                description: URL video dokumen bagian belakang
              full_front_image:
                type: string
                format: uri
                description: URL gambar lengkap dokumen bagian depan
              full_back_image:
                type: string
                format: uri
                description: URL gambar lengkap dokumen bagian belakang
              front_image_camera_front:
                type: string
                format: uri
                description: URL gambar dokumen bagian depan yang diambil dari kamera depan
              back_image_camera_front:
                type: string
                format: uri
                description: >-
                  URL gambar dokumen bagian belakang yang diambil dari kamera
                  depan
              date_of_birth:
                type: string
                format: date
                description: Tanggal lahir dari dokumen
              age:
                type: integer
                description: Usia yang dihitung dari tanggal lahir
              expiration_date:
                type: string
                format: date
                description: Tanggal kedaluwarsa dokumen
              date_of_issue:
                type: string
                format: date
                description: Tanggal penerbitan dokumen
              issuing_state:
                type: string
                description: Kode ISO negara bagian penerbit
              issuing_state_name:
                type: string
                description: Nama lengkap negara bagian penerbit
              first_name:
                type: string
                description: Nama depan dari dokumen
              last_name:
                type: string
                description: Nama belakang dari dokumen
              full_name:
                type: string
                description: Nama lengkap dari dokumen
              gender:
                type: string
                description: Jenis kelamin dari dokumen
              address:
                type: string
                description: Alamat mentah dari dokumen
              formatted_address:
                type: string
                description: Alamat lengkap terformat
              place_of_birth:
                type: string
                description: Tempat lahir dari dokumen
              marital_status:
                type: string
                description: Status perkawinan dari dokumen
              nationality:
                type: string
                description: Kode kewarganegaraan ISO
              extra_fields:
                type: object
                description: >-
                  Kolom dokumen tambahan. Mencakup atribut khusus dokumen
                  (misalnya `dl_categories`, `blood_group`, `sponsor`,
                  `employer`, `dl_class_code_b_from`, `dl_class_code_b_to`).
                  Tanggal masa berlaku kelas surat izin mengemudi dikembalikan
                  sebagai `dl_class_code_<class>_from` dan
                  `dl_class_code_<class>_to`, serta kode pembatasan/informasi
                  per kelas (misalnya kolom 12 lisensi UK) sebagai
                  `dl_class_code_<class>_notes`. Jika dokumen memuat nama,
                  alamat, atau tempat lahir dalam beberapa aksara, objek ini
                  juga menyertakan versi aksara alternatif dari kolom-kolom
                  tersebut. Pengaturan alur kerja `preferred_characters`
                  (`latin` atau `non_latin`) mengatur aksara mana yang mengisi
                  kolom tingkat atas (`first_name`, `last_name`, `full_name`,
                  `address`, `place_of_birth`); aksara yang berlawanan masuk ke
                  sini sebagai `first_name_non_latin` / `last_name_non_latin` /
                  `full_name_non_latin` / `middle_name_non_latin` /
                  `address_non_latin` / `place_of_birth_non_latin` (ketika
                  `preferred_characters` adalah `latin`) atau dengan akhiran
                  `_latin` (ketika `preferred_characters` adalah `non_latin`).
                  Kunci hanya muncul jika OCR benar-benar mengekstrak nilai
                  aksara alternatif nyata — kolom yang nilai alternatifnya
                  berada dalam aksara yang sama dengan set pilihan (misalnya,
                  kolom berlabel Kiril yang nilai OCR-nya kembali dalam homoglif
                  Latin) akan dilewati. Ketika `preferred_characters` adalah
                  `latin` tetapi dokumen hanya memuat teks non-Latin, Didit
                  mentransliterasikan nilai yang diekstrak dan menampilkan
                  `first_name_latin` / `last_name_latin` / dll. sebagai
                  cadangan.
                additionalProperties: true
                properties:
                  dl_categories:
                    type: array
                    items:
                      type: string
                  blood_group:
                    type: string
                    nullable: true
                  first_name_non_latin:
                    type: string
                    description: >-
                      Nama depan dalam aksara non-Latin ketika
                      `preferred_characters=latin` dan versi non-Latin tersedia
                      pada dokumen (mis. `Айна` untuk ID Kirgistan).
                  last_name_non_latin:
                    type: string
                    description: >-
                      Nama belakang dalam aksara non-Latin ketika
                      `preferred_characters=latin` dan versi non-Latin ada pada
                      dokumen.
                  middle_name_non_latin:
                    type: string
                    description: >-
                      Nama tengah / patronimik dalam aksara non-Latin jika
                      `preferred_characters=latin` dan versi non-Latin ada pada
                      dokumen.
                  full_name_non_latin:
                    type: string
                    description: >-
                      Nama lengkap gabungan dalam aksara non-Latin.
                      Direkonstruksi dari komponen individual saat nama depan
                      dan belakang tersedia.
                  address_non_latin:
                    type: string
                    description: >-
                      Alamat dalam aksara non-Latin ketika
                      `preferred_characters=latin` dan versi non-Latin ada pada
                      dokumen.
                  place_of_birth_non_latin:
                    type: string
                    description: >-
                      Tempat lahir dalam aksara non-Latin saat
                      `preferred_characters=latin` dan versi non-Latin ada pada
                      dokumen.
                  first_name_latin:
                    type: string
                    description: >-
                      Nama depan dalam aksara Latin. Terisi ketika
                      `preferred_characters=non_latin` dan versi Latin tersedia
                      pada dokumen, atau — sebagai cadangan transliterasi —
                      ketika `preferred_characters=latin` namun dokumen hanya
                      memuat teks non-Latin.
                  last_name_latin:
                    type: string
                    description: >-
                      Nama belakang dalam aksara Latin. Aturan yang sama seperti
                      `first_name_latin`.
                  middle_name_latin:
                    type: string
                    description: >-
                      Nama tengah / patronimik dalam aksara Latin. Aturan yang
                      sama dengan `first_name_latin`.
                  full_name_latin:
                    type: string
                    description: >-
                      Nama lengkap gabungan dalam aksara Latin. Selalu
                      direkonstruksi dari komponen individual saat nama depan
                      dan belakang tersedia.
                  address_latin:
                    type: string
                    description: >-
                      Alamat dalam aksara Latin. Aturan yang sama seperti
                      `first_name_latin`.
                  place_of_birth_latin:
                    type: string
                    description: >-
                      Tempat lahir dalam aksara Latin. Aturan yang sama seperti
                      `first_name_latin`.
              mrz:
                type: object
                nullable: true
                description: >-
                  Kolom Zona Terbaca Mesin (MRZ) yang diurai dari dokumen.
                  `null` jika tidak ada MRZ yang terdeteksi.
                properties:
                  surname:
                    type: string
                    example: MARTINEZ<SANCHEZ
                  name:
                    type: string
                    example: ELENA
                  country:
                    type: string
                    example: ESP
                  nationality:
                    type: string
                    example: ESP
                  birth_date:
                    type: string
                    example: '850315'
                  expiry_date:
                    type: string
                    example: '220821'
                  sex:
                    type: string
                    example: F
                  document_type:
                    type: string
                    example: ID
                  document_number:
                    type: string
                    example: YZA123456
                  optional_data:
                    type: string
                    example: X9876543L
                  optional_data_2:
                    type: string
                    example: ''
                  birth_date_hash:
                    type: string
                    example: '7'
                  expiry_date_hash:
                    type: string
                    example: '4'
                  document_number_hash:
                    type: string
                    example: '9'
                  final_hash:
                    type: string
                    example: '2'
                  personal_number:
                    type: string
                    example: X9876543L
                  warnings:
                    type: array
                    items:
                      type: string
                  errors:
                    type: array
                    items:
                      type: string
                  mrz_type:
                    type: string
                    example: TD1
                  mrz_string:
                    type: string
                    example: |-
                      IDESPMARTINEZ<SANCHEZ<<<<<<<<<<
                      YZA123456<9ESP8503157F3208214<X9876543L<<<<<<<2
                      MARTINEZ<SANCHEZ<<ELENA<<<<<<<<<<
                  mrz_key:
                    type: string
                    example: YZA123456985031573208214
              parsed_address:
                type: object
                description: Detail alamat terstruktur
                properties:
                  city:
                    type: string
                  label:
                    type: string
                  region:
                    type: string
                  country:
                    type: string
                    description: Kode negara dua huruf
                  category:
                    type: string
                    description: Kategori alamat (misalnya, Residensial, Komersial)
                  street_1:
                    type: string
                  street_2:
                    type: string
                    nullable: true
                  is_verified:
                    type: boolean
                    description: Apakah alamat telah diverifikasi
                  postal_code:
                    type: string
                  raw_results:
                    type: object
                    properties:
                      types:
                        type: array
                        items:
                          type: string
                      geometry:
                        type: object
                        properties:
                          location:
                            type: object
                            properties:
                              lat:
                                type: number
                              lng:
                                type: number
                          viewport:
                            type: object
                            properties:
                              northeast:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                              southwest:
                                type: object
                                properties:
                                  lat:
                                    type: number
                                  lng:
                                    type: number
                          location_type:
                            type: string
                      place_id:
                        type: string
                      formatted_address:
                        type: string
                      navigation_points:
                        type: array
                        items:
                          type: object
                          properties:
                            location:
                              type: object
                              properties:
                                latitude:
                                  type: number
                                longitude:
                                  type: number
                      address_components:
                        type: array
                        items:
                          type: object
                          properties:
                            types:
                              type: array
                              items:
                                type: string
                            long_name:
                              type: string
                            short_name:
                              type: string
                  address_type:
                    type: string
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                      longitude:
                        type: number
                  formatted_address:
                    type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: File verifikasi dokumen tambahan
              front_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Skor pencocokan wajah antara potret yang diekstrak dari gambar
                  dokumen bagian depan dan gambar kamera depan
              back_image_camera_front_face_match_score:
                type: number
                nullable: true
                description: >-
                  Skor pencocokan wajah antara potret yang diekstrak dari gambar
                  dokumen bagian belakang dan gambar kamera depan
              document_selfie_face_matches:
                type: array
                description: >-
                  Sesi sebelumnya atau entri daftar blokir wajah yang wajahnya
                  cocok dengan swafoto yang diambil kamera depan selama
                  pengambilan dokumen (Pencarian Wajah Silent Capture). Format
                  entri sama seperti `liveness_checks[].matches`. `null` untuk
                  sesi yang dibuat sebelum kolom ini ada atau ketika pencarian
                  tidak dijalankan; array kosong ketika dijalankan dan tidak
                  menemukan apa pun. `match_image_url` adalah URL presigned yang
                  akan kedaluwarsa.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID sesi wajah yang cocok. Bernilai `null` jika `source`
                        adalah `imported`, `list_entry`, atau
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Kemiripan wajah antara kedua gambar, dibatasi pada
                        rentang 0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` dari sesi yang cocok atau Pengguna yang
                        ditautkan untuk wajah yang diimpor dan templatnya
                        dipertahankan.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID Pengguna yang ditautkan untuk kecocokan `imported`
                        dan `retained_template` serta untuk kecocokan sesi yang
                        ditautkan ke Pengguna. `null` untuk entri daftar dan
                        sesi tanpa Pengguna.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        Id templat biometrik yang disimpan. Ditetapkan hanya
                        jika `source` bernilai `retained_template`; jika tidak,
                        bernilai `null`.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Waktu wajah yang cocok diambil, atau waktu templat yang
                        disimpan dibuat. `null` untuk entri daftar.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Data identitas dari sesi yang cocok atau profil Pengguna
                        yang diimpor. Selalu bernilai `null` untuk kecocokan
                        `retained_template` dan `list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Gambar referensi untuk pencocokan berbasis gambar.
                        Selalu `null` untuk pencocokan `retained_template`
                        karena templat yang disimpan tidak memuat gambar.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Status siklus hidup dari sesi yang cocok. `null` untuk
                        sumber non-sesi.
                    is_blocklisted:
                      type: boolean
                      description: Apakah wajah yang cocok ada di daftar blokir.
                    is_allowlisted:
                      type: boolean
                      description: Apakah wajah yang cocok ada di daftar izin.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Layanan API mandiri dari sesi yang cocok (mis.
                        `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` untuk sesi
                        alur kerja dan sumber non-sesi.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Asal wajah yang cocok: `session`, `imported` (unggahan
                        wajah Pengguna), `list_entry` (daftar izin/blokir), atau
                        `retained_template` (templat biometrik tanpa gambar yang
                        disimpan pada Pengguna, tercantum di bawah
                        `/v3/biometric-templates/`).
                nullable: true
              front_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Metrik kualitas untuk gambar depan dokumen. Setiap subskor
                  berkisar dari 0 hingga 100.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Ketajaman gambar diukur melalui varians Laplacian lokal
                      10% teratas. Kuat terhadap dokumen dengan latar belakang
                      seragam yang luas. Nilai yang lebih tinggi menunjukkan
                      gambar yang lebih tajam dan tidak buram.
                  brightness_score:
                    type: number
                    description: >-
                      Seberapa baik pencahayaan gambar. Memberikan penalti pada
                      gambar yang terlalu gelap atau terlalu terang, dengan
                      kecerahan ideal di sekitar rentang menengah.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Menunjukkan arah masalah kecerahan saat brightness_score
                      rendah. 'ok' berarti kecerahan dapat diterima, 'too_dark'
                      berarti gambar kurang cahaya, 'too_bright' berarti gambar
                      terlalu terang.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true jika keempat sudut dokumen terlihat sepenuhnya di
                      dalam bingkai gambar, false jika ada sudut yang terpotong.
                      Null jika koordinat sudut tidak tersedia.
                  resolution_score:
                    type: number
                    description: >-
                      Resolusi efektif dari gambar berdasarkan jumlah piksel
                      total.
                  overall_score:
                    type: number
                    description: >-
                      Komposit berbobot dari sub-skor (fokus 45%, kecerahan 30%,
                      resolusi 25%).
              back_image_quality_score:
                type: object
                nullable: true
                description: >-
                  Metrik kualitas untuk gambar belakang dokumen. Struktur yang
                  sama seperti front_image_quality_score.
                properties:
                  focus_score:
                    type: number
                    description: >-
                      Ketajaman gambar diukur melalui varians Laplacian lokal
                      10% teratas. Kuat terhadap dokumen dengan latar belakang
                      seragam yang luas. Nilai yang lebih tinggi menunjukkan
                      gambar yang lebih tajam dan tidak buram.
                  brightness_score:
                    type: number
                    description: >-
                      Seberapa baik pencahayaan gambar. Memberikan penalti pada
                      gambar yang terlalu gelap atau terlalu terang, dengan
                      kecerahan ideal di sekitar rentang menengah.
                  brightness_issue:
                    type: string
                    enum:
                      - ok
                      - too_dark
                      - too_bright
                    description: >-
                      Menunjukkan arah masalah kecerahan saat brightness_score
                      rendah. 'ok' berarti kecerahan dapat diterima, 'too_dark'
                      berarti gambar kurang cahaya, 'too_bright' berarti gambar
                      terlalu terang.
                  is_document_fully_visible:
                    type: boolean
                    nullable: true
                    description: >-
                      true jika keempat sudut dokumen terlihat sepenuhnya di
                      dalam bingkai gambar, false jika ada sudut yang terpotong.
                      Null jika koordinat sudut tidak tersedia.
                  resolution_score:
                    type: number
                    description: >-
                      Resolusi efektif dari gambar berdasarkan jumlah piksel
                      total.
                  overall_score:
                    type: number
                    description: >-
                      Komposit berbobot dari sub-skor (fokus 45%, kecerahan 30%,
                      resolusi 25%).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini (misalnya,
                        `ID_VERIFICATION`, `NFC`, `LIVENESS`). Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya, tetapi
                        enum di atas bersifat otoritatif di semua peringatan
                        fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                      description: Data kontekstual tambahan tentang peringatan
                    log_type:
                      type: string
                      description: 'Jenis log: informasi, peringatan, atau kesalahan'
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: >-
                        ID node graf alur kerja yang menghasilkan peringatan ini
                        (untuk alur kerja berbasis graf)
                description: Peringatan Verifikasi Dokumen
              matches:
                type: array
                description: >-
                  Dokumen yang cocok yang ditemukan selama deteksi
                  duplikat/daftar blokir (hingga 5 kecocokan)
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: ID sesi dokumen yang cocok
                    session_number:
                      type: integer
                      description: Nomor sesi dari dokumen yang cocok
                    vendor_data:
                      type: string
                      nullable: true
                      description: Data vendor yang terkait dengan sesi yang cocok
                    verification_date:
                      type: string
                      format: date-time
                      description: Tanggal saat sesi yang cocok diverifikasi
                    user_details:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Nama lengkap dari dokumen yang cocok
                        document_type:
                          type: string
                          description: Jenis dokumen yang cocok
                        document_number:
                          type: string
                          description: Nomor dokumen dari dokumen yang cocok
                    status:
                      type: string
                      description: Status sesi yang cocok
                    is_blocklisted:
                      type: boolean
                      description: Apakah dokumen yang cocok tercantum dalam daftar blokir
                    api_service:
                      type: string
                      nullable: true
                      description: Jenis layanan API dari sesi yang cocok
                    front_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: URL gambar dokumen bagian depan dari dokumen yang cocok
              document_liveness:
                type: object
                nullable: true
                description: >-
                  Skor liveness dokumen per jenis penipuan, dilaporkan baik ada
                  peringatan yang terpicu maupun tidak, sehingga dokumen yang
                  disetujui tetap dapat diaudit. `null` jika pemeriksaan tidak
                  dijalankan.
                properties:
                  portrait_replace:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Kemungkinan bahwa dokumen tersebut asli untuk jenis
                          penipuan ini, 0-100 (lebih tinggi = lebih besar
                          kemungkinan asli). Nilai terendah dari kedua sisi -
                          nilai yang digunakan untuk keputusan. `null` jika
                          kedua sisi tidak menghasilkan skor yang dapat
                          digunakan.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Skor untuk sisi depan; `null` jika tidak diambil atau
                          jika skor diabaikan.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Skor untuk sisi belakang; `null` jika tidak diambil
                          atau jika skor diabaikan.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Ambang batas penolakan yang disimpan saat dokumen ini
                          dievaluasi. Pengeditan alur kerja setelahnya tidak
                          mengubahnya. Null jika bukti evaluasi historis tidak
                          tersedia.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Ambang batas peninjauan yang disimpan saat dokumen ini
                          dievaluasi. Pengeditan alur kerja setelahnya tidak
                          mengubahnya. Null jika bukti evaluasi historis tidak
                          tersedia.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Kategori jenis penipuan yang disimpan pada saat
                          evaluasi. Bernilai null jika tidak ada skor yang dapat
                          digunakan, pemeriksaan tidak diterapkan, atau bukti
                          evaluasi historis tidak tersedia. Pengeditan alur
                          kerja di kemudian hari tidak mengubahnya.
                  printed_copy:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Kemungkinan bahwa dokumen tersebut asli untuk jenis
                          penipuan ini, 0-100 (lebih tinggi = lebih besar
                          kemungkinan asli). Nilai terendah dari kedua sisi -
                          nilai yang digunakan untuk keputusan. `null` jika
                          kedua sisi tidak menghasilkan skor yang dapat
                          digunakan.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Skor untuk sisi depan; `null` jika tidak diambil atau
                          jika skor diabaikan.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Skor untuk sisi belakang; `null` jika tidak diambil
                          atau jika skor diabaikan.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Ambang batas penolakan yang disimpan saat dokumen ini
                          dievaluasi. Pengeditan alur kerja setelahnya tidak
                          mengubahnya. Null jika bukti evaluasi historis tidak
                          tersedia.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Ambang batas peninjauan yang disimpan saat dokumen ini
                          dievaluasi. Pengeditan alur kerja setelahnya tidak
                          mengubahnya. Null jika bukti evaluasi historis tidak
                          tersedia.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Kategori jenis penipuan yang disimpan pada saat
                          evaluasi. Bernilai null jika tidak ada skor yang dapat
                          digunakan, pemeriksaan tidak diterapkan, atau bukti
                          evaluasi historis tidak tersedia. Pengeditan alur
                          kerja di kemudian hari tidak mengubahnya.
                  screen_replay:
                    type: object
                    nullable: true
                    properties:
                      score:
                        type: number
                        nullable: true
                        description: >-
                          Kemungkinan bahwa dokumen tersebut asli untuk jenis
                          penipuan ini, 0-100 (lebih tinggi = lebih besar
                          kemungkinan asli). Nilai terendah dari kedua sisi -
                          nilai yang digunakan untuk keputusan. `null` jika
                          kedua sisi tidak menghasilkan skor yang dapat
                          digunakan.
                      front:
                        type: number
                        nullable: true
                        description: >-
                          Skor untuk sisi depan; `null` jika tidak diambil atau
                          jika skor diabaikan.
                      back:
                        type: number
                        nullable: true
                        description: >-
                          Skor untuk sisi belakang; `null` jika tidak diambil
                          atau jika skor diabaikan.
                      decline_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Ambang batas penolakan yang disimpan saat dokumen ini
                          dievaluasi. Pengeditan alur kerja setelahnya tidak
                          mengubahnya. Null jika bukti evaluasi historis tidak
                          tersedia.
                      review_threshold:
                        type: number
                        nullable: true
                        description: >-
                          Ambang batas peninjauan yang disimpan saat dokumen ini
                          dievaluasi. Pengeditan alur kerja setelahnya tidak
                          mengubahnya. Null jika bukti evaluasi historis tidak
                          tersedia.
                      bucket:
                        type: string
                        nullable: true
                        enum:
                          - approve
                          - review
                          - decline
                          - null
                        description: >-
                          Kategori jenis penipuan yang disimpan pada saat
                          evaluasi. Bernilai null jika tidak ada skor yang dapat
                          digunakan, pemeriksaan tidak diterapkan, atau bukti
                          evaluasi historis tidak tersedia. Pengeditan alur
                          kerja di kemudian hari tidak mengubahnya.
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Validasi Alamat dari alamat yang tertera pada dokumen ini:
                  apakah alamat tersebut ada dan bentuk ternormalisasinya,
                  sebagaimana yang dibaca dari dokumen (koreksi selanjutnya
                  terhadap `address` tidak menjalankannya kembali). Hadir jika
                  langkah Verifikasi Identitas ini mengaktifkan add-on Validasi
                  Alamat; `null` jika tidak.
              region:
                type: string
                nullable: true
                description: >-
                  Wilayah atau negara bagian dari negara penerbit dokumen jika
                  dokumen mencantumkannya.
              extracted_data:
                type: object
                nullable: true
                additionalProperties: true
                description: >-
                  Cuplikan data yang diekstrak dari dokumen yang ditampilkan
                  kepada pengguna untuk ditinjau, disimpan di samping nilai yang
                  dikonfirmasi sehingga Anda dapat membandingkan apa yang
                  terbaca dengan apa yang dikonfirmasi oleh pengguna. Bernilai
                  `null` jika pengguna tidak diminta untuk meninjau.
              barcodes:
                type: array
                items:
                  type: object
                  additionalProperties: true
                description: >-
                  Data yang dibaca dari barcode dokumen. Kosong jika dokumen
                  tidak memilikinya atau tidak ada yang terbaca.
        nfc_skip_reason:
          type: string
          nullable: true
          enum:
            - USER_SKIPPED
            - DOCUMENT_WITHOUT_CHIP
            - CHIP_CERTIFICATE_UNAVAILABLE
            - DEVICE_WITHOUT_NFC
            - INTEGRATION_WITHOUT_NFC_ACCESS
            - MRZ_KEY_UNAVAILABLE
            - JPKI_UNAVAILABLE
          description: >-
            Alasan verifikasi chip NFC tidak berjalan, terisi setiap kali alur
            kerja menyertakan langkah NFC. `null` selama NFC masih tertunda atau
            saat chip benar-benar terbaca. Nilai: `USER_SKIPPED` - pengguna
            memilih untuk melewati pada perangkat yang mendukung NFC (diizinkan
            oleh `allow_nfc_skip`); `DOCUMENT_WITHOUT_CHIP` - dokumen tidak
            memiliki chip NFC yang dapat dibaca (bukan dokumen elektronik ICAO
            9303); `CHIP_CERTIFICATE_UNAVAILABLE` - sertifikat penandatanganan
            negara penerbit (CSCA) yang mencakup periode penerbitan dokumen
            tidak tersedia, sehingga tanda tangan chip tidak dapat diverifikasi;
            `DEVICE_WITHOUT_NFC` - perangkat melaporkan tidak adanya pembaca
            NFC; `INTEGRATION_WITHOUT_NFC_ACCESS` - verifikasi berjalan tanpa
            SDK native (misalnya di browser web), yang tidak memiliki akses ke
            pembaca NFC ponsel; `MRZ_KEY_UNAVAILABLE` - kunci akses chip tidak
            dapat diturunkan dari MRZ dokumen; `JPKI_UNAVAILABLE` - dokumen
            adalah Japan My Number Card, yang chip-nya dibaca melalui JPKI, dan
            JPKI tidak tersedia untuk verifikasi ini: JPKI tidak diaktifkan,
            atau SDK native aplikasi tidak dapat membaca My Number Card.
        nfc_verifications:
          type: array
          nullable: true
          description: >-
            **Array laporan NFC / ePassport** yang dihasilkan oleh
            langkah-langkah NFC dalam graf alur kerja. **Ini selalu berupa array
            JSON, bukan objek `nfc` tunggal** — baca `nfc_verifications[0]` dan
            lakukan iterasi jika alur kerja Anda dapat menjalankan NFC lebih
            dari sekali. Bernilai `null` sampai setidaknya satu langkah NFC
            menghasilkan data. Setiap item adalah laporan lengkap, termasuk
            `node_id`, `status` tingkat fitur, `chip_protocol`, `chip_data`,
            `authenticity` (integritas SOD + DG), `certificate_summary`, serta
            `warnings[]`. Japan My Number Card dibaca melalui JPKI dan bukan
            ICAO 9303: itemnya memiliki `chip_protocol: "jpki"`, membawa
            buktinya di bawah `jpki`, dan membiarkan kolom ICAO bernilai `null`.
            Ketika langkah NFC dilewati sebelum dapat ditawarkan (dokumen tanpa
            chip, sertifikat hilang, tidak ada kemampuan NFC yang dilaporkan,
            kunci MRZ tidak terbaca, JPKI tidak tersedia untuk My Number Card),
            ini tetap bernilai `null` dan `nfc_skip_reason` menjelaskan
            alasannya; pelewatan pada langkah itu sendiri (pengguna mengetuk
            opsi lewati, atau pemindai ternyata tidak tersedia saat pemindaian)
            tetap menghasilkan laporan dengan `is_nfc_skipped: true`.
          items:
            type: object
            description: >-
              Satu laporan NFC: laporan lengkap untuk satu kali pembacaan chip
              (chip ePassport atau eID ICAO 9303, atau Japan My Number Card yang
              dibaca melalui JPKI).
            properties:
              node_id:
                type: string
                description: >-
                  ID node graf alur kerja dari langkah NFC yang menghasilkan
                  laporan ini. Gunakan untuk mengorelasikan laporan dengan
                  definisi alur kerja.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Status tingkat fitur dari langkah NFC ini. Tidak bergantung
                  pada `status` sesi tingkat atas — sesi dapat mencapai
                  keputusan keseluruhannya sementara fitur individual tetap `In
                  Review`.
              is_nfc_skipped:
                type: boolean
                description: >-
                  `true` saat langkah NFC ini secara eksplisit dilewati dan
                  tidak dibaca; `skip_reason` menjelaskan alasannya.
              skip_reason:
                type: string
                nullable: true
                enum:
                  - USER_SKIPPED
                  - DOCUMENT_WITHOUT_CHIP
                  - CHIP_CERTIFICATE_UNAVAILABLE
                  - DEVICE_WITHOUT_NFC
                  - INTEGRATION_WITHOUT_NFC_ACCESS
                  - MRZ_KEY_UNAVAILABLE
                  - JPKI_UNAVAILABLE
                description: >-
                  Alasan mengapa langkah NFC ini dilewati. Hanya diatur jika
                  `is_nfc_skipped` bernilai `true`. Taksonomi yang sama dengan
                  `nfc_skip_reason` tingkat sesi, yang juga mencakup kasus di
                  mana NFC tidak pernah menghasilkan laporan sama sekali.
              chip_protocol:
                type: string
                enum:
                  - icao
                  - jpki
                description: >-
                  Bagaimana langkah NFC membaca chip. `icao`: chip ePassport
                  atau eID ICAO 9303, dibuka dengan kunci akses dari MRZ.
                  `jpki`: Japan My Number Card, yang kartunya menandatangani
                  tantangan satu kali setelah pemegang memasukkan PIN kartu di
                  SDK native; hasilnya ada di bawah `jpki`. Juga diatur pada
                  langkah yang dilewati, sehingga Anda dapat membedakan
                  pembacaan My Number Card yang dilewati.
              jpki:
                type: object
                nullable: true
                description: >-
                  Hal yang dibuktikan oleh pembacaan Kartu My Number Jepang
                  melalui JPKI. Ada ketika `chip_protocol` adalah `jpki` dan
                  kartu dibaca. `null` untuk chip ICAO, untuk langkah yang
                  dilewati, dan ketika langkah NFC ditutup tanpa ada kartu yang
                  terbaca (kasus tersebut memunculkan `JPKI_SIGNATURE_INVALID`).
                  Tidak pernah menyertakan sertifikat, nomor seri, tanda tangan,
                  atau 12 digit My Number.
                properties:
                  certificate_types:
                    type: array
                    items:
                      type: string
                      enum:
                        - user_authentication
                        - signature
                    description: >-
                      Sertifikat kartu yang dibaca. `user_authentication` (PIN 4
                      digit) selalu dibaca; `signature` (PIN tanda tangan)
                      dibaca saat pengaturan `jpki_request_attributes` pada node
                      NFC aktif.
                  chain_valid:
                    type: boolean
                    description: >-
                      `true` jika setiap sertifikat yang dibaca memiliki rantai
                      sertifikat ke otoritas sertifikasi JPKI, berada dalam masa
                      berlakunya, dan merupakan sertifikat Kartu My Number dari
                      tipenya.
                  signature_valid:
                    type: boolean
                    description: >-
                      `true` jika setiap tanda tangan yang dibuat kartu atas
                      tantangan sekali pakai berhasil diverifikasi. Kartu hanya
                      menandatangani setelah PIN-nya dimasukkan, sehingga hal
                      ini membuktikan kepemilikan kartu dan pengetahuan tentang
                      PIN tersebut.
                  revocation_status:
                    type: string
                    enum:
                      - good
                      - revoked
                      - unchecked
                    description: >-
                      `good` saat pemeriksaan pencabutan mengonfirmasi setiap
                      sertifikat valid, `revoked` saat ada sertifikat yang
                      dicabut (misalnya kartu dilaporkan hilang), `unchecked`
                      saat tidak ada jawaban pencabutan yang tersedia.
                      `unchecked` tidak pernah diperlakukan sebagai `good`:
                      `jpki_revocation_unchecked_action` pada node NFC
                      menentukan hasilnya (default `REVIEW`).
                  ca_generation:
                    type: string
                    nullable: true
                    description: >-
                      Generasi otoritas sertifikasi JPKI yang menerbitkan
                      sertifikat, misalnya `2023`. Bernilai `null` jika tidak
                      ada sertifikat yang terhubung ke salah satunya.
                  certificate_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Waktu kedaluwarsa paling awal di antara sertifikat yang
                      dibaca.
                  certificates:
                    type: array
                    items:
                      type: object
                      description: >-
                        Apa yang dibuktikan oleh satu sertifikat yang dibaca
                        dari kartu. Tidak pernah sertifikat itu sendiri atau
                        nomor serinya.
                      properties:
                        type:
                          type: string
                          enum:
                            - user_authentication
                            - signature
                          description: >-
                            Sertifikat kartu mana yang dijelaskan oleh entri
                            ini.
                        chain_valid:
                          type: boolean
                          description: >-
                            `true` jika rantai sertifikat mengarah ke otoritas
                            sertifikasi JPKI dari tipenya, berada dalam masa
                            berlakunya, dan merupakan sertifikat Kartu My Number
                            dari tipe tersebut.
                        signature_valid:
                          type: boolean
                          description: >-
                            `true` jika tanda tangan kartu atas tantangan sekali
                            pakai terverifikasi terhadap sertifikat ini.
                        ca_generation:
                          type: string
                          nullable: true
                          description: >-
                            Generasi otoritas sertifikasi JPKI yang menerbitkan
                            sertifikat, misalnya `2023`. Bernilai `null` jika
                            tidak ada penerbit tepercaya yang ditemukan.
                        not_valid_before:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Awal masa berlaku sertifikat. `null` jika sertifikat
                            tidak dapat dibaca.
                        not_valid_after:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Akhir masa berlaku sertifikat. `null` jika
                            sertifikat tidak dapat dibaca.
                        failure:
                          type: string
                          nullable: true
                          enum:
                            - unreadable_certificate
                            - untrusted_issuer
                            - expired
                            - not_yet_valid
                            - wrong_policy
                            - key_usage
                            - null
                          description: >-
                            Alasan `chain_valid` bernilai `false`:
                            `unreadable_certificate`, `untrusted_issuer` (tidak
                            diterbitkan oleh otoritas sertifikasi JPKI untuk
                            jenisnya), `expired`, `not_yet_valid`,
                            `wrong_policy` (bukan sertifikat My Number Card
                            untuk jenis tersebut) atau `key_usage` (kunci tidak
                            dapat digunakan untuk menandatangani). `null` jika
                            rantai valid.
                    description: >-
                      Hasil per sertifikat, satu entri per sertifikat yang
                      dibaca.
                  attributes:
                    type: object
                    nullable: true
                    description: >-
                      Data pemegang dari sertifikat tanda tangan, setelah
                      rantainya valid. `null` jika sertifikat tanda tangan tidak
                      diminta atau rantainya tidak terhubung ke otoritas
                      sertifikasi JPKI.
                    properties:
                      full_name:
                        type: string
                        nullable: true
                        description: >-
                          Nama sebagaimana terdaftar, biasanya dalam aksara
                          Jepang.
                      date_of_birth:
                        type: string
                        format: date
                        nullable: true
                        description: >-
                          Tanggal lahir, `YYYY-MM-DD`. `null` jika tanggal yang
                          terdaftar tidak lengkap.
                      gender:
                        type: string
                        nullable: true
                        enum:
                          - M
                          - F
                          - null
                        description: '`M`, `F`, atau `null` ketika tidak terdaftar.'
                      address:
                        type: string
                        nullable: true
                        description: Alamat terdaftar.
                      name_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          String posisi yang menandai karakter `full_name` yang
                          diganti dengan pengganti karena karakter asli berada
                          di luar kumpulan karakter standar. `null` jika tidak
                          ada yang diganti.
                      address_substitute_characters:
                        type: string
                        nullable: true
                        description: >-
                          String posisi yang menandai karakter pengganti dalam
                          `address`, seperti halnya
                          `name_substitute_characters`.
                  attributes_match_ocr:
                    type: boolean
                    nullable: true
                    description: >-
                      `true` jika atribut cocok dengan data yang dibaca dari
                      foto kartu yang sama, `false` jika ada atribut yang
                      berbeda (`JPKI_AND_OCR_DATA_NOT_SAME`), `null` jika tidak
                      ada yang dapat dibandingkan, termasuk setiap kali
                      `attributes` bernilai `null`.
                  mismatched_attributes:
                    type: array
                    items:
                      type: string
                      enum:
                        - full_name
                        - date_of_birth
                        - gender
                        - address
                    description: >-
                      Nama atribut yang berbeda dari data foto, tidak pernah
                      nilainya. Kosong jika semua yang dibandingkan cocok.
              portrait_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  URL presigned ke potret yang dibaca dari chip (ICAO DG2).
                  `null` untuk pembacaan JPKI (`chip_protocol: "jpki"`) dan
                  untuk langkah yang dilewati.
              signature_image:
                type: string
                format: uri
                nullable: true
                description: >-
                  URL presigned ke gambar tanda tangan pemegang yang dibaca dari
                  chip (ICAO DG7), jika chip menyimpannya. `null` untuk
                  pembacaan JPKI (`chip_protocol: "jpki"`) dan untuk langkah
                  yang dilewati.
              chip_data:
                type: object
                nullable: true
                description: >-
                  Data pribadi yang diurai dari Grup Data dari chip ICAO.
                  Bernilai `null` untuk pembacaan JPKI (`chip_protocol: "jpki"`)
                  dan untuk langkah yang dilewati.
                properties:
                  document_type:
                    type: string
                  issuing_country:
                    type: string
                  document_number:
                    type: string
                  expiration_date:
                    type: string
                    format: date
                  first_name:
                    type: string
                  last_name:
                    type: string
                  birth_date:
                    type: string
                    format: date
                  gender:
                    type: string
                  nationality:
                    type: string
                  address:
                    type: string
                  place_of_birth:
                    type: string
              authenticity:
                type: object
                nullable: true
                description: >-
                  Autentikasi pasif ICAO: tanda tangan SOD (`sod_integrity`) dan
                  hash Data Group (`dg_integrity`). `null` untuk pembacaan JPKI,
                  yang melaporkan buktinya pada `jpki`.
                properties:
                  sod_integrity:
                    type: boolean
                  dg_integrity:
                    type: boolean
              certificate_summary:
                type: object
                nullable: true
                description: >-
                  Ringkasan Sertifikat Penanda Tangan Dokumen ICAO. `null` untuk
                  pembacaan JPKI (`chip_protocol: "jpki"`) dan untuk langkah
                  yang dilewati.
                properties:
                  issuer:
                    type: string
                  subject:
                    type: string
                  serial_number:
                    type: string
                  not_valid_after:
                    type: string
                    format: date-time
                  not_valid_before:
                    type: string
                    format: date-time
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
        liveness_checks:
          type: array
          nullable: true
          description: >-
            **Array laporan liveness** yang dihasilkan oleh langkah-langkah
            liveness dalam graf alur kerja. Selalu berupa array JSON — bukan
            objek `liveness` tunggal. Bernilai `null` sampai setidaknya satu
            langkah liveness menghasilkan data. Setiap item adalah laporan
            lengkap, termasuk `node_id`, `status` tingkat fitur, `method`,
            `score`, `reference_image`, `video_url`, `age_estimation` opsional,
            `matches[]` lintas-sesi, serta `warnings[]`.
          items:
            type: object
            description: >-
              Satu laporan liveness — laporan lengkap untuk satu kali proses
              liveness.
            properties:
              node_id:
                type: string
                description: >-
                  ID node graf alur kerja dari langkah Deteksi Liveness yang
                  menghasilkan laporan ini.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Status tingkat fitur dari langkah liveness ini. Tidak
                  bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
              method:
                type: string
                description: Metode yang digunakan untuk deteksi liveness
              score:
                type: number
                description: Skor keyakinan dari pemeriksaan liveness
              reference_image:
                type: string
                format: uri
                description: URL gambar referensi yang digunakan
              video_url:
                type: string
                format: uri
                description: URL video pemeriksaan liveness
              age_estimation:
                type: number
                description: Usia hasil estimasi orang tersebut
              matches:
                type: array
                description: >-
                  Wajah serupa yang ditemukan oleh pencarian wajah duplikat
                  (kecocokan teratas, entri daftar blokir/daftar izin terlebih
                  dahulu). Kolom `source` pada setiap entri memberi tahu Anda
                  dari mana wajah yang cocok berasal: `session` (sesi verifikasi
                  lain), `imported` (wajah yang diunggah untuk pengguna vendor),
                  `list_entry` (wajah daftar izin/blokir yang dikelola
                  organisasi), atau `retained_template` (templat biometrik tanpa
                  gambar yang disimpan pada Pengguna, tercantum di bawah
                  `/v3/biometric-templates/`). `session_id`, `session_number`,
                  `status`, dan `api_service` bernilai `null` untuk sumber
                  selain sesi. Kecocokan `imported` tetap mengisi `vendor_data`,
                  `verification_date`, dan — jika pengguna vendor memiliki nama
                  yang tercatat — `user_details` (hanya dengan `full_name`) dari
                  rekaman pengguna vendor; kecocokan `retained_template` mengisi
                  `vendor_user_id`, `vendor_data`, `biometric_template_id`, dan
                  `verification_date`, sedangkan kolom gambar dan identitasnya
                  bernilai `null`; kecocokan `list_entry` mengembalikan semua
                  kolom ini sebagai `null`.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID sesi wajah yang cocok. Bernilai `null` jika `source`
                        adalah `imported`, `list_entry`, atau
                        `retained_template`.
                    session_number:
                      type: integer
                      nullable: true
                    similarity_percentage:
                      type: number
                      description: >-
                        Kemiripan wajah antara kedua gambar, dibatasi pada
                        rentang 0–100.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` dari sesi yang cocok atau Pengguna yang
                        ditautkan untuk wajah yang diimpor dan templatnya
                        dipertahankan.
                    vendor_user_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        ID Pengguna yang ditautkan untuk kecocokan `imported`
                        dan `retained_template` serta untuk kecocokan sesi yang
                        ditautkan ke Pengguna. `null` untuk entri daftar dan
                        sesi tanpa Pengguna.
                    biometric_template_id:
                      type: string
                      format: uuid
                      nullable: true
                      description: >-
                        Id templat biometrik yang disimpan. Ditetapkan hanya
                        jika `source` bernilai `retained_template`; jika tidak,
                        bernilai `null`.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Waktu wajah yang cocok diambil, atau waktu templat yang
                        disimpan dibuat. `null` untuk entri daftar.
                    user_details:
                      type: object
                      nullable: true
                      description: >-
                        Data identitas dari sesi yang cocok atau profil Pengguna
                        yang diimpor. Selalu bernilai `null` untuk kecocokan
                        `retained_template` dan `list_entry`.
                      properties:
                        full_name:
                          type: string
                          nullable: true
                        document_type:
                          type: string
                          nullable: true
                        document_number:
                          type: string
                          nullable: true
                    match_image_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Gambar referensi untuk pencocokan berbasis gambar.
                        Selalu `null` untuk pencocokan `retained_template`
                        karena templat yang disimpan tidak memuat gambar.
                    status:
                      type: string
                      nullable: true
                      description: >-
                        Status siklus hidup dari sesi yang cocok. `null` untuk
                        sumber non-sesi.
                    is_blocklisted:
                      type: boolean
                      description: Apakah wajah yang cocok ada di daftar blokir.
                    is_allowlisted:
                      type: boolean
                      description: Apakah wajah yang cocok ada di daftar izin.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Layanan API mandiri dari sesi yang cocok (mis.
                        `PASSIVE_LIVENESS`, `FACE_MATCH`); `null` untuk sesi
                        alur kerja dan sumber non-sesi.
                    source:
                      type: string
                      enum:
                        - session
                        - imported
                        - list_entry
                        - retained_template
                      description: >-
                        Asal wajah yang cocok: `session`, `imported` (unggahan
                        wajah Pengguna), `list_entry` (daftar izin/blokir), atau
                        `retained_template` (templat biometrik tanpa gambar yang
                        disimpan pada Pengguna, tercantum di bawah
                        `/v3/biometric-templates/`).
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
              face_quality:
                type: number
                nullable: true
                description: >-
                  Skor kualitas gambar wajah (0-100%). Hanya tersedia untuk
                  liveness pasif.
              face_luminance:
                type: number
                nullable: true
                description: >-
                  Skor luminansi/kecerahan wajah (0-100%). Hanya tersedia untuk
                  liveness pasif.
        face_matches:
          type: array
          nullable: true
          description: >-
            **Array laporan Pencocokan Wajah** yang dihasilkan oleh
            langkah-langkah pencocokan wajah dalam graf alur kerja. Selalu
            berupa array JSON — bukan objek `face_match` tunggal. Bernilai
            `null` sampai setidaknya satu langkah pencocokan wajah menghasilkan
            data. Setiap item adalah laporan lengkap, termasuk `node_id`,
            `status` tingkat fitur, `score` kemiripan, `source_image`,
            `target_image`, serta `warnings[]`.
          items:
            type: object
            description: Satu laporan pencocokan wajah — laporan lengkap.
            properties:
              node_id:
                type: string
                description: >-
                  ID node graf alur kerja dari langkah pencocokan wajah yang
                  menghasilkan laporan ini.
              status:
                type: string
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
                description: >-
                  Status tingkat fitur dari langkah pencocokan wajah ini. Tidak
                  bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
              score:
                type: number
                description: Skor keyakinan dari Pencocokan Wajah
              source_image_session_id:
                type: string
                format: uuid
                nullable: true
                description: >-
                  ID sesi tempat potret sumber (referensi) disimpan. Dalam alur
                  autentikasi biometrik, ini adalah ID sesi itu sendiri (potret
                  yang dikirimkan disimpan di bawah sesi baru). Bernilai `null`
                  jika gambar sumber adalah potret dokumen dari sesi yang sama.
              source_image:
                type: string
                format: uri
                description: URL gambar sumber yang digunakan untuk perbandingan
              target_image:
                type: string
                format: uri
                description: URL gambar target yang digunakan untuk perbandingan
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
                description: Peringatan verifikasi pencocokan wajah
              face_coverage:
                type: object
                nullable: true
                description: >-
                  Apakah mata, mulut, dan wajah tertutup pada gambar yang
                  diambil. Hanya dikembalikan oleh `GET
                  /v3/session/{sessionId}/decision/`; ini bukan bagian dari
                  payload webhook. `null` jika tidak ada hasil pembacaan
                  penutupan.
                properties:
                  eyes:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` berarti pembacaan tersebut hanya bukti
                          bayangan dan tidak ada peringatan yang
                          menindaklanjutinya.
                      visibility_score:
                        type: number
                        nullable: true
                  mouth:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` berarti pembacaan tersebut hanya bukti
                          bayangan dan tidak ada peringatan yang
                          menindaklanjutinya.
                      visibility_score:
                        type: number
                        nullable: true
                  face:
                    type: object
                    properties:
                      covered:
                        type: boolean
                        nullable: true
                      calibrated:
                        type: boolean
                        nullable: true
                        description: >-
                          `false` berarti pembacaan tersebut hanya bukti
                          bayangan dan tidak ada peringatan yang
                          menindaklanjutinya.
                      visibility_score:
                        type: number
                        nullable: true
        phone_verifications:
          type: array
          nullable: true
          description: >-
            **Array laporan Verifikasi Telepon** — selalu berupa array JSON,
            bukan objek `phone` tunggal. Bernilai `null` sampai setidaknya satu
            langkah telepon menghasilkan data. Setiap item adalah laporan
            lengkap, termasuk `node_id`, `status` tingkat fitur, nomor telepon
            dan metadata negara, `lifecycle[]`, `matches[]`, serta `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Pengenal unik untuk langkah telepon ini di dalam graf alur
                  kerja.
              status:
                type: string
                description: >-
                  Status tingkat fitur dari langkah verifikasi telepon ini.
                  Tidak bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              phone_number_prefix:
                type: string
                description: Prefiks kode panggilan negara
              phone_number:
                type: string
                description: Nomor telepon tanpa kode negara
              full_number:
                type: string
                description: Nomor telepon lengkap dengan awalan negara
              country_code:
                type: string
                description: Kode negara dua huruf (ISO 3166-1 alpha-2)
              country_name:
                type: string
                description: Nama lengkap negara
              carrier:
                type: object
                properties:
                  name:
                    type: string
                    description: Nama operator telepon
                  type:
                    type: string
                    description: Jenis sambungan telepon (seluler, telepon tetap, dll.)
              is_disposable:
                type: boolean
                description: Apakah nomor telepon berasal dari layanan sekali pakai
              is_virtual:
                type: boolean
                description: Apakah nomor telepon bersifat virtual
              verification_method:
                type: string
                description: Metode yang digunakan untuk memverifikasi nomor telepon
              verification_attempts:
                type: integer
                description: Jumlah percobaan verifikasi yang dilakukan
              verified_at:
                type: string
                format: date-time
                description: Cap waktu saat telepon diverifikasi
              lifecycle:
                type: array
                description: Daftar kronologis event dalam siklus hidup verifikasi telepon.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Payload khusus event. Event kirim memuat `status`,
                        `reason`, `channel`, `actual_channel`; event pengiriman
                        memuat `channel`, `status`; event pemeriksaan kode
                        memuat `code_tried`, `status`; event status akhir memuat
                        `reason` — atau `null` jika tidak ada alasan untuk
                        dilaporkan (misalnya `PHONE_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        channel:
                          type: string
                          nullable: true
                        actual_channel:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              warnings:
                type: array
                description: Daftar peringatan yang terkait dengan verifikasi telepon
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
              matches:
                type: array
                description: >-
                  Kecocokan yang ditemukan untuk nomor telepon ini. Setiap
                  kecocokan memiliki `source`: `session` (sesi verifikasi lain
                  di aplikasi Anda cocok pada nomor yang sama, dikembalikan
                  dengan
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  atau `list_entry` (nomor berada pada daftar izin/blokir yang
                  dikelola organisasi — lihat `/management-api/lists/overview`).
                  Kecocokan lintas sesi menggunakan `vendor_data` yang berbeda
                  dan dibatasi maksimal 5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    phone_number:
                      type: string
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        Asal kecocokan ini. `session` berarti sesi verifikasi
                        lain di aplikasi Anda cocok dengan nilai ini.
                        `list_entry` berarti nilai cocok dengan daftar yang
                        dikelola organisasi (daftar izin/daftar blokir) — lihat
                        ringkasan daftar API manajemen di
                        `/management-api/lists/overview` untuk cara mengelola
                        daftar tersebut.
              phone_intelligence:
                allOf:
                  - $ref: '#/components/schemas/PhoneIntelligence'
                description: >-
                  Sinyal intelijen telepon. Hanya ada saat add-on intelijen
                  telepon dijalankan untuk nomor ini.
              phone_social:
                allOf:
                  - $ref: '#/components/schemas/PhoneSocialFootprint'
                description: >-
                  Jejak sosial dari nomor tersebut. Ada hanya jika pengaya jejak
                  sosial dijalankan untuk nomor ini.
        email_verifications:
          type: array
          nullable: true
          description: >-
            **Array laporan Verifikasi Email** — selalu berupa array JSON, bukan
            objek `email` tunggal. Bernilai `null` sampai setidaknya satu
            langkah email menghasilkan data. Setiap item adalah laporan lengkap,
            termasuk `node_id`, `status` tingkat fitur, alamat email, data
            kebocoran, `lifecycle[]`, `matches[]`, serta `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Pengenal unik untuk langkah email ini di dalam graf alur
                  kerja.
              status:
                type: string
                description: >-
                  Status tingkat fitur dari langkah verifikasi email ini. Tidak
                  bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Expired
              email:
                type: string
                description: Alamat email yang sedang diverifikasi
              is_breached:
                type: boolean
                description: >-
                  Menunjukkan apakah email ditemukan dalam kebocoran data yang
                  diketahui
              breaches:
                type: array
                description: >-
                  Daftar kebocoran data yang diketahui di mana email ini
                  ditemukan
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Nama pelanggaran
                    domain:
                      type: string
                      description: Domain yang terdampak oleh kebocoran
                    logo_path:
                      type: string
                      description: URL logo layanan yang mengalami kebocoran data
                    breach_date:
                      type: string
                      format: date
                      description: Tanggal saat pelanggaran terjadi
                    description:
                      type: string
                      description: Deskripsi pelanggaran
                    is_verified:
                      type: boolean
                      description: Apakah pelanggaran telah diverifikasi
                    data_classes:
                      type: array
                      description: Jenis data yang terekspos dalam pelanggaran data
                      items:
                        type: string
                    breach_emails_count:
                      type: integer
                      description: Jumlah alamat email yang terdampak dalam kebocoran data
              is_disposable:
                type: boolean
                description: Menunjukkan apakah email berasal dari penyedia sekali pakai
              is_undeliverable:
                type: boolean
                description: Menunjukkan apakah alamat email tidak dapat dikirimkan
              verification_attempts:
                type: integer
                description: Jumlah percobaan verifikasi untuk email ini
              verified_at:
                type: string
                format: date-time
                description: Cap waktu saat email diverifikasi
              warnings:
                type: array
                description: Daftar peringatan yang terkait dengan verifikasi email
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
              lifecycle:
                type: array
                description: Daftar kronologis event dalam siklus hidup verifikasi email.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    timestamp:
                      type: string
                      format: date-time
                    details:
                      type: object
                      nullable: true
                      description: >-
                        Payload khusus event. Event kirim memuat `status`,
                        `reason`; event pemeriksaan kode memuat `code_tried`,
                        `status`; event status akhir memuat `reason` — atau
                        `null` jika tidak ada alasan untuk dilaporkan (misalnya
                        `EMAIL_VERIFICATION_APPROVED`).
                      properties:
                        status:
                          type: string
                        reason:
                          type: string
                          nullable: true
                        code_tried:
                          type: string
                    fee:
                      type: number
              matches:
                type: array
                description: >-
                  Kecocokan yang ditemukan untuk alamat email ini. Setiap
                  kecocokan memiliki `source`: `session` (sesi verifikasi lain
                  di aplikasi Anda cocok pada email yang sama, dikembalikan
                  dengan
                  `session_id`/`session_number`/`vendor_data`/`verification_date`)
                  atau `list_entry` (email berada pada daftar izin/blokir yang
                  dikelola organisasi — lihat `/management-api/lists/overview`).
                  Kecocokan lintas sesi menggunakan `vendor_data` yang berbeda
                  dan dibatasi maksimal 5.
                items:
                  type: object
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      nullable: true
                    session_number:
                      type: integer
                      nullable: true
                    vendor_data:
                      type: string
                      nullable: true
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                    email:
                      type: string
                      format: email
                    status:
                      type: string
                      nullable: true
                    is_blocklisted:
                      type: boolean
                    api_service:
                      type: string
                      nullable: true
                    source:
                      type: string
                      enum:
                        - session
                        - list_entry
                      description: >-
                        Asal kecocokan ini. `session` berarti sesi verifikasi
                        lain di aplikasi Anda cocok dengan nilai ini.
                        `list_entry` berarti nilai cocok dengan daftar yang
                        dikelola organisasi (daftar izin/daftar blokir) — lihat
                        ringkasan daftar API manajemen di
                        `/management-api/lists/overview` untuk cara mengelola
                        daftar tersebut.
              email_intelligence:
                allOf:
                  - $ref: '#/components/schemas/EmailIntelligence'
                description: >-
                  Sinyal intelijen email. Hanya ada jika add-on intelijen email
                  dijalankan untuk alamat ini.
              email_social:
                allOf:
                  - $ref: '#/components/schemas/EmailSocialFootprint'
                description: >-
                  Jejak sosial dari alamat. Ada hanya jika pengaya jejak sosial
                  dijalankan untuk alamat ini.
        poa_verifications:
          type: array
          nullable: true
          description: >-
            **Array laporan Bukti Alamat (POA)** — selalu berupa array JSON,
            bukan objek `poa` tunggal. Bernilai `null` sampai setidaknya satu
            langkah POA menghasilkan data. Setiap item adalah laporan lengkap,
            termasuk `node_id`, `status` tingkat fitur, URL file dokumen,
            penerbit, tanggal, alamat yang diparsing, serta `warnings[]`.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: Pengenal unik untuk langkah POA ini di graf alur kerja.
              status:
                type: string
                description: >-
                  Status tingkat fitur dari langkah Bukti Alamat ini. Tidak
                  bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              document_file:
                type: string
                format: uri
                description: URL dokumen bukti alamat
              issuing_state:
                type: string
                description: Kode negara dua huruf dari negara penerbit
              document_type:
                type: string
                description: Jenis dokumen bukti alamat
              document_subtype:
                type: string
                nullable: true
                description: >-
                  Klasifikasi yang lebih spesifik dari dokumen POA dalam
                  `document_type`-nya, jika terdeteksi. `null` jika tidak.
              document_language:
                type: string
                description: Kode bahasa dokumen
              document_metadata:
                type: object
                properties:
                  file_size:
                    type: integer
                    description: Ukuran dokumen
                  content_type:
                    type: string
                    description: Tipe konten dokumen
                  creation_date:
                    type: string
                    format: date
                    description: Tanggal saat dokumen dibuat
                  modified_date:
                    type: string
                    format: date
                    description: Tanggal saat dokumen dimodifikasi
                  overlay_manipulation:
                    type: object
                    nullable: true
                    description: >-
                      Analisis forensik PDF untuk dugaan manipulasi teks
                      overlay. Bernilai null jika tidak ditemukan bukti
                      manipulasi overlay atau dokumen bukan berupa PDF.
                    properties:
                      detected:
                        type: boolean
                        description: >-
                          Menentukan apakah bukti manipulasi teks overlay
                          terdeteksi.
                      analyzed:
                        type: boolean
                        description: Apakah PDF dapat dianalisis.
                      analysis_incomplete:
                        type: boolean
                        description: >-
                          Ada dan bernilai true hanya jika file tidak dapat
                          diperiksa sepenuhnya. Bagian yang berhasil diperiksa
                          tetap menampilkan temuannya jika memungkinkan, dan
                          dokumen memunculkan peringatan penggantian teks yang
                          belum terbukti.
                      signals:
                        type: array
                        items:
                          type: string
                        description: >-
                          Sinyal forensik yang terpicu, seperti
                          duplicate_font_subset atau glyph_fragmentation.
                      manipulated_regions:
                        type: array
                        description: >-
                          Area yang diduga dimanipulasi dalam koordinat halaman
                          PDF.
                        items:
                          type: object
                          properties:
                            page:
                              type: integer
                            x:
                              type: number
                            'y':
                              type: number
                            width:
                              type: number
                            height:
                              type: number
                            page_width:
                              type: number
                            page_height:
                              type: number
                  creator:
                    type: string
                    nullable: true
                    description: Aplikasi pembuat yang tercatat dalam metadata dokumen.
                  producer:
                    type: string
                    nullable: true
                    description: >-
                      Perangkat lunak pembuat (producer) yang tercatat dalam
                      metadata PDF.
                  software:
                    type: string
                    nullable: true
                    description: >-
                      Perangkat lunak pengeditan/pemrosesan yang tercatat dalam
                      metadata file.
                  encryption:
                    type: string
                    nullable: true
                    description: Skema enkripsi dokumen, jika terenkripsi.
                  is_signed:
                    type: boolean
                    nullable: true
                    description: Apakah PDF memiliki tanda tangan digital.
                  is_tampered:
                    type: boolean
                    nullable: true
                    description: >-
                      Menentukan apakah validasi tanda tangan menunjukkan file
                      telah dimodifikasi setelah ditandatangani.
                  signature_info:
                    type: object
                    nullable: true
                    description: Rincian tanda tangan digital, jika ada.
                  exif_original_date:
                    type: string
                    nullable: true
                    description: Tanggal pengambilan asli EXIF, untuk unggahan gambar.
                  exif_digitized_date:
                    type: string
                    nullable: true
                    description: Tanggal digitalisasi EXIF, untuk unggahan gambar.
                  processed_by_known_editor:
                    type: boolean
                    nullable: true
                    description: >-
                      Apakah metadata file menunjukkan pemrosesan oleh editor
                      dokumen yang diketahui.
                  has_different_creation_mod_date:
                    type: boolean
                    nullable: true
                    description: >-
                      Apakah tanggal pembuatan dan modifikasi berbeda — sinyal
                      manipulasi yang umum.
                description: >-
                  Metadata forensik file yang diekstrak dari dokumen POA yang
                  diunggah. Selalu berisi kunci di bawah ini (nilainya `null`
                  jika tidak berlaku, misalnya tanggal EXIF untuk PDF). Bernilai
                  `null` jika tidak ada metadata yang dapat diekstrak.
                nullable: true
              issuer:
                type: string
                description: Nama penerbit dokumen
              issue_date:
                type: string
                format: date
                description: Tanggal saat dokumen diterbitkan
              expiration_date:
                type: string
                format: date
                nullable: true
                description: Tanggal kedaluwarsa dokumen, jika tersedia
              poa_address:
                type: string
                description: Alamat mentah dari dokumen bukti alamat
              poa_formatted_address:
                type: string
                description: Alamat terformat dari dokumen bukti alamat
              poa_parsed_address:
                type: object
                properties:
                  address_type:
                    type: string
                    description: Jenis alamat (Jalan, Jalan Utama, dll.)
                  street_1:
                    type: string
                    description: Alamat jalan utama
                  street_2:
                    type: string
                    nullable: true
                    description: Alamat jalan sekunder
                  city:
                    type: string
                    description: Nama kota
                  region:
                    type: string
                    description: Nama wilayah atau negara bagian
                  country:
                    type: string
                    description: Kode negara dua huruf
                  postal_code:
                    type: string
                    description: Kode pos
                  document_location:
                    type: object
                    properties:
                      latitude:
                        type: number
                        description: Koordinat lintang
                      longitude:
                        type: number
                        description: Koordinat bujur
              name_on_document:
                type: string
                nullable: true
                description: >-
                  Nama pemegang akun / penerima yang diekstrak dari dokumen POA,
                  digunakan untuk pencocokan nama. `null` jika tidak ada nama
                  yang dapat diekstrak.
              name_match_score_expected_details:
                type: number
                nullable: true
                description: >-
                  Skor kemiripan (0-100) antara `name_on_document` dan nama yang
                  diharapkan dan diberikan saat pembuatan sesi. `null` jika
                  salah satu pihak tidak ada.
              name_match_score_id_verification:
                type: number
                nullable: true
                description: >-
                  Skor kemiripan (0-100) antara `name_on_document` dan nama yang
                  diekstrak oleh langkah verifikasi identitas. `null` jika salah
                  satu pihak tidak ada.
              expected_details_address:
                type: string
                nullable: true
                description: Alamat mentah yang diharapkan untuk verifikasi
              expected_details_formatted_address:
                type: string
                nullable: true
                description: Alamat terformat yang diharapkan untuk verifikasi
              expected_details_parsed_address:
                type: object
                description: Detail alamat terurai yang diharapkan untuk verifikasi
              extra_fields:
                type: object
                description: >-
                  Detail perbankan dan kontak tambahan yang diekstrak dari
                  dokumen.
                properties:
                  bank_account_number:
                    type: string
                    nullable: true
                  bank_iban:
                    type: string
                    nullable: true
                  bank_sort_code:
                    type: string
                    nullable: true
                  bank_routing_number:
                    type: string
                    nullable: true
                  bank_swift_bic:
                    type: string
                    nullable: true
                  bank_branch_name:
                    type: string
                    nullable: true
                  bank_branch_address:
                    type: string
                    nullable: true
                  document_phone_number:
                    type: string
                    nullable: true
                  additional_names:
                    type: array
                    items:
                      type: string
              extra_files:
                type: array
                items:
                  type: string
                  format: uri
                description: File bukti alamat tambahan
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
              detected_codes:
                type: array
                description: >-
                  Kode QR dan barcode yang terdeteksi di setiap halaman dokumen
                  yang diproses. Kosong jika tidak ada yang ditemukan. Kode QR
                  yang ditemukan namun tidak dapat didekode memiliki
                  `parsed_payload: null`.
                items:
                  $ref: '#/components/schemas/DocumentAIDetectedCode'
              address_validation:
                allOf:
                  - $ref: '#/components/schemas/AddressValidationResult'
                nullable: true
                description: >-
                  Validasi Alamat dari alamat pada bukti alamat ini: apakah
                  alamat tersebut ada dan bentuk ternormalisasinya, sebagaimana
                  yang dibaca dari dokumen (koreksi selanjutnya terhadap
                  `poa_address` tidak menjalankannya kembali). Hadir jika
                  langkah Bukti Alamat ini mengaktifkan add-on Validasi Alamat
                  dan unggahan lolos pemeriksaan dokumen; `null` jika tidak.
        document_ai_documents:
          type: array
          nullable: true
          description: >-
            **Laporan Document AI yang dikelompokkan berdasarkan node alur
            kerja** — selalu berupa array JSON, tidak pernah berupa objek
            tunggal. Bernilai `null` sampai setidaknya satu langkah Document AI
            menghasilkan data. Hanya ada jika `session_kind = user`. Setiap item
            adalah grup node dengan `status` agregat, `node_id`, array `items[]`
            dari hasil per dokumen (data yang diekstraksi menggunakan kunci
            kolom yang dikonfigurasi), serta `warnings`.
          items:
            type: object
            description: Hasil Document AI yang dikelompokkan berdasarkan node alur kerja.
            properties:
              status:
                type: string
                description: >-
                  Status Document AI agregat untuk node ini, digabungkan dari
                  `items[]` miliknya.
                enum:
                  - Approved
                  - Declined
                  - In Review
                  - Not Finished
              node_id:
                type: string
                nullable: true
                description: >-
                  Pengenal unik untuk langkah Document AI ini di graf alur
                  kerja.
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    node_id:
                      type: string
                      nullable: true
                      description: Node graf alur kerja yang menghasilkan dokumen ini.
                    document_key:
                      type: string
                      description: >-
                        Kunci dari dokumen Document AI yang dikonfigurasi yang
                        sesuai dengan file ini.
                    original_filename:
                      type: string
                      nullable: true
                      description: Nama file seperti yang diunggah oleh pengguna.
                    file_size:
                      type: integer
                      nullable: true
                      description: Ukuran file dalam byte.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Tautan presigned berdurasi singkat ke file yang
                        diunggah.
                    status:
                      type: string
                      enum:
                        - Approved
                        - Declined
                        - In Review
                        - Not Finished
                      description: Status Document AI per dokumen.
                    extracted_data:
                      type: object
                      additionalProperties: true
                      nullable: true
                      description: >-
                        Nilai yang diekstrak oleh Document AI, diindeks
                        berdasarkan `key` kolom yang dikonfigurasi. Setiap nilai
                        berupa string, angka, atau `null`.
                    detected_codes:
                      type: array
                      description: >-
                        Kode QR dan barcode yang terdeteksi di setiap halaman
                        yang diproses. Kosong jika tidak ada yang ditemukan.
                        Kode QR yang ditemukan namun tidak dapat didekode
                        memiliki `parsed_payload: null`.
                      items:
                        $ref: '#/components/schemas/DocumentAIDetectedCode'
                    fields:
                      type: array
                      description: Kolom ekstraksi yang dikonfigurasi untuk dokumen ini.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: >-
                              Kunci kolom stabil yang digunakan sebagai kunci
                              dalam `extracted_data`.
                          name:
                            type: string
                            description: Nama kolom yang mudah dibaca manusia.
                          instruction:
                            type: string
                            description: Instruksi ekstraksi yang ditampilkan kepada model.
                          type:
                            type: string
                            enum:
                              - text
                              - number
                              - date
                            description: >-
                              Tipe nilai yang diharapkan dari kolom yang
                              diekstraksi.
                          required:
                            type: boolean
                            description: Whether this field is required.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Metadata forensik file yang diekstrak dari dokumen yang
                        diunggah (misalnya `is_tampered`). Bernilai `null` jika
                        tidak ada yang dapat diekstrak.
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Referensi silang dari kolom dokumen yang diekstraksi
                        terhadap data sesi lainnya. Bernilai `null` jika tidak
                        ada pemeriksaan silang yang dilakukan.
                    created_at:
                      type: string
                      format: date-time
              warnings:
                type: array
                nullable: true
                items:
                  type: object
                description: Log peringatan yang dimunculkan untuk node Document AI ini.
        questionnaire_responses:
          type: array
          nullable: true
          description: >-
            **Array laporan respons Kuesioner** — selalu berupa array JSON,
            bukan objek `questionnaire` tunggal. Bernilai `null` sampai
            setidaknya satu langkah kuesioner menghasilkan data. Setiap item
            adalah laporan lengkap, termasuk `node_id`, metadata kuesioner,
            bagian dengan elemen formulir, serta jawaban pengguna.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Pengenal unik untuk langkah kuesioner ini di dalam graf alur
                  kerja.
              questionnaire_id:
                type: string
                description: Pengenal unik untuk kuesioner
              title:
                type: string
                description: Judul kuesioner
              description:
                type: string
                description: Deskripsi kuesioner
              languages:
                type: array
                items:
                  type: string
                description: Bahasa yang didukung
              default_language:
                type: string
                description: Bahasa default
              is_active:
                type: boolean
                description: Apakah kuesioner aktif
              is_simple_questionnaire:
                type: boolean
                description: >-
                  Apakah kuesioner merupakan formulir linier sederhana (tanpa
                  graf percabangan).
              questionnaire_group_id:
                type: string
                format: uuid
                nullable: true
                description: Pengidentifikasi stabil dari grup kuesioner di seluruh versi.
              version:
                type: integer
                nullable: true
                description: Nomor versi kuesioner yang telah dijawab.
              published_at:
                type: string
                format: date-time
                nullable: true
                description: Cap waktu saat versi kuesioner ini dipublikasikan.
              sections:
                type: array
                items:
                  type: object
                  properties:
                    title:
                      type: string
                      nullable: true
                      description: Judul bagian
                    description:
                      type: string
                      nullable: true
                      description: Deskripsi bagian
                    items:
                      type: array
                      items:
                        type: object
                        properties:
                          uuid:
                            type: string
                            description: Pengenal unik untuk item
                          value:
                            type: string
                            nullable: true
                            description: >-
                              Pengidentifikasi node stabil dari elemen formulir
                              ini dalam graf kuesioner.
                          element_type:
                            type: string
                            description: Jenis elemen kuesioner
                          is_required:
                            type: boolean
                            description: Apakah item wajib
                          title:
                            type: string
                            description: Judul item
                          description:
                            type: string
                            nullable: true
                            description: Deskripsi item
                          placeholder:
                            type: string
                            nullable: true
                            description: Teks pengganti
                          choices:
                            type: array
                            nullable: true
                            items:
                              type: object
                              properties:
                                label:
                                  type: string
                                value:
                                  type: string
                                requires_text_input:
                                  type: boolean
                                  description: >-
                                    Apakah pilihan ini memerlukan input teks
                                    tambahan
                                  nullable: true
                              required:
                                - label
                                - value
                            description: >-
                              Pilihan untuk elemen menu tarik-turun atau pilihan
                              tunggal
                          max_files:
                            type: integer
                            description: Jumlah file maksimum yang diizinkan
                            nullable: true
                          answer:
                            type: object
                            description: Jawaban yang diberikan untuk item tersebut
                            properties:
                              value:
                                type: string
                                nullable: true
                              text:
                                type: string
                                nullable: true
                              files:
                                type: array
                                items:
                                  type: string
                                nullable: true
                          required_if:
                            type: object
                            nullable: true
                            description: >-
                              Aturan persyaratan kondisional, saat elemen hanya
                              diperlukan untuk jawaban tertentu.
                          repeatable_config:
                            type: object
                            nullable: true
                            description: >-
                              Konfigurasi untuk grup elemen yang dapat berulang,
                              jika berlaku.
                        required:
                          - uuid
                          - value
                          - element_type
                          - is_required
                          - title
              status:
                type: string
                description: Status kuesioner
        bank_verifications:
          type: array
          nullable: true
          description: >-
            Hasil Verifikasi Bank, satu item per langkah Verifikasi Bank, untuk
            Verifikasi Pengguna dan Bisnis. `null` sampai suatu langkah
            menghasilkannya. Kolom `method` setiap item menyebutkan bagaimana
            akun diverifikasi: `open_banking` (masuk ke bank) atau
            `account_lookup` (pemeriksaan akun), atau fallback `statement` atau
            `microdeposits`, dan `none` saat orang tersebut melanjutkan tanpa
            bank sebelum upaya apa pun dievaluasi (`continued_without_bank`).
            Lihat [Metode verifikasi
            bank](/id/core-technology/bank-verification/verification-methods).
          items:
            $ref: '#/components/schemas/BankVerificationResult'
        signatures:
          type: array
          description: >-
            Hasil Tanda Tangan Elektronik, satu item per penandatangan dan
            langkah tanda tangan, untuk Verifikasi Pengguna dan Verifikasi
            Bisnis (KYB). Hanya ada jika alur kerja memiliki langkah Tanda
            Tangan Elektronik; berupa array kosong hingga penandatangan
            mencapainya. Lihat [Laporan Tanda Tangan
            Elektronik](/id/core-technology/electronic-signature/report-electronic-signature).
          items:
            $ref: '#/components/schemas/SignatureResult'
        aml_screenings:
          type: array
          nullable: true
          description: >-
            **Array laporan Skrining AML** — selalu berupa array JSON, tidak
            pernah berupa objek tunggal `aml`. `null` hingga setidaknya satu
            langkah AML menghasilkan data. Setiap item merupakan laporan
            lengkap, termasuk `node_id`, `status` tingkat fitur, `total_hits`,
            `entity_type`, `hits[]`, `score`, `screened_data`,
            `is_ongoing_monitoring_enabled`, dan `warnings[]`.
          items:
            $ref: '#/components/schemas/AMLScreening'
        ip_analyses:
          type: array
          nullable: true
          description: >-
            **Array laporan Analisis Perangkat & IP** — selalu berupa array
            JSON, bukan objek `ip_analysis` tunggal. Bernilai `null` sampai
            setidaknya satu langkah analisis IP menghasilkan data. Setiap item
            adalah laporan lengkap, termasuk `node_id`, `status` tingkat fitur,
            data IP dan geolokasi, sidik jari perangkat, serta `warnings[]`.
            Entri dengan `(node_id, ip_address, device_fingerprint)` duplikat
            akan dideduplikasi di sisi server.
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Pengenal unik untuk langkah Analisis Perangkat & IP ini di
                  graf alur kerja.
              status:
                type: string
                description: >-
                  Status tingkat fitur dari entri Analisis Perangkat & IP ini.
                  Tidak bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              device_brand:
                type: string
                description: Merek perangkat yang digunakan
              device_model:
                type: string
                description: Model perangkat yang digunakan
              browser_family:
                type: string
                description: Famili browser yang digunakan
              os_family:
                type: string
                description: Keluarga sistem operasi
              platform:
                type: string
                description: Jenis platform (mobile, desktop, dll)
              device_fingerprint:
                type: string
                nullable: true
                description: Pengenal unik sidik jari perangkat
              ip_country:
                type: string
                description: Negara yang terdeteksi dari IP
              ip_country_code:
                type: string
                description: Kode negara dua huruf dari IP
              ip_state:
                type: string
                description: Negara bagian/wilayah yang terdeteksi dari IP
              ip_city:
                type: string
                description: Kota yang terdeteksi dari IP
              latitude:
                type: number
                description: Koordinat lintang lokasi IP
              longitude:
                type: number
                description: Koordinat bujur dari lokasi IP
              ip_address:
                type: string
                description: Alamat IP
              isp:
                type: string
                nullable: true
                description: Penyedia Layanan Internet
              organization:
                type: string
                nullable: true
                description: Organisasi yang terkait dengan IP
              is_vpn_or_tor:
                type: boolean
                description: Menentukan apakah IP berasal dari VPN atau jaringan Tor
              is_data_center:
                type: boolean
                description: Menentukan apakah IP berasal dari pusat data
              time_zone:
                type: string
                description: Zona waktu yang terdeteksi dari IP
              time_zone_offset:
                type: string
                description: Offset zona waktu
              ip:
                type: object
                description: >-
                  Geolokasi IP dari entri ini ditambah jarak lingkaran besar
                  (km) ke alamat dokumen identitas dan alamat dokumen bukti
                  alamat (POA). Jarak bernilai `null` jika salah satu pihak
                  tidak memiliki lokasi yang dapat ditentukan.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Koordinat, atau `null` jika tidak tersedia.
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 12.3
              id_document:
                type: object
                description: >-
                  Lokasi yang diekstrak dari alamat dokumen identitas ditambah
                  jarak (km) ke geolokasi IP dan alamat dokumen POA. `location`
                  bernilai `null` jika tidak ada alamat dokumen yang dapat
                  di-geocode.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Koordinat, atau `null` jika tidak tersedia.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 23.4
                  distance_from_poa_document:
                    type: number
                    nullable: true
                    example: 18.7
              poa_document:
                type: object
                description: >-
                  Lokasi yang diekstrak dari dokumen Bukti Alamat ditambah jarak
                  (km) ke geolokasi IP dan alamat dokumen identitas. `location`
                  bernilai `null` jika sesi tidak memiliki langkah POA atau
                  alamat tidak dapat di-geocode.
                properties:
                  location:
                    type: object
                    nullable: true
                    properties:
                      latitude:
                        type: number
                        example: 41.2706327
                      longitude:
                        type: number
                        example: 1.9770097
                    description: Koordinat, atau `null` jika tidak tersedia.
                  distance_from_ip:
                    type: number
                    nullable: true
                    example: 12.3
                  distance_from_id_document:
                    type: number
                    nullable: true
                    example: 18.7
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
              matches:
                type: array
                description: >-
                  Kecocokan lintas sesi yang ditemukan untuk alamat IP atau
                  identitas perangkat entri ini. Setiap kecocokan merupakan sesi
                  verifikasi lain dalam aplikasi Anda (`source` selalu berupa
                  `session`) yang memiliki nilai yang sama, selalu milik
                  pengguna vendor / `vendor_data` yang berbeda dari sesi saat
                  ini, dibatasi maksimal 5 per kolektor (`device_fingerprint`
                  menjumlahkan dua kolektor yang dibatasi secara independen,
                  sehingga memungkinkan hingga 10 entri). Setiap item memuat
                  `match_source`, `confidence`, `match_mode`, `device_info`, dan
                  `location_info`; kunci `recovery_similarity`,
                  `tls_ja4_corroborated`, dan `recovery_gate_reason` hanya ada
                  jika `match_source` bernilai `recovered_high`.
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    session_id:
                      type: string
                      format: uuid
                      description: ID sesi dari sesi yang cocok.
                    session_number:
                      type: integer
                      description: Nomor urut sesi yang cocok.
                    vendor_data:
                      type: string
                      nullable: true
                      description: >-
                        `vendor_data` dari sesi yang cocok — selalu berbeda dari
                        pengguna vendor sesi saat ini.
                    verification_date:
                      type: string
                      format: date-time
                      nullable: true
                      description: >-
                        Tanggal pembuatan sesi yang cocok
                        (`YYYY-MM-DDTHH:MM:SSZ`).
                    match_type:
                      type: string
                      enum:
                        - ip_address
                        - device_fingerprint
                      description: >-
                        Apakah kecocokan didasarkan pada alamat IP atau
                        fingerprint perangkat
                    match_source:
                      type: string
                      enum:
                        - ip_address
                        - persistent_id
                        - legacy_fp
                        - recovered_high
                      description: >-
                        Bagaimana kecocokan ini tercapai: `ip_address` (alamat
                        IP bersama — kolokasi jaringan, bukan klaim identitas
                        perangkat), `persistent_id` (pengidentifikasi perangkat
                        persisten yang tersimpan secara persis), `legacy_fp`
                        (hash sidik jari perangkat lama `didit-fp-*`), atau
                        `recovered_high` (kecocokan pemulihan sidik jari samar
                        dengan keyakinan tinggi). Kandidat pemulihan dengan
                        keyakinan lebih rendah hanya muncul sebagai peringatan
                        risiko, tidak pernah dalam array ini.
                    matched_value:
                      type: string
                      nullable: true
                      description: >-
                        Nilai yang cocok: alamat IP bersama, pengidentifikasi
                        perangkat persisten atau hash sidik jari lama, atau —
                        untuk `recovered_high` — UUID perangkat yang dipulihkan.
                    status:
                      type: string
                      description: Status siklus hidup dari sesi yang cocok.
                    is_blocklisted:
                      type: boolean
                      description: >-
                        Apakah nilai yang cocok ada di daftar blokir. Saat ini
                        selalu `false` untuk kecocokan perangkat/IP.
                    api_service:
                      type: string
                      nullable: true
                      description: >-
                        Layanan API mandiri dari sesi yang cocok; `null` untuk
                        sesi alur kerja.
                    source:
                      type: string
                      enum:
                        - session
                      description: >-
                        Selalu `session` untuk kecocokan perangkat/IP — setiap
                        kecocokan adalah sesi verifikasi lain di aplikasi Anda.
                    device_info:
                      type: object
                      description: Detail perangkat yang diamati pada sesi yang cocok.
                      properties:
                        device_brand:
                          type: string
                          nullable: true
                        device_model:
                          type: string
                          nullable: true
                        browser_family:
                          type: string
                          nullable: true
                        os_family:
                          type: string
                          nullable: true
                        platform:
                          type: string
                          nullable: true
                        device_fingerprint:
                          type: string
                          nullable: true
                    location_info:
                      type: object
                      description: >-
                        Detail jaringan dan geolokasi yang diamati pada sesi
                        yang cocok.
                      properties:
                        ip_address:
                          type: string
                          nullable: true
                        ip_country:
                          type: string
                          nullable: true
                        ip_country_code:
                          type: string
                          nullable: true
                        ip_state:
                          type: string
                          nullable: true
                        ip_city:
                          type: string
                          nullable: true
                        is_vpn_or_tor:
                          type: boolean
                        is_data_center:
                          type: boolean
                    confidence:
                      type: number
                      minimum: 0
                      maximum: 1
                      description: >-
                        Skor keyakinan identifikasi di sisi server, dihitung
                        sebagai `1 - P(false positive)`: `1.0` untuk kecocokan
                        deterministik (`persistent_id`, atau `recovered_high`
                        berbasis perangkat keras), `0.5` untuk `legacy_fp`,
                        `0.0` untuk `ip_address` (hanya ko-lokasi), dan nilai
                        yang disesuaikan dengan koroborasi di bawah `1.0` untuk
                        kecocokan probabilistik yang dipulihkan (lebih tinggi
                        jika sidik jari TLS JA4 dan negara berdasarkan alamat IP
                        secara independen cocok).
                    match_mode:
                      type: string
                      enum:
                        - deterministic
                        - probabilistic
                        - co_occurrence
                      description: >-
                        Kelas bukti dari kecocokan: `deterministic` (pengenal
                        persis yang tersimpan atau berakar pada perangkat keras
                        yang tidak dapat bertabrakan antar perangkat fisik),
                        `probabilistic` (bukti sidik jari yang tidak persis),
                        atau `co_occurrence` (hanya jaringan bersama, tanpa
                        klaim identitas perangkat).
                    recovery_similarity:
                      type: number
                      description: >-
                        Kemiripan kosinus dari pencocokan pemulihan sidik jari,
                        dibulatkan hingga 4 desimal. Hanya ada jika
                        `match_source` bernilai `recovered_high`.
                    tls_ja4_corroborated:
                      type: boolean
                      description: >-
                        Apakah fingerprint JA4 TLS dari kedua observasi cocok —
                        sinyal yang diamati server yang tidak dapat dipalsukan
                        oleh browser. Hanya ada jika `match_source` bernilai
                        `recovered_high`.
                    recovery_gate_reason:
                      type: string
                      description: >-
                        Alasan mengapa pencocokan pemulihan lolos dari gerbang
                        ketat positif palsu: `hardware_root_match`
                        (pengidentifikasi perangkat yang berakar pada perangkat
                        keras cocok persis) atau, pada konfigurasi yang menerima
                        bukti probe saja, `exact_composite_plus_<n>_families` /
                        `very_high_similarity_plus_<n>_families`. Hanya ada jika
                        `match_source` adalah `recovered_high`.
              browser_version:
                type: string
                nullable: true
              os_version:
                type: string
                nullable: true
              user_agent:
                type: string
                nullable: true
                description: String user agent milik browser.
              accept_language:
                type: string
                nullable: true
                description: Header `Accept-Language` yang dikirimkan oleh browser.
              session_identifier:
                type: string
                nullable: true
                description: Pengenal sesi penjelajahan tempat verifikasi dijalankan.
              session_age_ms:
                type: integer
                nullable: true
                description: >-
                  Usia sesi penjelajahan tersebut dalam milidetik saat langkah
                  dijalankan.
              coords_accuracy:
                type: number
                nullable: true
                description: >-
                  Radius akurasi, dalam meter, dari koordinat yang dilaporkan
                  perangkat.
              raw_device_data:
                type: object
                nullable: true
                additionalProperties: true
                description: Sinyal perangkat mentah yang dikumpulkan untuk langkah ini.
        geolocation_checks:
          type: array
          nullable: true
          description: >-
            **Array hasil verifikasi Lokasi**, satu per langkah verifikasi
            Lokasi: upaya yang diterima dari langkah tersebut. Bernilai `null`
            sampai langkah verifikasi Lokasi menghasilkan data. Upaya-upaya
            sebelumnya dari langkah yang sama berada di `geolocation_attempts`.
          items:
            $ref: '#/components/schemas/GeolocationCheck'
        geolocation_attempts:
          type: array
          nullable: true
          description: >-
            Setiap upaya dari setiap langkah verifikasi Lokasi pada sesi ini,
            yang terlama terlebih dahulu. Upaya yang digantikan oleh pengiriman
            ulang akan dikecualikan. Alur kerja yang menyembunyikan
            `geolocation_checks` melalui atribut responsnya juga akan
            menyembunyikan daftar ini.
          items:
            $ref: '#/components/schemas/GeolocationAttempt'
        database_validations:
          type: array
          nullable: true
          description: >-
            **Array laporan Validasi Database** — selalu berupa array JSON,
            tidak pernah berupa objek `database_validation` tunggal. Bernilai
            `null` sampai setidaknya satu langkah validasi DB menghasilkan data.
            Setiap item merupakan laporan lengkap, termasuk `node_id`, `status`
            tingkat fitur, `screened_data`, `validations[]` per layanan
            (masing-masing dengan `source_data` registri), dan `warnings[]`.
            Kolom `screened_data` dan `source_data` bervariasi menurut negara:


            **ARG (Argentina)**: screened_data: {document_number, selfie,
            gender, first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, date_of_death,
            tax_id, tax_id_type, face_match_score, sit_1_since, banks,
            last_position, highest_position, rejected_checks}. Menggunakan
            validasi pencocokan wajah biometrik RENAPER. Jenis kelamin
            disimpulkan secara otomatis dari analisis wajah atau nama depan jika
            tidak tertera pada dokumen (misalnya, SIM)


            **BOL (Bolivia)**: screened_data: {document_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, gender}


            **BRA (Brasil)**: screened_data: {tax_number, first_name, last_name,
            date_of_birth}. source_data selalu menyertakan
            {identification_number, first_name, last_name, date_of_birth,
            lgpd_minor, minor_under_18, minor_under_16} untuk pencocokan CPF
            yang berhasil. Pencarian orang dewasa yang berhasil menetapkan
            penanda tersebut ke false. Layanan Consulta CPF Receita Federal
            dapat mengembalikan HTTP 422 (anak di bawah 18 tahun) atau 451 (di
            bawah 16 tahun) dengan data yang ditahan berdasarkan LGPD; dalam
            kasus tersebut, source_data menetapkan penanda minor ke true
            sebagaimana mestinya, menyertakan status HTTP dari layanan upstream,
            dan validasi tingkat kolom bernilai no_match. Lihat bagian Brasil
            pada referensi Kode Hasil Validasi Database untuk daftar kode
            selengkapnya.


            **CHL (Chili)**: screened_data: {personal_number, first_name,
            last_name, date_of_birth}. source_data: {identification_number,
            first_name, last_name, date_of_birth, gender}


            **COL (Kolombia)**: screened_data: {document_number, document_type,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, document_type}


            **CRI (Kosta Rika)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **DOM (Republik Dominika)**: screened_data: {personal_number}.
            source_data: {identification_number} (hanya mengembalikan
            valid/invalid)


            **ECU (Ekuador)**: screened_data: {personal_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, street, formatted_address, gender, nationality,
            education, marital_status, spouse, mother_name, father_name,
            profession}


            **ESP (Spanyol)**: screened_data: {personal_number, document_type,
            expiration_date, first_name, last_name}. source_data:
            {identification_number, first_name, last_name, full_name,
            document_type, expiration_date}


            **GTM (Guatemala)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **HND (Honduras)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **MEX (Meksiko)**: screened_data: {personal_number (CURP),
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name, date_of_birth, gender,
            nationality, curp_status, state_of_birth, doc_probatorio,
            registration_year, registration_state, registration_municipality,
            num_acta, crip, issuing_state_code, foreign_registry_number,
            folio_carta, folio_certificado}. Menggunakan registri sipil RENAPO.
            Layanan pemeriksaan validitas INE terpisah juga tersedia untuk MEX
            sebagai validasi satu per satu tambahan.


            **PAN (Panama)**: screened_data: {personal_number, selfie}.
            source_data: {identification_number}. Menggunakan validasi biometrik
            SIB


            **PER (Peru)**: screened_data: {personal_number (DNI), first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, paternal_name, maternal_name, verification_number,
            verification_letter}


            **PRY (Paraguay)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name}


            **SLV (El Salvador)**: screened_data: {document_number,
            date_of_birth, first_name, last_name}. source_data:
            {identification_number, first_name, last_name, full_name}


            **URY (Uruguay)**: screened_data: {personal_number, date_of_birth,
            first_name, last_name}. source_data: {identification_number,
            first_name, last_name, full_name}


            **VEN (Venezuela)**: screened_data: {document_number, first_name,
            last_name}. source_data: {identification_number, first_name,
            last_name, full_name, gender, date_of_birth, document_type}
          items:
            type: object
            properties:
              node_id:
                type: string
                description: >-
                  Pengenal unik untuk langkah validasi database ini di dalam
                  graf alur kerja.
              issuing_state:
                type: string
                description: >-
                  Kode ISO 3166-1 alpha-3 dari negara yang sumber
                  pemerintah/registrinya dikueri (misalnya `BRA`, `MEX`, `ESP`,
                  `NGA`, `IDN`). Validasi Database mencakup 60+ negara di
                  seluruh kawasan Amerika, Eropa, Afrika, Timur Tengah, dan
                  Asia-Pasifik, ditambah sumber multi-negara global — cakupan
                  terus bertambah secara berkala, jadi perlakukan nilai ini
                  sebagai set terbuka dan bukan enum tetap.
              validation_type:
                type: string
                enum:
                  - one_by_one
                  - two_by_two
                  - not_enabled
                description: >-
                  Bagaimana hasil dikuatkan: `one_by_one` (hasil layanan
                  tunggal), `two_by_two` (dua atau lebih layanan berbeda secara
                  independen mencocokkan nomor identifikasi sepenuhnya), atau
                  `not_enabled` (disimpan saat tidak ada layanan yang
                  menghasilkan kecocokan yang dapat digunakan). Nilai ini tidak
                  pernah `null`. Mode validasi 2x2 biometrik khusus saat ini
                  tersedia untuk `ECU` dan `PER`.
              screened_data:
                type: object
                description: >-
                  Data input yang digunakan untuk validasi. Kolom bervariasi
                  menurut negara — lihat dokumentasi Validasi Database
                  (`/core-technology/database-validation/overview`) untuk format
                  spesifik setiap negara.
                properties:
                  last_name:
                    type: string
                  first_name:
                    type: string
                  tax_number:
                    type: string
                    description: 'Brasil: CPF (11 digit)'
                  personal_number:
                    type: string
                    description: >-
                      Chili: RUT, DOM: Cédula (11 digit), ECU: Cédula (10
                      digit), ESP: DNI/NIE, MEX: CURP (18 karakter), PER: DNI (8
                      digit), URY: CI
                  document_number:
                    type: string
                    description: >-
                      ARG: DNI, BOL: CI, COL: Cédula, GTM: DPI, HND: DNI, PAN:
                      Cédula, PRY: CI, SLV: DUI, VEN: Cédula
                  date_of_birth:
                    type: string
                    format: date
                  document_type:
                    type: string
                    description: 'COL: CC/CE/TI/NIT, ESP: ID/PASSPORT'
                  expiration_date:
                    type: string
                    format: date
                    description: Wajib untuk ESP
              validations:
                type: array
                description: >-
                  Satu entri per layanan registri yang mengembalikan payload
                  validasi. Setiap entri mengidentifikasi layanan (`service_id`,
                  `service_name`) dan memuat perbandingan `validation` per
                  kolom, `outcome_code` / `outcome_detail` layanan jika
                  dilaporkan, serta catatan registri yang dinormalisasi dalam
                  `source_data`.
                items:
                  type: object
                  properties:
                    service_id:
                      type: string
                      description: >-
                        Pengenal layanan registri yang menghasilkan hasil
                        validasi ini.
                      example: bra_cpf
                    service_name:
                      type: string
                      description: Nama layanan registri yang mudah dibaca manusia.
                      example: Brazil - CPF status check
                    validation:
                      type: object
                      description: Hasil dari validasi kolom.
                      properties:
                        full_name:
                          type: string
                          description: >-
                            Hasil pencocokan untuk nama lengkap (misalnya,
                            'full_match', 'partial_match', 'no_match').
                        date_of_birth:
                          type: string
                          description: Hasil pencocokan untuk tanggal lahir.
                        identification_number:
                          type: string
                          description: Hasil pencocokan untuk nomor identifikasi.
                    outcome_code:
                      type: string
                      nullable: true
                      description: >-
                        Hasil pencarian registri yang dapat dibaca mesin
                        (misalnya `MATCH`, `NO_MATCH`, `PARTIAL_MATCH`,
                        `INCONCLUSIVE`, kode spesifik sumber). Ada jika layanan
                        melaporkannya.
                    outcome_detail:
                      type: string
                      nullable: true
                      description: >-
                        Penjelasan `outcome_code` yang mudah dibaca manusia,
                        jika disediakan oleh layanan.
                    source_data:
                      type: object
                      description: >-
                        Data yang dikembalikan dari database pemerintah. Kolom
                        umum: identification_number, first_name, last_name,
                        full_name, date_of_birth, gender. Kolom tambahan
                        berdasarkan negara: BRA selalu menyertakan lgpd_minor,
                        minor_under_18, dan minor_under_16 pada pencocokan CPF
                        yang berhasil; ini juga menyertakan status HTTP dari
                        upstream ketika data CPF ditahan berdasarkan LGPD (HTTP
                        422/451). ECU menambahkan street, formatted_address,
                        nationality, education, marital_status, spouse,
                        mother_name, father_name, profession. PER menambahkan
                        paternal_name, maternal_name, verification_number,
                        verification_letter. ESP menambahkan document_type,
                        expiration_date. VEN/COL menambahkan document_type.
                      additionalProperties: true
              errors:
                type: array
                description: >-
                  Kesalahan yang dikembalikan oleh layanan registri saat
                  memvalidasi, masing-masing ditandai dengan `service_id` yang
                  menghasilkannya. **Kunci ini tidak disertakan sama sekali jika
                  tidak ada kesalahan.**
                items:
                  type: object
                  description: >-
                    Objek error dari layanan upstream yang disertakan apa adanya
                    — kuncinya bervariasi menurut layanan (biasanya pesan/kode
                    dan detail spesifik penyedia apa pun) — ditambah
                    `service_id` yang mengidentifikasi layanan yang mengalami
                    error.
                  properties:
                    service_id:
                      type: string
                      nullable: true
                      description: Pengenal layanan registri yang mengalami eror.
                  additionalProperties: true
              match_type:
                type: string
                enum:
                  - no_match
                  - partial_match
                  - full_match
                nullable: true
                description: >-
                  Hasil kecocokan agregat di seluruh layanan yang dipanggil.
                  `null` hingga validasi telah dievaluasi.
              status:
                type: string
                description: >-
                  Status tingkat fitur dari validasi database ini. Tidak
                  bergantung pada `status` sesi tingkat atas — sesi dapat
                  mencapai keputusan keseluruhannya sementara fitur individual
                  tetap `In Review`.
                enum:
                  - Not Finished
                  - Approved
                  - Declined
                  - In Review
                  - Resub Requested
              warnings:
                type: array
                items:
                  type: object
                  properties:
                    feature:
                      type: string
                      enum:
                        - ID_VERIFICATION
                        - NFC
                        - LIVENESS
                        - FACEMATCH
                        - PROOF_OF_ADDRESS
                        - PHONE
                        - EMAIL
                        - AML
                        - LOCATION
                        - DATABASE_VALIDATION
                        - QUESTIONNAIRE
                        - DOCUMENT_AI
                        - KYB_REGISTRY
                        - KYB_DOCUMENTS
                        - KYB_KEY_PEOPLE
                        - GEOLOCATION
                        - SIGNATURE
                      description: >-
                        Fitur yang menghasilkan peringatan ini. Nilai ini
                        mengidentifikasi blok fitur tempat peringatan tersebut
                        berada. Array peringatan setiap modul biasanya
                        menggunakan nilai yang cocok dengan modulnya (misalnya
                        `PHONE` di dalam `phone_verifications[].warnings`),
                        tetapi enum di atas bersifat otoritatif di semua
                        peringatan fitur pada payload keputusan.
                    risk:
                      type: string
                    additional_data:
                      type: object
                      nullable: true
                    log_type:
                      type: string
                    short_description:
                      type: string
                    long_description:
                      type: string
                    node_id:
                      type: string
                      description: ID node graf alur kerja yang menghasilkan peringatan ini
                description: Peringatan yang terkait dengan validasi database.
        database_validation_not_performed_reason:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Alasan validasi database yang dikonfigurasi tidak menghasilkan
            output apa pun, sebagai `{code, message}` beserta kolom konteks.
            Hanya ada jika `database_validations` bernilai `null` untuk alur
            kerja yang memiliki langkah tersebut, sehingga Anda dapat membedakan
            antara "registri menyetujui" dan "tidak ada yang berjalan". `null`
            untuk kondisi lainnya.
          properties:
            code:
              type: string
              description: Alasan stabil yang dapat dibaca mesin.
            message:
              type: string
              description: Penjelasan yang mudah dibaca manusia.
        reviews:
          type: array
          items:
            type: object
            properties:
              user:
                type: string
                description: >-
                  Pihak yang melakukan peninjauan. Biasanya pengenal peninjau
                  konsol (email mereka), tetapi nilainya adalah `"API Client"`
                  untuk pembaruan status yang dibuat dengan kunci API dan
                  `"Unknown"` jika tidak ada aktor yang dapat diidentifikasi —
                  jadi jangan mengurai kolom ini sebagai alamat email.
              new_status:
                type: string
              comment:
                type: string
              created_at:
                type: string
                format: date-time
        assignee:
          type: object
          nullable: true
          description: >-
            Peninjau Console yang ditugaskan ke sesi, atau `null` jika tidak ada
            yang memegangnya.
          properties:
            email:
              type: string
              format: email
            assigned_at:
              type: string
              format: date-time
              nullable: true
        waiting_since:
          type: string
          format: date-time
          nullable: true
          description: >-
            Waktu sesi mulai menunggu peninjauan. `null` kecuali sesi berstatus
            `In Review` dan aplikasi Anda menetapkan tenggat peninjauan.
        sla_due_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Waktu jatuh tempo peninjauan. `null` kecuali sesi berstatus `In
            Review` dan aplikasi Anda menetapkan tenggat peninjauan.
        created_at:
          type: string
          format: date-time
          description: Cap waktu saat sesi dibuat (ISO 8601, UTC).
        expires_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Cap waktu saat sesi ini dijadwalkan kedaluwarsa. Diatur pada sesi
            Verifikasi Pengguna (KYC) saat kedaluwarsa dikonfigurasikan pada
            waktu pembuatan (atau setelah status `Approved` memicu penghitungan
            kedaluwarsa KYC). Bernilai `null` untuk sesi tanpa konfigurasi
            kedaluwarsa, dan untuk jenis yang tidak menggunakan kedaluwarsa
            (misalnya sesi Verifikasi Bisnis (KYB) yang tidak pernah menerima
            `expires_at`).
        registry_checks:
          type: array
          nullable: true
          description: >-
            Pemeriksaan registri perusahaan. Hanya ada jika `session_kind =
            business`. Setiap item membungkus seluruh payload registri
            perusahaan.
          items:
            type: object
            description: >-
              Satu pemeriksaan registri perusahaan — payload registri perusahaan
              lengkap yang diperkaya dengan struktur kepemilikan dan peringatan.
              Hanya ada jika `session_kind = business`.
            properties:
              status:
                type: string
                description: Status siklus hidup fitur.
              node_id:
                type: string
                nullable: true
              data_resolved:
                type: boolean
              company:
                type: object
                description: >-
                  Payload registri lengkap untuk perusahaan (catatan registri
                  yang digabungkan dengan data apa pun yang disediakan pengguna
                  atau diedit di konsol).
                properties:
                  uuid:
                    type: string
                    format: uuid
                  node_id:
                    type: string
                    nullable: true
                  status:
                    type: string
                  registry_status:
                    type: string
                    nullable: true
                  data_resolved:
                    type: boolean
                  company_name:
                    type: string
                  registration_number:
                    type: string
                    nullable: true
                  country_code:
                    type: string
                    description: >-
                      Negara pendirian (ISO 3166-1 alpha-2, misalnya `GB`, `DE`,
                      `US`).
                  region:
                    type: string
                    nullable: true
                    description: >-
                      Kode subdivisi ISO 3166-2 jika berlaku (misalnya `CA`,
                      `NY` untuk negara bagian AS).
                  company_type:
                    type: string
                    nullable: true
                  incorporation_date:
                    type: string
                    format: date
                    nullable: true
                  registered_address:
                    type: string
                    nullable: true
                  tax_number:
                    type: string
                    nullable: true
                  risk_level:
                    type: string
                    enum:
                      - LOW
                      - MEDIUM
                      - HIGH
                    nullable: true
                  verification_status:
                    type: string
                    nullable: true
                  is_from_registry:
                    type: boolean
                  fetch_status:
                    type: string
                    nullable: true
                  alternative_names:
                    type: string
                    nullable: true
                    description: >-
                      Nama perusahaan alternatif, nama dagang, nama terdahulu,
                      atau nama dalam bahasa asli sebagai teks, jika dilaporkan.
                  nature_of_business:
                    type: string
                    nullable: true
                  registered_capital:
                    type: string
                    nullable: true
                  registered_capital_amount:
                    type: string
                    format: decimal
                    nullable: true
                    description: >-
                      Jumlah modal terdaftar/saham sebagai string desimal
                      (misalnya `"100.00"`), yang diurai dari pengajuan
                      registri. `null` jika tidak tersedia.
                  registered_capital_currency:
                    type: string
                    nullable: true
                    description: >-
                      Kode mata uang ISO 4217 dari `registered_capital_amount`
                      (misalnya `"GBP"`). `null` jika tidak tersedia.
                  website:
                    type: string
                    nullable: true
                  email:
                    type: string
                    format: email
                    nullable: true
                  phone:
                    type: string
                    nullable: true
                  legal_entity_identifier:
                    type: string
                    nullable: true
                  location_of_registration:
                    type: string
                    nullable: true
                  vat_number:
                    type: string
                    nullable: true
                    description: >-
                      Nomor PPN Uni Eropa, saat dikumpulkan selama langkah
                      registri yang di-hosting atau diedit sesudahnya.
                  vat_validation_status:
                    type: string
                    enum:
                      - valid
                      - invalid
                      - format_valid
                      - invalid_format
                      - could_not_validate
                      - not_applicable
                    description: >-
                      Hasil validasi nomor PPN atau, jika tidak ada,
                      `tax_number`, saat pengiriman ke registri. `valid` /
                      `invalid`: ditentukan oleh registri resmi negara (EU VIES,
                      Norwegia, Swiss, Brasil, Kolombia, Kosta Rika, Ekuador,
                      Paraguay; Polandia juga melalui registri PPN domestiknya).
                      `format_valid` / `invalid_format`: ditentukan oleh aturan
                      format dan digit centang negara tersebut jika tidak ada
                      registri yang dapat dikueri. `could_not_validate`:
                      registri tidak tersedia. `not_applicable`: tidak ada
                      nomor, negara tanpa registri atau aturan, atau sesi
                      sandbox.
                  vat_validated_number:
                    type: string
                    nullable: true
                    description: >-
                      Nomor yang diperiksa, sebagaimana diketahui oleh sumber
                      (misalnya nomor PPN yang diperoleh dari SIREN Prancis atau
                      RSIN Belanda). `null` jika tidak ada pemeriksaan yang
                      dijalankan.
                  vat_validation_source:
                    type: string
                    nullable: true
                    enum:
                      - eu_vies
                      - pl_vat_white_list
                      - no_brreg
                      - ch_uid_register
                      - br_receita_federal
                      - co_rues
                      - cr_hacienda
                      - ec_sri
                      - py_dnit
                      - format_rules
                      - null
                    description: >-
                      Sumber yang menentukan `vat_validation_status`: registri
                      resmi, atau `format_rules`. `null` jika tidak ada
                      pemeriksaan yang dijalankan.
                  vat_validated_name:
                    type: string
                    nullable: true
                    description: >-
                      Nama yang terdaftar pada sumber yang memvalidasi nomor
                      tersebut, jika menyediakannya. Hanya ditetapkan saat
                      statusnya `valid`.
                  vat_validated_address:
                    type: string
                    nullable: true
                    description: >-
                      Alamat yang terdaftar pada sumber yang memvalidasi nomor
                      tersebut, jika sumber mengungkapkannya. Hanya diisi jika
                      statusnya `valid`.
                  vat_checked_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Cap waktu pemeriksaan. `null` jika tidak ada pemeriksaan
                      yang dilakukan.
                  financial_summary:
                    type: object
                    nullable: true
                  officers:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        designation:
                          type: string
                          nullable: true
                        role:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            Nama depan ketika dilaporkan secara eksplisit oleh
                            registri; tidak disimpulkan dari nama lengkap.
                        last_name:
                          type: string
                          nullable: true
                          description: >-
                            Nama keluarga ketika dilaporkan secara eksplisit
                            oleh registri.
                        address:
                          type: string
                          nullable: true
                          description: Alamat pejabat yang dilaporkan oleh registri.
                        appointment_date:
                          type: string
                          nullable: true
                          description: Tanggal petugas diangkat.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: Tanggal pengangkatan berakhir, jika dilaporkan.
                          format: date
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Tanggal lahir lengkap yang dilaporkan registri.
                            Bernilai null jika hanya tahun atau bulan lahir yang
                            diketahui.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Tahun lahir yang dilaporkan registri, termasuk saat
                            tanggal lengkap tidak tersedia.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Bulan lahir yang dilaporkan registri. Null jika
                            hanya tahun yang diketahui.
                  beneficial_owners:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        roles:
                          type: array
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            Batas bawah persentase kepemilikan sebagaimana
                            dilaporkan oleh registri. String format bebas
                            (misalnya `"25.00"`, `"50"`); gunakan
                            `effective_ownership_percent` untuk nilai numerik
                            yang telah di-parse.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Batas atas persentase kepemilikan sebagaimana
                            dilaporkan oleh registri. String bentuk bebas;
                            gunakan `effective_ownership_percent` untuk nilai
                            numerik yang diurai.
                        is_active:
                          type: boolean
                        kyc_status:
                          type: string
                          enum:
                            - Approved
                            - Declined
                            - Pending
                          nullable: true
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        effective_ownership_percent:
                          type: number
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: Tanggal lahir lengkap jika dilaporkan.
                          format: date
                        appointment_date:
                          type: string
                          nullable: true
                          description: Tanggal penunjukan saat dilaporkan.
                          format: date
                        shareholding:
                          $ref: '#/components/schemas/KYBRegistryShareholding'
                  addresses:
                    type: array
                    nullable: true
                    description: >-
                      Setiap alamat yang dinyatakan oleh registri, satu bentuk
                      kanonikal. Null jika tidak ada yang dinyatakan.
                    items:
                      $ref: '#/components/schemas/KYBRegistryAddress'
                  industries:
                    type: array
                    nullable: true
                    description: >-
                      Aktivitas yang diklasifikasikan oleh registri untuk
                      perusahaan, dalam satu format kanonis. Bernilai null jika
                      tidak ada yang dinyatakan.
                    items:
                      $ref: '#/components/schemas/KYBRegistryIndustry'
                  accounts:
                    type: object
                    nullable: true
                    additionalProperties: true
                    description: >-
                      Tanggal pengajuan registri, jika tersedia. Laporan tahunan
                      dan rapat umum menggunakan last_annual_return_date dan
                      last_agm_date; keduanya berbeda dari laporan keuangan.
                  registry_data:
                    $ref: '#/components/schemas/KYBRegistryData'
                  user_provided_data:
                    type: object
                    description: Data yang dikonfirmasi atau diedit oleh pengguna akhir.
                  confirmed_by_user_at:
                    type: string
                    format: date-time
                    nullable: true
                  last_console_edit_at:
                    type: string
                    format: date-time
                    nullable: true
                  is_editable:
                    type: boolean
                  ownership:
                    $ref: '#/components/schemas/KYBRegistryOwnership'
                  registry_tier:
                    type: string
                    nullable: true
                    description: >-
                      Tingkat registri yang dipesan oleh alur kerja: `basic`,
                      `shareholders`, atau `ubo`. Juga terdapat di
                      `ownership.tier_requested`.
                  registry_tier_delivered:
                    type: string
                    nullable: true
                    description: >-
                      Tingkat yang dikirimkan oleh registri dan yang ditagihkan.
                      Juga ada di `ownership.tier_delivered`.
                  registry_ownership_status:
                    type: string
                    nullable: true
                    description: >-
                      `not_requested`, `pending`, `delivered`, `not_held`, atau
                      `unavailable`. Juga ada di `ownership.status`.
                  registry_monitoring:
                    type: object
                    nullable: true
                    description: >-
                      Pemantau registri terbaru untuk perusahaan, atau `null`
                      jika tidak ada.
                    properties:
                      uuid:
                        type: string
                        format: uuid
                      status:
                        type: string
                      unavailable_reason:
                        type: string
                        nullable: true
                      enrolled_at:
                        type: string
                        format: date-time
                        nullable: true
                      cancelled_at:
                        type: string
                        format: date-time
                        nullable: true
                      last_bill_date:
                        type: string
                        format: date
                        nullable: true
                      next_bill_date:
                        type: string
                        format: date
                        nullable: true
                      last_event_at:
                        type: string
                        format: date-time
                        nullable: true
                      events_count:
                        type: integer
                      watched_fields:
                        description: Kolom perusahaan yang dipantau oleh pemantau.
              ownership_structure:
                $ref: '#/components/schemas/KYBOwnershipStructure'
              warnings:
                type: array
                items:
                  type: object
        key_people_checks:
          type: array
          nullable: true
          description: >-
            Pemeriksaan pihak kunci agregat. Hanya ada jika `session_kind =
            business`. Setiap item menggunakan format dua wadah (`registry`,
            `submitted`, `ubo_kyc_summary`).
          items:
            type: object
            description: >-
              Pemeriksaan agregat terhadap pejabat perusahaan + UBO. Menggunakan
              format `registry` / `submitted`. Hanya ada jika session_kind =
              business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              registry:
                type: object
                description: Pihak yang ditemukan melalui pemeriksaan registri.
                properties:
                  officers:
                    type: array
                    description: >-
                      Pejabat yang ditemukan melalui pemeriksaan registri,
                      masing-masing diperkaya dengan status dari setiap sesi KYC
                      turunan dan skrining AML yang dibuat untuk mereka.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Nama lengkap pejabat sebagaimana tercatat dalam
                            registri.
                        designation:
                          type: string
                          nullable: true
                          description: >-
                            Jabatan berupa teks bebas dari registri (misalnya
                            `Director`, `Company Secretary`).
                        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: Peran pejabat yang dinormalisasi.
                        nationality:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Tanggal petugas diangkat.
                          format: date
                        termination_date:
                          type: string
                          nullable: true
                          description: Tanggal pengangkatan berakhir, jika dilaporkan.
                          format: date
                        is_active:
                          type: boolean
                        address:
                          type: string
                          nullable: true
                          description: Alamat pejabat yang dilaporkan oleh registri.
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Status Skrining AML yang dijalankan untuk pejabat
                            ini. `null` jika tidak ada Skrining AML yang
                            dijalankan.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Status siklus hidup mentah dari sesi KYC turunan
                            yang dibuat untuk pejabat ini. Ini adalah enum
                            status sesi lengkap (bukan set ringkas
                            Disetujui/Ditolak/Tertunda). Bernilai `null` jika
                            tidak ada sesi KYC turunan.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL yang dapat dibagikan untuk sesi KYC turunan.
                            `null` jika tidak ada sesi turunan.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID sesi dari sesi KYC turunan. Teruskan ke endpoint
                            keputusan yang sama ini untuk mengambil laporan KYC
                            lengkap orang tersebut. Bernilai `null` jika tidak
                            ada sesi turunan.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipe alur kerja dasar dari alur kerja sesi anak
                            (misalnya `kyc`). `null` untuk alur kerja berbasis
                            graf atau saat tidak ada sesi anak.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID alur kerja yang digunakan oleh sesi anak.
                            Bernilai `null` jika tidak ada sesi anak.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Label alur kerja sesi turunan yang mudah dibaca
                            manusia. `null` jika tidak diatur.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Kemajuan per fitur dari sesi verifikasi anak,
                            misalnya `[{"feature": "ID_VERIFICATION", "status":
                            "Approved"}]`. `null` ketika sesi anak tidak
                            memiliki daftar fitur yang dapat ditentukan.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nama tampilan fitur (misalnya
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: Status tingkat fitur di dalam sesi turunan.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Pengidentifikasi internal stabil dari individu
                            terverifikasi di balik sesi anak — berguna untuk
                            penautan lintas sesi. `null` jika tidak ada sesi
                            anak atau pengguna belum diidentifikasi.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Jenis dokumen yang ditunjukkan dalam sesi KYC
                            turunan (misalnya `P`, `ID`, `DL`). `null` hingga
                            sesi turunan memiliki hasil verifikasi identitas.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Kewarganegaraan diekstraksi dari dokumen dalam sesi
                            KYC anak. `null` hingga tersedia.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Apakah pemeriksaan liveness sesi KYC anak berhasil.
                            `null` jika tidak ada pemeriksaan liveness yang
                            dijalankan.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Waktu ketika sesi KYC turunan mencapai `Approved`.
                            `null` selama sesi turunan memiliki status lain.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Ringkasan per kategori yang diperoleh dari hit AML
                            orang tersebut. `null` jika tidak ada hit.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            Stempel waktu ISO 8601 dari notifikasi undangan
                            verifikasi terakhir yang dikirim untuk sesi turunan
                            orang ini. `null` jika tidak ada yang dikirim.
                        first_name:
                          type: string
                          nullable: true
                          description: >-
                            Nama depan ketika dilaporkan secara eksplisit oleh
                            registri; tidak disimpulkan dari nama lengkap.
                        last_name:
                          type: string
                          nullable: true
                          description: >-
                            Nama keluarga ketika dilaporkan secara eksplisit
                            oleh registri.
                        date_of_birth:
                          type: string
                          nullable: true
                          description: >-
                            Tanggal lahir lengkap yang dilaporkan registri.
                            Bernilai null jika hanya tahun atau bulan lahir yang
                            diketahui.
                          format: date
                        date_of_birth_year:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 9999
                          description: >-
                            Tahun lahir yang dilaporkan registri, termasuk saat
                            tanggal lengkap tidak tersedia.
                        date_of_birth_month:
                          type: integer
                          nullable: true
                          minimum: 1
                          maximum: 12
                          description: >-
                            Bulan lahir yang dilaporkan registri. Null jika
                            hanya tahun yang diketahui.
                  beneficial_owners:
                    type: array
                    description: >-
                      Pemilik manfaat yang ditemukan melalui pemeriksaan
                      registri, masing-masing diperkaya dengan status sesi KYC
                      turunan dan Skrining AML yang dibuat untuk mereka.
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        name:
                          type: string
                          description: >-
                            Nama lengkap pemilik manfaat (atau nama perusahaan
                            untuk UBO korporasi).
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          nullable: true
                          description: Tanggal lahir lengkap jika dilaporkan.
                          format: date
                        country_of_birth:
                          type: string
                          nullable: true
                        email:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        nationality:
                          type: string
                          nullable: true
                        designation:
                          type: string
                          nullable: true
                        roles:
                          type: array
                          description: >-
                            Nama peran yang dipegang oleh pemilik ini, mis.
                            `["ubo", "shareholder"]`.
                          items:
                            type: string
                        ownership_min_shares:
                          type: string
                          nullable: true
                          description: >-
                            Batas bawah persentase kepemilikan sebagaimana
                            dilaporkan oleh registri. String format bebas
                            (misalnya `"25"`, `"25-50%"`); gunakan
                            `effective_ownership_percent` untuk nilai numerik
                            yang telah di-parse.
                        ownership_max_shares:
                          type: string
                          nullable: true
                          description: >-
                            Batas atas persentase kepemilikan sebagaimana
                            dilaporkan oleh registri. String bentuk bebas;
                            gunakan `effective_ownership_percent` untuk nilai
                            numerik yang diurai.
                        is_active:
                          type: boolean
                        aml_status:
                          type: string
                          enum:
                            - Not Finished
                            - Approved
                            - Declined
                            - In Review
                            - Resub Requested
                          nullable: true
                          description: >-
                            Status Skrining AML yang dijalankan untuk pemilik
                            manfaat ini. `null` jika tidak ada Skrining AML yang
                            dijalankan.
                        kyc_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Status siklus hidup mentah dari sesi KYC turunan
                            yang dibuat untuk pemilik manfaat ini. Ini adalah
                            enum status sesi lengkap (bukan set ringkas
                            Disetujui/Ditolak/Tertunda). Bernilai `null` jika
                            tidak ada sesi KYC turunan.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL yang dapat dibagikan untuk sesi KYC turunan.
                            `null` jika tidak ada sesi turunan.
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID sesi dari sesi KYC turunan. Teruskan ke endpoint
                            keputusan yang sama ini untuk mengambil laporan KYC
                            lengkap orang tersebut. Bernilai `null` jika tidak
                            ada sesi turunan.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipe alur kerja dasar dari alur kerja sesi anak
                            (misalnya `kyc`). `null` untuk alur kerja berbasis
                            graf atau saat tidak ada sesi anak.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID alur kerja yang digunakan oleh sesi anak.
                            Bernilai `null` jika tidak ada sesi anak.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Label alur kerja sesi turunan yang mudah dibaca
                            manusia. `null` jika tidak diatur.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Kemajuan per fitur dari sesi verifikasi anak,
                            misalnya `[{"feature": "ID_VERIFICATION", "status":
                            "Approved"}]`. `null` ketika sesi anak tidak
                            memiliki daftar fitur yang dapat ditentukan.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nama tampilan fitur (misalnya
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: Status tingkat fitur di dalam sesi turunan.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Pengidentifikasi internal stabil dari individu
                            terverifikasi di balik sesi anak — berguna untuk
                            penautan lintas sesi. `null` jika tidak ada sesi
                            anak atau pengguna belum diidentifikasi.
                        kyc_document_type:
                          type: string
                          nullable: true
                          description: >-
                            Jenis dokumen yang ditunjukkan dalam sesi KYC
                            turunan (misalnya `P`, `ID`, `DL`). `null` hingga
                            sesi turunan memiliki hasil verifikasi identitas.
                        kyc_nationality:
                          type: string
                          nullable: true
                          description: >-
                            Kewarganegaraan diekstraksi dari dokumen dalam sesi
                            KYC anak. `null` hingga tersedia.
                        kyc_liveness_passed:
                          type: boolean
                          nullable: true
                          description: >-
                            Apakah pemeriksaan liveness sesi KYC anak berhasil.
                            `null` jika tidak ada pemeriksaan liveness yang
                            dijalankan.
                        kyc_verified_at:
                          type: string
                          format: date-time
                          nullable: true
                          description: >-
                            Waktu ketika sesi KYC turunan mencapai `Approved`.
                            `null` selama sesi turunan memiliki status lain.
                        kyc_aml_categories:
                          type: object
                          nullable: true
                          description: >-
                            Ringkasan per kategori yang diperoleh dari hit AML
                            orang tersebut. `null` jika tidak ada hit.
                          properties:
                            sanctions:
                              type: string
                              enum:
                                - match
                                - clear
                            pep:
                              type: string
                              enum:
                                - match
                                - clear
                            adverse_media:
                              type: string
                              enum:
                                - match
                                - clear
                            warnings:
                              type: string
                              enum:
                                - match
                                - clear
                        kyc_notification_sent_at:
                          type: string
                          nullable: true
                          description: >-
                            Stempel waktu ISO 8601 dari notifikasi undangan
                            verifikasi terakhir yang dikirim untuk sesi turunan
                            orang ini. `null` jika tidak ada yang dikirim.
                        child_beneficial_owners:
                          type: array
                          description: >-
                            Untuk UBO korporat: pemilik manfaat dari entitas
                            pemilik itu sendiri, sebagai objek mentah yang
                            diekstraksi dari registri. Array kosong jika tidak
                            berlaku.
                          items:
                            type: object
                        effective_ownership_percent:
                          type: number
                          nullable: true
                          description: >-
                            Persentase kepemilikan numerik terurai — batas
                            maksimum jika tersedia, jika tidak batas minimum.
                            `null` jika kedua batas tidak dapat diurai.
                        voting_min_shares:
                          type: string
                          nullable: true
                        voting_max_shares:
                          type: string
                          nullable: true
                        appointment_date:
                          type: string
                          nullable: true
                          description: Tanggal penunjukan saat dilaporkan.
                          format: date
              submitted:
                type: object
                description: >-
                  Pihak yang dikirimkan oleh admin bisnis selama alur Pihak
                  Kunci (baris BusinessParty dengan source=USER).
                properties:
                  parties:
                    type: array
                    items:
                      type: object
                      description: >-
                        Pihak yang dikirimkan oleh admin bisnis melalui alur
                        Pihak Kunci (source=USER).
                      properties:
                        uuid:
                          type: string
                          format: uuid
                        entity_type:
                          type: string
                          enum:
                            - person
                            - company
                        source:
                          type: string
                          enum:
                            - USER
                          description: >-
                            Selalu `USER` di sini — wadah ini hanya berisi pihak
                            yang dimasukkan atau dikonfirmasi oleh pengguna
                            akhir dalam alur Pihak Kunci (orang yang ditemukan
                            melalui registri muncul di bawah `registry`).
                        name:
                          type: string
                        first_name:
                          type: string
                          nullable: true
                        last_name:
                          type: string
                          nullable: true
                        company_name:
                          type: string
                          nullable: true
                        registration_number:
                          type: string
                          nullable: true
                        email:
                          type: string
                          format: email
                          nullable: true
                        nationality:
                          type: string
                          nullable: true
                          description: >-
                            Kewarganegaraan untuk perorangan; negara pendirian
                            untuk pihak perusahaan.
                        phone_number:
                          type: string
                          nullable: true
                        date_of_birth:
                          type: string
                          format: date
                          nullable: true
                        position:
                          type: string
                          nullable: true
                          description: Jabatan/posisi berupa teks bebas (khusus individu).
                        custom_fields:
                          type: object
                          description: >-
                            Kolom kustom yang ditentukan alur kerja yang
                            dikumpulkan untuk pihak ini; kunci ditentukan oleh
                            deskriptor kolom pihak kunci alur kerja.
                        is_active:
                          type: boolean
                        is_skipped:
                          type: boolean
                          description: >-
                            True saat pengguna akhir melewati verifikasi untuk
                            pihak ini (hanya dimungkinkan jika peran mengizinkan
                            untuk dilewati).
                        requires_verification:
                          type: boolean
                          description: >-
                            True saat sub-sesi KYC / KYB turunan diperlukan
                            untuk pihak ini berdasarkan pengaturan peran dan
                            ambang batas kepemilikan.
                        roles:
                          type: array
                          description: >-
                            Semua peran yang dipegang oleh pihak ini,
                            masing-masing dengan persentase kepemilikan dan hak
                            suaranya sendiri. Tidak ada
                            `role`/`ownership_percent` skalar pada pihak itu
                            sendiri.
                          items:
                            type: object
                            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
                              ownership_percent:
                                type: number
                                nullable: true
                              voting_percent:
                                type: number
                                nullable: true
                        kyc_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID sesi KYC turunan untuk pihak perorangan yang
                            memerlukan verifikasi. Bernilai `null` jika tidak.
                        kyc_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Status siklus hidup sesi KYC turunan. `null` jika
                            tidak ada sesi KYC turunan.
                        kyc_session_url:
                          type: string
                          format: uri
                          nullable: true
                        kyb_sub_session_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID sub-sesi KYB turunan untuk pihak korporasi yang
                            memerlukan verifikasi. Bernilai `null` jika tidak.
                        kyb_sub_session_status:
                          type: string
                          enum:
                            - Not Started
                            - In Progress
                            - Approved
                            - Declined
                            - In Review
                            - Expired
                            - Abandoned
                            - Kyc Expired
                            - Resubmitted
                            - Awaiting User
                          nullable: true
                          description: >-
                            Status siklus hidup sub-sesi KYB turunan. `null`
                            jika tidak ada sub-sesi.
                        kyb_sub_session_url:
                          type: string
                          format: uri
                          nullable: true
                          description: >-
                            URL yang dapat dibagikan untuk sub-sesi KYB turunan.
                            `null` jika tidak ada sub-sesi.
                        verification_workflow_type:
                          type: string
                          nullable: true
                          description: >-
                            Tipe alur kerja dasar dari alur kerja sesi anak
                            (sesi KYC lebih diutamakan, beralih ke sub-sesi
                            KYB). `null` untuk alur kerja berbasis graf atau
                            saat tidak ada sesi anak.
                        verification_workflow_id:
                          type: string
                          format: uuid
                          nullable: true
                          description: >-
                            ID alur kerja yang digunakan oleh sesi anak.
                            Bernilai `null` jika tidak ada sesi anak.
                        verification_workflow_label:
                          type: string
                          nullable: true
                          description: >-
                            Label alur kerja sesi turunan yang mudah dibaca
                            manusia. `null` jika tidak diatur.
                        verification_workflow_features:
                          type: array
                          nullable: true
                          description: >-
                            Kemajuan per fitur dari sesi verifikasi anak,
                            misalnya `[{"feature": "ID_VERIFICATION", "status":
                            "Approved"}]`. `null` ketika sesi anak tidak
                            memiliki daftar fitur yang dapat ditentukan.
                          items:
                            type: object
                            properties:
                              feature:
                                type: string
                                description: >-
                                  Nama tampilan fitur (misalnya
                                  `ID_VERIFICATION`, `LIVENESS`, `AML`).
                              status:
                                type: string
                                enum:
                                  - Not Finished
                                  - Approved
                                  - Declined
                                  - In Review
                                  - Resub Requested
                                description: Status tingkat fitur di dalam sesi turunan.
                        didit_internal_id:
                          type: string
                          nullable: true
                          description: >-
                            Pengidentifikasi internal stabil dari individu
                            terverifikasi di balik sesi anak. `null` jika belum
                            diidentifikasi.
              ubo_kyc_summary:
                type: object
                nullable: true
                description: >-
                  Progres KYC UBO agregat, atau null jika tidak ada UBO yang
                  memiliki sesi KYC tertaut.
                properties:
                  total:
                    type: integer
                  approved:
                    type: integer
                  flagged:
                    type: integer
                    description: UBO yang status KYC-nya Ditolak atau Dalam Peninjauan.
                  pending:
                    type: integer
              warnings:
                type: array
                items:
                  type: object
        document_verifications:
          type: array
          nullable: true
          description: >-
            Pemeriksaan verifikasi dokumen dikelompokkan berdasarkan node alur
            kerja. Hanya ada jika `session_kind = business`.
          items:
            type: object
            description: >-
              Dokumen dikelompokkan berdasarkan node alur kerja. Hanya ada jika
              session_kind = business.
            properties:
              status:
                type: string
              node_id:
                type: string
                nullable: true
              items:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      format: uuid
                    document_type:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        Grup dokumen KYB tingkat tinggi tempat file
                        diklasifikasikan. `null` jika belum diklasifikasikan.
                    document_subtype:
                      type: string
                      nullable: true
                      description: >-
                        Subtipe spesifik yang terdeteksi OCR (misalnya
                        `CERTIFICATE_OF_INCORPORATION`, `SHAREHOLDER_REGISTRY`);
                        `UNKNOWN` jika OCR tidak dapat mengklasifikasikan
                        dokumen dengan meyakinkan.
                    document_group:
                      type: string
                      enum:
                        - LEGAL_PRESENCE
                        - COMPANY_DETAILS
                        - OWNERSHIP_STRUCTURE
                        - REPRESENTATIVES_AUTHORIZATION
                        - OTHER
                      nullable: true
                      description: >-
                        Alias dari `document_type` — nama grup yang digunakan
                        oleh `groups` dan `required_groups`.
                    file_url:
                      type: string
                      format: uri
                      nullable: true
                      description: >-
                        Tautan presigned berdurasi singkat ke file yang
                        diunggah. `null` untuk placeholder permintaan dokumen
                        yang dibuat analis (`is_requested = true`) yang belum
                        dipenuhi.
                    original_filename:
                      type: string
                      nullable: true
                      description: >-
                        Nama file seperti yang diunggah oleh pengguna atau
                        analis.
                    file_size:
                      type: integer
                      nullable: true
                      description: Ukuran file dalam byte.
                    status:
                      type: string
                      enum:
                        - Not Finished
                        - Approved
                        - Declined
                        - In Review
                        - Resub Requested
                      description: Status verifikasi per dokumen.
                    created_at:
                      type: string
                      format: date-time
                    cross_check_result:
                      type: object
                      nullable: true
                      description: >-
                        Referensi silang dari kolom dokumen yang diekstraksi OCR
                        terhadap profil perusahaan di registri. Sebuah objek
                        dengan bagian `critical`, `non_critical`, dan `people`,
                        masing-masing memetakan nama kolom (misalnya
                        `company_name`, `registration_number`,
                        `incorporation_date`, `registered_address`) ke catatan
                        perbandingan seperti `{"document": "...", "registry":
                        "...", "match": true, "score": 0.97}`. Bernilai `null`
                        jika dokumen tidak memiliki data OCR atau tidak ada
                        perusahaan registri untuk dibandingkan.
                    document_metadata:
                      type: object
                      nullable: true
                      description: >-
                        Metadata yang diekstraksi dari dokumen perusahaan yang
                        diunggah. Jika ekstraksi metadata berhasil, ke-16 kunci
                        selalu ada (nilai individual bernilai `null` jika tidak
                        berlaku untuk jenis file); seluruh objek bernilai `null`
                        jika tidak ada yang dapat diekstraksi. Untuk PDF,
                        `overlay_manipulation` memuat analisis teks overlay
                        forensik.
                      properties:
                        file_size:
                          type: integer
                          nullable: true
                          description: Ukuran dokumen.
                        content_type:
                          type: string
                          nullable: true
                          description: Tipe konten dokumen.
                        creation_date:
                          type: string
                          nullable: true
                          description: Tanggal saat dokumen dibuat.
                        modified_date:
                          type: string
                          nullable: true
                          description: Tanggal saat dokumen dimodifikasi.
                        creator:
                          type: string
                          nullable: true
                          description: >-
                            Alat/pengguna pembuat yang tercatat dalam metadata
                            file (`Creator` PDF).
                        producer:
                          type: string
                          nullable: true
                          description: >-
                            Perangkat lunak yang menghasilkan file (`Producer`
                            PDF).
                        software:
                          type: string
                          nullable: true
                          description: >-
                            Perangkat lunak pengeditan yang tercatat dalam
                            metadata file.
                        encryption:
                          type: string
                          nullable: true
                          description: Skema enkripsi berkas, jika terenkripsi.
                        is_signed:
                          type: boolean
                          nullable: true
                          description: Apakah dokumen memiliki tanda tangan digital.
                        is_tampered:
                          type: boolean
                          nullable: true
                          description: >-
                            Apakah tanda tangan digital gagal dalam validasi
                            (modifikasi setelah penandatanganan).
                        signature_info:
                          type: object
                          nullable: true
                          description: Rincian tanda tangan digital, jika ada.
                        exif_original_date:
                          type: string
                          nullable: true
                          description: >-
                            Tanggal pengambilan asli EXIF, untuk unggahan
                            gambar.
                        exif_digitized_date:
                          type: string
                          nullable: true
                          description: Tanggal digitalisasi EXIF, untuk unggahan gambar.
                        processed_by_known_editor:
                          type: boolean
                          nullable: true
                          description: >-
                            Menentukan apakah metadata menunjukkan file telah
                            melewati editor gambar/PDF yang dikenal.
                        has_different_creation_mod_date:
                          type: boolean
                          nullable: true
                          description: >-
                            Menentukan apakah tanggal pembuatan dan modifikasi
                            berbeda — kemungkinan sinyal pengeditan (tetapi
                            tidak konklusif).
                        overlay_manipulation:
                          type: object
                          nullable: true
                          description: >-
                            Analisis forensik PDF untuk dugaan manipulasi teks
                            overlay. Bernilai null jika tidak ditemukan bukti
                            manipulasi overlay atau dokumen bukan berupa PDF.
                          properties:
                            detected:
                              type: boolean
                              description: >-
                                Menentukan apakah bukti manipulasi teks overlay
                                terdeteksi.
                            analyzed:
                              type: boolean
                              description: Apakah PDF dapat dianalisis.
                            analysis_incomplete:
                              type: boolean
                              description: >-
                                Ada dan bernilai true hanya jika file tidak
                                dapat diperiksa sepenuhnya. Bagian yang berhasil
                                diperiksa tetap menampilkan temuannya jika
                                memungkinkan, dan dokumen memunculkan peringatan
                                penggantian teks yang belum terbukti.
                            signals:
                              type: array
                              items:
                                type: string
                              description: >-
                                Sinyal forensik yang terpicu, seperti
                                duplicate_font_subset atau glyph_fragmentation.
                            manipulated_regions:
                              type: array
                              description: >-
                                Area yang diduga dimanipulasi dalam koordinat
                                halaman PDF.
                              items:
                                type: object
                                properties:
                                  page:
                                    type: integer
                                  x:
                                    type: number
                                  'y':
                                    type: number
                                  width:
                                    type: number
                                  height:
                                    type: number
                                  page_width:
                                    type: number
                                  page_height:
                                    type: number
                    description:
                      type: string
                      nullable: true
                      description: >-
                        Label atau alasan yang diberikan analis untuk permintaan
                        dokumen. `null` untuk unggahan reguler.
                    is_requested:
                      type: boolean
                      description: >-
                        True untuk placeholder permintaan dokumen yang dibuat
                        analis yang menunggu pengunggahan.
                    ocr_data:
                      type: object
                      nullable: true
                    is_console_upload:
                      type: boolean
                      description: >-
                        True untuk dokumen yang diunggah dari konsol alih-alih
                        dari alur pengguna akhir. Unggahan konsol tidak pernah
                        mengubah status agregat tingkat fitur.
                    is_confirmed:
                      type: boolean
                      description: >-
                        Unggahan konsol dimulai dengan `false` dan beralih ke
                        `true` setelah admin mengonfirmasinya; unggahan pengguna
                        akhir selalu `true`.
              groups:
                type: object
                description: >-
                  Penghitung progres per grup yang diindeks berdasarkan nama
                  grup (misalnya legal_presence, ownership_structure).
                additionalProperties:
                  type: object
                  properties:
                    total:
                      type: integer
                    approved:
                      type: integer
                    pending:
                      type: integer
                    declined:
                      type: integer
                    in_review:
                      type: integer
                    other:
                      type: integer
                    missing:
                      type: integer
                      description: >-
                        Placeholder yang diminta yang belum ada file yang
                        diunggah.
              required_groups:
                type: array
                items:
                  type: string
              warnings:
                type: array
                items:
                  type: object
        environment:
          type: string
          enum:
            - live
            - sandbox
          description: >-
            Apakah sesi dibuat oleh aplikasi live (`live`) atau aplikasi sandbox
            (`sandbox`). Sesi sandbox gratis, disimulasikan sepenuhnya, dan
            tidak pernah membebankan kredit.
        sandbox_scenario:
          type: string
          nullable: true
          description: >-
            Skenario sandbox yang digunakan saat membuat sesi. Bernilai `null`
            untuk sesi produksi dan untuk sesi sandbox yang dibuat tanpanya.
        resubmissions:
          type: array
          description: >-
            Hanya dikembalikan dengan `include=resubmissions`, untuk sesi
            pengguna dan bisnis. Satu entri per permintaan pengiriman ulang,
            terlama terlebih dahulu. Setiap entri memuat hasil yang dikembalikan
            oleh langkah-langkah yang dikirimkan ulang sebelum permintaan,
            sehingga pengiriman sebelumnya tetap dapat dibaca. Menghapus sesi
            akan menghapus setiap pengiriman.
          items:
            type: object
            properties:
              number:
                type: integer
                description: >-
                  1 untuk pengiriman ulang pertama pada sesi ini, 2 untuk yang
                  kedua, dan seterusnya.
              created_at:
                type: string
                format: date-time
                description: Waktu pengiriman ulang diminta.
              previous_status:
                type: string
                description: Status sesi tepat sebelum permintaan.
              nodes:
                type: array
                description: >-
                  Langkah-langkah alur kerja yang dikirimkan kembali kepada
                  pengguna.
                items:
                  type: object
                  properties:
                    node_id:
                      type: string
                    feature:
                      type: string
              reasons:
                type: object
                nullable: true
                additionalProperties:
                  type: string
                description: >-
                  Alasan yang diberikan untuk setiap langkah, dengan kunci
                  berdasarkan `node_id`.
              requested_by:
                type: object
                nullable: true
                description: Pihak yang meminta pengajuan ulang.
                properties:
                  name:
                    type: string
                  email:
                    type: string
                  type:
                    type: string
              results:
                type: object
                additionalProperties: true
                description: >-
                  Hasil yang dikembalikan oleh langkah-langkah yang dikirim
                  ulang sebelum permintaan, dengan kunci yang sama dan dalam
                  bentuk yang sama seperti hasil saat ini dari respons ini
                  (`id_verifications`, `nfc_verifications`, `liveness_checks`,
                  `face_matches`, `poa_verifications`, `phone_verifications`,
                  `email_verifications`, `aml_screenings`, `ip_analyses`,
                  `database_validations`, `questionnaire_responses`,
                  `document_ai_documents`, `geolocation_checks`; untuk sesi
                  bisnis juga `document_verifications`). Hanya kunci dari
                  langkah-langkah yang dikirimkan kembali yang akan muncul.
        biometric_consent:
          type: object
          nullable: true
          description: >-
            Apakah sesi memerlukan persetujuan biometrik eksplisit sebelum
            pengambilan wajah, alasannya, dan bukti jawabannya. Hanya sesi
            Verifikasi Pengguna (KYC); objek yang sama berada di dalam
            `decision` pada webhook sesi. Bernilai `null` jika sesi tidak pernah
            dievaluasi, misalnya alur kerja tanpa pengambilan wajah. Kolom tanpa
            nilai yang tercatat bernilai `null`. SDK native di bawah 4.10.0,
            atau yang tidak melaporkan versinya, tidak dapat menampilkan langkah
            persetujuan: pengambilan wajahnya berjalan seperti sebelumnya, dan
            sesi yang memerlukan persetujuan kemudian melaporkan `status:
            "pending"` dengan `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`.
            Lihat [Persetujuan
            biometrik](/id/getting-started/biometric-consent).
          properties:
            required:
              type: boolean
              description: >-
                Whether the session must collect explicit biometric consent.
                Never goes back to `false`.
            trigger:
              type: string
              nullable: true
              enum:
                - declared_state
                - ip_state
                - ip_unknown
                - document_issuer
                - forced
                - customer_collected
              description: >-
                Alasan mengapa persetujuan diperlukan, atau bagaimana
                persyaratan persetujuan dipenuhi. `declared_state`: Anda
                mendeklarasikan negara bagian yang dicakup (`user_state`, atau
                alamat AS di `expected_details`). `ip_state`: IP pengguna berada
                di negara bagian yang dicakup (Illinois, Texas, Colorado).
                `ip_unknown`: bukti menunjukkan pengguna berada di AS tetapi
                negara bagian tidak dapat dipastikan (IP berada di AS tanpa
                informasi negara bagian, atau lokasinya tidak dapat ditentukan
                sementara detail Anda atau dokumen menempatkan pengguna di AS).
                `document_issuer`: dokumen identitas diterbitkan oleh negara
                bagian yang dicakup. `forced`: mode aplikasi adalah Always.
                `customer_collected`: Anda mengirimkan `biometric_consent` saat
                membuat sesi. `null` jika tidak diperlukan.
            status:
              type: string
              enum:
                - not_required
                - pending
                - given
                - declined
              description: >-
                `not_required`; `pending` (diperlukan dan tidak diberikan: orang
                tersebut belum menjawab, atau `reason` menjelaskan mengapa data
                tidak dikumpulkan); `given`; `declined` (penolakan dicatat dan
                sesi berakhir sebagai `Declined`; saat ini tidak ada layar Didit
                yang menawarkan penolakan).
            given_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Saat persetujuan diberikan. Untuk `customer_collected`, nilai
                `given_at` yang Anda kirimkan.
            declined_at:
              type: string
              format: date-time
              nullable: true
              description: Saat penolakan dicatat.
            text_version:
              type: string
              nullable: true
              description: >-
                ID versi dari teks persetujuan yang dijawab oleh individu
                tersebut, atau yang Anda kirimkan.
            text_hash:
              type: string
              nullable: true
              description: >-
                SHA-256 (heksadesimal) dari teks persetujuan persis seperti yang
                ditampilkan, dalam bahasa teks tersebut ditampilkan.
            locale:
              type: string
              nullable: true
              description: Bahasa yang digunakan untuk menampilkan teks persetujuan.
            policy_url:
              type: string
              format: uri
              nullable: true
              description: >-
                Kebijakan data biometrik yang ditautkan oleh langkah
                persetujuan.
            step:
              type: string
              nullable: true
              description: >-
                Langkah alur kerja tempat sesi berada saat orang tersebut
                menjawab, misalnya `LIVENESS`.
            node_id:
              type: string
              nullable: true
              description: >-
                Node graf alur kerja tempat sesi berada saat orang tersebut
                menjawab.
            ip_address:
              type: string
              nullable: true
              description: IP asal jawaban.
            ip_country_code:
              type: string
              nullable: true
              description: Negara ISO 3166-1 alpha-2 dari IP jawaban.
            ip_state:
              type: string
              nullable: true
              description: Subdivisi ISO 3166-2 dari IP pada jawaban, misalnya `US-IL`.
            ip_city:
              type: string
              nullable: true
              description: Kota dari IP jawaban.
            user_agent:
              type: string
              nullable: true
              description: User agent dari permintaan jawaban.
            detected_ip_address:
              type: string
              nullable: true
              description: >-
                IP orang tersebut yang digunakan saat persyaratan terakhir
                dievaluasi. Dapat berbeda dari `ip_address` jika orang tersebut
                menjawab di perangkat lain.
            detected_country_code:
              type: string
              nullable: true
              description: Negara ISO 3166-1 alpha-2 dari IP yang terdeteksi.
            detected_state:
              type: string
              nullable: true
              description: Subdivisi ISO 3166-2 dari IP yang terdeteksi.
            detected_city:
              type: string
              nullable: true
              description: Kota dari IP yang terdeteksi.
            declared_state:
              type: string
              nullable: true
              description: >-
                Subdivisi ISO 3166-2 yang Anda nyatakan: `user_state`, atau
                negara bagian dari alamat AS di `expected_details`.
            document_state:
              type: string
              nullable: true
              description: >-
                Subdivisi ISO 3166-2 yang menerbitkan dokumen identitas, dibaca
                saat pengambilan ID.
            jurisdictions:
              type: array
              items:
                type: string
              description: >-
                Negara bagian AS (kode USPS, misalnya `IL`) yang undang-undang
                biometriknya mencakup orang tersebut. `US` jika bukti
                menunjukkan orang tersebut berada di AS tetapi negara bagiannya
                tidak diketahui. Kosong jika tidak ada yang berlaku.
            retention_months:
              type: integer
              nullable: true
              description: >-
                Batas retensi biometrik terpendek, dalam bulan, di antara
                `jurisdictions`. `null` jika tidak ada yang berlaku.
            reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_UNSUPPORTED_SDK
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_UNSUPPORTED_SDK`: persetujuan diperlukan dan
                SDK native di bawah versi 4.10.0, atau yang tidak melaporkan
                versinya, mengambil wajah tanpa langkah persetujuan; `status`
                tetap `pending`, atau `given` jika orang tersebut kemudian
                setuju dalam alur yang di-hosting. `BIOMETRIC_CONSENT_DECLINED`:
                penolakan dicatat (menggantikan alasan SDK). `null` jika tidak,
                dan selalu `null` ketika sesi tidak memerlukan persetujuan.
            decline_reason:
              type: string
              nullable: true
              enum:
                - BIOMETRIC_CONSENT_DECLINED
              description: >-
                `BIOMETRIC_CONSENT_DECLINED` ketika penolakan yang tercatat
                mengakhiri sesi, jika tidak maka `null`.
            face_data_deleted_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Waktu ketika penolakan menghapus gambar wajah, video, dan
                templat wajah sesi. `null` kecuali jika penolakan telah dicatat.
        investigator:
          $ref: '#/components/schemas/InvestigatorBlock'
        biometric_retention:
          $ref: '#/components/schemas/BiometricRetention'
        fraud_check:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Hasil dari panggilan API Fraud Check. `null` untuk setiap sesi
            lainnya.
        full_session_video:
          type: string
          format: uri
          nullable: true
          description: >-
            URL rekaman sesi penuh yang akan kedaluwarsa. Hanya dikembalikan
            saat organisasi Anda merekam video sesi penuh.
        full_session_video_recorded_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Waktu ketika rekaman sesi lengkap dibuat. Hanya dikembalikan jika
            organisasi Anda merekam video sesi lengkap.
    AddressValidationResult:
      type: object
      description: >-
        Hasil dari satu Validasi Alamat: apakah alamat tersebut ada, dan bentuk
        yang telah dinormalisasi. Ini hanya mengonfirmasi alamat; ini tidak
        pernah menautkan alamat ke seseorang.
      required:
        - status
        - verification_level
        - address
        - formatted_address
        - latitude
        - longitude
      properties:
        status:
          type: string
          enum:
            - verified
            - partially_verified
            - not_verified
            - unavailable
          description: >-
            `verified`: alamat dikonfirmasi hingga ke bangunan (atau apartemen
            atau kotak pos). `partially_verified`: alamat hanya dikonfirmasi
            hingga ke jalan, atau hingga tingkat paling tepat yang dimiliki data
            referensi pos untuk tempat tersebut. `not_verified`: hanya wilayah
            atau kota yang cocok, atau tidak ada yang cocok. `unavailable`:
            validasi tidak dapat dijalankan (misalnya layanan referensi tidak
            merespons); validasi ini tidak dikenai biaya dan tidak pernah
            memengaruhi verifikasi.
        verification_level:
          type: string
          nullable: true
          enum:
            - administrative_area
            - locality
            - thoroughfare
            - premise
            - delivery_point
            - null
          description: >-
            Tingkat paling presisi yang dicocokkan dengan alamat. `null` jika
            tidak ada yang cocok atau `status` bernilai `unavailable`.
        address:
          type: object
          nullable: true
          description: >-
            Alamat yang dinormalisasi. `null` jika `status` adalah
            `unavailable`.
          properties:
            address_line_1:
              type: string
              nullable: true
              description: >-
                Baris pengiriman pertama, ditulis sesuai dengan format penulisan
                di negara tersebut.
              example: 1600 Amphitheatre Pkwy
            address_line_2:
              type: string
              nullable: true
              description: >-
                Baris pengiriman kedua (apartemen, gedung, atau lingkungan
                sekitar), jika alamat memilikinya.
            city:
              type: string
              nullable: true
              example: Mountain View
            region:
              type: string
              nullable: true
              description: Negara bagian, provinsi, atau wilayah.
              example: CA
            postal_code:
              type: string
              nullable: true
              example: 94043-1351
            country:
              type: string
              nullable: true
              description: Kode negara ISO 3166-1 alpha-2.
              example: US
        formatted_address:
          type: string
          nullable: true
          description: Alamat yang dinormalisasi dalam satu baris.
          example: 1600 Amphitheatre Pkwy, Mountain View CA 94043-1351
        latitude:
          type: number
          nullable: true
          example: 37.422022
        longitude:
          type: number
          nullable: true
          example: -122.08429
    PhoneIntelligence:
      type: object
      description: >-
        Blok intelijen telepon yang dinormalisasi. Hanya ada ketika add-on
        intelijen dijalankan untuk pencarian ini; jika ada, ini juga diekspos di
        bawah alias `enrichment` dengan nilai yang identik.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Skor risiko 0-100 yang dinormalisasi. Lebih tinggi berarti lebih
            berisiko.
        phone_type_risk:
          type: string
          nullable: true
          description: '`Low`, `Medium`, atau `High`, diperoleh dari skor.'
        phone_trust_index:
          type: number
          nullable: true
          description: >-
            Kebalikan dari skor, untuk dasbor yang memilih semakin tinggi
            semakin baik.
        network_stability_index:
          type: number
          nullable: true
          description: Stabilitas jaringan lini tersebut.
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` saat nomor tampak sekali pakai atau virtual.'
        is_ported:
          type: boolean
          nullable: true
          description: '`true` saat nomor telah berganti operator.'
        is_recently_ported:
          type: boolean
          nullable: true
          description: '`true` saat pemindahan nomor (port) baru saja terjadi.'
        carrier_type:
          type: string
          nullable: true
          description: >-
            Klasifikasi saluran yang dilaporkan oleh pencarian (misalnya,
            `mobile`).
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Pengidentifikasi Didit yang stabil untuk sinyal tersebut,
                  misalnya `IR-5AC67A32`. Tidak transparan: kelompokkan dan
                  filter berdasarkan nilai ini, jangan menguraikannya.
              value:
                nullable: true
                description: >-
                  Untuk flag risiko (misalnya `voip`, `leaked`, `disposable`,
                  `spam_trap`), nilainya: boolean, level, atau tanggal. Null
                  untuk kode alasan dengan skor.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Apakah sinyal meningkatkan risiko atau menambah kepercayaan.
              message:
                type: string
                description: >-
                  Penjelasan sinyal yang mudah dibaca manusia, dalam bahasa
                  Inggris.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Seberapa kuat sinyal tersebut memengaruhi skor, misalnya
                  `low`, `medium`, atau `high`.
          description: >-
            Sinyal yang menjelaskan skor tersebut, masing-masing dengan kode
            Didit yang stabil, arah, pesan, dan tingkat dampak. Kode baru dapat
            muncul sewaktu-waktu, jadi jangan tolak kode yang tidak dikenal.
    PhoneSocialFootprint:
      type: object
      nullable: true
      description: >-
        Jejak sosial dari nomor telepon: platform online tempat nomor tersebut
        terdaftar. Ada hanya jika `enable_social` diatur dan pemeriksaan
        selesai. Setiap hitungan dapat bernilai null jika tidak ada data yang
        dikembalikan untuknya. `profiles_registered: 0` berarti platform telah
        diperiksa dan nomor telepon tidak ditemukan di platform mana pun -
        respons yang valid, dapat ditagih, dan merupakan sinyal identitas
        sintetis yang umum.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Platform tempat nomor telepon dikonfirmasi terdaftar.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Platform yang dievaluasi untuk pendaftaran.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Platform yang mengembalikan nama terkait.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Platform yang mengembalikan foto profil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Platform komunikasi yang keberadaannya terdeteksi.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Kategori platform unik dengan keberadaan yang terdeteksi.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indikator kematangan digital komposit, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indikator kekayaan profil, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Bauran platform gratis vs berbayar, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform gratis.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform berbayar penuh.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: Kelengkapan profil WhatsApp. Hanya untuk telepon; null untuk email.
          example: Partial
        registered_platforms:
          type: array
          description: Platform tempat pendaftaran dikonfirmasi.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Platform yang diperiksa dengan hasil negatif.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Jumlah dan rasio terdaftar per kategori platform.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detail profil per platform, dikunci berdasarkan platform, jika
            platform menyediakannya.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    EmailIntelligence:
      type: object
      description: >-
        Blok intelijen email yang dinormalisasi. Hanya ada ketika add-on
        intelijen dijalankan untuk email ini; jika ada, ini juga diekspos
        sebagai alias `enrichment` dengan nilai yang identik.
      properties:
        score:
          type: number
          nullable: true
          description: >-
            Skor risiko 0-100 yang dinormalisasi. Lebih tinggi berarti lebih
            berisiko.
        deliverable:
          type: string
          nullable: true
          description: Tingkat keterkiriman (misalnya, `high`).
        breach_risk_level:
          type: string
          nullable: true
          description: '`Low`, `Medium`, atau `High`.'
        breach_risk_index:
          type: number
          nullable: true
          description: Indeks risiko pelanggaran numerik.
        is_recent_breach:
          type: boolean
          nullable: true
          description: '`true` jika alamat muncul dalam kebocoran data terkini.'
        is_frequent_breached:
          type: boolean
          nullable: true
          description: '`true` jika alamat muncul dalam banyak kebocoran data.'
        is_disposable:
          type: boolean
          nullable: true
          description: '`true` saat domain merupakan penyedia email sekali pakai.'
        is_free_domain:
          type: boolean
          nullable: true
          description: '`true` saat domain merupakan penyedia email gratis.'
        is_breached:
          type: boolean
          nullable: true
          description: '`true` jika alamat muncul dalam kebocoran data yang diketahui.'
        no_of_breaches:
          type: number
          nullable: true
          description: Jumlah kebocoran data yang diketahui yang memuat alamat tersebut.
        reason_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Pengidentifikasi Didit yang stabil untuk sinyal tersebut,
                  misalnya `IR-5AC67A32`. Tidak transparan: kelompokkan dan
                  filter berdasarkan nilai ini, jangan menguraikannya.
              value:
                nullable: true
                description: >-
                  Untuk flag risiko (misalnya `voip`, `leaked`, `disposable`,
                  `spam_trap`), nilainya: boolean, level, atau tanggal. Null
                  untuk kode alasan dengan skor.
              direction:
                type: string
                enum:
                  - risk
                  - trust
                description: Apakah sinyal meningkatkan risiko atau menambah kepercayaan.
              message:
                type: string
                description: >-
                  Penjelasan sinyal yang mudah dibaca manusia, dalam bahasa
                  Inggris.
              impact_level:
                type: string
                nullable: true
                description: >-
                  Seberapa kuat sinyal tersebut memengaruhi skor, misalnya
                  `low`, `medium`, atau `high`.
          description: >-
            Sinyal yang menjelaskan skor tersebut, masing-masing dengan kode
            Didit yang stabil, arah, pesan, dan tingkat dampak. Kode baru dapat
            muncul sewaktu-waktu, jadi jangan tolak kode yang tidak dikenal.
    EmailSocialFootprint:
      type: object
      nullable: true
      description: >-
        Jejak sosial dari alamat email: platform online tempat alamat tersebut
        terdaftar. Ada hanya jika `enable_social` diatur dan pemeriksaan
        selesai. Setiap hitungan dapat bernilai null jika tidak ada data yang
        dikembalikan untuknya. `profiles_registered: 0` berarti platform telah
        diperiksa dan alamat email tidak ditemukan di platform mana pun -
        respons yang valid, dapat ditagih, dan merupakan sinyal identitas
        sintetis yang umum.
      properties:
        profiles_registered:
          type: integer
          nullable: true
          description: Platform tempat alamat email dikonfirmasi terdaftar.
          example: 5
        profiles_checked:
          type: integer
          nullable: true
          description: Platform yang dievaluasi untuk pendaftaran.
          example: 14
        names_found:
          type: integer
          nullable: true
          description: Platform yang mengembalikan nama terkait.
          example: 0
        photos_found:
          type: integer
          nullable: true
          description: Platform yang mengembalikan foto profil.
          example: 0
        communication_breadth:
          type: integer
          nullable: true
          description: Platform komunikasi yang keberadaannya terdeteksi.
          example: 2
        digital_footprint_diversity:
          type: integer
          nullable: true
          description: Kategori platform unik dengan keberadaan yang terdeteksi.
          example: 5
        digital_sophistication_index:
          type: integer
          nullable: true
          description: Indikator kematangan digital komposit, 0-10.
          example: 5
        engagement_depth_index:
          type: integer
          nullable: true
          description: Indikator kekayaan profil, 0-10.
          example: 3
        subscription_affordability_index:
          type: integer
          nullable: true
          description: Bauran platform gratis vs berbayar, 0-10.
          example: 2
        free_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform gratis.
          example: 4
        full_paid_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform berbayar penuh.
          example: 0
        partial_paid_platforms:
          type: integer
          nullable: true
          description: Pendaftaran pada platform freemium.
          example: 1
        whatsapp_profile_completeness:
          type: string
          nullable: true
          enum:
            - Basic
            - Partial
            - Complete
            - Not Present
            - null
          description: Kelengkapan profil WhatsApp. Hanya untuk telepon; null untuk email.
          example: Partial
        registered_platforms:
          type: array
          description: Platform tempat pendaftaran dikonfirmasi.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        not_registered_platforms:
          type: array
          description: Platform yang diperiksa dengan hasil negatif.
          items:
            $ref: '#/components/schemas/SocialFootprintPlatform'
        categories:
          type: object
          description: Jumlah dan rasio terdaftar per kategori platform.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintCategorySummary'
        profiles:
          type: object
          description: >-
            Detail profil per platform, dikunci berdasarkan platform, jika
            platform menyediakannya.
          additionalProperties:
            $ref: '#/components/schemas/SocialFootprintProfile'
    DocumentAIDetectedCode:
      type: object
      required:
        - type
        - page_number
        - position
        - x
        - 'y'
        - width
        - height
        - page_width
        - page_height
        - raw_payload
        - parsed_payload
      properties:
        type:
          type: string
          description: >-
            Simbologi yang terdeteksi, misalnya `QR_CODE`, `CODE_128`, `EAN_13`,
            `DATA_MATRIX`, atau `PDF_417`.
        page_number:
          type: integer
          minimum: 1
          description: Nomor halaman berbasis 1.
        position:
          type: array
          nullable: true
          description: >-
            Poligon yang terdeteksi dalam koordinat piksel halaman yang
            dirender. Bernilai `null` jika tidak ada lokasi andal yang tersedia.
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: integer
        x:
          type: integer
          nullable: true
          description: Tepi kiri bounding box dalam piksel halaman yang dirender.
        'y':
          type: integer
          nullable: true
          description: Tepi atas bounding box dalam piksel halaman yang dirender.
        width:
          type: integer
          nullable: true
          description: Lebar bounding-box dalam piksel halaman yang dirender.
        height:
          type: integer
          nullable: true
          description: Tinggi bounding-box dalam piksel halaman yang dirender.
        page_width:
          type: integer
          description: Lebar halaman yang dirender dalam piksel.
        page_height:
          type: integer
          description: Tinggi halaman yang dirender dalam piksel.
        raw_payload:
          type: string
          description: >-
            Payload dekoder mentah sebagai string base64 jika tersedia; jika
            tidak, berupa string kosong.
        parsed_payload:
          nullable: true
          description: >-
            String atau nilai terstruktur yang didekodekan. `null` jika kode
            ditemukan tetapi tidak dapat didekodekan.
    BankVerificationResult:
      type: object
      description: >-
        Hasil satu langkah Verifikasi Bank, untuk Verifikasi Pengguna dan
        Bisnis. `method` menunjukkan cara akun diverifikasi, dan `none`
        menunjukkan bahwa orang tersebut melanjutkan tanpa bank sebelum ada
        upaya yang dievaluasi. `continued_without_bank` menunjukkan orang
        tersebut melanjutkan tanpa bank, juga setelah upaya yang dievaluasi.
        Lihat [Metode verifikasi
        bank](/id/core-technology/bank-verification/verification-methods) dan
        [Saat orang tersebut tidak dapat memverifikasi
        banknya](/id/core-technology/bank-verification/fallbacks).
      properties:
        schema_version:
          type: integer
          description: Versi bentuk hasil ini. `1` saat ini.
        bank_verification_id:
          type: string
          format: uuid
          description: ID hasil ini.
        node_id:
          type: string
          description: Node alur kerja tempat hasil ini berada.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Expired
          description: Keputusan langkah, setelah tindakan dan aturan statusnya.
        original_status:
          type: string
          nullable: true
          description: >-
            Keputusan awal yang dicapai langkah tersebut, sebelum adanya
            perubahan di kemudian hari seperti peninjauan manual.
        method:
          type: string
          nullable: true
          enum:
            - open_banking
            - account_lookup
            - microdeposits
            - statement
            - none
          description: >-
            Bagaimana akun diverifikasi: `open_banking` (masuk ke bank: orang
            tersebut masuk ke bank mereka), `account_lookup` (pemeriksaan akun:
            orang tersebut mengetikkan detail akun dan bank mengonfirmasi
            namanya), `microdeposits` atau `statement` (unggahan rekening
            koran). `none` ketika orang tersebut melanjutkan tanpa bank sebelum
            ada upaya yang dievaluasi, sehingga tidak ada akun yang
            diverifikasi. Setelah upaya dievaluasi, nilainya tetap menjadi
            metode dari upaya tersebut. `null` hingga akun dievaluasi, dan saat
            alur kerja mempersempit data yang dikembalikannya. Aturan alur kerja
            membaca nilai yang sama sebagai `bank.method`.
        provider:
          type: string
          nullable: true
          description: >-
            Kunci dari rute yang menjalankan koneksi. Baca `method`, bukan kunci
            ini, untuk mengetahui cara akun diverifikasi.
        credential_source:
          type: string
          nullable: true
          enum:
            - native
            - byok
          description: >-
            `native`: rute milik Didit sendiri, ditagihkan ke saldo Didit Anda.
            `byok`: penyedia marketplace yang Anda hubungkan dengan kredensial
            Anda sendiri.
        route:
          type: object
          nullable: true
          description: >-
            Rute yang dipilih sebelum persetujuan. Rute ini tidak pernah berubah
            setelahnya.
          properties:
            provider_key:
              type: string
              nullable: true
              description: Kunci rute.
            credential_source:
              type: string
              enum:
                - native
                - byok
            is_fallback:
              type: boolean
              description: >-
                Menentukan apakah rute Didit sendiri menggantikan penyedia
                marketplace yang tidak dapat terhubung.
            provider_connection_id:
              type: string
              nullable: true
              description: Koneksi marketplace yang digunakan, untuk `byok`.
            requested_scopes:
              type: array
              items:
                type: string
              description: Data yang diminta koneksi, misalnya `ownership` atau `balances`.
        connection:
          type: object
          nullable: true
          description: Koneksi dari upaya terbaru. `null` sebelum upaya pertama.
          properties:
            status:
              type: string
              enum:
                - pending
                - connected
                - cancelled
                - timeout
                - failed
                - unsupported
                - revoked
                - expired
            institution_id:
              type: string
              nullable: true
              description: >-
                ID bank. `null` untuk pemeriksaan rekening, ketika tidak ada
                bank yang dipilih.
            institution_name:
              type: string
              nullable: true
              description: Nama bank. `null` untuk pemeriksaan rekening.
            institution_country:
              type: string
              nullable: true
              description: Negara akun, ISO 3166-1 alpha-3.
            oauth:
              type: boolean
              nullable: true
              description: >-
                Apakah proses masuk bank dijalankan melalui OAuth atau
                app-to-app. `null` untuk pemeriksaan akun.
            connected_at:
              type: string
              format: date-time
              nullable: true
              description: Waktu ketika koneksi berhasil.
            consent_expires_at:
              type: string
              format: date-time
              nullable: true
              description: Waktu ketika persetujuan bank berakhir, untuk login ke bank.
            last_refreshed_at:
              type: string
              format: date-time
              nullable: true
              description: Waktu ketika data keuangan terakhir dibaca kembali.
            attempts:
              type: integer
              description: >-
                Jumlah percobaan yang dilakukan orang tersebut pada langkah ini,
                semua metode digabungkan.
            reason_code:
              type: string
              nullable: true
              description: >-
                Alasan mengapa koneksi bukan `connected` saja, misalnya
                `USER_CANCELLED`, `INSTITUTION_DOWN`, `ACCOUNT_NOT_FOUND`,
                `REFERENCE_IDENTITY_MISSING`, atau `VERIFICATION_COMPLETED`.
        account:
          type: object
          nullable: true
          description: Akun yang dievaluasi. `null` hingga akun dievaluasi.
          properties:
            account_id_masked:
              type: string
              nullable: true
              description: Nomor akun, dimasker.
            iban_masked:
              type: string
              nullable: true
              description: IBAN, disamarkan.
            sort_code:
              type: string
              nullable: true
              description: Sort code, di Britania Raya.
            routing_number_masked:
              type: string
              nullable: true
              description: Nomor perutean, disamarkan.
            type:
              type: string
              nullable: true
              enum:
                - checking
                - current
                - savings
                - business
                - other
            subtype:
              type: string
              nullable: true
              description: Subtipe rekening milik bank itu sendiri.
            currency:
              type: string
              nullable: true
              description: Mata uang ISO 4217 dari akun.
            holder_type:
              type: string
              nullable: true
              enum:
                - person
                - business
                - unknown
            holders_count:
              type: integer
              nullable: true
            is_joint:
              type: boolean
              nullable: true
            is_business:
              type: boolean
              nullable: true
        ownership:
          type: object
          nullable: true
          description: >-
            Bagaimana pemegang akun dibandingkan dengan identitas terverifikasi.
            `null` hingga sebuah akun dievaluasi.
          properties:
            result:
              type: string
              enum:
                - match
                - partial_match
                - no_match
                - unknown
                - not_verifiable
              description: >-
                `partial_match` adalah kecocokan dekat. `not_verifiable`: bank
                merespons tanpa data pemegang untuk dibandingkan. `unknown`:
                bukti tidak dapat dibaca, atau tidak ada identitas untuk
                dibandingkan.
            reference_identity_source:
              type: string
              nullable: true
              description: >-
                Langkah yang digunakan untuk membandingkan identitas pemegang
                dengan identitas langkah tersebut: `kyc`, `database_validation`,
                `expected_details`, `questionnaire`, `document_ai`, atau `kyb`.
            name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Skor nama pemegang Didit.
            provider_name_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: >-
                Skor nama pemilik dari bank itu sendiri, jika bank
                mengembalikannya.
            address_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Skor alamat pemegang, saat pencocokan alamat dijalankan.
            email_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Skor email pemegang, saat pencocokan email dijalankan.
            phone_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Skor telepon pemegang, saat pencocokan telepon dijalankan.
            dob_score:
              type: integer
              minimum: 0
              maximum: 100
              nullable: true
              description: Skor tanggal lahir pemegang, saat bank membagikannya.
            close_match:
              type: boolean
              nullable: true
              description: Apakah nama tersebut masuk ke dalam rentang kecocokan dekat.
            holder_confirmation:
              type: string
              nullable: true
              enum:
                - pending
                - confirmed
                - rejected
              description: >-
                Jawaban orang tersebut saat diminta mengonfirmasi nama yang
                sangat mirip. `null` jika tidak pernah diminta.
            method:
              type: string
              nullable: true
              enum:
                - exact
                - token_set
                - nickname
                - transliteration
                - fuzzy
                - provider_only
                - microdeposits
              description: >-
                Perbandingan nama mana yang menghasilkan skor tersebut. Ini
                bukan metode verifikasi: baca `method` tingkat atas untuk
                mengetahuinya.
            matched_holder_index:
              type: integer
              nullable: true
            holders:
              type: array
              items:
                type: object
              description: Setiap pemegang rekening yang dicantumkan bank, beserta skornya.
            owner_identity_available:
              type: boolean
              nullable: true
            evidence_freshness:
              type: string
              nullable: true
              enum:
                - live
                - cached
                - refreshed
            evaluated_at:
              type: string
              format: date-time
              nullable: true
              description: Kapan keputusan dihitung.
        financial_data:
          type: object
          description: >-
            Data keuangan yang dibaca oleh langkah tersebut. Hanya proses masuk
            bank yang membacanya.
          properties:
            balances:
              type: object
              nullable: true
              description: Dengan cakupan `balances`.
            transactions:
              type: object
              nullable: true
              description: Dengan cakupan `transactions`.
            income:
              type: object
              nullable: true
              description: Dengan cakupan `income`.
            categorization:
              type: object
              nullable: true
              description: >-
                Kategorisasi Didit atas transaksi yang dibaca. `null` tanpa
                transaksi tersebut.
            not_collected:
              type: array
              items:
                type: string
                enum:
                  - balances
                  - income
                  - transactions
              description: >-
                Data yang diminta langkah tersebut yang tidak dikumpulkan oleh
                metode yang memverifikasi akun. Saldo, transaksi, dan pendapatan
                hanya berasal dari login bank, sehingga akun yang diverifikasi
                melalui pemeriksaan akun mencantumkannya di sini. Bukan
                kegagalan. Kosong jika sebaliknya.
        billing:
          type: object
          nullable: true
          properties:
            route:
              type: string
              enum:
                - native
                - byok
            billed:
              type: boolean
            marketplace_fee:
              type: string
              nullable: true
              description: Biaya platform marketplace yang dibebankan, untuk `byok`.
            usage_type:
              type: string
              nullable: true
              description: >-
                Baris penggunaan tempat biaya dicatat: `bank_verification` untuk
                masuk bank atau pemeriksaan akun, `bank_statement_upload` untuk
                pengunggahan rekening koran tanpa upaya bank berbayar
                sebelumnya, dan `bank_byok_fee` untuk biaya marketplace pada
                penyedia Anda sendiri. `null` jika tidak ada yang ditagihkan.
        reference_identity:
          type: object
          nullable: true
          description: Identitas yang dibandingkan dengan pemegang, beserta sumbernya.
        signals:
          type: object
          nullable: true
          description: >-
            Sinyal akun dibaca dari riwayat transaksi, ketika langkah tersebut
            membaca riwayat transaksi.
        connection_abandoned:
          type: boolean
          nullable: true
          description: >-
            Apakah langkah berakhir tanpa kecocokan setelah orang tersebut
            meninggalkannya di bank mereka.
        not_covered:
          type: boolean
          nullable: true
          description: >-
            Apakah bank atau negara orang tersebut tidak dapat dijangkau pada
            langkah ini. Juga bernilai `true` ketika orang tersebut melanjutkan
            tanpa bank karena tidak ada metode yang dapat memverifikasi negara
            atau bank mereka.
        continued_without_bank:
          type: boolean
          description: >-
            Apakah orang tersebut meninggalkan langkah dengan **Continue without
            your bank**. `continuation` kemudian menyatakan alasannya. `method`
            bernilai `none` jika tidak ada upaya yang dievaluasi sebelum mereka
            melanjutkan. Setelah upaya yang dievaluasi, seperti pemegang
            rekening yang tidak cocok, `method` tetap menjadi metode upaya
            tersebut serta putusan dan kode alasannya tetap berlaku.
            Dikembalikan bahkan ketika alur kerja mempersempit data yang
            dikembalikannya.
        continuation:
          type: object
          nullable: true
          description: >-
            Bagaimana orang tersebut melanjutkan tanpa bank. `null` jika tidak.
            Saat alur kerja mempersempit data yang dikembalikannya, `reason`
            tetap dikembalikan dan setiap kunci lainnya bernilai `null`.
          properties:
            reason:
              type: string
              enum:
                - no_route
                - institution_unsupported
                - attempts_exhausted
                - person_choice
              description: >-
                Alasan, sebagaimana ditentukan oleh Didit ketika orang tersebut
                melanjutkan: `no_route` (tidak ada proses masuk bank atau
                pemeriksaan akun yang melayani negara mereka),
                `institution_unsupported` (bank yang mereka pilih tidak dapat
                digunakan pada langkah ini), `attempts_exhausted` (setiap upaya
                telah habis dan tidak ada yang sedang berlangsung), atau
                `person_choice` (cara untuk memverifikasi tersedia dan mereka
                memilih untuk melanjutkan, termasuk ketika bank mereka tidak
                dapat dihubungi saat ini). `no_route` dan
                `institution_unsupported` mengikuti `bank_unsupported_action`,
                `attempts_exhausted` mengikuti `bank_attempts_exhausted_action`,
                dan `person_choice` mengikuti `bank_skipped_action`, kecuali
                jika upaya yang dievaluasi telah memutuskan langkah tersebut.
            country:
              type: string
              nullable: true
              description: >-
                Negara tempat orang tersebut melakukan verifikasi, ISO 3166-1
                alpha-3. Bernilai `null` jika mereka melanjutkan sebelum memilih
                negara.
            offered:
              type: array
              items:
                type: string
                enum:
                  - statement
                  - microdeposits
              nullable: true
              description: >-
                Cara lain untuk memverifikasi negara tersebut yang ditawarkan
                kepada orang tersebut saat mereka melanjutkan, sesuai urutan
                penawarannya: `statement` (unggahan rekening koran), kemudian
                `microdeposits`. Kosong jika tidak ada yang ditawarkan.
            institution_id:
              type: string
              nullable: true
              description: >-
                Untuk `institution_unsupported`, ID bank yang tidak dapat
                digunakan orang tersebut: bank yang mereka pilih, atau bank
                tempat percobaan terakhir mereka berakhir. Didit mengambilnya
                dari daftar bank miliknya sendiri, tidak pernah dari perangkat
                orang tersebut, sehingga bank yang tidak ada dalam daftar
                tersebut bernilai `null`. `null` untuk setiap alasan lainnya.
            institution_name:
              type: string
              nullable: true
              description: >-
                Untuk `institution_unsupported`, nama bank tersebut, dari daftar
                yang sama dengan `institution_id`. `null` jika daftar tersebut
                tidak memiliki bank tersebut, dan untuk setiap alasan lainnya.
            continued_at:
              type: string
              format: date-time
              nullable: true
              description: Waktu pengguna melanjutkan.
        evidence_purged_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Waktu ketika bukti bank dihapus berdasarkan
            `bank_evidence_retention_days`. Jika tidak, `null`.
        warnings:
          type: array
          items:
            type: string
          description: >-
            Kode informasi, misalnya `holder_declared`. Peringatan tidak pernah
            mengubah status dengan sendirinya.
        reason_codes:
          type: array
          items:
            type: string
          description: >-
            Alasan mengapa hasil keputusan keluar seperti itu, misalnya
            `OWNER_NAME_PARTIAL`. Beberapa alasan dapat berlaku. `NOT_COVERED`:
            orang tersebut melanjutkan tanpa bank karena tidak ada metode yang
            dapat memverifikasi negara atau bank mereka. `SKIPPED`: orang
            tersebut memilih untuk melanjutkan tanpa bank saat cara untuk
            memverifikasi tersedia. Keduanya tidak ditambahkan jika upaya yang
            dievaluasi telah memutuskan langkah tersebut.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    SignatureResult:
      type: object
      description: >-
        Hasil satu penandatangan untuk satu langkah Tanda Tangan Elektronik.
        Lihat [laporan Tanda Tangan
        Elektronik](/id/core-technology/electronic-signature/report-electronic-signature).
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Teruskan sebagai `signature_id` untuk mengunduh bukti penanda tangan
            ini atau memvalidasi tanda tangan mereka.
        node_id:
          type: string
          description: Langkah alur kerja yang menghasilkannya.
        status:
          type: string
          enum:
            - intro
            - review
            - code
            - signing
            - signed
            - declined
          description: >-
            Status penandatangan dalam langkah tersebut. Hanya `signed` yang
            berarti dokumen telah ditandatangani.
        verdict:
          type: string
          enum:
            - Not Finished
            - Approved
            - In Review
            - Declined
          description: >-
            Hasil langkah. Peringatan menetapkannya melalui aturannya; aturan
            status kustom berlaku setelahnya.
        level:
          type: string
          enum:
            - simple
            - aes
            - qes
          description: >-
            `simple` (default) atau `aes`. `qes` (Qualified Electronic
            Signature, QES) adalah add-on yang belum tersedia.
        format:
          type: string
          enum:
            - pdf
            - pades
          description: '`pdf` untuk tanda tangan Simple, `pades` untuk Advanced (AES).'
        profile:
          type: string
          nullable: true
          description: >-
            `PAdES-B-LT` setelah tanda tangan Advanced (AES) dibuat, jika tidak
            maka null.
        signer:
          type: object
          properties:
            name:
              type: string
              nullable: true
              description: >-
                Nama penandatangan. Terverifikasi (dari Verifikasi Identitas
                yang disetujui atau sesi) kecuali pada tingkat Simple tanpa nama
                sesi yang terverifikasi, di mana nama tersebut merupakan nama
                yang diketik penandatangan dan tidak diverifikasi.
            capacity:
              type: string
              enum:
                - self
                - company
            company:
              type: string
              nullable: true
            role:
              type: string
              nullable: true
              description: Jabatan pihak kunci, sebagaimana dinyatakan.
            roles:
              type: array
              items:
                type: string
              description: >-
                Peran terstruktur pihak kunci, sebagaimana dinyatakan untuk
                perusahaan.
            identity_session_id:
              type: string
              format: uuid
              description: Sesi KYC yang memverifikasi penandatangan.
        identity_used:
          type: object
          description: >-
            Identitas terverifikasi yang menjadi dasar tanda tangan. Kosong
            untuk tanda tangan sederhana tanpa identitas terverifikasi.
          properties:
            session_id:
              type: string
              format: uuid
            kyc_id:
              type: string
              format: uuid
              nullable: true
            verified:
              type: boolean
            expected_name:
              type: string
              nullable: true
              description: Nama yang harus cocok dengan penandatangan.
        certificate:
          type: object
          nullable: true
          description: >-
            Sertifikat yang digunakan untuk menandatangani dokumen. `null`
            sampai ditandatangani, dan selalu `null` untuk tanda tangan Simple.
          properties:
            issuer:
              type: string
            issued_to:
              type: string
            serial:
              type: string
              description: Nomor seri, heksadesimal.
            valid_from:
              type: string
              format: date-time
            valid_until:
              type: string
              format: date-time
        confirmation:
          type: object
          properties:
            channel:
              type: string
              nullable: true
              enum:
                - email
                - sms
              description: '`null` untuk tanda tangan Simple, yang tidak memiliki kode.'
            destination:
              type: string
              nullable: true
              description: Kontak tersamarkan yang menjadi tujuan pengiriman kode.
            confirmed_at:
              type: string
              format: date-time
              nullable: true
            attempts:
              type: integer
              description: Kode yang dimasukkan, termasuk kode yang benar.
        timestamp:
          type: object
          nullable: true
          description: >-
            Stempel waktu RFC 3161 dalam tanda tangan, diterbitkan oleh Didit.
            `null` hingga ditandatangani, dan selalu `null` untuk tanda tangan
            Simple.
          properties:
            time:
              type: string
              format: date-time
            qualified:
              type: boolean
              description: Selalu `false` untuk AES.
            valid:
              type: boolean
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                description: >-
                  Dokumen pada salinan penandatangan ini. Gunakan ini untuk
                  mengunduh berkas yang telah ditandatangani.
              uuid:
                type: string
                format: uuid
                description: Sama dengan `id`.
              title:
                type: string
              file_name:
                type: string
              pages:
                type: integer
                description: >-
                  Halaman dokumen yang ditandatangani. Untuk Word, dari PDF yang
                  dikonversi.
              size_bytes:
                type: integer
              sha256_original:
                type: string
                description: >-
                  SHA-256 dari dokumen persis seperti yang ditampilkan kepada
                  penanda tangan.
              sha256_signed:
                type: string
                nullable: true
                description: SHA-256 dari PDF yang ditandatangani, setelah ditandatangani.
              status:
                type: string
                enum:
                  - signed
                  - declined
                  - not_signed
                  - not_reached
                description: >-
                  `not_signed`: dibuka tetapi tidak ditandatangani.
                  `not_reached`: tidak pernah dibuka.
              opened_at:
                type: string
                format: date-time
                nullable: true
              read_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Waktu penandatangan mencapai bagian akhir dokumen tanpa kolom,
                  jika langkah tersebut mewajibkannya.
              read_to_end:
                type: boolean
              consented_at:
                type: string
                format: date-time
                nullable: true
                description: >-
                  Waktu penandatangan menyetujui dokumen tanpa kolom, atau
                  menyelesaikan kolom pada dokumen dengan kolom.
              consent:
                type: boolean
              signed_file:
                type: string
                nullable: true
                description: >-
                  Jalur PDF yang ditandatangani, setelah ditandatangani. Lihat
                  [Unduh dokumen yang
                  ditandatangani](/id/sessions-api/electronic-signature/download-signed-document).
              mode:
                type: string
                enum:
                  - fields
                  - read_and_agree
                description: >-
                  `fields` untuk dokumen dengan kolom, `read_and_agree` untuk
                  dokumen tanpa kolom.
              source_format:
                type: string
                enum:
                  - pdf
                  - docx
                description: >-
                  `pdf`, atau `docx` untuk dokumen Word yang dikonversi oleh
                  Didit ke PDF.
              conversion:
                type: object
                nullable: true
                description: >-
                  `null` untuk PDF. Untuk dokumen Word, file asli dan hasil
                  konversi.
                properties:
                  from:
                    type: string
                    enum:
                      - docx
                  file_name:
                    type: string
                    description: Nama file Word asli Anda.
                  sha256:
                    type: string
                    description: SHA-256 dari file Word asli Anda.
                  size_bytes:
                    type: integer
                    description: Ukuran file Word asli Anda.
                  converter:
                    type: string
                    description: Versi konverter yang menghasilkan PDF tersebut.
              fields:
                type: array
                description: >-
                  Kolom pada dokumen, beserta nilainya. Kosong untuk dokumen
                  tanpa kolom.
                items:
                  $ref: '#/components/schemas/SignatureFieldResult'
        adopted_signature:
          type: object
          nullable: true
          description: >-
            Tanda tangan dan inisial yang ditetapkan penandatangan untuk kolom
            tanda tangan dan inisial. `null` hingga penandatangan menetapkannya.
          properties:
            method:
              type: string
              enum:
                - typed
                - drawn
              description: >-
                `typed`: nama terverifikasi dalam gaya tulisan tangan. `drawn`:
                digambar dengan jari atau mouse.
            font:
              type: string
              nullable: true
              description: >-
                Gaya tulisan tangan dari tanda tangan yang diketik. `null` jika
                digambar.
            adopted_at:
              type: string
              format: date-time
        electronic_signature_consent_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Waktu penandatangan menyetujui, pada layar peninjauan, untuk
            menandatangani dokumen secara elektronik. Diatur jika ada dokumen
            yang memiliki kolom.
        evidence_file:
          type: string
          nullable: true
          description: >-
            Jalur PDF bukti, setelah ditandatangani. Lihat [Unduh bukti tanda
            tangan](/id/sessions-api/electronic-signature/download-evidence).
        warnings:
          type: array
          description: >-
            Peringatan yang dimunculkan untuk penandatangan ini. Lihat
            [Peringatan Tanda Tangan
            Elektronik](/id/core-technology/electronic-signature/warnings-electronic-signature).
          items:
            type: object
            properties:
              code:
                type: string
                enum:
                  - SIGNATURE_DECLINED
                  - SIGNATURE_OTP_FAILED
                  - SIGNATURE_NAME_MISMATCH
                  - SIGNATURE_IDENTITY_NOT_VERIFIED
                  - SIGNATURE_DOCUMENT_CHANGED
                  - SIGNATURE_FIELD_DATA_MISSING
              node_id:
                type: string
        validation:
          type: object
          nullable: true
          description: >-
            Pemeriksaan kriptografi terakhir dari dokumen yang ditandatangani.
            `null` hingga dokumen ditandatangani. Jika Didit tidak dapat
            mengonfirmasi hasil penandatanganan, nilainya adalah `{"valid":
            null, "reason": "signature_provider_outcome_unknown", "checked_at":
            ...}` dan `status` tetap `signing`: perlakukan sebagai belum
            ditandatangani.
          properties:
            valid:
              type: boolean
              nullable: true
              description: >-
                `true` jika setiap dokumen valid. `null` jika hasil
                penandatanganan tidak dapat dikonfirmasi.
            reason:
              type: string
              description: >-
                Ditetapkan saat `valid` bernilai `null`:
                `signature_provider_outcome_unknown`.
            checked_at:
              type: string
              format: date-time
            documents:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  checked_at:
                    type: string
                    format: date-time
                  valid:
                    type: boolean
                    description: >-
                      `true` saat tanda tangan dan stempel waktu keduanya valid
                      dan tepercaya.
                  integrity:
                    type: boolean
                    description: '`true` saat dokumen belum diubah sejak ditandatangani.'
                  trusted:
                    type: boolean
                    description: >-
                      `true` saat sertifikat penandatanganan berantai ke akar
                      tepercaya.
                  revoked:
                    type: boolean
                  trusted_list:
                    type: object
                    description: >-
                      Pemeriksaan EU Trusted List. Untuk AES: `{"status":
                      "not_applicable", "reason": "aes_not_qualified"}`.
                    properties:
                      status:
                        type: string
                      reason:
                        type: string
                  certificate:
                    type: object
                    nullable: true
                    description: >-
                      Sertifikat yang digunakan untuk menandatangani dokumen.
                      `null` sampai ditandatangani, dan selalu `null` untuk
                      tanda tangan Simple.
                    properties:
                      issuer:
                        type: string
                      issued_to:
                        type: string
                      serial:
                        type: string
                        description: Nomor seri, heksadesimal.
                      valid_from:
                        type: string
                        format: date-time
                      valid_until:
                        type: string
                        format: date-time
                  timestamp:
                    type: object
                    nullable: true
                    description: >-
                      Stempel waktu RFC 3161 dalam tanda tangan, diterbitkan
                      oleh Didit. `null` hingga ditandatangani, dan selalu
                      `null` untuk tanda tangan Simple.
                    properties:
                      time:
                        type: string
                        format: date-time
                      qualified:
                        type: boolean
                        description: Selalu `false` untuk AES.
                      valid:
                        type: boolean
        declined_at:
          type: string
          format: date-time
          nullable: true
        declined_action:
          type: string
          enum:
            - DECLINE
            - REVIEW
            - NO_ACTION
        signed_at:
          type: string
          format: date-time
          nullable: true
        expires_at:
          type: string
          format: date-time
          description: Waktu tautan penandatanganan berhenti berfungsi.
        email_sent_at:
          type: string
          format: date-time
          nullable: true
        email_unavailable_reason:
          type: string
          nullable: true
        ip_address:
          type: string
          nullable: true
          description: Alamat IP penandatangan saat mereka meminta kode mereka.
        place:
          type: string
          nullable: true
          description: 'Tidak dikumpulkan: selalu `null`.'
        place_unavailable_reason:
          type: string
          nullable: true
          enum:
            - not_collected
    AMLScreening:
      type: object
      properties:
        node_id:
          type: string
          description: Pengenal unik untuk langkah AML ini di graf alur kerja.
        status:
          type: string
          description: >-
            Status tingkat fitur dari skrining AML ini. Tidak bergantung pada
            `status` sesi tingkat atas — sesi dapat mencapai keputusan
            keseluruhannya sementara fitur individual tetap `In Review`.
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
        total_hits:
          type: integer
          description: Jumlah total kecocokan yang ditemukan
        entity_type:
          type: string
          description: 'Jenis entitas yang diskrining: orang atau perusahaan'
        hits:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  Pengenal stabil dari Didit untuk hit: `hit_` yang diikuti oleh
                  24 karakter heksadesimal. Entitas cocok yang sama
                  mempertahankan `id` yang sama saat subjek menjalani skrining
                  ulang. Teruskan ini sebagai `hit_id` ke endpoint peninjauan
                  hit AML.
              url:
                type: string
                format: uri
                description: URL sumber untuk kecocokan
              match:
                type: boolean
                description: Apakah ini merupakan kecocokan yang dikonfirmasi
              score:
                type: number
                format: float
                nullable: true
                minimum: 0
                maximum: 1
                description: >-
                  Skor kecocokan berbobot yang sudah usang dalam rentang 0-1
                  (misalnya `0.73`). Gunakan `match_score` (0-100) sebagai
                  gantinya.
                deprecated: true
              target:
                type: boolean
                nullable: true
                description: >-
                  Apakah entitas yang cocok adalah target langsung dalam daftar
                  (berkebalikan dengan pihak terkait). `null` jika sumber tidak
                  menentukannya.
              caption:
                type: string
                description: Keterangan atau judul kecocokan
              datasets:
                type: array
                items:
                  type: string
                  enum:
                    - PEP
                    - PEP Level 1
                    - PEP Level 2
                    - PEP Level 3
                    - PEP Level 4
                    - Sanctions
                    - Adverse Media
                    - Warnings and Regulatory Enforcement
                    - Fitness and Probity
                    - SIP
                    - SIE
                    - Insolvency
                    - Other Lists
                description: >-
                  Daftar kategori himpunan data tempat kecocokan ditemukan.
                  Menunjukkan apakah entitas muncul dalam daftar PEP (dengan
                  tingkat), database sanksi, media negatif, peringatan/penegakan
                  regulasi, atau himpunan data kepatuhan lainnya. `Other Lists`
                  jika sumber entitas tidak menyebutkan salah satu dari kategori
                  ini.
              features:
                type: object
                nullable: true
                description: Fitur tambahan dari kecocokan
              rca_name:
                type: string
                description: Nama RCA jika berlaku
              last_seen:
                type: string
                format: date-time
                description: Tanggal saat kecocokan terakhir terlihat
              risk_view:
                type: object
                properties:
                  crimes:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  countries:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  categories:
                    type: object
                    properties:
                      score:
                        type: integer
                      weightage:
                        type: integer
                      risk_level:
                        type: string
                      risk_scores:
                        type: object
                  custom_list:
                    type: object
              first_seen:
                type: string
                format: date-time
                description: Tanggal saat kecocokan pertama kali terlihat
              properties:
                type: object
                properties:
                  name:
                    type: array
                    items:
                      type: string
                  alias:
                    type: array
                    items:
                      type: string
                  notes:
                    type: array
                    items:
                      type: string
                  title:
                    type: string
                    nullable: true
                  gender:
                    type: array
                    items:
                      type: string
                  height:
                    type: string
                    nullable: true
                  topics:
                    type: string
                    nullable: true
                  weight:
                    type: string
                    nullable: true
                  address:
                    type: string
                    nullable: true
                  country:
                    type: string
                    nullable: true
                  website:
                    type: string
                    nullable: true
                  eyeColor:
                    type: string
                    nullable: true
                  keywords:
                    type: string
                    nullable: true
                  lastName:
                    type: array
                    items:
                      type: string
                  position:
                    type: string
                    nullable: true
                  religion:
                    type: string
                    nullable: true
                  birthDate:
                    type: array
                    items:
                      type: string
                  education:
                    type: array
                    items:
                      type: string
                  ethnicity:
                    type: string
                    nullable: true
                  firstName:
                    type: array
                    items:
                      type: string
                  hairColor:
                    type: string
                    nullable: true
                  weakAlias:
                    type: string
                    nullable: true
                  birthPlace:
                    type: array
                    items:
                      type: string
                  modifiedAt:
                    type: string
                    nullable: true
                  wikidataId:
                    type: string
                    nullable: true
                  citizenship:
                    type: string
                    nullable: true
                  nationality:
                    type: string
                    nullable: true
              match_score:
                type: number
                description: >-
                  Skor keyakinan identitas berbobot (0-100) yang dihitung dari
                  kemiripan nama, tanggal lahir, dan pencocokan negara.
                  Digunakan untuk menentukan apakah kecocokan merupakan Positif
                  Palsu atau Kemungkinan Cocok.
                format: float
                nullable: true
              risk_score:
                type: number
                description: >-
                  Skor risiko entitas (0-100). Digunakan untuk menentukan status
                  AML akhir (Approved/In Review/Declined) berdasarkan risk_score
                  tertinggi di antara kecocokan yang bukan positif palsu.
              review_status:
                type: string
                description: >-
                  Status peninjauan untuk hasil pencocokan ini. Dapat berupa
                  'Unreviewed', 'Confirmed Match', 'False Positive', atau
                  'Inconclusive'.
                enum:
                  - Unreviewed
                  - Confirmed Match
                  - False Positive
                  - Inconclusive
              score_breakdown:
                type: object
                description: Rincian mendetail tentang bagaimana match_score dihitung.
                properties:
                  name_score:
                    type: integer
                    description: Persentase kemiripan nama mentah (0-100).
                  name_weight:
                    type: integer
                    description: Bobot asli untuk nama dari konfigurasi (0-100).
                  name_weight_normalized:
                    type: number
                    description: >-
                      Bobot yang dinormalisasi untuk nama setelah pembobotan
                      ulang untuk data yang hilang (0-100).
                  name_contribution:
                    type: number
                    description: Poin yang dikontribusikan oleh nama ke skor total.
                  dob_score:
                    type: integer
                    description: Skor kecocokan DOB (-100 hingga 100).
                  dob_weight:
                    type: integer
                    description: Bobot asli untuk tanggal lahir dari konfigurasi (0-100).
                  dob_weight_normalized:
                    type: number
                    description: >-
                      Bobot yang dinormalisasi untuk DOB setelah pembobotan
                      ulang untuk data yang hilang (0-100).
                  dob_contribution:
                    type: number
                    description: >-
                      Poin yang dikontribusikan oleh tanggal lahir ke skor
                      total.
                  country_score:
                    type: integer
                    description: Skor kecocokan negara (-100 hingga 100).
                  country_weight:
                    type: integer
                    description: Bobot asli untuk negara dari konfigurasi (0-100).
                  country_weight_normalized:
                    type: number
                    description: >-
                      Bobot yang dinormalisasi untuk negara setelah pembobotan
                      ulang untuk data yang hilang (0-100).
                  country_contribution:
                    type: number
                    description: Poin yang dikontribusikan oleh negara ke skor total.
                  document_number_match_type:
                    type: string
                    description: Hasil evaluasi 'Golden Key' untuk nomor dokumen.
                    enum:
                      - MATCH
                      - NEUTRAL
                      - HARD_MISMATCH
                  document_number_effect:
                    type: string
                    description: >-
                      Deskripsi yang mudah dibaca manusia mengenai pengaruh
                      nomor dokumen terhadap skor.
                  total_score:
                    type: integer
                    description: Skor kecocokan berbobot akhir (0-100).
              pep_matches:
                type: array
                items:
                  type: object
                  properties:
                    aliases:
                      type: array
                      items:
                        type: string
                    education:
                      type: array
                      items:
                        type: string
                    list_name:
                      type: string
                    publisher:
                      type: string
                    source_url:
                      type: string
                      format: uri
                    description:
                      type: string
                    matched_name:
                      type: string
                    pep_position:
                      type: string
                    date_of_birth:
                      type: string
                    other_sources:
                      type: array
                      items:
                        type: string
                    place_of_birth:
                      type: string
              linked_entities:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: array
                      items:
                        type: string
                    active:
                      type: array
                      items:
                        type: string
                    status:
                      type: array
                      items:
                        type: string
                    details:
                      type: array
                      items:
                        type: string
                    relation:
                      type: array
                      items:
                        type: string
              warning_matches:
                type: array
                description: >-
                  Daftar kecocokan peringatan dan penegakan regulasi. Termasuk
                  entri dari kategori: Warning, SIP, Warnings and Regulatory
                  Enforcement, Fitness and Probity, SIE, dan Insolvency.
                items:
                  type: object
                  properties:
                    list_name:
                      type: string
                      description: Nama penerbit daftar peringatan
                    matched_name:
                      type: string
                      description: Nama yang cocok dengan daftar peringatan
                    description:
                      type: string
                      description: Deskripsi entri peringatan
                    publisher:
                      type: string
                      description: Penerbit atau sumber peringatan
                    source_url:
                      type: string
                      format: uri
                      description: URL sumber peringatan
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: URL sumber tambahan
                    countries:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Negara yang terkait dengan peringatan
                    created_at:
                      type: string
                      nullable: true
                      description: Tanggal entri peringatan dibuat
                    updated_at:
                      type: string
                      nullable: true
                      description: Tanggal entri peringatan terakhir diperbarui
                    additional_data:
                      type: object
                      description: >-
                        Data tambahan dari sumber peringatan. Dapat berisi objek
                        `data` dengan array `case_details`.
                      properties:
                        data:
                          type: object
                          properties:
                            case_details:
                              type: array
                              description: >-
                                Rincian kasus peringatan yang terkait dengan
                                kecocokan ini
                              items:
                                type: object
                                properties:
                                  case_type:
                                    type: string
                                    description: Jenis kasus peringatan
                                    enum:
                                      - Accusation
                                      - Arrest
                                      - Bribery
                                      - Criminal
                                      - Fraud
                                      - Illegal Fundraising
                                      - Non-conviction Terror
                                      - Proclaimed Offender
                                      - Regulatory Enforcement
                                      - Terrorism
                                      - Terrorism-related
                                      - Terrorism-related listing
              sanction_matches:
                type: array
                description: >-
                  Daftar kecocokan daftar sanksi yang ditemukan untuk entitas
                  ini.
                items:
                  type: object
                  properties:
                    list_name:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Nama daftar sanksi
                    matched_name:
                      type: string
                      description: Nama yang cocok dengan daftar sanksi
                    description:
                      type: string
                      description: Deskripsi entri sanksi
                    reason:
                      type: string
                      nullable: true
                      description: >-
                        Alasan teks bebas mengapa entitas tersebut dikenai
                        sanksi. Digabungkan dari entri alasan daftar sanksi.
                        Contoh: 'Executive Order 13224 (Terrorism)', 'Support
                        for actions undermining Ukraine's sovereignty', 'Listed
                        due to national security concerns.'
                    source_url:
                      type: string
                      format: uri
                      description: URL sumber sanksi
                    other_sources:
                      type: array
                      items:
                        type: string
                      description: URL sumber tambahan
                    details:
                      type: array
                      items:
                        type: string
                      description: Detail tambahan tentang sanksi
                    legal_basis:
                      type: array
                      items:
                        type: string
                      description: Dasar hukum untuk sanksi
                    listed_on:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Tanggal entitas dimasukkan ke dalam daftar
                    sanction_list:
                      type: array
                      items:
                        type: string
                      nullable: true
                      description: Pengidentifikasi daftar sanksi
                    sanction_program:
                      type: array
                      items:
                        type: string
                      description: Program sanksi yang mencantumkan entitas
                    sanctioning_authority:
                      type: array
                      items:
                        type: string
                      description: Otoritas yang memberlakukan sanksi
                    updated_on:
                      type: array
                      items:
                        type: string
                      description: Tanggal saat entri sanksi terakhir diperbarui
                    additional_data:
                      type: object
                      description: >-
                        Data tambahan dari sumber sanksi yang tidak tercakup
                        dalam kolom utama
              adverse_media_details:
                type: object
                properties:
                  sentiment:
                    type: string
                  entity_type:
                    type: string
                  sentiment_score:
                    type: integer
                  adverse_keywords:
                    type: object
                    additionalProperties:
                      type: integer
              adverse_media_matches:
                type: array
                items:
                  type: object
                  properties:
                    country:
                      type: string
                    summary:
                      type: string
                    headline:
                      type: string
                    sentiment:
                      type: string
                    thumbnail:
                      type: string
                      format: uri
                    source_url:
                      type: string
                      format: uri
                    author_name:
                      type: string
                      nullable: true
                    other_sources:
                      type: array
                      items:
                        type: string
                    adverse_keywords:
                      type: array
                      items:
                        type: string
                    sentiment_score:
                      type: integer
                    publication_date:
                      type: string
                      format: date-time
              additional_information:
                type: object
        score:
          type: number
          format: float
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            Skor skrining AML keseluruhan — skor risiko tertinggi di semua hit
            (float, 0-100). `null` hingga dihitung.
        screened_data:
          type: object
          properties:
            full_name:
              type: string
            nationality:
              type: string
            date_of_birth:
              type: string
              format: date
            document_number:
              type: string
              nullable: true
        is_ongoing_monitoring_enabled:
          type: boolean
          description: >-
            Menentukan apakah Pemantauan AML Berkelanjutan diaktifkan untuk
            skrining ini. Jika `true`, entitas diskrining ulang secara berkala
            dan setiap kecocokan baru akan memperbarui laporan.
        next_ongoing_monitoring_bill_date:
          type: string
          format: date
          nullable: true
          description: >-
            Tanggal (YYYY-MM-DD) saat langganan pemantauan berkelanjutan ini
            akan ditagih berikutnya. Dihitung sebagai tanggal penagihan
            pemantauan berkelanjutan terakhir ditambah 365 hari ketika
            `is_ongoing_monitoring_enabled = true`; jika tidak, bernilai `null`.
            Ini adalah tanggal penagihan, bukan tanggal skrining - gunakan
            `last_ongoing_screening_at` untuk itu.
        last_ongoing_screening_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Waktu ketika pemantauan berkelanjutan terakhir kali menyelesaikan
            skrining ulang terhadap rekaman ini, terlepas dari apakah hasilnya
            berubah atau tidak. `null` jika rekaman belum pernah diskrining
            ulang; nilai ini tidak pernah diisi surut dari tanggal pengaktifan
            atau penagihan.
        last_ongoing_screening_datasets_updated_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Tanggal pembaruan himpunan data AML terbaru yang dilaporkan penyedia
            pada saat skrining tersebut. `null` jika penyedia tidak melaporkan
            tanggal himpunan data; tidak pernah diperkirakan.
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  Fitur yang menghasilkan peringatan ini. Nilai ini
                  mengidentifikasi blok fitur tempat peringatan tersebut berada.
                  Dalam Skrining AML, nilai ini biasanya `AML`, tetapi enum di
                  atas bersifat otoritatif di semua peringatan fitur pada
                  payload keputusan.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: ID node graf alur kerja yang menghasilkan peringatan ini
    GeolocationCheck:
      type: object
      description: >-
        Satu hasil verifikasi Lokasi, upaya yang diterima dari satu node alur
        kerja. Pengukuran, ketidakpastian, dan keaslian adalah kunci terpisah,
        sehingga hasil penentuan lokasi yang presisi dan belum teratestasi
        terbaca secara berbeda dari hasil penentuan lokasi yang tidak presisi
        dan telah teratestasi.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Node alur kerja yang menghasilkan hasil ini, sehingga alur kerja
            dengan dua langkah verifikasi Lokasi tetap mudah dibaca.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Status tingkat fitur dari langkah verifikasi Lokasi ini, ditentukan
            berdasarkan peringatannya. Tidak bergantung pada `status` sesi.
        outcome:
          type: string
          nullable: true
          description: Hal yang terjadi pada upaya ini.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            Izin apa yang diberikan oleh sistem operasi atau browser.
            `not_requested` berarti langkah tersebut hanya menggunakan lokasi IP
            koneksi, sehingga orang tersebut tidak pernah dimintai izin.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: Lintang WGS84 dari lokasi. `null` jika tidak ada lokasi.
          format: double
        longitude:
          type: number
          nullable: true
          description: Bujur WGS84 dari lokasi. `null` jika tidak ada lokasi.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Radius ketidakpastian dalam meter, sesuai tingkat keyakinan yang
            ditentukan dalam `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Tingkat keyakinan yang ditetapkan platform ke `accuracy_m`: `p95`
            (browser), `p68` (Android), atau `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: Waktu ketika perangkat memperoleh posisi, menurut jamnya sendiri.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: Detik antara perangkat memperoleh data lokasi dan Didit menerimanya.
        source:
          type: string
          nullable: true
          description: >-
            Dari mana lokasi tersebut berasal, jika platform menyatakannya. `ip`
            berarti posisinya adalah lokasi IP koneksi.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: Klien yang menghasilkan perbaikan tersebut.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Versi SDK yang menghasilkan perbaikan tersebut.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true` saat perangkat menyatakan bahwa lokasi berasal dari penyedia
            lokasi tiruan atau perangkat lunak simulasi. `null` saat platform
            tidak melaporkannya (browser tidak dapat membedakannya); `null`
            bukan `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Khusus iOS: `true` jika perbaikan berasal dari aksesori eksternal.
            `null` untuk kasus lainnya.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Menentukan apakah atestasi perangkat mendukung perbaikan tersebut.
            `unsupported` adalah apa yang dilaporkan browser, karena web tidak
            memiliki mekanisme atestasi; ini bukan sebuah kegagalan.
        country_code:
          type: string
          nullable: true
          description: Negara ISO 3166-1 alpha-2 tempat perbaikan berada.
        region_code:
          type: string
          nullable: true
          description: Subdivisi ISO 3166-2 tempat perbaikan berada.
        city:
          type: string
          nullable: true
          description: Tempat berpenduduk terdekat, label untuk peninjau.
        geofence:
          type: object
          description: Hasil aturan negara dan wilayah dari langkah ini.
          properties:
            enabled:
              type: boolean
              description: Apakah langkah tersebut menerapkan aturan negara atau wilayah.
            result:
              type: string
              nullable: true
              description: >-
                Posisi relatif terhadap aturan. `undetermined` berarti lingkaran
                akurasi melintasi perbatasan atau posisi tidak terpetakan ke
                negara mana pun; ini bukan bukti berada di luar.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true` jika `geofence.result` adalah `inside`, `false` jika
            `outside`, `null` jika sebaliknya.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            Posisi mana yang digunakan untuk menilai hasil area: posisi
            `device`, atau lokasi `ip` koneksi.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: >-
            Id area yang diizinkan yang terkonfigurasi tempat posisi berada di
            dalamnya.
        blocked_areas:
          type: array
          items:
            type: string
          description: >-
            Id area terblokir yang terkonfigurasi tempat posisi berada di
            dalamnya.
        position_source:
          type: string
          nullable: true
          description: >-
            Asal pengambilan posisi oleh langkah tersebut, sesuai konfigurasi:
            perangkat diperiksa terhadap lokasi IP, perangkat saja, atau lokasi
            IP saja.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Seperti apa kondisi koneksi dan perangkat, masing-masing bernilai
            `true`, `false`, atau `null` jika sumber tidak dapat memastikannya.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: >-
            Jarak ke lokasi IP sesi setelah kedua radius ketidakpastian
            dikurangkan; `0` jika keduanya tumpang tindih.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Radius gabungan yang dikurangkan: radius lokasi IP ditambah akurasi
            penetapan lokasi ini.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Menentukan apakah `ip_distance_km` berada dalam jarak yang
            dikonfigurasi pada langkah tersebut. `null` jika salah satu sisi
            tidak diketahui.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Jarak ke alamat ber-geocode pada dokumen identitas atau bukti
            alamat. `null` jika tidak ada alamat yang tersimpan.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Apakah toleransi perjalanan pada langkah tersebut memaklumi jarak
            dari alamat. Bernilai `null` saat toleransi dinonaktifkan.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Pada upaya terakhir: pemeriksaan ini ditambah ketidakcocokan
            sebelumnya dari orang yang sama secara berturut-turut.
        attempts:
          type: integer
          description: Nomor percobaan ini di dalam node, dimulai dari 1.
        consent:
          type: object
          nullable: true
          description: >-
            Persetujuan yang diberikan orang tersebut sebelum perintah sistem,
            dicatat bersama versi redaksi dan bahasa yang mereka lihat.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        warnings:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
                enum:
                  - ID_VERIFICATION
                  - NFC
                  - LIVENESS
                  - FACEMATCH
                  - PROOF_OF_ADDRESS
                  - PHONE
                  - EMAIL
                  - AML
                  - LOCATION
                  - DATABASE_VALIDATION
                  - QUESTIONNAIRE
                  - DOCUMENT_AI
                  - KYB_REGISTRY
                  - KYB_DOCUMENTS
                  - KYB_KEY_PEOPLE
                  - GEOLOCATION
                  - SIGNATURE
                description: >-
                  Fitur yang menghasilkan peringatan ini. Nilai ini
                  mengidentifikasi blok fitur tempat peringatan tersebut berada.
                  Array peringatan setiap modul biasanya menggunakan nilai yang
                  cocok dengan modulnya (misalnya `PHONE` di dalam
                  `phone_verifications[].warnings`), tetapi enum di atas
                  bersifat otoritatif di semua peringatan fitur pada payload
                  keputusan.
              risk:
                type: string
              additional_data:
                type: object
                nullable: true
              log_type:
                type: string
              short_description:
                type: string
              long_description:
                type: string
              node_id:
                type: string
                description: ID node graf alur kerja yang menghasilkan peringatan ini
          description: >-
            Peringatan yang dimunculkan oleh langkah verifikasi Lokasi ini,
            dengan `feature` yang diatur ke `GEOLOCATION`. Kode peringatan
            dimulai dengan `LOCATION_`.
    GeolocationAttempt:
      type: object
      description: >-
        Satu percobaan langkah verifikasi Lokasi: kunci yang sama dengan
        `geolocation_checks[]` kecuali `warnings`, ditambah waktu saat Didit
        menerimanya.
      properties:
        node_id:
          type: string
          nullable: true
          description: >-
            Node alur kerja yang menghasilkan hasil ini, sehingga alur kerja
            dengan dua langkah verifikasi Lokasi tetap mudah dibaca.
        status:
          type: string
          enum:
            - Not Finished
            - Approved
            - Declined
            - In Review
            - Resub Requested
          description: >-
            Status tingkat fitur dari langkah verifikasi Lokasi ini, ditentukan
            berdasarkan peringatannya. Tidak bergantung pada `status` sesi.
        outcome:
          type: string
          nullable: true
          description: Hal yang terjadi pada upaya ini.
          enum:
            - verified
            - low_accuracy
            - accuracy_undetermined
            - stale
            - approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - mock_detected
            - outside_geofence
            - in_blocked_area
            - anonymizer_detected
            - skipped
            - replay_rejected
            - unsupported_client
            - null
        permission:
          type: string
          nullable: true
          description: >-
            Izin apa yang diberikan oleh sistem operasi atau browser.
            `not_requested` berarti langkah tersebut hanya menggunakan lokasi IP
            koneksi, sehingga orang tersebut tidak pernah dimintai izin.
          enum:
            - granted_precise
            - granted_approximate
            - denied
            - restricted
            - unavailable
            - timeout
            - dismissed
            - not_requested
            - null
        latitude:
          type: number
          nullable: true
          description: Lintang WGS84 dari lokasi. `null` jika tidak ada lokasi.
          format: double
        longitude:
          type: number
          nullable: true
          description: Bujur WGS84 dari lokasi. `null` jika tidak ada lokasi.
          format: double
        accuracy_m:
          type: number
          nullable: true
          description: >-
            Radius ketidakpastian dalam meter, sesuai tingkat keyakinan yang
            ditentukan dalam `accuracy_confidence`.
          format: double
        accuracy_confidence:
          type: string
          nullable: true
          description: >-
            Tingkat keyakinan yang ditetapkan platform ke `accuracy_m`: `p95`
            (browser), `p68` (Android), atau `unspecified` (iOS).
          enum:
            - p95
            - p68
            - unspecified
            - null
        measured_at:
          type: string
          nullable: true
          description: Waktu ketika perangkat memperoleh posisi, menurut jamnya sendiri.
          format: date-time
        age_seconds:
          type: integer
          nullable: true
          description: Detik antara perangkat memperoleh data lokasi dan Didit menerimanya.
        source:
          type: string
          nullable: true
          description: >-
            Dari mana lokasi tersebut berasal, jika platform menyatakannya. `ip`
            berarti posisinya adalah lokasi IP koneksi.
          enum:
            - gps
            - fused
            - network
            - wifi
            - cell
            - browser
            - unknown
            - ip
            - null
        platform:
          type: string
          nullable: true
          description: Klien yang menghasilkan perbaikan tersebut.
          enum:
            - web
            - ios
            - android
            - react_native
            - flutter
            - null
        sdk_version:
          type: string
          nullable: true
          description: Versi SDK yang menghasilkan perbaikan tersebut.
        is_mock:
          type: boolean
          nullable: true
          description: >-
            `true` saat perangkat menyatakan bahwa lokasi berasal dari penyedia
            lokasi tiruan atau perangkat lunak simulasi. `null` saat platform
            tidak melaporkannya (browser tidak dapat membedakannya); `null`
            bukan `false`.
        produced_by_accessory:
          type: boolean
          nullable: true
          description: >-
            Khusus iOS: `true` jika perbaikan berasal dari aksesori eksternal.
            `null` untuk kasus lainnya.
        integrity:
          type: string
          enum:
            - attested
            - not_attested
            - failed
            - unsupported
            - not_determined
          description: >-
            Menentukan apakah atestasi perangkat mendukung perbaikan tersebut.
            `unsupported` adalah apa yang dilaporkan browser, karena web tidak
            memiliki mekanisme atestasi; ini bukan sebuah kegagalan.
        country_code:
          type: string
          nullable: true
          description: Negara ISO 3166-1 alpha-2 tempat perbaikan berada.
        region_code:
          type: string
          nullable: true
          description: Subdivisi ISO 3166-2 tempat perbaikan berada.
        city:
          type: string
          nullable: true
          description: Tempat berpenduduk terdekat, label untuk peninjau.
        geofence:
          type: object
          description: Hasil aturan negara dan wilayah dari langkah ini.
          properties:
            enabled:
              type: boolean
              description: Apakah langkah tersebut menerapkan aturan negara atau wilayah.
            result:
              type: string
              nullable: true
              description: >-
                Posisi relatif terhadap aturan. `undetermined` berarti lingkaran
                akurasi melintasi perbatasan atau posisi tidak terpetakan ke
                negara mana pun; ini bukan bukti berada di luar.
              enum:
                - inside
                - outside
                - undetermined
                - null
        inside_geofence:
          type: boolean
          nullable: true
          description: >-
            `true` jika `geofence.result` adalah `inside`, `false` jika
            `outside`, `null` jika sebaliknya.
        geofence_basis:
          type: string
          nullable: true
          description: >-
            Posisi mana yang digunakan untuk menilai hasil area: posisi
            `device`, atau lokasi `ip` koneksi.
          enum:
            - device
            - ip
            - null
        inside_areas:
          type: array
          items:
            type: string
          description: >-
            Id area yang diizinkan yang terkonfigurasi tempat posisi berada di
            dalamnya.
        blocked_areas:
          type: array
          items:
            type: string
          description: >-
            Id area terblokir yang terkonfigurasi tempat posisi berada di
            dalamnya.
        position_source:
          type: string
          nullable: true
          description: >-
            Asal pengambilan posisi oleh langkah tersebut, sesuai konfigurasi:
            perangkat diperiksa terhadap lokasi IP, perangkat saja, atau lokasi
            IP saja.
          enum:
            - device_and_ip
            - device_only
            - ip_only
            - null
        anonymizers:
          type: object
          nullable: true
          description: >-
            Seperti apa kondisi koneksi dan perangkat, masing-masing bernilai
            `true`, `false`, atau `null` jika sumber tidak dapat memastikannya.
          properties:
            vpn:
              type: boolean
              nullable: true
            proxy:
              type: boolean
              nullable: true
            tor:
              type: boolean
              nullable: true
            spoofing:
              type: boolean
              nullable: true
            emulator:
              type: boolean
              nullable: true
        ip_distance_km:
          type: number
          nullable: true
          description: >-
            Jarak ke lokasi IP sesi setelah kedua radius ketidakpastian
            dikurangkan; `0` jika keduanya tumpang tindih.
          format: double
        ip_distance_uncertainty_km:
          type: number
          nullable: true
          description: >-
            Radius gabungan yang dikurangkan: radius lokasi IP ditambah akurasi
            penetapan lokasi ini.
          format: double
        ip_consistent:
          type: boolean
          nullable: true
          description: >-
            Menentukan apakah `ip_distance_km` berada dalam jarak yang
            dikonfigurasi pada langkah tersebut. `null` jika salah satu sisi
            tidak diketahui.
        document_distance_km:
          type: number
          nullable: true
          description: >-
            Jarak ke alamat ber-geocode pada dokumen identitas atau bukti
            alamat. `null` jika tidak ada alamat yang tersimpan.
          format: double
        travel_excused:
          type: boolean
          nullable: true
          description: >-
            Apakah toleransi perjalanan pada langkah tersebut memaklumi jarak
            dari alamat. Bernilai `null` saat toleransi dinonaktifkan.
        consecutive_mismatches:
          type: integer
          nullable: true
          description: >-
            Pada upaya terakhir: pemeriksaan ini ditambah ketidakcocokan
            sebelumnya dari orang yang sama secara berturut-turut.
        attempts:
          type: integer
          description: Nomor percobaan ini di dalam node, dimulai dari 1.
        consent:
          type: object
          nullable: true
          description: >-
            Persetujuan yang diberikan orang tersebut sebelum perintah sistem,
            dicatat bersama versi redaksi dan bahasa yang mereka lihat.
          properties:
            accepted_at:
              type: string
              format: date-time
            version:
              type: string
              nullable: true
            locale:
              type: string
              nullable: true
        received_at:
          type: string
          nullable: true
          description: Waktu ketika Didit menerima upaya tersebut.
          format: date-time
        created_at:
          type: string
          format: date-time
    KYBRegistryShareholding:
      type: object
      nullable: true
      description: >-
        Apa yang dimiliki seorang pemilik, dalam format yang sama untuk setiap
        negara dan sumber registri. Null jika registri tidak menyatakan adanya
        kepemilikan. Rentang persentase (misalnya 25-50% pada PSC Inggris) bukan
        merupakan bagian kepemilikan: `percentage` bernilai null dan rentang
        tersebut tetap berada di `ownership_min_shares` /
        `ownership_max_shares`.
      properties:
        share_class:
          type: string
          nullable: true
          description: Kelas atau jenis saham sebagaimana dinamai oleh registri.
        number_of_shares:
          type: number
          nullable: true
          description: Jumlah saham yang dimiliki.
        currency:
          type: string
          nullable: true
          description: Mata uang ISO 4217 dari nilai di bawah.
        nominal_value:
          type: number
          nullable: true
          description: Nilai nominal per saham.
        total_value:
          type: number
          nullable: true
          description: Nilai total kepemilikan.
        percentage:
          type: number
          nullable: true
          description: Porsi kepemilikan persis dalam persen, hingga empat tempat desimal.
      required:
        - share_class
        - number_of_shares
        - currency
        - nominal_value
        - total_value
        - percentage
    KYBRegistryAddress:
      type: object
      description: >-
        Alamat yang dinyatakan oleh registri, dalam bentuk yang sama untuk
        setiap negara dan sumber registri. Setiap kunci selalu ada; bagian yang
        tidak dipublikasikan oleh registri bernilai null.
      properties:
        type:
          type: string
          nullable: true
          description: >-
            Jenis alamat dalam huruf kecil: `registered` untuk kantor terdaftar;
            jenis lain sebagaimana dinamai oleh registri (misalnya `postal`,
            `office`). `null` jika registri tidak menyebutkan jenis alamat
            tersebut.
        address:
          type: string
          description: Alamat lengkap dalam satu baris. Selalu ada pada setiap alamat.
        street:
          type: string
          nullable: true
          description: Jalan dan nomor.
        city:
          type: string
          nullable: true
          description: Kota atau lokalitas.
        postal_code:
          type: string
          nullable: true
          description: Kode pos.
        region:
          type: string
          nullable: true
          description: Wilayah, negara bagian, atau provinsi.
        country_code:
          type: string
          nullable: true
          description: Kode negara ISO 3166-1 alpha-2.
        description:
          type: string
          nullable: true
          description: >-
            Label milik registri sendiri untuk alamat tersebut, jika
            menyediakannya.
      required:
        - type
        - address
        - street
        - city
        - postal_code
        - region
        - country_code
        - description
    KYBRegistryIndustry:
      type: object
      description: >-
        Aktivitas yang diklasifikasikan oleh registri untuk perusahaan tersebut,
        dalam bentuk yang sama untuk setiap negara dan sumber registri.
      properties:
        code:
          type: string
          nullable: true
          description: >-
            Kode aktivitas sebagaimana yang tercetak pada registri (misalnya
            `73110`).
        description:
          type: string
          nullable: true
          description: Label aktivitas, jika registri menerbitkannya.
        scheme:
          type: string
          nullable: true
          description: >-
            Sistem klasifikasi, satu nama per sistem dari sumber mana pun yang
            melaporkannya: `UK SIC 2007`, `US SIC`, `NACE Rev. 2`, `NACE Rev.
            2.1`, `NAF Rev. 2`, `CNAE`, `SBI`, `NOGA 2008`, `CAE Rev. 4`,
            `Canada SIC 1977`; sistem nasional lainnya tetap menggunakan nama
            dari registri itu sendiri. Bernilai null jika registri tidak
            mencantumkan nama sistem.
        is_primary:
          type: boolean
          description: >-
            True untuk aktivitas utama perusahaan. Tepat satu entri bersifat
            primer saat daftar tidak kosong.
      required:
        - code
        - description
        - scheme
        - is_primary
    KYBRegistryData:
      type: object
      nullable: true
      description: >-
        Detail registri yang dinormalisasi Didit untuk perusahaan: hasil
        kepemilikan (`ownership_error`, `section_errors`, `ubo_resolution`,
        `lite_enrichment`), koreksi yang dilakukan dengan update-data, dan fakta
        registri yang tidak memiliki kolom tersendiri. Kolom ini tidak pernah
        memuat catatan asli dari sumber registri. Setiap kunci bersifat opsional
        dan hanya ada jika perusahaan memiliki nilai untuk kunci tersebut; kunci
        baru dapat ditambahkan. Baca kolom kanonikal (`addresses`, `industries`,
        `ownership`, `beneficial_owners[].shareholding`) untuk hal apa pun yang
        dicakupnya.
      properties:
        company_name:
          type: string
          description: Nama perusahaan sebagaimana dikoreksi di konsol.
        registration_number:
          type: string
          description: >-
            Nomor registrasi sebagaimana tercantum di registri atau koreksi
            konsol.
        country_code:
          type: string
          description: >-
            Negara registrasi sebagaimana dinyatakan oleh registri atau koreksi
            konsol.
        region:
          type: string
          description: Wilayah atau negara bagian dari registrasi.
        incorporation_date:
          type: string
          description: Tanggal pendirian (ISO 8601).
        registration_date:
          type: string
          description: >-
            Tanggal pendaftaran (ISO 8601) jika registri mencantumkan tanggal
            yang berbeda dari tanggal pendirian.
        dissolution_date:
          type: string
          description: Tanggal pembubaran (ISO 8601) jika registri menyediakannya.
        tax_number:
          type: string
          description: ID pajak.
        vat_number:
          type: string
          description: Nomor PPN.
        legal_address:
          type: string
          description: Alamat resmi seperti yang dikoreksi di konsol.
        registered_address:
          type: string
          description: Alamat terdaftar sesuai yang tercantum di registri.
        company_type:
          type: string
          description: Bentuk hukum.
        registry_status:
          type: string
          description: Status perusahaan di registri.
        verification_status:
          type: string
          description: Status verifikasi.
        alternative_names:
          type: string
          description: >-
            Nama lain yang digunakan atau pernah digunakan perusahaan untuk
            menjalankan bisnis.
        nature_of_business:
          type: string
          description: Deskripsi aktivitas.
        registered_capital:
          type: string
          description: Modal terdaftar seperti yang tercetak.
        registered_capital_amount:
          type: string
          description: Jumlah modal terdaftar, sebagai string desimal.
        registered_capital_currency:
          type: string
          description: Mata uang modal terdaftar (ISO 4217).
        website:
          type: string
          description: Situs web.
        email:
          type: string
          description: Email kontak.
        phone:
          type: string
          description: Telepon kontak.
        legal_entity_identifier:
          type: string
          description: Legal Entity Identifier (LEI).
        location_of_registration:
          type: string
          description: Tempat registrasi.
        control_scheme:
          type: string
          description: Skema tata kelola saat registri menampilkannya.
        ownership_error:
          type: string
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
          description: >-
            Alasan tingkat kepemilikan yang diminta tidak diberikan, dalam kode
            yang sama dengan `ownership.unavailable_reason`.
            `no_owners_on_record` (registri merespons dan tidak menyebutkan
            pemilik) dan `ownership_section_unavailable` (registri tidak
            mengembalikan bagian kepemilikan) merupakan temuan yang berbeda.
        section_errors:
          type: object
          description: >-
            Bagian yang tidak dikembalikan oleh registri, dengan kunci
            berdasarkan bagian (`officers`, `shareholders`, `group_structure`).
            Bagian yang tercantum di sini tidak pernah dikirimkan: daftar kosong
            di sampingnya tidak menunjukkan apa pun tentang perusahaan.
          additionalProperties:
            $ref: '#/components/schemas/KYBRegistrySectionError'
        ubo_resolution:
          $ref: '#/components/schemas/KYBRegistryUboResolution'
        lite_enrichment:
          $ref: '#/components/schemas/KYBRegistryLiteEnrichment'
        registry_metadata:
          type: object
          additionalProperties:
            oneOf:
              - type: string
              - type: number
              - type: boolean
          description: >-
            Kolom milik registri sendiri untuk perusahaan, dengan kunci sesuai
            penamaan registri, sebagai nilai biasa (rekaman lama). Hanya kolom
            yang ditinjau sebagai fakta registri yang disertakan.
        registry_sources:
          type: array
          description: >-
            Registri resmi tempat catatan dibaca (catatan lama). Sumber lain
            tidak disebutkan namanya.
          items:
            $ref: '#/components/schemas/KYBRegistrySource'
        previous_names:
          type: array
          items:
            type: string
          description: >-
            Nama yang pernah digunakan perusahaan saat terdaftar sebelumnya
            (catatan historis).
        parent_companies:
          type: array
          items:
            type: string
          description: Perusahaan induk yang dicantumkan oleh registri (catatan lama).
        documents_available:
          type: integer
          description: >-
            Berapa banyak pengajuan yang disediakan registri untuk perusahaan
            tersebut (catatan terdahulu).
    KYBRegistryOwnership:
      type: object
      description: >-
        Hasil dari tingkat kepemilikan (Pemegang Saham / UBO), dalam format yang
        sama untuk setiap negara dan sumber registri.
      properties:
        status:
          type: string
          nullable: true
          enum:
            - not_requested
            - pending
            - delivered
            - not_held
            - unavailable
            - null
          description: >-
            `delivered` saat registri memublikasikan kepemilikan; `not_held`
            saat registri kepemilikan merespons dan sama sekali tidak
            mencantumkan perusahaan tersebut (lihat `unavailable_reason`);
            `unavailable` saat registri tidak menyajikan data kepemilikan karena
            alasan lain apa pun (lihat `unavailable_reason`); `pending` saat
            registri masih mengambilnya; `not_requested` untuk tingkat Basic.
        tier_requested:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: Tingkat yang dipesan oleh alur kerja.
        tier_delivered:
          type: string
          nullable: true
          enum:
            - basic
            - shareholders
            - ubo
            - null
          description: >-
            Tingkat yang dikirimkan oleh registri (dan yang ditagihkan).
            Permintaan UBO yang dijawab hanya dengan pemegang saham langsung
            adalah `shareholders`.
        unavailable_reason:
          type: string
          nullable: true
          enum:
            - no_owners_on_record
            - no_natural_person_owner
            - ownership_section_unavailable
            - company_not_found
            - ambiguous_company_match
            - missing_registration_number
            - entity_type_not_covered
            - provider_unavailable
            - other
            - null
          description: >-
            Alasan tingkat kepemilikan yang diminta tidak diberikan. Bernilai
            null kecuali `status` adalah `unavailable` atau `pending`.
        direct_ownership_complete:
          type: boolean
          nullable: true
          description: >-
            True saat kepemilikan saham yang dinyatakan pemegang saham langsung
            berjumlah 100% (dalam batas pembulatan satu poin persentase); false
            jika tidak; null jika kepemilikan tidak dikirimkan atau besaran
            saham tidak dinyatakan.
        unresolved:
          type: array
          description: >-
            Bagian dari rantai kepemilikan yang tidak dapat diselesaikan oleh
            registri, misalnya tidak ada struktur grup yang tercatat di atas
            pemilik langsung.
          items:
            type: object
            properties:
              reason:
                type: string
              section:
                type: string
                nullable: true
      required:
        - status
        - tier_requested
        - tier_delivered
        - unavailable_reason
        - direct_ownership_complete
        - unresolved
    KYBOwnershipStructure:
      type: object
      nullable: true
      description: >-
        Cap table yang dibuktikan oleh registri, sesuai keadaannya saat tingkat
        kepemilikan dikirimkan: `shareholders` langsung dan `beneficial_owners`.
        Null jika registri tidak membuktikan kepemilikan apa pun. Ini tidak
        pernah membawa baris milik sumber registri itu sendiri; baca
        `company.beneficial_owners` dan `company.ownership` untuk catatan saat
        ini.
      properties:
        shareholders:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
        beneficial_owners:
          type: array
          items:
            $ref: '#/components/schemas/KYBOwnershipStructureOwner'
      required:
        - shareholders
        - beneficial_owners
    InvestigatorBlock:
      type: object
      nullable: true
      description: >-
        Peninjauan terbaru oleh peninjau untuk item tersebut, atau null jika
        belum pernah ditinjau. Disertakan oleh keputusan sesi V3 dan sesi bisnis
        (dan dengan demikian oleh webhook `status.updated`).
      properties:
        run_id:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - running
            - completed
            - failed
        stage:
          type: string
          enum:
            - shadow
            - live
        queue:
          type: string
          enum:
            - kyc
            - kyb
            - aml
            - transactions
            - cases
        is_open:
          type: boolean
        recommendation:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
          nullable: true
        recommendation_detail:
          type: string
          nullable: true
        confidence:
          type: string
          enum:
            - high
            - moderate
            - low
          nullable: true
        summary:
          type: string
          nullable: true
        ready_to_accept:
          type: boolean
        prepared_at:
          type: string
          format: date-time
          nullable: true
        automated:
          type: boolean
          description: >-
            Investigator memutuskan secara mandiri, meskipun keputusan tersebut
            kemudian dikesampingkan.
        decided_by:
          type: string
          enum:
            - investigator
            - member
          nullable: true
        decision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/InvestigatorDecision'
          type: object
    BiometricRetention:
      type: object
      description: Waktu data biometrik langsung dari sesi ini dihapus.
      required:
        - jurisdictions
        - deletes_at
      properties:
        jurisdictions:
          type: array
          items:
            type: string
          description: >-
            Kode negara bagian AS yang aturan biometriknya menetapkan batas
            penghapusan untuk orang ini (`US` jika negara bagian tidak
            diketahui). Kosong jika tidak ada yang berlaku.
        deletes_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Tanggal data biometrik langsung (gambar wajah dan templat) sesi ini
            dihapus, berdasarkan pengaturan retensi aplikasi Anda dan, jika
            berlaku, batas hukum untuk yurisdiksi individu tersebut. `null` jika
            belum ada tanggal yang berlaku.
    SocialFootprintPlatform:
      type: object
      properties:
        platform:
          type: string
          description: Pengenal platform.
          example: whatsapp
        category:
          type: string
          description: >-
            Kategori platform, mis. MESSAGING, SOCIAL_MEDIA, ECOMMERCE,
            PROFESSIONAL, EMAIL_PROVIDER.
          example: MESSAGING
        scope:
          type: string
          enum:
            - global
            - local
          description: >-
            `global` untuk platform di seluruh dunia, `local` untuk platform
            khusus kawasan tertentu.
          example: global
    SocialFootprintCategorySummary:
      type: object
      properties:
        registered:
          type: integer
          nullable: true
          description: Platform dalam kategori ini tempat pendaftaran dikonfirmasi.
          example: 2
        ratio:
          type: number
          format: float
          nullable: true
          description: >-
            Porsi platform yang diperiksa dalam kategori tersebut yang memiliki
            registrasi, 0.0-1.0.
          example: 0.6667
    SocialFootprintProfile:
      type: object
      properties:
        name:
          type: string
          nullable: true
          description: Nama profil, jika platform menampilkannya.
        photo:
          type: string
          nullable: true
          description: URL foto profil, jika platform menampilkannya.
        about:
          type: string
          nullable: true
          description: Teks tentang/bio profil, jika platform menampilkannya.
        privacy_status:
          type: string
          nullable: true
          enum:
            - PUBLIC
            - PRIVATE
            - null
          description: Visibilitas profil, jika platform menampilkannya.
        business_account:
          type: boolean
          nullable: true
          description: >-
            Apakah profil tersebut merupakan akun bisnis, jika platform
            menampilkannya.
    SignatureFieldResult:
      type: object
      description: >-
        Kolom dari dokumen yang ditandatangani, beserta nilainya pada salinan
        milik penanda tangan ini. Lihat
        [Kolom](/id/core-technology/electronic-signature/report-electronic-signature#kolom).
      properties:
        key:
          type: string
          description: Kunci kolom, seperti yang digunakan dalam `sign.field_values`.
        type:
          type: string
          enum:
            - signature
            - initials
            - full_name
            - date_signed
            - text
            - checkbox
            - email
            - data
        role:
          type: string
          enum:
            - verified_person
            - legal_representative
            - key_people
        label:
          type: string
        page:
          type: integer
          description: >-
            Nomor halaman, mulai dari 1. Untuk dokumen Word, halaman dari PDF
            yang dikonversi.
        x:
          type: number
          description: Tepi kiri, sebagai fraksi dari lebar halaman.
        'y':
          type: number
          description: Tepi atas, sebagai fraksi dari tinggi halaman.
        width:
          type: number
          description: Lebar, sebagai fraksi dari lebar halaman.
        height:
          type: number
          description: Tinggi, sebagai fraksi dari tinggi halaman.
        required:
          type: boolean
        value:
          nullable: true
          description: >-
            String untuk `text`, `email`, `full_name`, `date_signed`, dan
            `data`, boolean untuk `checkbox`, dan `true` untuk tanda tangan atau
            inisial yang dibubuhkan. `null` jika kosong.
        display_value:
          type: string
          nullable: true
          description: >-
            Nilai sebagaimana dicantumkan pada halaman: tanggal dalam
            `date_format` kolom tersebut, `Yes` atau `No` untuk kotak centang,
            `Signed` untuk tanda tangan atau inisial.
        value_source:
          type: string
          nullable: true
          enum:
            - signer
            - identity
            - contact
            - company
            - session
            - metadata
            - api
            - signing_time
            - null
          description: >-
            Asal nilai: `signer` (diketik, dicentang, atau diterapkan oleh
            penandatangan), `identity` (ID terverifikasi), `contact` (email atau
            telepon terverifikasi), `company` (perusahaan terverifikasi),
            `session` (`vendor_data`), `metadata`, `api` (`sign.field_values`),
            atau `signing_time` (tanggal ditandatangani).
        filled_at:
          type: string
          format: date-time
          nullable: true
        image_url:
          type: string
          nullable: true
          description: >-
            Hanya tanda tangan dan inisial: jalur gambar yang diterapkan. Lihat
            [Mengunduh gambar tanda
            tangan](/id/sessions-api/electronic-signature/download-field-image).
        value_unavailable_reason:
          type: string
          nullable: true
          enum:
            - source_empty
            - null
          description: >-
            `source_empty` saat kolom yang telah diisi sebelumnya tidak memiliki
            nilai di dalam sesi dan `signature_field_data_missing_action`
            mengizinkan penandatangan untuk tetap menandatangani.
    KYBRegistrySectionError:
      type: object
      description: Bagian yang tidak dikembalikan oleh registri.
      properties:
        status_code:
          type: integer
          nullable: true
          description: Status jawaban registri untuk bagian tersebut.
      required:
        - status_code
    KYBRegistryUboResolution:
      type: object
      description: >-
        Bagaimana tingkat UBO menelusuri rantai kepemilikan di atas perusahaan
        tersebut.
      properties:
        parent_chain:
          type: array
          description: Induk perusahaan dari induk utama hingga perusahaan.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        subsidiaries:
          type: array
          description: >-
            Perusahaan langsung di bawah perusahaan tersebut dalam grup
            perusahaannya.
          items:
            $ref: '#/components/schemas/KYBRegistryGroupCompany'
        unresolved:
          type: array
          description: >-
            Bagian dari rantai yang tidak dapat diselesaikan oleh registri
            (entri yang sama dengan `ownership.unresolved`).
          items:
            type: object
            properties:
              reason:
                type: string
                description: >-
                  Alasan, misalnya `no_group_structure_on_record`,
                  `selected_company_not_in_group_structure`, atau
                  `section_error`.
              section:
                type: string
                nullable: true
                description: Bagian yang terkait, misalnya `group_structure`.
            required:
              - reason
              - section
      required:
        - parent_chain
        - subsidiaries
        - unresolved
    KYBRegistryLiteEnrichment:
      type: object
      description: >-
        Kolom profil Lite kosong yang diisi oleh sumber registri negara tersebut
        yang lain. Sumber tersebut tidak disebutkan namanya.
      properties:
        fields:
          type: array
          items:
            type: string
          description: Kolom perusahaan yang telah diisi.
        people_added:
          type: integer
          description: Berapa banyak pejabat atau pemilik yang ditambahkan.
      required:
        - fields
        - people_added
    KYBRegistrySource:
      type: object
      description: >-
        Registri resmi tempat rekaman dibaca. Hanya registri resmi pemerintah,
        regulator, dan sistem pengidentifikasi resmi yang disebutkan; sumber
        lainnya diabaikan.
      properties:
        name:
          type: string
          description: Nama registri, misalnya `UK Companies House`.
        source_type:
          type: string
          enum:
            - official
          description: Selalu `official`.
      required:
        - name
        - source_type
    KYBOwnershipStructureOwner:
      type: object
      description: >-
        Satu pemilik dari snapshot kepemilikan: identitas registri dan porsi
        kepemilikan yang sama dengan `company.beneficial_owners[]`, serta
        `shareholding` kanonisnya.
      properties:
        name:
          type: string
          nullable: true
          description: Nama pemilik sebagaimana tercantum di registri.
        first_name:
          type: string
          nullable: true
          description: Nama depan, untuk perorangan, jika registri menyatakannya.
        last_name:
          type: string
          nullable: true
          description: Nama keluarga, untuk perorangan, jika dinyatakan oleh registri.
        date_of_birth:
          type: string
          nullable: true
          description: Tanggal lahir (ISO 8601) ketika registri mempublikasikannya.
        country_of_birth:
          type: string
          nullable: true
          description: Negara kelahiran saat registri mempublikasikannya.
        company_name:
          type: string
          nullable: true
          description: Nama perusahaan, untuk pemilik korporat.
        registration_number:
          type: string
          nullable: true
          description: Nomor registrasi, untuk pemilik korporat.
        entity_type:
          type: string
          nullable: true
          enum:
            - person
            - company
            - null
          description: Apakah pemiliknya adalah perorangan atau perusahaan.
        nationality:
          type: string
          nullable: true
          description: Kewarganegaraan saat registri menyatakannya.
        designation:
          type: string
          nullable: true
          description: Gelar atau peran pemilik sebagaimana tercantum dalam registri.
        roles:
          type: array
          items:
            type: string
          description: >-
            `shareholder` untuk pemegang saham langsung, `ubo` untuk pemilik
            manfaat.
        ownership_min_shares:
          type: string
          nullable: true
          description: >-
            Batas bawah porsi kepemilikan, dalam persen (sama dengan batas atas
            untuk porsi kepemilikan yang pasti).
        ownership_max_shares:
          type: string
          nullable: true
          description: Batas atas kepemilikan, dalam persen.
        voting_min_shares:
          type: string
          nullable: true
          description: Batas bawah hak suara, dalam persen.
        voting_max_shares:
          type: string
          nullable: true
          description: Batas atas hak suara, dalam persen.
        appointment_date:
          type: string
          nullable: true
          description: Tanggal kepemilikan atau pengangkatan dimulai (ISO 8601).
        is_active:
          type: boolean
          nullable: true
          description: False untuk mantan pemilik.
        shareholding:
          $ref: '#/components/schemas/KYBRegistryShareholding'
      required:
        - name
        - first_name
        - last_name
        - date_of_birth
        - country_of_birth
        - company_name
        - registration_number
        - entity_type
        - nationality
        - designation
        - roles
        - ownership_min_shares
        - ownership_max_shares
        - voting_min_shares
        - voting_max_shares
        - appointment_date
        - is_active
        - shareholding
    InvestigatorDecision:
      type: object
      description: >-
        Bagaimana item meninggalkan antrean Investigator. `decided_by`,
        `original_outcome`, dan `overrides` dikembalikan oleh endpoint accept
        dan override serta laporan; blok `investigator` pada keputusan sesi
        memuat kolom-kolom lainnya.
      properties:
        outcome:
          type: string
          enum:
            - accepted
            - edited
            - overridden
            - decided_elsewhere
            - automated
          description: >-
            `accepted` atau `edited` menerima rekomendasi (`edited` dengan
            narasi yang ditulis ulang), `overridden` mengambil tindakan lain,
            `decided_elsewhere` adalah keputusan yang diambil di luar
            Investigator saat laporan masih terbuka, `automated` adalah
            keputusan yang diambil sendiri oleh Investigator.
        action:
          type: string
          enum:
            - approve
            - decline
            - escalate
            - request
        actor_email:
          type: string
          nullable: true
        actor_name:
          type: string
          nullable: true
        override_category:
          type: string
          enum:
            - missing_context
            - needs_information
            - policy_differs
            - evidence_misread
            - other
            - ''
          nullable: true
        override_reason:
          type: string
          nullable: true
        final_status:
          type: string
          description: Status item setelah keputusan.
        agreed:
          type: boolean
          description: Apakah keputusan sesuai dengan rekomendasi.
          nullable: true
        decided_at:
          type: string
          format: date-time
        billed:
          type: boolean
          description: Peninjauan telah ditagihkan.
        decided_by:
          type: string
          enum:
            - investigator
            - member
        original_outcome:
          type: object
          description: >-
            Keputusan yang diambil sendiri oleh Investigator, tidak diubah oleh
            penggantian berikutnya. Null untuk keputusan yang diambil oleh tim.
          properties:
            action:
              type: string
            final_status:
              type: string
            decided_at:
              type: string
              format: date-time
          nullable: true
        overrides:
          type: array
          description: >-
            Setiap penggantian keputusan yang diambil sendiri oleh Penyelidik,
            yang terlama terlebih dahulu.
          items:
            type: object
            properties:
              action:
                type: string
              actor_email:
                type: string
                nullable: true
              actor_name:
                type: string
                nullable: true
              override_category:
                type: string
              override_reason:
                type: string
              previous_status:
                type: string
              final_status:
                type: string
              agreed:
                type: boolean
                nullable: true
              overridden_at:
                type: string
                format: date-time
    KYBRegistryGroupCompany:
      type: object
      description: Perusahaan dari grup korporasi, berdasarkan identitas registrinya.
      properties:
        name:
          type: string
          nullable: true
          description: Nama perusahaan.
        country_code:
          type: string
          nullable: true
          description: Negara registrasi.
        registration_number:
          type: string
          nullable: true
          description: Nomor registrasi.
      required:
        - name
        - country_code
        - registration_number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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