> ## 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 Penyelesaian Kasus (Resolve Case)

> Selesaikan kasus sebagai positif palsu atau ancaman valid dengan Didit. Pahami gating checklist, gating catatan wajib, dan staging 4-eyes.



Prompt API untuk Menyelesaikan Kasus
        Salin prompt ke papan klip



      
      

\<pre>

\`Resolve a case through the Management API.

Endpoint:
POST https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/resolve/

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

Request body:
\{"resolution": "FALSE_POSITIVE", "note": "Confirmed legitimate activity after reviewing documents."}
\- resolution is required: FALSE_POSITIVE (no concern found) | VALID_THREAT (concern confirmed) | INCONCLUSIVE | REQUIREMENTS_NOT_MET | REQUIREMENTS_SATISFIED.
\- note is required only when the case's blueprint has require_resolution_note enabled.
\- checker is optional and only for a blueprint with a four-eyes checker step: the user uuid of the member who must approve the resolution (the same id as assigned_to.uuid on a case, or members[].user_id on a review team). Omit it or send null to leave the resolution to the checker queue.

Behavior:
\- Blocked with 400 if the blueprint's checklist is not optional and any item is incomplete - response lists the incomplete item labels.
\- Blocked with 400 if the blueprint requires a note and none was given.
\- If the blueprint has a four_eyes_checker_blueprint configured, the resolution is staged (case.pending_resolution) and the case moves to that checker blueprint's queue instead of closing - status stays OPEN. A different user must then call approve or reject-approval.
\- Submit a four-eyes resolution as a console member. A resolution an API key submits has no recorded maker (pending_resolution.maker_email is null), so approve and reject-approval return 403 {"detail": "Case has no recorded maker for this pending resolution; approve is not permitted."} for every caller.
\- Otherwise the case closes immediately: status becomes RESOLVED, resolved_at and resolved_by_email are set.
\- On a four-eyes blueprint with checker, only that member can approve or reject the staged resolution, and the response's checker {member_uuid, name, email} names them. Any other caller, including an API key, gets 403 on approve and reject-approval. Without checker, the response's checker is null and the checker blueprint's queue decides.

Example call:
curl -X POST "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/resolve/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"resolution": "FALSE_POSITIVE", "note": "Confirmed legitimate activity."}'

Response 200: CaseDetail. Check pending_resolution to tell staged-for-approval apart from a completed resolution.

Failure modes:
\- 400 - incomplete checklist, or missing required note (a list of strings).
\- 400 - when checker is sent, in the order they fire:
\- ["Reviewer access could not be verified. Try again."] or ["Choose an active reviewer with case access to this application."] - the member could not be checked, or is not an active reviewer with case access.
\- {"checker": ["The officer who submitted the resolution cannot be its checker."]} - you named the officer who is resolving.
\- {"checker": ["This review policy has no checker step, so the case resolves directly."]} - the case's blueprint has no four-eyes checker step.
\- 401/403 - auth/permission errors. A key with restricted access gets 403 {"detail": "This API key has no access to this endpoint."} (cases need a full-access key). A console member token needs write:cases.
\- 404 - case not found.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Tempel ke

Selesaikan sebuah kasus. Jika blueprint-nya dipasangkan dengan blueprint pemeriksa untuk [peninjauan 4-eyes](https://docs.didit.me/id/console/case-management/four-eyes.md), langkah ini akan menyiapkan resolusi alih-alih menutup kasus. Periksa kolom `pending_resolution` pada respons untuk membedakan kedua hasil tersebut.## Tetapkan pemeriksaPada blueprint yang memiliki langkah pemeriksa 4-eyes, kirimkan `checker` dengan uuid pengguna dari anggota yang wajib menyetujui resolusi.
Hanya anggota tersebut yang dapat menyetujui atau menolak resolusi; pihak lain, termasuk kunci API, menerima `403`.
Kolom `checker` pada kasus menyebutkan pemeriksa tersebut hingga resolusi disetujui, ditolak, atau dikembalikan untuk peninjauan ulang karena bukti berubah.
Tanpa `checker`, resolusi menunggu di antrean blueprint pemeriksa.
Anggota tersebut harus memiliki akses ke kasus dalam aplikasi ini dan tidak boleh menjadi petugas yang mengajukan resolusi.
Pada blueprint tanpa langkah pemeriksa, `checker` menghasilkan `400`.## Resolusi 4-eyes memerlukan anggota konsolAjukan resolusi yang masuk ke peninjauan 4-eyes sebagai anggota konsol, bukan dengan kunci API.
Resolusi yang diajukan dengan kunci API tidak memiliki pembuat yang tercatat, sehingga tindakan menyetujui dan menolak persetujuan menghasilkan `403` untuk setiap pemanggil, termasuk pemeriksa yang ditetapkan.## AksesEndpoint kasus memerlukan [kunci API](https://docs.didit.me/id/console/api-keys.md) dengan akses penuh.
Kunci dengan akses terbatas menerima `403`.## Terkait- [Peninjauan 4-eyes (Konsol)](https://docs.didit.me/id/console/case-management/four-eyes.md)
- [Dapatkan kasus](https://docs.didit.me/id/management-api/cases/get.md)
- [Daftar periksa (Konsol)](https://docs.didit.me/id/console/case-management/checklist.md)
- [Perbarui status secara massal](https://docs.didit.me/id/management-api/cases/bulk-status.md)


## OpenAPI

````yaml id/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/resolve/
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/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/resolve/:
    post:
      tags:
        - Cases
      summary: Selesaikan kasus
      description: >-
        Selesaikan kasus dengan salah satu dari lima resolusi: FALSE_POSITIVE
        (tidak ditemukan masalah), VALID_THREAT (masalah terkonfirmasi),
        INCONCLUSIVE, REQUIREMENTS_NOT_MET, atau REQUIREMENTS_SATISFIED.
        Diblokir dengan 400 jika checklist blueprint tidak opsional dan masih
        ada item yang belum selesai, atau jika blueprint mewajibkan catatan
        resolusi dan tidak ada yang diberikan. Saat blueprint kasus memiliki
        langkah pemeriksa four-eyes (four_eyes_checker_blueprint), resolusi
        ditangguhkan (case.pending_resolution) dan kasus dipindahkan ke
        blueprint pemeriksa alih-alih langsung diselesaikan; petugas lain harus
        memanggil approve atau reject-approval. Kirim resolusi four-eyes sebagai
        anggota konsol: resolusi yang dikirim oleh kunci API tidak memiliki
        pembuat yang tercatat, sehingga approve dan reject-approval
        mengembalikan 403 untuk setiap pemanggil. Pada blueprint four-eyes, Anda
        dapat menentukan anggota yang harus menyetujui dengan `checker`: maka
        hanya anggota tersebut yang dapat menyetujui atau menolak resolusi, dan
        kolom `checker` pada respons mencantumkan nama anggota tersebut. Tanpa
        `checker`, resolusi menunggu di antrean blueprint pemeriksa. Mengirim
        `checker` untuk blueprint tanpa langkah pemeriksa mengembalikan 400.
      operationId: resolve_case
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID organisasi.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID aplikasi.
        - name: case_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            example: c1a5e000-0000-4000-8000-000000000001
          description: UUID kasus.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - resolution
              properties:
                resolution:
                  type: string
                  enum:
                    - FALSE_POSITIVE
                    - VALID_THREAT
                    - INCONCLUSIVE
                    - REQUIREMENTS_NOT_MET
                    - REQUIREMENTS_SATISFIED
                note:
                  type: string
                  nullable: true
                  description: Wajib jika blueprint menetapkan require_resolution_note.
                checker:
                  type: string
                  format: uuid
                  nullable: true
                  description: >-
                    Hanya untuk blueprint four-eyes. UUID pengguna dari anggota
                    yang harus menyetujui resolusi ini (ID yang sama dengan
                    `assigned_to.uuid` pada kasus, atau `members[].user_id` pada
                    tim peninjau). Anggota harus memiliki akses kasus ke
                    aplikasi ini dan tidak boleh merupakan petugas yang
                    mengirimkan resolusi. Abaikan atau kirim null untuk
                    membiarkan resolusi berada di antrean pemeriksa.
            examples:
              Resolve:
                value:
                  resolution: FALSE_POSITIVE
                  note: Confirmed legitimate activity after reviewing documents.
              Four-eyes blueprint with a named checker:
                value:
                  resolution: VALID_THREAT
                  note: Document tampering confirmed.
                  checker: 3fa85f64-5717-4562-b3fc-2c963f66afa6
      responses:
        '200':
          description: Terselesaikan, atau ditangguhkan untuk persetujuan four-eyes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseDetail'
        '400':
          description: >-
            Penyelesaian ditolak. Kesalahan non-kolom diberikan sebagai daftar
            string: daftar periksa yang belum lengkap, catatan wajib yang
            hilang, atau `checker` yang tidak dapat diperiksa atau bukan
            merupakan peninjau aktif dengan akses kasus ke aplikasi ini.
            Kesalahan `checker` diberikan berdasarkan kolom: anggota yang
            disebutkan adalah petugas yang mengirimkan penyelesaian, atau cetak
            biru kasus tidak memiliki langkah pemeriksa.
          content:
            application/json:
              schema:
                oneOf:
                  - type: array
                    items:
                      type: string
                  - type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
              examples:
                Incomplete checklist:
                  value:
                    - >-
                      Case has incomplete checklist items: Verify source of
                      funds
                Resolution note required:
                  value:
                    - A resolution note is required to resolve this case.
                Reviewer access could not be verified:
                  value:
                    - Reviewer access could not be verified. Try again.
                Checker is not an active reviewer:
                  value:
                    - >-
                      Choose an active reviewer with case access to this
                      application.
                Checker is the submitting officer:
                  value:
                    checker:
                      - >-
                        The officer who submitted the resolution cannot be its
                        checker.
                Policy has no checker step:
                  value:
                    checker:
                      - >-
                        This review policy has no checker step, so the case
                        resolves directly.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/resolve/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"resolution": "FALSE_POSITIVE", "note": "Confirmed legitimate activity after reviewing documents."}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            result = client.cases.resolve(
                "c1a5e000-0000-4000-8000-000000000001",
                resolution="FALSE_POSITIVE",
                note="Confirmed legitimate activity after reviewing documents.",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const result = await
            didit.cases.resolve("c1a5e000-0000-4000-8000-000000000001", {
              resolution: "FALSE_POSITIVE",
              note: "Confirmed legitimate activity after reviewing documents.",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Resolve(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesResolveParams{\n\tResolution: \"FALSE_POSITIVE\",\n\tNote:       didit.String(\"Confirmed legitimate activity after reviewing documents.\"),\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.CasesResolveParams;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.cases().resolve("c1a5e000-0000-4000-8000-000000000001",
            CasesResolveParams.builder()
                    .resolution(CasesResolveParams.Resolution.of("FALSE_POSITIVE"))
                    .note("Confirmed legitimate activity after reviewing documents.")
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $result =
            $didit->cases->resolve('c1a5e000-0000-4000-8000-000000000001', [
                'resolution' => 'FALSE_POSITIVE',
                'note' => 'Confirmed legitimate activity after reviewing documents.',
            ]);

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

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            didit = Didit::Client.new

            result = didit.cases.resolve(
              "c1a5e000-0000-4000-8000-000000000001",
              resolution: "FALSE_POSITIVE",
              note: "Confirmed legitimate activity after reviewing documents."
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var result = await
            client.Cases.ResolveAsync("c1a5e000-0000-4000-8000-000000000001",
            new CasesResolveParams

            {
                Resolution = "FALSE_POSITIVE",
                Note = "Confirmed legitimate activity after reviewing documents.",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    CaseDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        case_number:
          type: string
          nullable: true
        title:
          type: string
        status:
          type: string
          enum:
            - OPEN
            - AWAITING_USER
            - RESOLVED
        resolution:
          type: string
          enum:
            - FALSE_POSITIVE
            - VALID_THREAT
            - INCONCLUSIVE
            - REQUIREMENTS_NOT_MET
            - REQUIREMENTS_SATISFIED
          nullable: true
        resolution_notes:
          type: string
          nullable: true
        priority:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
        source:
          type: string
          enum:
            - MANUAL
            - AML_SCREENING
            - TRANSACTION_RULE
            - WORKFLOW_BUILDER
        tags:
          type: array
          items:
            type: string
        subject:
          $ref: '#/components/schemas/CaseSubject'
        assigned_to:
          $ref: '#/components/schemas/CaseAssignee'
        assigned_at:
          type: string
          format: date-time
          nullable: true
        team:
          $ref: '#/components/schemas/CaseTeamSummary'
        due_at:
          type: string
          format: date-time
          nullable: true
        resolved_at:
          type: string
          format: date-time
          nullable: true
        resolved_by_email:
          type: string
          nullable: true
        pending_resolution:
          type: object
          nullable: true
          description: >-
            Ditetapkan hanya saat resolusi 4-eyes disiapkan pada cetak biru
            checker, menunggu persetujuan atau penolakan persetujuan.
          properties:
            resolution:
              type: string
              enum:
                - FALSE_POSITIVE
                - VALID_THREAT
                - INCONCLUSIVE
                - REQUIREMENTS_NOT_MET
                - REQUIREMENTS_SATISFIED
            resolution_notes:
              type: string
              nullable: true
            maker_email:
              type: string
              format: email
              nullable: true
              description: >-
                Email petugas yang mengirimkan resolusi. Null jika dikirimkan
                dengan kunci API: resolusi tersebut tidak memiliki pembuat yang
                tercatat, sehingga approve dan reject-approval mengembalikan 403
                untuk setiap pemanggil.
            maker_name:
              type: string
              nullable: true
            maker_user_id:
              type: string
              format: uuid
              nullable: true
              description: >-
                UUID pengguna anggota dari petugas yang mengirimkan
                penyelesaian. Null jika kunci API yang mengirimkannya. Anggota
                tersebut tidak dapat disebutkan sebagai `checker`.
            maker_blueprint_id:
              type: string
              format: uuid
            staged_at:
              type: string
              format: date-time
        checker:
          $ref: '#/components/schemas/CaseChecker'
        metadata:
          type: object
        blueprint:
          $ref: '#/components/schemas/CaseBlueprintDetail'
        notes:
          type: array
          items:
            $ref: '#/components/schemas/CaseNote'
          description: 50 catatan terbaru.
        events:
          type: array
          items:
            $ref: '#/components/schemas/CaseEvent'
          description: 100 event terbaru.
        links:
          type: array
          items:
            $ref: '#/components/schemas/CaseLink'
        links_count:
          type: integer
        notes_count:
          type: integer
        checklist_items:
          type: array
          items:
            $ref: '#/components/schemas/CaseChecklistItem'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    CaseSubject:
      type: object
      nullable: true
      description: Satu pengguna atau bisnis tempat kasus diikat.
      properties:
        type:
          type: string
          enum:
            - user
            - business
        uuid:
          type: string
          format: uuid
        name:
          type: string
        external_id:
          type: string
          nullable: true
          description: vendor_data subjek.
        country:
          type: string
          nullable: true
          description: >-
            Kode negara tiga huruf dari subjek (ISO 3166-1 alpha-3), atau null
            jika tidak diketahui. Untuk bisnis, berupa negara pendiriannya.
            Untuk perorangan, berupa negara penerbit dokumen identitas dari
            verifikasi mereka; perorangan dengan dokumen dari beberapa negara
            akan menampilkan salah satunya, dan kode dokumen ICAO seperti `XXA`
            dapat muncul.
          example: ESP
        portrait:
          type: string
          format: uri
          nullable: true
          description: >-
            URL bertanda tangan berdurasi singkat dari gambar potret individu
            tersebut. Selalu null untuk bisnis, dan null untuk individu tanpa
            potret. URL ini kedaluwarsa, jadi unduh gambar tersebut saat Anda
            membaca kasus alih-alih menyimpan URL-nya.
    CaseAssignee:
      type: object
      nullable: true
      properties:
        uuid:
          type: string
          format: uuid
        full_name:
          type: string
        email:
          type: string
          format: email
    CaseTeamSummary:
      type: object
      nullable: true
      description: >-
        Tim peninjau yang memiliki kasus tersebut, atau null jika tidak ada tim
        yang memilikinya. Perutean menetapkannya ketika aturan perutean
        menempatkan kasus tersebut ke salah satu timnya. Ubah atau hapus dengan
        `PATCH .../cases/{case_uuid}/` (`team`).
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
    CaseChecker:
      type: object
      nullable: true
      description: >-
        Anggota yang ditunjuk untuk menyetujui atau menolak resolusi yang
        tertunda. Hanya ditetapkan saat resolusi dengan pemeriksaan empat mata
        sedang menunggu pemeriksa yang ditunjuk. Null jika tidak ada yang
        tertunda, saat resolusi yang tertunda menunggu di antrean pemeriksa, dan
        setelah resolusi disetujui, ditolak, atau dikembalikan untuk peninjauan
        baru karena bukti berubah.
      properties:
        member_uuid:
          type: string
          format: uuid
          description: >-
            UUID pengguna anggota: nilai yang Anda kirimkan sebagai `checker`
            saat Anda menyelesaikan kasus.
        name:
          type: string
          nullable: true
          description: Nama lengkap anggota, atau null jika tidak diketahui.
        email:
          type: string
          format: email
    CaseBlueprintDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
          maxLength: 24
        description:
          type: string
          nullable: true
        assignment_method:
          type: string
          enum:
            - MANUAL
            - AUTOMATIC
        assignee_pool:
          type: array
          items:
            type: string
            format: uuid
        max_active_cases:
          type: integer
          nullable: true
        escalation_enabled:
          type: boolean
        transfer_enabled:
          type: boolean
        require_resolution_note:
          type: boolean
        is_active:
          type: boolean
        preset_key:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
        escalation_blueprint:
          type: string
          format: uuid
          nullable: true
        escalation_blueprint_name:
          type: string
          nullable: true
        four_eyes_checker_blueprint:
          type: string
          format: uuid
          nullable: true
        four_eyes_checker_blueprint_name:
          type: string
          nullable: true
        content_config:
          type: object
          description: >-
            Enam bagian yang dapat diaktifkan/dinonaktifkan yang menentukan tab
            dan kolom mana yang muncul di halaman kasus. Bagian atau kunci yang
            tidak dikenal akan ditolak.
          properties:
            checklist:
              type: object
              properties:
                enabled:
                  type: boolean
                optional:
                  type: boolean
                  description: >-
                    Jika true, kasus dapat diselesaikan dengan item daftar
                    periksa yang belum lengkap.
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      label:
                        type: string
                        maxLength: 255
                      order:
                        type: integer
            aml_control:
              type: object
              properties:
                enabled:
                  type: boolean
                financial:
                  type: boolean
                identity:
                  type: boolean
            identity:
              type: object
              properties:
                enabled:
                  type: boolean
                personal_information:
                  type: boolean
                applicant_tags:
                  type: boolean
                contact_information:
                  type: boolean
                risk_overview:
                  type: boolean
                poi_documents:
                  type: boolean
                poa_documents:
                  type: boolean
            verifications:
              type: object
              properties:
                enabled:
                  type: boolean
                summary:
                  type: boolean
            reporting:
              type: object
              properties:
                enabled:
                  type: boolean
                fiu_reports:
                  type: boolean
            financial:
              type: object
              properties:
                enabled:
                  type: boolean
                payment_methods:
                  type: boolean
                transactions:
                  type: boolean
        creation_sources:
          type: array
          description: Konektor yang saat ini merutekan kasus baru ke dalam cetak biru ini.
          items:
            type: object
            properties:
              kind:
                type: string
                enum:
                  - aml
                  - rule
                  - workflow
              id:
                type: string
              name:
                type: string
        receives_escalation_from:
          type: array
          description: Blueprint lain yang target Eskalasinya mengarah ke blueprint ini.
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
        updated_at:
          type: string
          format: date-time
        version:
          type: integer
          readOnly: true
        default_deadline_hours:
          type: integer
          nullable: true
          minimum: 1
          maximum: 8760
    CaseNote:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        comment:
          type: string
        actor_email:
          type: string
          format: email
          nullable: true
        actor_name:
          type: string
          nullable: true
        mentioned_emails:
          type: array
          items:
            type: string
            format: email
        is_internal:
          type: boolean
        attachments:
          type: array
          items:
            type: object
            properties:
              s3_key:
                type: string
              filename:
                type: string
              file_size:
                type: integer
              url:
                type: string
                format: uri
        tags:
          type: array
          items:
            type: string
        created_at:
          type: string
          format: date-time
    CaseEvent:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        event_type:
          type: string
          enum:
            - CREATED
            - STATUS_CHANGED
            - ASSIGNED
            - UNASSIGNED
            - RESOLVED
            - REOPENED
            - LINK_ADDED
            - LINK_REMOVED
            - NOTE_ADDED
            - NOTE_PINNED
            - NOTE_UNPINNED
            - PRIORITY_CHANGED
            - DUE_DATE_CHANGED
            - TAG_ADDED
            - TAG_REMOVED
            - ESCALATED
            - TRANSFERRED
            - CHECKLIST_COMPLETED
            - REPORT_CREATED
            - REPORT_FINALIZED
            - SUBMITTED_FOR_APPROVAL
            - APPROVAL_GRANTED
            - APPROVAL_REJECTED
            - ENTITY_ACTION
            - APPROVAL_INVALIDATED
            - CUSTOMER_REQUEST
            - STAGE_CHANGED
            - TEAM_CHANGED
            - CHECKER_ASSIGNED
            - CHECKER_UNASSIGNED
        actor_email:
          type: string
          format: email
          nullable: true
        actor_name:
          type: string
          nullable: true
        previous_status:
          type: string
          enum:
            - OPEN
            - AWAITING_USER
            - RESOLVED
          nullable: true
        new_status:
          type: string
          enum:
            - OPEN
            - AWAITING_USER
            - RESOLVED
          nullable: true
        metadata:
          type: object
        created_at:
          type: string
          format: date-time
    CaseLink:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        linked_entity_type:
          type: string
          enum:
            - session
            - business_session
            - transaction
          nullable: true
        linked_entity_uuid:
          type: string
          format: uuid
          nullable: true
        linked_entity_summary:
          type: object
          nullable: true
          description: >-
            session_id/session_number/status untuk tautan session dan
            business_session; uuid/txn_id/status untuk tautan transaction.
        created_at:
          type: string
          format: date-time
    CaseChecklistItem:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        label:
          type: string
          maxLength: 255
        is_completed:
          type: boolean
        completed_by:
          type: string
          format: email
          nullable: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        order:
          type: integer
  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.