> ## 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 Buat Templat Laporan goAML

> Buat templat header laporan goAML per yurisdiksi di Didit yang dapat digunakan kembali, divalidasi terhadap kolom wajib sebelum dipakai.



Prompt API Pembuatan Templat Laporan
        Salin prompt ke papan klip



      
      

\<pre>

\`Create a FIU report template through the Management API.

Endpoint:
POST https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/report-templates/

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

Request body:
\{
"name": "US SAR default",         // required
"jurisdiction": "US",               // required, ISO 3166-1 alpha-2, upper-cased on save
"report_type": "SAR",               // required: SAR|STR|CTR|TTR|UTR|IFT|CBR|TFR
"field_config": {
"rentity_id": "FIU-US-00123",     // obligatory - reporting entity ID from your FIU
"submission_code": "E",           // obligatory - E (electronic) or M (manual)
"currency_code_local": "USD",     // obligatory
"enabled_fields": ["reporting_person", "location"]  // optional blocks to include by default
}
}

Validation:
\- jurisdiction must be a recognized ISO2 code.
\- field_config is checked against the template-level obligatory goAML fields - exactly rentity_id, submission_code, and currency_code_local (3-letter). Missing fields return a 400 listing exactly which ones, and the template cannot be saved until they are filled in.
\- The remaining report header fields (action, submission_date, at least one transaction, jurisdiction) are per-filing values, enforced later when the REPORT is validated/finalized - not on the template.

Example call:
curl -X POST "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/report-templates/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "US SAR default", "jurisdiction": "US", "report_type": "SAR", "field_config": {"rentity_id": "FIU-US-00123", "submission_code": "E", "currency_code_local": "USD"}}'

Response 201: ReportTemplateDetail.

Failure modes:
\- 400 - unrecognized jurisdiction, or field_config missing obligatory fields ({"errors": ["rentity_id", ...]}).
\- 401/403 - auth/permission errors (requires write:cases).

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

\</pre>



      
      

Tempel ke

Buat templat header goAML yang dapat digunakan kembali. Templat harus lolos validasi kolom wajib (`rentity_id`, `submission_code`, `currency_code_local`) agar dapat disimpan, baik saat dibuat maupun setiap kali diedit. Kolom header per pelaporan, seperti `action` dan `submission_date`, ditegakkan saat laporan itu sendiri divalidasi atau difinalisasi, bukan pada templat.## Terkait- [Daftar templat laporan](https://docs.didit.me/id/management-api/report-templates/list.md)
- [Buat laporan dari kasus](https://docs.didit.me/id/management-api/regulatory-reports/create-for-case.md)


## OpenAPI

````yaml id/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/report-templates/
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}/report-templates/:
    post:
      tags:
        - Report Templates
      summary: Buat templat laporan
      description: >-
        Buat templat header goAML yang dapat digunakan kembali per yurisdiksi
        dan per jenis laporan. Ditolak dengan 400 jika salah satu kolom wajib
        tingkat templat (rentity_id, submission_code, currency_code_local) tidak
        ada di field_config; templat yang tidak valid tidak dapat disimpan atau
        digunakan untuk membuat laporan. Kolom header per pengajuan (action,
        submission_date, transactions) diberlakukan pada saat
        validasi/finalisasi laporan.
      operationId: create_report_template
      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.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - jurisdiction
                - report_type
              properties:
                name:
                  type: string
                jurisdiction:
                  type: string
                  minLength: 2
                  maxLength: 2
                  description: >-
                    Kode negara ISO 3166-1 alpha-2, diubah menjadi huruf besar
                    saat disimpan.
                report_type:
                  type: string
                  enum:
                    - SAR
                    - STR
                    - CTR
                    - TTR
                    - UTR
                    - IFT
                    - CBR
                    - TFR
                field_config:
                  type: object
                  description: >-
                    Nilai default header goAML yang dapat digunakan kembali.
                    Kolom wajib tingkat templat: rentity_id, submission_code,
                    dan currency_code_local (3 huruf). Opsional: enabled_fields
                    (blok laporan opsional mana yang disertakan) ditambah nilai
                    default reporting_person, location, reason, dan action.
                    Kolom header per pengajuan (action, submission_date,
                    transactions, jurisdiction) diberlakukan saat laporan
                    divalidasi atau difinalisasi, bukan pada templat.
            example:
              name: US SAR default
              jurisdiction: US
              report_type: SAR
              field_config:
                rentity_id: FIU-US-00123
                submission_code: E
                currency_code_local: USD
      responses:
        '201':
          description: Templat dibuat.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportTemplateDetail'
        '400':
          description: >-
            Yurisdiksi tidak dikenal, atau field_config gagal dalam validasi
            kolom wajib.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      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/report-templates/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"name": "US SAR default", "jurisdiction": "US", "report_type": "SAR", "field_config": {"rentity_id": "FIU-US-00123", "submission_code": "E", "currency_code_local": "USD"}}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

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

            result = client.report_templates.create(
                name="US SAR default",
                jurisdiction="US",
                report_type="SAR",
                field_config={"rentity_id": "FIU-US-00123", "submission_code": "E", "currency_code_local": "USD"},
            )
            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.reportTemplates.create({
              name: "US SAR default",
              jurisdiction: "US",
              report_type: "SAR",
              field_config: { rentity_id: "FIU-US-00123", submission_code: "E", currency_code_local: "USD" },
            });
            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.ReportTemplates.Create(ctx, didit.ReportTemplatesCreateParams{\n\tName:         \"US SAR default\",\n\tJurisdiction: \"US\",\n\tReportType:   \"SAR\",\n\tFieldConfig:  didit.Some(map[string]any{\"rentity_id\": \"FIU-US-00123\", \"submission_code\": \"E\", \"currency_code_local\": \"USD\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.Map;

            import me.didit.Didit;

            import me.didit.types.ReportTemplatesCreateParams;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.reportTemplates().create(ReportTemplatesCreateParams.builder()
                    .name("US SAR default")
                    .jurisdiction("US")
                    .reportType(ReportTemplatesCreateParams.ReportType.of("SAR"))
                    .fieldConfig(Map.of("rentity_id", "FIU-US-00123", "submission_code", "E", "currency_code_local", "USD"))
                    .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->reportTemplates->create([
                'name' => 'US SAR default',
                'jurisdiction' => 'US',
                'report_type' => 'SAR',
                'field_config' => ['rentity_id' => 'FIU-US-00123', 'submission_code' => 'E', 'currency_code_local' => 'USD'],
            ]);
            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.report_templates.create(
              name: "US SAR default",
              jurisdiction: "US",
              report_type: "SAR",
              field_config: { rentity_id: "FIU-US-00123", submission_code: "E", currency_code_local: "USD" }
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Collections.Generic;

            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.ReportTemplates.CreateAsync(new
            ReportTemplatesCreateParams

            {
                Name = "US SAR default",
                Jurisdiction = "US",
                ReportType = "SAR",
                FieldConfig = new Dictionary<string, object> { ["rentity_id"] = "FIU-US-00123", ["submission_code"] = "E", ["currency_code_local"] = "USD" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    ReportTemplateDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
        jurisdiction:
          type: string
          minLength: 2
          maxLength: 2
          description: Kode negara ISO 3166-1 alpha-2.
        report_type:
          type: string
          enum:
            - SAR
            - STR
            - CTR
            - TTR
            - UTR
            - IFT
            - CBR
            - TFR
        report_type_display:
          type: string
        field_config:
          type: object
          description: >-
            Nilai default header goAML yang dapat digunakan kembali. Kolom wajib
            tingkat templat: rentity_id, submission_code, dan
            currency_code_local (3 huruf). Opsional: enabled_fields (blok
            laporan opsional mana yang disertakan) ditambah nilai default
            reporting_person, location, reason, dan action. Kolom header per
            pengajuan (action, submission_date, transactions, jurisdiction)
            diberlakukan saat laporan divalidasi atau difinalisasi, bukan pada
            templat.
        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.