> ## 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 Pengecekan Fraud Didit

> Rencanakan dan jalankan pemeriksaan identitas, risiko kontak, pengayaan, dan jaringan terpilih dalam satu permintaan dengan Didit.

Kirim identifier yang diketik dan atribut identitas yang diklaim, pilih pemeriksaan yang akan dijalankan, lalu periksa setiap hasil secara terpisah.
Gunakan [Rencanakan Pemeriksaan Penipuan](https://docs.didit.me/id/standalone-apis/fraud-check-plan.md) terlebih dahulu untuk memeriksa persyaratan input dan perkiraan biaya.

## Pilih profil

Kunci `profile_version` agar default yang dipilih dan kebijakan keputusan terlihat jelas.
Profil default adalah `standard`, versi `2026-08-27`.
Versi `2026-09-14` menambahkan pengayaan sosial email dan nomor telepon yang bersifat opsional, serta mencatat setiap pemeriksaan yang selesai sebagai sesi Verifikasi Pengguna bawaan.
Pada versi tersebut, add-on berbayar bersifat opt-in.
Versi `2026-09-14.1` juga mengaktifkan pencarian identifier jaringan penipuan global untuk organisasi di paket Enterprise yang berbagi secara global.
Versi `2026-09-14.2` menambahkan pemeriksaan referensi opsional dari swafoto ke CPF untuk Brasil.
Versi sebelumnya tetap mempertahankan perilaku aslinya.

Profil yang berlaku saat ini mendukung risiko email, risiko nomor telepon, risiko IP, Validasi Database yang memenuhi syarat, dan riwayat jaringan privat aplikasi Anda.
Pengikatan identitas berbasis swafoto memerlukan versi `2026-09-14.2`.
Jika dipilih pada versi sebelumnya, respons akan mengembalikan `not_available_in_profile_version`.

## Klaim identitas dan konteks

Letakkan email, nomor telepon, dan pengidentifikasi pemerintah di `subject.identifiers`.
Pengidentifikasi pemerintah memerlukan negara penerbitnya; penerbit mungkin juga diperlukan jika nomornya hanya unik dalam suatu wilayah.
Letakkan nama, tanggal lahir, kewarganegaraan, dan alamat di `subject.attributes`.
Data ini adalah klaim untuk dibandingkan jika sumber yang dipilih mendukungnya, bukan fakta terverifikasi hanya karena data tersebut dikirim.

Gunakan `context` untuk alamat IP, user agent, tujuan, negara, dan pernyataan persetujuan yang diperlukan dari upaya verifikasi.
Ini memisahkan informasi tentang upaya verifikasi dari informasi tentang orang tersebut.
Untuk pemeriksaan biometrik yang didukung, berikan `subject.selfie` sebagai JPEG, PNG, atau WebP yang dienkode base64, hingga 6 MB.
Data URI gambar yang sesuai juga diterima.
Jangan kirim gambar referensi, URL jarak jauh, atau kunci penyimpanan.

## Swafoto dan pengidentifikasi yang diklaim

Pilih `biometric_identity`, kirim identifier `tax_number` Brasil dan swafoto, lalu pastikan `context.consent_obtained`.
Pemeriksaan referensi memeriksa apakah swafoto tersebut milik pemegang CPF yang diklaim.
Jika persetujuan tidak ada, respons akan mengembalikan `consent_required`, dan jika negaranya tidak didukung, respons akan mengembalikan `unsupported_region`.
Modul ini memiliki harga per pemeriksaan yang didasarkan pada tarif Validasi Database organisasi Anda; periksa paket Anda sebelum menjalankannya.

Ketika referensi memberikan jawaban, `identity_relationship.result` berupa `match`, `mismatch`, atau `inconclusive`.
Jawaban inconclusive memerlukan peninjauan dan tidak pernah diperlakukan sebagai mismatch.
Hasilnya hanya menetapkan hubungan antara swafoto dan CPF.
Hasil ini tidak memvalidasi nama atau tanggal lahir yang dikirim, tidak membuktikan liveness, dan tidak mencari wajah di internet atau jaringan penipuan global.
Nama dan tanggal lahir tetap berupa klaim kecuali sumber lain yang dipilih memberikan bukti untuk kolom tersebut.
Timeout dan error sumber adalah hasil yang tidak tersedia dan tidak ditagih.
Jawaban inconclusive yang telah selesai ditagih dengan tarif pemeriksaan referensi yang sama.
Swafoto tidak disertakan dalam hasil dan tidak disimpan sebagai media sesi oleh pemeriksaan ini.

## Pilih pemeriksaan

`checks.include` memilih modul, dan `checks.exclude` lebih diutamakan.
Daftar `include` yang kosong secara eksplisit menonaktifkan semua pekerjaan opsional; normalisasi tetap berjalan.
Jika `include` dihilangkan, digunakan default profil yang dikunci.
Pengayaan sosial email dan nomor telepon dipilih secara terpisah dengan `email_social` dan `phone_social`.
Keduanya memerlukan identifier yang valid dan cocok, dan tidak mengirim OTP.

```json theme={null}
{
  "profile_version": "2026-09-14.1",
  "client_reference": "review-attempt-001",
  "subject": {
    "identifiers": [
      { "type": "email", "value": "applicant@example.com" }
    ],
    "attributes": { "first_name": "Alex", "last_name": "Example" }
  },
  "checks": { "include": ["networks_same_org", "networks_cross_org", "email_risk"] }
}
```

## Baca hasil tanpa mencampuradukkannya

Setiap modul melaporkan status eksekusi, alasan, dan unit yang dapat ditagih.
`not_requested`, `excluded_by_caller`, `missing_required_input`, dan `source_unavailable` menggambarkan hasil yang berbeda.
Sumber yang tidak tersedia bukan ketidakcocokan identitas maupun hasil risiko nol.

`attribute_evidence` menggambarkan bukti tingkat kolom, sedangkan `risk` memisahkan dimensi identitas, kontak, perangkat, perilaku, dan jaringan penipuan.
Email, perangkat, atau identifier lain yang sama adalah koneksi yang teramati, bukan bukti bahwa dua akun dimiliki oleh orang yang sama atau bahwa terjadi penipuan.
`recommendation` adalah rekomendasi pemeriksaan tersebut; rekomendasi ini tidak mengubah status catatan lain.
Hasil pengayaan sosial muncul di `enrichment`, dengan hasil yang tidak tersedia dibedakan dari hasil yang selesai.

## Jaringan penipuan global

Pilih `networks_cross_org` untuk melakukan kueri terhadap identifier email, telepon, dan dokumen yang diberi namespace dengan benar yang didukung di jaringan bersama.
Pencarian ini memerlukan paket Enterprise dan mode berbagi organisasi Anda diatur ke `global`.
Tanpa keduanya, paket melaporkan modul dengan `available: false` dan `availability_reason: "entitlement_required"`, dan pemeriksaan yang memilih modul ini melewatinya dengan status `skipped` dan alasan `entitlement_required`.
Alasan yang sama berlaku jika Networks tidak diaktifkan untuk organisasi Anda.
Aplikasi sandbox tidak dibatasi oleh paket atau mode berbagi: dengan identifier yang didukung, modul berjalan dan mengembalikan hasil sampel yang kosong.
Pencarian menggunakan anggaran baca yang sudah ada milik organisasi dan mencatat log audit atas pembacaan tersebut.
Tidak ada biaya per pencarian.
Merencanakan pemeriksaan tidak melakukan kueri ke indeks bersama dan tidak menggunakan anggaran bacanya.

`network.cross_organization` berisi `signals_checked` dan `insights` gabungan yang diungkapkan saat pemeriksaan selesai.
Setiap insight berisi tipe sinyal, kelas hasil, jumlah kontributor, bucket kebaruan, dan kategori industri hanya jika pengungkapan diaktifkan.
Data ini tidak pernah mengidentifikasi organisasi lain, akun, orang, atau verifikasi lain.
Hasil di bawah ambang batas pengungkapan dihilangkan; daftar kosong tidak membuktikan tidak adanya riwayat penipuan.
Sinyal bersama yang diungkapkan memicu rekomendasi peninjauan, bukan penolakan otomatis atau kecocokan identitas.

Pencarian yang tidak tersedia melaporkan alasannya secara terpisah dari pencarian yang selesai tetapi kosong.
Jika organisasi Anda kemudian kehilangan akses lintas-organisasi, misalnya setelah perubahan paket atau ketika berbagi tidak lagi `global`, pengambilan hasil, percobaan ulang, dan detail sesi menyembunyikan agregat bersama beserta bukti risiko turunannya.
Rekomendasi asli tetap menjadi keputusan historis; pembacaan tidak mengubah status verifikasi.

## Sesi, percobaan ulang, dan biaya

`check_id` mengambil hasil tersimpan melalui [Dapatkan Fraud Check](https://docs.didit.me/id/standalone-apis/fraud-check-result.md).
Jika ada, `request_id` mengidentifikasi sesi verifikasi aslinya.
Versi `2026-09-14`, `2026-09-14.1`, dan `2026-09-14.2` selalu membuat sesi tersebut, termasuk ketika hanya riwayat jaringan privat yang dipilih.

Menggunakan kembali `client_reference` dengan isi permintaan yang sama mengembalikan hasil asli tanpa eksekusi atau biaya tambahan selama pemeriksaan tersebut masih ada.
Isi berbeda dengan referensi yang sama mengembalikan `409`.
Jika eksekusi masih berjalan, coba lagi permintaan yang sama setelah interval `Retry-After` pada respons.
Menghapus verifikasi terkait juga menghapus hasil Fraud Check; pengambilan selanjutnya mengembalikan `404`.
Pemeriksaan yang dihapus selama eksekusi tidak dapat menerbitkan hasil yang sudah selesai.

Harga berasal dari tarif prabayar atau kontrak organisasi Anda yang berlaku saat ini.
Modul yang tidak tersedia dan yang dilewati tidak ditagih, dan riwayat jaringan privat tidak dikenakan biaya per pemeriksaan.
Pemeriksaan sandbox menggunakan respons sampel tanpa panggilan pemasok berbayar maupun biaya.


## OpenAPI

````yaml id/openapi-25.json POST /v3/fraud/checks/
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/fraud/checks/:
    post:
      tags:
        - Fraud Check
      summary: Jalankan Pemeriksaan Penipuan
      description: >-
        Kirim satu atau beberapa pengenal bertipe dan terima normalisasi,
        pengayaan terbaru, validasi otoritatif jika negara dan jenis pengenal
        didukung, dimensi risiko independen, serta rekomendasi dalam satu
        respons.


        Profil ini mendukung pemeriksaan pengenal. Pengikatan identitas berbasis
        swafoto (`biometric_identity`) memerlukan profil versi `2026-09-14.2`
        dan CPF Brasil; modul ini hanya berjalan dengan persetujuan pengguna dan
        jika organisasi Anda berhak atas fitur tersebut. Versi sebelumnya
        melaporkannya sebagai `not_available_in_profile_version`. Modul yang
        tidak dapat berjalan dilaporkan dilewati dengan alasan deterministik;
        sumber yang tidak dapat memberikan jawaban tidak pernah dilaporkan
        sebagai ketidakcocokan identitas.
      operationId: create_fraud_check
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
            example:
              client_reference: review-attempt-001
              subject:
                identifiers:
                  - type: email
                    value: applicant@example.com
                attributes:
                  first_name: Alex
                  last_name: Example
              checks:
                include:
                  - networks_same_org
                  - networks_cross_org
                  - email_risk
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FraudCheckRequestRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudCheckResponse'
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudClientCredentialsErrorMessage'
          description: ''
        '403':
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/FraudClientCredentialsForbiddenErrorMessage
          description: ''
        '409':
          description: >-
            Konflik, dikembalikan tanpa biaya: `client_reference` telah
            digunakan dengan isi permintaan yang berbeda; pemeriksaan dengan
            `client_reference` yang sama masih berjalan (coba lagi setelah
            `Retry-After` detik dengan referensi yang sama); atau verifikasi
            yang menjadi tempat pencatatan pemeriksaan ini telah dihapus sebelum
            pemeriksaan selesai.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
              examples:
                different_body:
                  summary: Referensi digunakan kembali dengan body yang berbeda
                  value:
                    error: >-
                      client_reference has already been used with a different
                      request body.
                still_running:
                  summary: Pemeriksaan dengan referensi ini masih berjalan
                  value:
                    error: >-
                      A check with this client_reference is already running.
                      Retry with the same reference later.
                verification_deleted:
                  summary: Verifikasi dihapus sebelum pemeriksaan selesai
                  value:
                    error: This verification was deleted before the check completed.
          headers:
            Retry-After:
              description: >-
                Detik yang harus ditunggu sebelum mencoba lagi, dikirim saat
                pemeriksaan dengan `client_reference` yang sama masih berjalan.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.fraud_checks.create(
                client_reference="review-attempt-001",
                subject={
                    "identifiers": [{
                        "type": "email",
                        "value": "applicant@example.com",
                    }],
                    "attributes": {
                        "first_name": "Alex",
                        "last_name": "Example",
                    },
                },
                checks={
                    "include": ["networks_same_org", "networks_cross_org", "email_risk"],
                },
            )
            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.fraudChecks.create({
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              },
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FraudChecks.Create(ctx, didit.FraudCheckRequestRequest{\n\tClientReference: didit.String(\"review-attempt-001\"),\n\tSubject: didit.FraudCheckSubjectRequest{\n\t\tIdentifiers: []didit.FraudCheckIdentifierRequest{{\n\t\t\tType:  didit.FraudTypeEnum(\"email\"),\n\t\t\tValue: \"applicant@example.com\",\n\t\t}},\n\t\tAttributes: didit.Some(didit.FraudCheckAttributesRequest{\n\t\t\tFirstName: didit.String(\"Alex\"),\n\t\t\tLastName:  didit.String(\"Example\"),\n\t\t}),\n\t},\n\tChecks: didit.Some(didit.FraudCheckModuleSelectionRequest{\n\t\tInclude: didit.Some([]didit.FraudExcludeEnum{didit.FraudExcludeEnum(\"networks_same_org\"), didit.FraudExcludeEnum(\"networks_cross_org\"), didit.FraudExcludeEnum(\"email_risk\")}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.FraudCheckAttributesRequest;

            import me.didit.types.FraudCheckIdentifierRequest;

            import me.didit.types.FraudCheckModuleSelectionRequest;

            import me.didit.types.FraudCheckRequestRequest;

            import me.didit.types.FraudCheckSubjectRequest;

            import me.didit.types.FraudExcludeEnum;

            import me.didit.types.FraudTypeEnum;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.fraudChecks().create(FraudCheckRequestRequest.builder()
                    .clientReference("review-attempt-001")
                    .subject(FraudCheckSubjectRequest.builder()
                            .identifiers(List.of(FraudCheckIdentifierRequest.builder()
                                    .type(FraudTypeEnum.of("email"))
                                    .value("applicant@example.com")
                                    .build()))
                            .attributes(FraudCheckAttributesRequest.builder()
                                    .firstName("Alex")
                                    .lastName("Example")
                                    .build())
                            .build())
                    .checks(FraudCheckModuleSelectionRequest.builder()
                            .include(List.of(FraudExcludeEnum.of("networks_same_org"), FraudExcludeEnum.of("networks_cross_org"), FraudExcludeEnum.of("email_risk")))
                            .build())
                    .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->fraudChecks->create([
                'client_reference' => 'review-attempt-001',
                'subject' => [
                    'identifiers' => [[
                        'type' => 'email',
                        'value' => 'applicant@example.com',
                    ]],
                    'attributes' => [
                        'first_name' => 'Alex',
                        'last_name' => 'Example',
                    ],
                ],
                'checks' => [
                    'include' => ['networks_same_org', 'networks_cross_org', 'email_risk'],
                ],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.fraud_checks.create(
              client_reference: "review-attempt-001",
              subject: {
                identifiers: [{
                  type: "email",
                  value: "applicant@example.com",
                }],
                attributes: {
                  first_name: "Alex",
                  last_name: "Example",
                },
              },
              checks: {
                include: ["networks_same_org", "networks_cross_org", "email_risk"],
              }
            )
            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.FraudChecks.CreateAsync(new
            FraudCheckRequestRequest

            {
                ClientReference = "review-attempt-001",
                Subject = new()
                {
                    Identifiers = new FraudCheckIdentifierRequest[]
                    {
                        new()
                        {
                            Type = "email",
                            Value = "applicant@example.com",
                        },
                    },
                    Attributes = new FraudCheckAttributesRequest
                    {
                        FirstName = "Alex",
                        LastName = "Example",
                    },
                },
                Checks = new FraudCheckModuleSelectionRequest
                {
                    Include = new FraudExcludeEnum[] { "networks_same_org", "networks_cross_org", "email_risk" },
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    FraudCheckRequestRequest:
      type: object
      properties:
        client_reference:
          type: string
          minLength: 1
          description: >-
            Referensi Anda sendiri untuk pemeriksaan ini. Berfungsi ganda
            sebagai kunci idempotensi: menggunakannya kembali dengan isi
            permintaan yang sama akan mengembalikan pemeriksaan asli tanpa
            menjalankan atau menagih modul lagi; menggunakannya kembali dengan
            isi permintaan yang berbeda akan mengembalikan 409.
          maxLength: 255
        profile:
          type: string
          minLength: 1
          default: standard
          description: ID profil orkestrasi. Default ke profil `standard` Didit.
          maxLength: 64
        profile_version:
          type: string
          minLength: 1
          description: >-
            Sematkan versi profil yang dibekukan. Secara default menggunakan
            versi profil saat ini.
          maxLength: 32
        subject:
          $ref: '#/components/schemas/FraudCheckSubjectRequest'
        context:
          $ref: '#/components/schemas/FraudCheckContextRequest'
        checks:
          $ref: '#/components/schemas/FraudCheckModuleSelectionRequest'
        vendor_data:
          type: string
          maxLength: 1000
        metadata: {}
      required:
        - subject
    FraudCheckResponse:
      type: object
      properties:
        check_id:
          type: string
          format: uuid
        request_id:
          type: string
          format: uuid
          description: Sesi verifikasi native dibuat untuk pemeriksaan ini.
        client_reference:
          type: string
          nullable: true
        processing_status:
          $ref: '#/components/schemas/FraudProcessingStatusEnum'
        profile_id:
          type: string
        profile_version:
          type: string
        created_at:
          type: string
          format: date-time
        completed_at:
          type: string
          format: date-time
          nullable: true
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckInput'
        modules:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckModuleReport'
        attribute_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        compound_evidence:
          type: array
          items:
            type: object
            additionalProperties: {}
        risk:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckRisk'
        network:
          type: object
          additionalProperties: {}
        enrichment:
          type: object
          additionalProperties: {}
        identity_relationship:
          allOf:
            - $ref: '#/components/schemas/FraudCheckIdentityRelationship'
          nullable: true
        recommendation:
          $ref: '#/components/schemas/FraudRecommendationEnum'
        next_action:
          $ref: '#/components/schemas/FraudNextActionEnum'
        decision_reasons:
          type: array
          items:
            type: string
        coverage:
          type: object
          additionalProperties: {}
        usage:
          type: array
          items:
            type: object
            additionalProperties: {}
        vendor_data:
          type: string
          nullable: true
        metadata:
          nullable: true
      required:
        - attribute_evidence
        - check_id
        - client_reference
        - completed_at
        - compound_evidence
        - coverage
        - created_at
        - decision_reasons
        - inputs
        - modules
        - network
        - next_action
        - processing_status
        - profile_id
        - profile_version
        - recommendation
        - risk
        - usage
    FraudClientCredentialsErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: 'Authentication failed: Invalid client access token.'
    FraudClientCredentialsForbiddenErrorMessage:
      type: object
      properties:
        detail:
          type: string
          default: Forbidden - User doesn't have permission
    FraudCheckSubjectRequest:
      type: object
      properties:
        selfie:
          type: string
          minLength: 1
          description: >-
            Swafoto Base64 JPEG, PNG, atau WebP, hingga 6 MB. Tanpa gambar
            referensi atau URL.
          maxLength: 8388672
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/FraudCheckIdentifierRequest'
          description: Satu atau lebih pengenal bertipe. Satu saja sudah cukup.
          maxItems: 10
          minItems: 1
        attributes:
          $ref: '#/components/schemas/FraudCheckAttributesRequest'
      required:
        - identifiers
    FraudCheckContextRequest:
      type: object
      properties:
        ip_address:
          type: string
          minLength: 1
        user_agent:
          type: string
          maxLength: 512
        country:
          type: string
          description: >-
            Negara tempat subjek mengaku berada. Hanya kontekstual - tidak
            pernah menjadi bukti kepemilikan identitas.
          maxLength: 3
        purpose:
          type: string
          maxLength: 128
        consent_obtained:
          type: boolean
    FraudCheckModuleSelectionRequest:
      type: object
      properties:
        include:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
        exclude:
          type: array
          items:
            $ref: '#/components/schemas/FraudExcludeEnum'
    FraudProcessingStatusEnum:
      enum:
        - pending
        - running
        - completed
        - failed
      type: string
      description: |-
        * `pending` - Tertunda
        * `running` - Berjalan
        * `completed` - Selesai
        * `failed` - Gagal
    FraudCheckInput:
      type: object
      properties:
        reference:
          type: string
          description: Handle yang disunting untuk pengidentifikasi yang dikirimkan.
        type:
          $ref: '#/components/schemas/FraudTypeEnum'
        namespace:
          type: object
          additionalProperties: {}
        quality:
          type: string
        normalization:
          type: object
          additionalProperties: {}
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
      required:
        - availability
        - namespace
        - normalization
        - quality
        - reference
        - type
    FraudCheckModuleReport:
      type: object
      properties:
        module:
          $ref: '#/components/schemas/FraudExcludeEnum'
        status:
          $ref: '#/components/schemas/FraudStatusEnum'
        reason:
          type: string
          nullable: true
        latency_ms:
          type: integer
        freshness:
          type: string
          nullable: true
        billable_units:
          type: integer
      required:
        - billable_units
        - freshness
        - latency_ms
        - module
        - reason
        - status
    FraudCheckRisk:
      type: object
      properties:
        dimension:
          $ref: '#/components/schemas/FraudDimensionEnum'
        score:
          type: integer
          nullable: true
        band:
          $ref: '#/components/schemas/FraudBandEnum'
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        requested_but_unavailable:
          type: boolean
          description: >-
            True saat permintaan menyediakan semua yang dibutuhkan dimensi ini
            dan platform tetap tidak dapat menjawabnya. Pemeriksaan semacam itu
            tidak pernah direkomendasikan untuk disetujui hanya berdasarkan
            dimensi yang berhasil dijawab.
        reason_codes:
          type: array
          items:
            type: string
        evidence_indexes:
          type: array
          items:
            type: integer
      required:
        - availability
        - band
        - dimension
        - evidence_indexes
        - reason_codes
        - requested_but_unavailable
        - score
    FraudCheckIdentityRelationship:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/FraudResultEnum'
        reference_type:
          type: string
        country:
          type: string
        availability:
          $ref: '#/components/schemas/FraudAvailabilityEnum'
        reason_codes:
          type: array
          items:
            type: string
      required:
        - availability
        - country
        - reason_codes
        - reference_type
        - result
    FraudRecommendationEnum:
      enum:
        - approve
        - review
        - reject
      type: string
      description: |-
        * `approve` - Setujui
        * `review` - Tinjau
        * `reject` - Tolak
    FraudNextActionEnum:
      enum:
        - none
        - manual_review
        - step_up
        - resubmit_capture
      type: string
      description: |-
        * `none` - Tidak Ada
        * `manual_review` - Peninjauan Manual
        * `step_up` - Peningkatan Verifikasi
        * `resubmit_capture` - Kirim Ulang Pengambilan
    FraudCheckIdentifierRequest:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/FraudTypeEnum'
          description: |-
            Tipe pengenal. Menentukan kolom namespace mana yang wajib diisi.

            * `email` - Email
            * `phone` - Telepon
            * `national_id` - ID Nasional
            * `tax_number` - Nomor Pajak
            * `passport_number` - Nomor Paspor
            * `driving_licence_number` - Nomor SIM
            * `residence_permit_number` - Nomor Izin Tinggal
            * `voter_id` - ID Pemilih
            * `external_id` - ID Eksternal
        value:
          type: string
          minLength: 1
          description: Nilai pengidentifikasi, dalam format umum apa pun.
          maxLength: 255
        country:
          type: string
          description: >-
            Negara penerbit ISO-3166 alpha-2 atau alpha-3. Wajib untuk tipe
            pengenal pemerintah: digit yang sama mewakili orang yang berbeda di
            negara yang berbeda.
          maxLength: 3
        issuer:
          type: string
          description: >-
            Otoritas penerbit atau penerbit sub-nasional opsional, jika negara
            saja tidak unik.
          maxLength: 128
      required:
        - type
        - value
    FraudCheckAttributesRequest:
      type: object
      description: >-
        Atribut pendukung. Semua bersifat opsional; atribut ini memperluas
        cakupan modul.
      properties:
        first_name:
          type: string
          maxLength: 128
        last_name:
          type: string
          maxLength: 128
        full_name:
          type: string
          maxLength: 256
        date_of_birth:
          type: string
          format: date
        nationality:
          type: string
          maxLength: 3
        gender:
          type: string
          maxLength: 16
        address:
          type: string
          maxLength: 512
        city:
          type: string
          maxLength: 128
        state:
          type: string
          maxLength: 128
        postal_code:
          type: string
          maxLength: 32
    FraudExcludeEnum:
      enum:
        - normalization
        - email_risk
        - email_social
        - phone_social
        - phone_risk
        - ip_risk
        - database_validation
        - networks_same_org
        - networks_cross_org
        - biometric_identity
      type: string
      description: |-
        * `normalization` - Normalisasi
        * `email_risk` - Risiko Email
        * `email_social` - Sosial Email
        * `phone_social` - Sosial Telepon
        * `phone_risk` - Risiko Telepon
        * `ip_risk` - Risiko IP
        * `database_validation` - Validasi Database
        * `networks_same_org` - Jaringan Organisasi Sama
        * `networks_cross_org` - Jaringan Lintas Organisasi
        * `biometric_identity` - Identitas Biometrik
    FraudTypeEnum:
      enum:
        - email
        - phone
        - national_id
        - tax_number
        - passport_number
        - driving_licence_number
        - residence_permit_number
        - voter_id
        - external_id
      type: string
      description: |-
        * `email` - Email
        * `phone` - Telepon
        * `national_id` - ID Nasional
        * `tax_number` - Nomor Pajak
        * `passport_number` - Nomor Paspor
        * `driving_licence_number` - Nomor SIM
        * `residence_permit_number` - Nomor Izin Tinggal
        * `voter_id` - ID Pemilih
        * `external_id` - ID Eksternal
    FraudAvailabilityEnum:
      enum:
        - available
        - not_requested
        - no_reference
        - insufficient_history
        - unsupported_region
        - source_unavailable
      type: string
      description: |-
        * `available` - Tersedia
        * `not_requested` - Tidak Diminta
        * `no_reference` - Tidak Ada Referensi
        * `insufficient_history` - Riwayat Tidak Cukup
        * `unsupported_region` - Wilayah Tidak Didukung
        * `source_unavailable` - Sumber Tidak Tersedia
    FraudStatusEnum:
      enum:
        - planned
        - completed
        - skipped
        - failed
      type: string
      description: |-
        * `planned` - Direncanakan
        * `completed` - Selesai
        * `skipped` - Dilewati
        * `failed` - Gagal
    FraudDimensionEnum:
      enum:
        - identity
        - contact
        - device_network
        - behavioral
        - fraud_network
      type: string
      description: |-
        * `identity` - Identitas
        * `contact` - Kontak
        * `device_network` - Jaringan Perangkat
        * `behavioral` - Perilaku
        * `fraud_network` - Jaringan Penipuan
    FraudBandEnum:
      enum:
        - low
        - medium
        - high
        - unknown
      type: string
      description: |-
        * `low` - Rendah
        * `medium` - Sedang
        * `high` - Tinggi
        * `unknown` - Tidak Diketahui
    FraudResultEnum:
      enum:
        - match
        - mismatch
        - inconclusive
        - no_reference
      type: string
      description: |-
        * `match` - Cocok
        * `mismatch` - Tidak Cocok
        * `inconclusive` - Tidak Konklusif
        * `no_reference` - Tidak Ada Referensi
  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.
    BearerAuth:
      type: http
      scheme: bearer
      description: Token akses client-credentials milik aplikasi.

````

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