Didit Case Blueprints API
The Case Blueprints API from Didit — 4 operation(s) for case blueprints.
The Case Blueprints API from Didit — 4 operation(s) for case blueprints.
openapi: 3.0.0
info:
version: 3.0.0
title: Didit Verification Billing Case Blueprints API
description: Identity verification API. Authenticate with x-api-key header.
servers:
- url: https://verification.didit.me
tags:
- name: Case Blueprints
paths:
/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/:
get:
summary: List blueprints
description: List case blueprints for the application.
operationId: list_case_blueprints
tags:
- Case Blueprints
parameters:
- name: organization_id
in: path
required: true
schema:
type: string
format: uuid
description: Organization UUID.
- name: application_id
in: path
required: true
schema:
type: string
format: uuid
description: Application UUID.
- name: limit
in: query
schema:
type: integer
default: 50
minimum: 1
description: Page size.
- name: offset
in: query
schema:
type: integer
default: 0
minimum: 0
description: Zero-based offset.
x-codeSamples:
- lang: curl
label: curl
source: "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/' \\\n -H 'x-api-key: YOUR_API_KEY'"
responses:
'200':
description: Paginated blueprint list.
content:
application/json:
schema:
type: object
properties:
count:
type: integer
description: Number of matching rows, capped at 100 for performance.
next:
type: string
nullable: true
previous:
type: string
nullable: true
results:
type: array
items:
$ref: '#/components/schemas/CaseBlueprintListItem'
post:
summary: Create blueprint
description: 'Create a case blueprint: general settings (assignment, escalation, transfer, 4-eyes pairing) plus content_config, the six sections that drive the case page.'
operationId: create_case_blueprint
tags:
- Case Blueprints
parameters:
- name: organization_id
in: path
required: true
schema:
type: string
format: uuid
description: Organization UUID.
- name: application_id
in: path
required: true
schema:
type: string
format: uuid
description: Application UUID.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- name
- assignee_pool
properties:
name:
type: string
maxLength: 24
description: Max 24 characters, e.g. "AML investigation".
description:
type: string
nullable: true
assignee_pool:
type: array
items:
type: string
format: uuid
minItems: 1
description: List of User UUIDs. Empty arrays are rejected with "Pick at least one assignee".
assignment_method:
type: string
enum:
- MANUAL
- AUTOMATIC
default: MANUAL
max_active_cases:
type: integer
nullable: true
minimum: 1
description: 'Automatic-mode threshold: "fewer than N cases of this blueprint assigned".'
escalation_enabled:
type: boolean
default: false
escalation_blueprint:
type: string
format: uuid
nullable: true
description: Target blueprint UUID. Not enforced at save time, but the escalate action fails with 400 until both escalation_enabled and escalation_blueprint are set.
transfer_enabled:
type: boolean
default: false
four_eyes_checker_blueprint:
type: string
format: uuid
nullable: true
description: 'Setting this enables 4-eyes review: resolutions on this blueprint stage on the checker blueprint''s queue.'
require_resolution_note:
type: boolean
default: false
content_config:
$ref: '#/components/schemas/CaseContentConfig'
is_active:
type: boolean
default: true
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/' \\\n -H 'x-api-key: YOUR_API_KEY' \\\n -H 'Content-Type: application/json' \\\n -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}}}'"
responses:
'201':
description: Blueprint created.
content:
application/json:
schema:
$ref: '#/components/schemas/CaseBlueprintDetail'
'400':
description: Name over 24 chars, empty assignee_pool, or a cross-referenced blueprint (escalation/checker) not found.
content:
application/json:
schema:
type: object
/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/:
get:
summary: Get blueprint
description: Retrieve a blueprint, including its connected creation sources (AML config, transaction rules, workflow nodes) and which blueprints escalate to it.
operationId: get_case_blueprint
tags:
- Case Blueprints
parameters:
- name: organization_id
in: path
required: true
schema:
type: string
format: uuid
description: Organization UUID.
- name: application_id
in: path
required: true
schema:
type: string
format: uuid
description: Application UUID.
- name: blueprint_uuid
in: path
required: true
schema:
type: string
format: uuid
example: b1de0000-0000-4000-8000-000000000002
description: Blueprint UUID.
x-codeSamples:
- lang: curl
label: curl
source: "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/b1de0000-0000-4000-8000-000000000002/' \\\n -H 'x-api-key: YOUR_API_KEY'"
responses:
'200':
description: Blueprint detail.
content:
application/json:
schema:
$ref: '#/components/schemas/CaseBlueprintDetail'
patch:
summary: Update blueprint
description: Partially update a blueprint's general settings or content_config.
operationId: update_case_blueprint
tags:
- Case Blueprints
parameters:
- name: organization_id
in: path
required: true
schema:
type: string
format: uuid
description: Organization UUID.
- name: application_id
in: path
required: true
schema:
type: string
format: uuid
description: Application UUID.
- name: blueprint_uuid
in: path
required: true
schema:
type: string
format: uuid
example: b1de0000-0000-4000-8000-000000000002
description: Blueprint UUID.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
maxLength: 24
description: Max 24 characters, e.g. "AML investigation".
description:
type: string
nullable: true
assignee_pool:
type: array
items:
type: string
format: uuid
minItems: 1
description: List of User UUIDs. Empty arrays are rejected with "Pick at least one assignee".
assignment_method:
type: string
enum:
- MANUAL
- AUTOMATIC
max_active_cases:
type: integer
nullable: true
minimum: 1
description: 'Automatic-mode threshold: "fewer than N cases of this blueprint assigned".'
escalation_enabled:
type: boolean
escalation_blueprint:
type: string
format: uuid
nullable: true
description: Target blueprint UUID. Not enforced at save time, but the escalate action fails with 400 until both escalation_enabled and escalation_blueprint are set.
transfer_enabled:
type: boolean
four_eyes_checker_blueprint:
type: string
format: uuid
nullable: true
description: 'Setting this enables 4-eyes review: resolutions on this blueprint stage on the checker blueprint''s queue.'
require_resolution_note:
type: boolean
content_config:
$ref: '#/components/schemas/CaseContentConfig'
is_active:
type: boolean
x-codeSamples:
- lang: curl
label: curl
source: "curl -X PATCH 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/b1de0000-0000-4000-8000-000000000002/' \\\n -H 'x-api-key: YOUR_API_KEY' \\\n -H 'Content-Type: application/json' \\\n -d '{\"transfer_enabled\": true}'"
responses:
'200':
description: Updated blueprint.
content:
application/json:
schema:
$ref: '#/components/schemas/CaseBlueprintDetail'
delete:
summary: Delete blueprint
description: 'Soft-delete a blueprint. Deletion always succeeds and does not touch the blueprint''s cases: existing cases keep their blueprint reference and its settings continue to apply to them. A deleted blueprint no longer appears in blueprint lists and can no longer be chosen as a transfer target; if a maker blueprint is deleted while a resolution is pending 4-eyes approval, a rejected resolution leaves the case on the checker blueprint.'
operationId: delete_case_blueprint
tags:
- Case Blueprints
parameters:
- name: organization_id
in: path
required: true
schema:
type: string
format: uuid
description: Organization UUID.
- name: application_id
in: path
required: true
schema:
type: string
format: uuid
description: Application UUID.
- name: blueprint_uuid
in: path
required: true
schema:
type: string
format: uuid
example: b1de0000-0000-4000-8000-000000000002
description: Blueprint UUID.
x-codeSamples:
- lang: curl
label: curl
source: "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/b1de0000-0000-4000-8000-000000000002/' \\\n -H 'x-api-key: YOUR_API_KEY'"
responses:
'204':
description: Blueprint deleted.
/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/presets/:
get:
summary: List blueprint presets
description: List the four built-in presets (Screening hit, AML investigation, Suspicious activity, KYC review) with their content_config and whether each is already installed on this application.
operationId: list_case_blueprint_presets
tags:
- Case Blueprints
parameters:
- name: organization_id
in: path
required: true
schema:
type: string
format: uuid
description: Organization UUID.
- name: application_id
in: path
required: true
schema:
type: string
format: uuid
description: Application UUID.
x-codeSamples:
- lang: curl
label: curl
source: "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/presets/' \\\n -H 'x-api-key: YOUR_API_KEY'"
responses:
'200':
description: Preset catalogue.
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
type: object
properties:
preset_key:
type: string
enum:
- screening_hit
- aml_investigation
- suspicious_activity
- kyc
name:
type: string
description:
type: string
content_config:
$ref: '#/components/schemas/CaseContentConfig'
installed:
type: boolean
/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/presets/install/:
post:
summary: Install blueprint presets
description: Copy one or more presets into the application as editable blueprints. Idempotent per preset_key; omit preset_keys to install every preset not yet installed.
operationId: install_case_blueprint_presets
tags:
- Case Blueprints
parameters:
- name: organization_id
in: path
required: true
schema:
type: string
format: uuid
description: Organization UUID.
- name: application_id
in: path
required: true
schema:
type: string
format: uuid
description: Application UUID.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
preset_keys:
type: array
items:
type: string
nullable: true
description: Subset of screening_hit, aml_investigation, suspicious_activity, kyc. Omit to install all.
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/presets/install/' \\\n -H 'x-api-key: YOUR_API_KEY' \\\n -H 'Content-Type: application/json' \\\n -d '{\"preset_keys\": [\"aml_investigation\", \"kyc\"]}'"
responses:
'200':
description: No new presets to install (all requested presets already exist).
content:
application/json:
schema:
type: object
properties:
created:
type: array
items:
type: string
'201':
description: One or more presets installed.
content:
application/json:
schema:
type: object
properties:
created:
type: array
items:
type: string
components:
schemas:
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: The six togglable sections that drive which tabs and fields appear on the case page. Unknown sections or keys are rejected.
properties:
checklist:
type: object
properties:
enabled:
type: boolean
optional:
type: boolean
description: When true, a case can be resolved with incomplete checklist items.
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: Connectors currently routing new cases into this blueprint.
items:
type: object
properties:
kind:
type: string
enum:
- aml
- rule
- workflow
id:
type: string
name:
type: string
receives_escalation_from:
type: array
description: Other blueprints whose Escalation target points at this one.
items:
type: object
properties:
id:
type: string
name:
type: string
updated_at:
type: string
format: date-time
CaseBlueprintListItem:
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
CaseContentConfig:
type: object
description: The six togglable sections that drive which tabs and fields appear on the case page. Unknown sections or keys are rejected.
properties:
checklist:
type: object
properties:
enabled:
type: boolean
optional:
type: boolean
description: When true, a case can be resolved with incomplete checklist items.
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
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
TransactionTokenAuth:
type: apiKey
in: header
name: X-Transaction-Token
description: Short-lived scoped token minted by your backend via POST /v3/transactions/sdk-token/. Used by the Didit SDKs on the device-facing /v1/transactions/ endpoints.
SessionTokenAuth:
type: apiKey
in: header
name: Session-Token
description: Short-lived token returned in the `session_token` field of POST /v3/session/. Used by the hosted verification flow (and custom sandbox UIs) to call session-scoped endpoints on behalf of the verifying user, without your server-side API key.