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

> Didit 케이스 블루프린트 생성 API로 배정 방식, 에스컬레이션, 이관, 4-eyes 검토자 페어링, 필수 해결 메모, 케이스 콘텐츠 섹션 여섯 가지를 설정합니다.



케이스 블루프린트 생성 API 프롬프트
        프롬프트를 클립보드에 복사



      
      

\<pre>

\`Create a case blueprint through the Management API.

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

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

Request body:
\{
"name": "AML investigation",                    // required, max 24 chars
"description": "...",                            // optional
"assignee_pool": ["<user-uuid>"],                 // required, at least 1 - "Pick at least one assignee" otherwise
"assignment_method": "AUTOMATIC",                 // optional, MANUAL|AUTOMATIC, default MANUAL
"max_active_cases": 15,                           // optional - AUTOMATIC threshold
"escalation_enabled": false,                      // optional
"escalation_blueprint": "<blueprint-uuid>",       // optional - set it alongside escalation_enabled; the escalate action fails with 400 until both are set
"transfer_enabled": false,                        // optional
"four_eyes_checker_blueprint": "<blueprint-uuid>", // optional - setting this enables 4-eyes
"require_resolution_note": true,                  // optional
"content_config": {"aml_control": {"enabled": true, "financial": true}},  // optional, six sections
"is_active": true                                 // optional, default true
}

content_config sections: checklist (enabled, optional, items[]), aml_control (enabled, financial, identity), identity (enabled, personal_information, applicant_tags, contact_information, risk_overview, poi_documents, poa_documents), verifications (enabled, summary), reporting (enabled, fiu_reports), financial (enabled, payment_methods, transactions). Unknown sections/keys are rejected with 400.

Example call:
curl -X POST "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"name": "AML investigation", "assignee_pool": ["<uuid>"]}'

Response 201: CaseBlueprintDetail.

Failure modes:
\- 400 - name over 24 chars, empty assignee_pool, unknown content_config key, or escalation_blueprint/four_eyes_checker_blueprint not found in this application or self-referencing.
\- 401/403 - auth/permission errors (requires write:cases).

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

\</pre>



      
      

붙여넣을 곳

블루프린트를 생성합니다. `content_config`는 엄격하게 검증됩니다. 알려진 여섯 개 섹션과 문서에 명시된 키만 허용되므로, 오타가 있으면 조용히 무시되지 않고 400 응답이 반환됩니다.## 관련 항목- [케이스 블루프린트 목록 조회](https://docs.didit.me/ko/management-api/case-blueprints/list.md)
- [블루프린트 프리셋 설치](https://docs.didit.me/ko/management-api/case-blueprints/install-presets.md)
- [블루프린트(콘솔)](https://docs.didit.me/ko/console/case-management/blueprints.md)


## OpenAPI

````yaml ko/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 신분증 인증 API입니다. x-api-key 헤더로 인증합니다.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/cases/blueprints/:
    post:
      tags:
        - Case Blueprints
      summary: 청사진 생성
      description: >-
        케이스 청사진을 생성합니다. 일반 설정(할당, 에스컬레이션, 이관, 상호 검토 페어링) 및 케이스 페이지를 구동하는 6개 섹션인
        content_config를 포함합니다. 게시되지 않은 초안을 생성하려면 publish=false로 설정하십시오. 게시하면 첫
        번째 라이브 버전이 생성됩니다. 한 번도 게시되지 않은 초안을 폐기하면 삭제됩니다.
      operationId: create_case_blueprint
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: 조직 UUID입니다.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: 애플리케이션 UUID입니다.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - assignee_pool
              properties:
                name:
                  type: string
                  maxLength: 24
                  description: '최대 24자(예: "AML investigation").'
                description:
                  type: string
                  nullable: true
                assignee_pool:
                  type: array
                  items:
                    type: string
                    format: uuid
                  minItems: 1
                  description: >-
                    사용자 UUID 목록입니다. 빈 배열은 "Pick at least one assignee" 오류와 함께
                    거부됩니다.
                assignment_method:
                  type: string
                  enum:
                    - MANUAL
                    - AUTOMATIC
                  default: MANUAL
                max_active_cases:
                  type: integer
                  nullable: true
                  minimum: 1
                  description: '자동 모드 임계값: "이 청사진에 할당된 케이스가 N개 미만".'
                escalation_enabled:
                  type: boolean
                  default: false
                escalation_blueprint:
                  type: string
                  format: uuid
                  nullable: true
                  description: >-
                    대상 청사진 UUID입니다. 저장 시에는 강제되지 않지만, escalation_enabled와
                    escalation_blueprint가 모두 설정될 때까지 에스컬레이션 작업은 400으로 실패합니다.
                transfer_enabled:
                  type: boolean
                  default: false
                four_eyes_checker_blueprint:
                  type: string
                  format: uuid
                  nullable: true
                  description: >-
                    이를 설정하면 4-eyes 검토가 활성화됩니다. 이 청사진의 결정 사항이 검사자 청사진의 대기열에
                    스테이징됩니다.
                require_resolution_note:
                  type: boolean
                  default: false
                content_config:
                  $ref: '#/components/schemas/CaseContentConfig'
                is_active:
                  type: boolean
                  default: true
                default_deadline_hours:
                  type: integer
                  nullable: true
                  minimum: 1
                  maximum: 8760
                  description: 새로 열린 케이스의 기본 기한입니다. 기존 케이스의 기한은 변경되지 않습니다.
                publish:
                  type: boolean
                  writeOnly: true
                  default: true
                  description: >-
                    게시된 적 없는 초안으로 저장하려면 false로 설정합니다. 초안이 명시적으로 게시될 때까지 레코드는 버전
                    0인 비활성 상태로 유지됩니다. 이 필드를 생략하면 기존 연동에 대해 즉시 생성이 유지됩니다.
            example:
              name: AML investigation
              assignee_pool:
                - 9a000000-0000-4000-8000-0000000000aa
              assignment_method: AUTOMATIC
              max_active_cases: 15
              require_resolution_note: true
              content_config:
                aml_control:
                  enabled: true
                  financial: true
                  identity: false
      responses:
        '201':
          description: 청사진이 생성되었습니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseBlueprintDetail'
        '400':
          description: >-
            이름이 24자를 초과하거나, assignee_pool이 비어 있거나, 상호 참조된
            청사진(escalation/checker)을 찾을 수 없습니다.
          content:
            application/json:
              schema:
                type: object
      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/blueprints/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"name": "AML investigation", "assignee_pool": ["9a000000-0000-4000-8000-0000000000aa"], "assignment_method": "AUTOMATIC", "max_active_cases": 15, "require_resolution_note": true, "content_config": {"aml_control": {"enabled": true, "financial": true, "identity": false}}}'
        - 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.blueprints.create(
                name="AML investigation",
                assignee_pool=["9a000000-0000-4000-8000-0000000000aa"],
                assignment_method="AUTOMATIC",
                max_active_cases=15,
                require_resolution_note=True,
                content_config={
                    "aml_control": {
                        "enabled": True,
                        "financial": True,
                        "identity": False,
                    },
                },
            )
            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.blueprints.create({
              name: "AML investigation",
              assignee_pool: ["9a000000-0000-4000-8000-0000000000aa"],
              assignment_method: "AUTOMATIC",
              max_active_cases: 15,
              require_resolution_note: true,
              content_config: {
                aml_control: {
                  enabled: true,
                  financial: true,
                  identity: false,
                },
              },
            });
            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.Blueprints.Create(ctx, didit.CasesBlueprintsCreateParams{\n\tName:                  \"AML investigation\",\n\tAssigneePool:          []string{\"9a000000-0000-4000-8000-0000000000aa\"},\n\tAssignmentMethod:      didit.Some(didit.CasesBlueprintsCreateParamsAssignmentMethod(\"AUTOMATIC\")),\n\tMaxActiveCases:        didit.Int(15),\n\tRequireResolutionNote: didit.Bool(true),\n\tContentConfig: didit.Some(didit.CaseContentConfigParam{\n\t\tAMLControl: didit.Some(didit.CaseContentConfigParamAMLControl{\n\t\t\tEnabled:   didit.Bool(true),\n\t\t\tFinancial: didit.Bool(true),\n\t\t\tIdentity:  didit.Bool(false),\n\t\t}),\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.CaseContentConfig;

            import me.didit.types.CasesBlueprintsCreateParams;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.cases().blueprints().create(CasesBlueprintsCreateParams.builder()
                    .name("AML investigation")
                    .assigneePool(List.of("9a000000-0000-4000-8000-0000000000aa"))
                    .assignmentMethod(CasesBlueprintsCreateParams.AssignmentMethod.of("AUTOMATIC"))
                    .maxActiveCases(15L)
                    .requireResolutionNote(true)
                    .contentConfig(CaseContentConfig.builder()
                            .amlControl(CaseContentConfig.AmlControl.builder()
                                    .enabled(true)
                                    .financial(true)
                                    .identity(false)
                                    .build())
                            .build())
                    .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->blueprints->create([
                'name' => 'AML investigation',
                'assignee_pool' => ['9a000000-0000-4000-8000-0000000000aa'],
                'assignment_method' => 'AUTOMATIC',
                'max_active_cases' => 15,
                'require_resolution_note' => true,
                'content_config' => [
                    'aml_control' => [
                        'enabled' => true,
                        'financial' => true,
                        'identity' => false,
                    ],
                ],
            ]);
            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.blueprints.create(
              name: "AML investigation",
              assignee_pool: ["9a000000-0000-4000-8000-0000000000aa"],
              assignment_method: "AUTOMATIC",
              max_active_cases: 15,
              require_resolution_note: true,
              content_config: {
                aml_control: {
                  enabled: true,
                  financial: true,
                  identity: false,
                },
              }
            )
            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.Blueprints.CreateAsync(new
            CasesBlueprintsCreateParams

            {
                Name = "AML investigation",
                AssigneePool = new string[] { "9a000000-0000-4000-8000-0000000000aa" },
                AssignmentMethod = new CasesBlueprintsCreateParamsAssignmentMethod("AUTOMATIC"),
                MaxActiveCases = 15,
                RequireResolutionNote = true,
                ContentConfig = new CaseContentConfig
                {
                    AmlControl = new CaseContentConfigAmlControl
                    {
                        Enabled = true,
                        Financial = true,
                        Identity = false,
                    },
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    CaseContentConfig:
      type: object
      description: 케이스 페이지에 표시될 탭과 필드를 결정하는 6개의 토글 가능한 섹션입니다. 알 수 없는 섹션이나 키는 거부됩니다.
      properties:
        checklist:
          type: object
          properties:
            enabled:
              type: boolean
            optional:
              type: boolean
              description: true인 경우, 체크리스트 항목이 완료되지 않아도 케이스를 해결할 수 있습니다.
            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
    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: 케이스 페이지에 표시될 탭과 필드를 결정하는 6개의 토글 가능한 섹션입니다. 알 수 없는 섹션이나 키는 거부됩니다.
          properties:
            checklist:
              type: object
              properties:
                enabled:
                  type: boolean
                optional:
                  type: boolean
                  description: true인 경우, 체크리스트 항목이 완료되지 않아도 케이스를 해결할 수 있습니다.
                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: 현재 새 케이스를 이 청사진으로 라우팅하는 커넥터입니다.
          items:
            type: object
            properties:
              kind:
                type: string
                enum:
                  - aml
                  - rule
                  - workflow
              id:
                type: string
              name:
                type: string
        receives_escalation_from:
          type: array
          description: 에스컬레이션 대상이 이 블루프린트를 가리키는 다른 블루프린트입니다.
          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
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본
        키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며
        특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나
        만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된
        IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를
        벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write
        권한이 없는 키는 세션 링크와 token을 null로 수신합니다.
        https://docs.didit.me/console/api-keys 를 참고하십시오.

````

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