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

# Buat Laporan FIU dari Kasus lewat API

> Buat draf laporan SAR, STR, CTR, atau laporan FIU lain dari sebuah kasus, diisi otomatis dari templat serta subjek dan transaksi kasus tersebut di Didit.



Prompt API Membuat Laporan dari Kasus
        Salin prompt ke papan klip



      
      

\<pre>

\`Create a draft FIU report from a case through the Management API.

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

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

Request body (all optional if a template is given):
\{
"template": "<report-template-uuid>",   // seeds rentity_id, submission_code, currency_code_local, etc.
"report_type": "SAR",                     // required if no template
"jurisdiction": "US",                     // required if no template
"transactions": ["<transaction-uuid>"]    // optional - defaults to the case's linked transactions
}

Behavior:
\- Draft is auto-populated from the template (if given) plus the case's subject, linked transactions, and a narrative structured around the five Ws (who/what/when/where/why/how) for SAR/STR/TFR.
\- Status starts as DRAFT. Call validate then finalize next.

Example call:
curl -X POST "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/regulatory-reports/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"template": "<uuid>"}'

Response 201: RegulatoryReportDetail with status "DRAFT".

Failure modes:
\- 400 - the referenced template was not found.
\- 401/403 - auth/permission errors (requires write:cases).

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

\</pre>



      
      

Tempel ke

Buat draf laporan yang dibatasi pada sebuah kasus. Utamakan ini daripada endpoint pembuatan mandiri jika Anda sudah membuka kasus tersebut, karena Anda dapat menghilangkan `template` dan menentukan `report_type` dan `jurisdiction` secara langsung.## Terkait- [Daftar laporan](https://docs.didit.me/id/management-api/regulatory-reports/list.md)
- [Validasi laporan](https://docs.didit.me/id/management-api/regulatory-reports/validate.md)
- [Finalisasi laporan](https://docs.didit.me/id/management-api/regulatory-reports/finalize.md)
- [Hapus laporan](https://docs.didit.me/id/management-api/regulatory-reports/delete.md)


## OpenAPI

````yaml id/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/regulatory-reports/
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}/regulatory-reports/:
    post:
      tags:
        - Regulatory Reports
      summary: Buat laporan dari kasus
      description: >-
        Buat draf laporan FIU untuk kasus: status DRAFT, diisi otomatis dari
        templat opsional ditambah subjek kasus, transaksi tertaut, dan narasi.
        Validasi lalu finalisasi untuk menghasilkan XML dan PDF goAML.
      operationId: create_case_regulatory_report
      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: false
        content:
          application/json:
            schema:
              type: object
              properties:
                report_type:
                  type: string
                  enum:
                    - SAR
                    - STR
                    - CTR
                    - TTR
                    - UTR
                    - IFT
                    - CBR
                    - TFR
                  description: >-
                    Wajib kecuali jika templat diberikan; report_type templat
                    akan digunakan jika tidak.
                jurisdiction:
                  type: string
                  minLength: 2
                  maxLength: 2
                  description: Wajib kecuali jika templat diberikan.
                template:
                  type: string
                  format: uuid
                  nullable: true
                  description: >-
                    UUID templat laporan; field_config miliknya mengisi draf
                    sebelum data turunan kasus digabungkan.
                transactions:
                  type: array
                  items:
                    type: string
                    format: uuid
                  nullable: true
                  description: >-
                    Transaksi yang akan dilampirkan; defaultnya adalah transaksi
                    yang ditautkan ke kasus.
                rentity_id:
                  type: string
                  nullable: true
                rentity_branch:
                  type: string
                  nullable: true
                submission_code:
                  type: string
                  enum:
                    - E
                    - M
                  default: E
                entity_reference:
                  type: string
                  nullable: true
                fiu_ref_number:
                  type: string
                  nullable: true
                currency_code_local:
                  type: string
                  minLength: 3
                  maxLength: 3
                  nullable: true
                submission_date:
                  type: string
                  format: date-time
                  nullable: true
                reporting_person:
                  type: object
                location:
                  type: object
                reason:
                  type: string
                  nullable: true
                action:
                  type: string
                  nullable: true
                activity:
                  type: string
                  nullable: true
                narrative:
                  type: object
                  properties:
                    who:
                      type: string
                    what:
                      type: string
                    when:
                      type: string
                    where:
                      type: string
                    why:
                      type: string
                    how:
                      type: string
                report_indicators:
                  type: array
                  items:
                    type: string
                included_fields:
                  type: array
                  items:
                    type: string
            example:
              template: 7ec00000-0000-4000-8000-000000000006
      responses:
        '201':
          description: Laporan draf berhasil dibuat.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegulatoryReportDetail'
        '400':
          description: Templat yang direferensikan tidak ditemukan.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
      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/regulatory-reports/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"template": "7ec00000-0000-4000-8000-000000000006"}'
        - 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.regulatory_reports.create(
                "c1a5e000-0000-4000-8000-000000000001",
                template="7ec00000-0000-4000-8000-000000000006",
            )
            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.regulatoryReports.create("c1a5e000-0000-4000-8000-000000000001",
            {
              template: "7ec00000-0000-4000-8000-000000000006",
            });

            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.RegulatoryReports.Create(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesRegulatoryReportsCreateParams{\n\tTemplate: didit.String(\"7ec00000-0000-4000-8000-000000000006\"),\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.CasesRegulatoryReportsCreateParams;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.cases().regulatoryReports().create("c1a5e000-0000-4000-8000-000000000001",
            CasesRegulatoryReportsCreateParams.builder()
                    .template("7ec00000-0000-4000-8000-000000000006")
                    .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->regulatoryReports->create('c1a5e000-0000-4000-8000-000000000001',
            [
                'template' => '7ec00000-0000-4000-8000-000000000006',
            ]);

            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.regulatory_reports.create(
              "c1a5e000-0000-4000-8000-000000000001",
              template: "7ec00000-0000-4000-8000-000000000006"
            )
            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.RegulatoryReports.CreateAsync("c1a5e000-0000-4000-8000-000000000001",
            new CasesRegulatoryReportsCreateParams

            {
                Template = "7ec00000-0000-4000-8000-000000000006",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    RegulatoryReportDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        case_uuid:
          type: string
          format: uuid
        case_number:
          type: string
          nullable: true
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
        report_type_display:
          type: string
        report_code:
          type: string
          description: >-
            kode laporan goAML yang diturunkan dari report_type, misalnya STR,
            CTR, BCR.
        report_number:
          type: string
          nullable: true
        status:
          type: string
          enum:
            - DRAFT
            - VALIDATED
            - FINALIZED
        status_display:
          type: string
        jurisdiction:
          type: string
          minLength: 2
          maxLength: 2
        rentity_id:
          type: string
          nullable: true
          description: ID entitas pelapor yang diterbitkan oleh FIU.
        rentity_branch:
          type: string
          nullable: true
        submission_code:
          type: string
          enum:
            - E
            - M
        entity_reference:
          type: string
          nullable: true
        fiu_ref_number:
          type: string
          nullable: true
        currency_code_local:
          type: string
          minLength: 3
          maxLength: 3
          nullable: true
        submission_date:
          type: string
          format: date-time
          nullable: true
        reporting_person:
          type: object
        location:
          type: object
        reason:
          type: string
          nullable: true
        action:
          type: string
          nullable: true
        activity:
          type: string
          nullable: true
        narrative:
          type: object
          description: Bagian narasi 5W.
          properties:
            who:
              type: string
            what:
              type: string
            when:
              type: string
            where:
              type: string
            why:
              type: string
            how:
              type: string
        report_indicators:
          type: array
          items:
            type: string
        included_fields:
          type: array
          items:
            type: string
        transactions:
          type: array
          items:
            type: string
            format: uuid
        validation_errors:
          type: array
          description: Hasil validasi terbaru; setiap entri berupa objek {field, message}.
          items:
            type: object
            properties:
              field:
                type: string
              message:
                type: string
        validated_at:
          type: string
          format: date-time
          nullable: true
        finalized_at:
          type: string
          format: date-time
          nullable: true
        created_by_email:
          type: string
          nullable: true
        created_by_name:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  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.