Steps are validated with the same validator as create-session inline steps. theme_id must reference a non-archived theme in the caller’s scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. status defaults to draft; “active” creates-and-activates (“archived” is rejected). is_default: true runs the atomic per-scope default swap after insert.
Profile-kind scope (KYB). Absent -> both. A scoped workflow only mints sessions for a matching profile (400 idv_workflow_profile_kind_mismatch otherwise).
Must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived otherwise). null/absent = use the workspace default theme.
DEPRECATED single-horizon alias for pii_retention_days. Supplying only this field is understood as asking for all four components at this value: the control it belonged to was documented as governing both sensitive fields and capture artifacts, so fanning it out cannot retain less than the caller intended. This is a FULL REPLACE: a component omitted from the request is NOT preserved from the stored workflow. It resolves to retention_days if that is supplied, and to its own default otherwise, so an editor must send all four explicitly to avoid resetting a component it did not mean to change. Omitting every retention field is not the legacy 60: each component takes its own default (biometrics 90, id images 365, documents 1825, PII 2555). Values outside 30..365 are rejected even though each component accepts up to 2555: the alias keeps its original bounds so an older build never misreads a longer horizon.
Additional workflow-admin instructions for the review agent. Use for stricter or wider flagging behavior before deterministic controls exist; empty/omitted means no extra guidance.
Sparse per-code review overrides. A code ABSENT from the map is ENABLED (default-true). Keys are validated against the known configurable fraud-flag taxonomy: an unknown key -> 400 idv_flag_code_unknown. Deterministic service-enforced policy codes such as id_type_not_allowed cannot be disabled and return idv_flag_code_not_configurable.
Request-only editor capability assertions. Required when creating or replacing a workflow that contains a listed conditional question or typed response-field feature, and when replacing a workflow that already contains one. typed_response_fields_v1 is required if any stored or incoming response field has an explicit answer_type, including text. An old full-replace editor receives 409 idv_workflow_editor_capability_required before persistence; omitted fields are not implicitly merged. Untyped legacy writes remain unchanged. retention_schedules_v1 asserts the client renders and preserves all four per-component retention schedules; it is required on REPLACE when the stored schedule is not representable by the deprecated retention_days alias (i.e. not uniform and inside its 30..365 clamp) AND the write changes it. Retention create is never gated. This prevents older full-replace editors from silently removing rules they do not understand or shortening a schedule they cannot render. workflow_security_and_questionnaire_approval_v1 is required on REPLACE when iframe_enabled, allowed_frame_origins, or auto_approve_questionnaire_only differs from the stored workflow. Include this assertion only if your editor renders and preserves all three settings. conditional_steps_v1 is required when creating or replacing a workflow with any step visible_when, and when replacing a workflow that already has one.
Retention of liveness captures AND the cross-session biometric templates derived from them, in days. Copied onto sessions at create, so later workflow edits affect only future sessions. Like every component, the workflow owner may set up to seven years (2555 days); the 90-day default is the recommended setting, and a shorter regional limit (for example Quebec's one year) is the configuring tenant's responsibility.
Retention of the sensitive fields on a session (subject reference, questionnaire answers, capture and invite credentials, OCR fields, profile-mismatch details) in days. This is what the deprecated retention_days field has always governed.
Tenant/workspace-scoped, versioned workflow object. (Distinct from the legacy Workflow PRESET enum above.) The cycle-2 inline branding block is REMOVED; presentation lives on Theme objects referenced by theme_id.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://hub.gominerva.com/docs.json","name":"Minerva Docs","colors":{"primary":"#4e26b1","light":"#beb7fb","dark":"#271362"},"logo":{"light":"https://mintcdn.com/minerva-557aeab7/42KvxtYHwgz1q8RK/logo/minerva-dark.svg?fit=max\u0026auto=format\u0026n=42KvxtYHwgz1q8RK\u0026q=85\u0026s=b6ef1ed1a0b7ff7df81fdbb1c2ac0db4","dark":"https://mintcdn.com/minerva-557aeab7/42KvxtYHwgz1q8RK/logo/minerva-light.svg?fit=max\u0026auto=format\u0026n=42KvxtYHwgz1q8RK\u0026q=85\u0026s=986049de4dbc27a2e833d88aaff85c3c"},"favicon":"https://mintcdn.com/minerva-557aeab7/42KvxtYHwgz1q8RK/favicon.svg?fit=max\u0026auto=format\u0026n=42KvxtYHwgz1q8RK\u0026q=85\u0026s=313cf5bf970aa85c301aadfb9dda68b2","navbar":{"primary":{"type":"button","label":"Go to Minerva App","href":"https://app.gominerva.com"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/gominerva"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Support","icon":"headset","href":"mailto:support@gominerva.com"},{"anchor":"Trust Page","icon":"shield","href":"https://app.conveyor.com/profile/gominerva"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"minerva-557aeab7","hasAudioNarration":false,"actualSubdomain":"minerva-557aeab7","customDomains":["docs.gominerva.com"],"gitSource":{"type":"gitlab","owner":"minervaai/interfaces","repo":"minerva-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"projectId":74271980,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af3e28bde222de6f181f6bc","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"API Reference","count":184},{"language":"default","tag":"Admin Actions - Endpoints","count":64},{"language":"default","tag":"Agent Risk Assessments - Endpoints","count":44},{"language":"default","tag":"Identity Verification - Endpoints","count":42},{"language":"default","tag":"Knowledge Hub","count":32},{"language":"default","tag":"Custom Lists","count":29},{"language":"default","tag":"User Guides","count":19},{"language":"default","tag":"Agent Runtime","count":14},{"language":"default","tag":"Themes","count":14},{"language":"default","tag":"API Documentation","count":13}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/workflows/create-a-workflow","slug":"/api-reference/workflows/create-a-workflow","pageMetadata":{"title":"Create a workflow","description":"Steps are validated with the same validator as create-session inline steps. `theme_id` must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. `status` defaults to draft; \"active\" creates-and-activates (\"archived\" is rejected). `is_default: true` runs the atomic per-scope default swap after insert.\n","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /workflows","href":"/api-reference/workflows/create-a-workflow","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Steps are validated with the same validator as create-session inline steps. \", _jsx(_components.code, {\n children: \"theme_id\"\n }), \" must reference a non-archived theme in the caller’s scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. \", _jsx(_components.code, {\n children: \"status\"\n }), \" defaults to draft; “active” creates-and-activates (“archived” is rejected). \", _jsx(_components.code, {\n children: \"is_default: true\"\n }), \" runs the atomic per-scope default swap after insert.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a workflow","description":"Steps are validated with the same validator as create-session inline steps. `theme_id` must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. `status` defaults to draft; \"active\" creates-and-activates (\"archived\" is rejected). `is_default: true` runs the atomic per-scope default swap after insert.\n","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /workflows","href":"/api-reference/workflows/create-a-workflow","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["workflows"],"summary":"Create a workflow","description":"Steps are validated with the same validator as create-session inline steps. `theme_id` must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. `status` defaults to draft; \"active\" creates-and-activates (\"archived\" is rejected). `is_default: true` runs the atomic per-scope default swap after insert.\n","security":["daa46f56-0171-4590-89b8-ecddf79da162","fa9e3588-06ae-4a3b-aa14-572314aaa041"],"requestBody":"f53d5262-9d54-4339-9a6e-02fe0e671e90","responses":{"201":"4958f89f-d582-47aa-b938-edec9be7f274","400":"170911d2-b5b1-49fc-8980-bf81aa040ea6","401":"cecc6b6f-136f-4a85-914c-f0dde055497e","403":"d50020f6-c5a8-407d-adde-c6fa880ea591"},"method":"post","type":"path","servers":["2d270158-b0b4-4a7f-a4ee-f351d95099b6"],"path":"/workflows","baseUrlOptions":["https://api.gominerva.com/idv/v1"],"title":"Create a workflow","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","steps"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"name","typeLabel":"string"},"steps":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["step_id","type"],"properties":{"step_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Unique per session.","isRequired":true,"uniqueKey":"steps.items.[INDEX].step_id","typeLabel":"string"},"type":{"type":"string","description":"Step types accepted by new session/workflow writes.","enum":["liveness","id_capture","questionnaire","document_upload"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"required":{"type":"boolean","default":true,"description":"false => the consumer may skip the step.","uniqueKey":"steps.items.[INDEX].required","typeLabel":"boolean"},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Optional display override.","uniqueKey":"steps.items.[INDEX].title","typeLabel":"string"},"config":{"type":"object","additionalProperties":false,"description":"Type-specific configuration accepted on new writes.\n","properties":{"accepted_id_types":{"type":"array","maxItems":20,"description":"id_capture only; empty/omitted accepts supported types.","items":{"oneOf":[{"type":"string","description":"Id types a consumer can declare or configure in accepted_id_types. Built-ins are listed explicitly; workflow-local custom ids must be defined in the id_capture step's custom_id_types. `unknown` is an inference outcome, not declarable. `passport` is the one-sided built-in type - declaring it drops id_back when sides=auto.\n","enum":["driver_license","government_id","health_card","passport","national_id","permanent_resident_card","residence_permit","other"],"uniqueKey":"steps.items.[INDEX].config.accepted_id_types.items.[INDEX].oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Id types a consumer can declare or configure in accepted_id_types. Built-ins are listed explicitly; workflow-local custom ids must be defined in the id_capture step's custom_id_types. `unknown` is an inference outcome, not declarable. `passport` is the one-sided built-in type - declaring it drops id_back when sides=auto.\n","pattern":"^[a-z0-9_-]{1,64}$","uniqueKey":"steps.items.[INDEX].config.accepted_id_types.items.[INDEX].oneOf.1","typeLabel":"string"}],"uniqueKey":"steps.items.[INDEX].config.accepted_id_types.items.[INDEX]","typeLabel":"enum\u003cstring> | string"},"uniqueKey":"steps.items.[INDEX].config.accepted_id_types","typeLabel":"(enum\u003cstring> | string)[]"},"custom_id_types":{"type":"array","maxItems":20,"description":"id_capture only; workflow-local document categories.","items":{"type":"object","required":["id_type","label","sides"],"properties":{"id_type":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Workflow-local id type identifier. Must not match a built-in ID type or `unknown`; accepted_id_types can reference it only within the same id_capture step.\n","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.custom_id_types.items.[INDEX].id_type","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":120,"description":"Human-readable document type label shown to applicants and reviewers.","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.custom_id_types.items.[INDEX].label","typeLabel":"string"},"sides":{"type":"string","enum":["one_sided","two_sided"],"description":"Capture side requirement when the custom type is declared.","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.custom_id_types.items.[INDEX].sides","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":1000,"description":"Optional workflow-admin guidance describing the ID, authenticity requirements, and specific details reviewers or the assessment agent should inspect for this custom type.\n","uniqueKey":"steps.items.[INDEX].config.custom_id_types.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].config.custom_id_types.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].config.custom_id_types","typeLabel":"object[]"},"sides":{"type":"string","description":"auto adapts to the declared document type; one_sided never demands id_back.","enum":["auto","two_sided","one_sided"],"default":"auto","uniqueKey":"steps.items.[INDEX].config.sides","typeLabel":"enum\u003cstring>"},"questions":{"type":"array","minItems":1,"maxItems":50,"description":"questionnaire only.","items":{"type":"object","required":["question_id","label","type"],"properties":{"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Unique within the step.","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].question_id","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":500,"isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].label","typeLabel":"string"},"type":{"type":"string","enum":["text","textarea","select","multi_select","date","country","boolean"],"isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"required":{"type":"boolean","default":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].required","typeLabel":"boolean"},"required_when":{"type":"object","description":"Mutually exclusive with required=true; required defaults to false when this field is present.","required":["question_id","equals"],"properties":{"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].required_when.question_id","typeLabel":"string"},"equals":{"type":"boolean","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].required_when.equals","typeLabel":"boolean"}},"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].required_when","typeLabel":"object"},"visible_when":{"type":"object","description":"Shows this otherwise-optional question only when the earlier, always-shown and required boolean question has the specified value. Mutually exclusive with required=true. If required_when is also present, both fields must contain the same condition.\n","required":["question_id","equals"],"properties":{"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].visible_when.question_id","typeLabel":"string"},"equals":{"type":"boolean","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].visible_when.equals","typeLabel":"boolean"}},"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].visible_when","typeLabel":"object"},"options":{"type":"array","maxItems":50,"description":"Required for select/multi_select; forbidden otherwise.","items":{"type":"object","required":["value","label"],"properties":{"value":{"type":"string","minLength":1,"maxLength":128,"isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].options.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":200,"isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].options.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].options.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].options","typeLabel":"object[]"},"response_fields":{"type":"array","minItems":1,"maxItems":10,"description":"Text/textarea only. Field IDs must be unique and at least one field must be required. Omitted on scalar questions.\n","items":{"type":"object","required":["field_id","label"],"properties":{"field_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].field_id","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Trimmed field label.","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].label","typeLabel":"string"},"required":{"type":"boolean","default":true,"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].required","typeLabel":"boolean"},"answer_type":{"type":"string","enum":["text","date","number"],"description":"Optional. Omission is preserved in stored and returned manifests. Omission and text inherit the parent text/textarea presentation. Every answer cell remains a JSON string, trimmed with the existing ECMAScript whitespace rules. Date requires ASCII YYYY-MM-DD with a valid Gregorian date in years 0001-9999, without a time or timezone. Number requires ASCII -?(0|[1-9][0-9]*)(\\.[0-9]+)? and preserves its sign, precision, zero and trailing zeros without numeric conversion. Exponents, leading plus signs, grouping separators and nonfinite values are invalid. Optional empty cells remain optional.\n","uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].answer_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].response_fields","typeLabel":"object[]"},"allow_additional_responses":{"type":"boolean","default":false,"description":"Requires response_fields. Allows the recipient to add or remove response rows.","uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].allow_additional_responses","typeLabel":"boolean"},"max_response_rows":{"type":"integer","minimum":1,"maximum":20,"description":"Fixed groups use 1; repeatable groups use 2-20 (default 20).","uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX].max_response_rows","typeLabel":"integer"}},"uniqueKey":"steps.items.[INDEX].config.questions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].config.questions","typeLabel":"object[]"},"documents":{"type":"array","minItems":1,"maxItems":5,"description":"document_upload only; document_id values are unique across the workflow.","items":{"type":"object","required":["document_id","label"],"properties":{"document_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Unique within the full workflow.","isRequired":true,"uniqueKey":"steps.items.[INDEX].config.documents.items.[INDEX].document_id","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":200,"isRequired":true,"uniqueKey":"steps.items.[INDEX].config.documents.items.[INDEX].label","typeLabel":"string"},"description":{"type":"string","maxLength":1000,"uniqueKey":"steps.items.[INDEX].config.documents.items.[INDEX].description","typeLabel":"string"},"accepted_content_types":{"type":"array","minItems":1,"maxItems":4,"uniqueItems":true,"description":"Defaults to [application/pdf, image/jpeg, image/png] when omitted.","items":{"type":"string","enum":["application/pdf","image/jpeg","image/png","image/webp"],"uniqueKey":"steps.items.[INDEX].config.documents.items.[INDEX].accepted_content_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"steps.items.[INDEX].config.documents.items.[INDEX].accepted_content_types","typeLabel":"enum\u003cstring>[]"},"required":{"type":"boolean","default":true,"uniqueKey":"steps.items.[INDEX].config.documents.items.[INDEX].required","typeLabel":"boolean"}},"uniqueKey":"steps.items.[INDEX].config.documents.items.[INDEX]","typeLabel":"object"},"uniqueKey":"steps.items.[INDEX].config.documents","typeLabel":"object[]"}},"uniqueKey":"steps.items.[INDEX].config","typeLabel":"object"},"visible_when":{"type":"object","description":"Show this step only when an earlier boolean answer matches. Workflow writes require the `conditional_steps_v1` editor capability.\n","required":["step_id","question_id","equals"],"properties":{"step_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"steps.items.[INDEX].visible_when.step_id","typeLabel":"string"},"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"steps.items.[INDEX].visible_when.question_id","typeLabel":"string"},"equals":{"type":"boolean","isRequired":true,"uniqueKey":"steps.items.[INDEX].visible_when.equals","typeLabel":"boolean"}},"additionalProperties":false,"uniqueKey":"steps.items.[INDEX].visible_when","typeLabel":"object"}},"uniqueKey":"steps.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"steps","typeLabel":"object[]"},"description":{"type":"string","maxLength":500,"uniqueKey":"description","typeLabel":"string"},"profile_kind":{"type":"string","enum":["individual","organization","both"],"description":"Profile-kind scope (KYB). Absent -> both. A scoped workflow only mints sessions for a matching profile (400 idv_workflow_profile_kind_mismatch otherwise).\n","uniqueKey":"profile_kind","typeLabel":"enum\u003cstring>"},"theme_id":{"oneOf":[{"type":"string","description":"Must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived otherwise). null/absent = use the workspace default theme.\n","pattern":"^idvt_[0-9a-f]{24}$","uniqueKey":"theme_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived otherwise). null/absent = use the workspace default theme.\n","uniqueKey":"theme_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"theme_id","typeLabel":"string | null"},"status":{"type":"string","description":"Create only: draft (default) or active; archived is rejected. PUT rejects it (use /activate and /archive).","enum":["draft","active"],"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"is_default":{"type":"boolean","description":"Create only (PUT rejects it; use POST .../default).","uniqueKey":"is_default","typeLabel":"boolean"},"retention_days":{"type":"integer","minimum":30,"maximum":365,"default":60,"deprecated":true,"description":"DEPRECATED single-horizon alias for pii_retention_days. Supplying only this field is understood as asking for all four components at this value: the control it belonged to was documented as governing both sensitive fields and capture artifacts, so fanning it out cannot retain less than the caller intended. This is a FULL REPLACE: a component omitted from the request is NOT preserved from the stored workflow. It resolves to `retention_days` if that is supplied, and to its own default otherwise, so an editor must send all four explicitly to avoid resetting a component it did not mean to change. Omitting every retention field is not the legacy 60: each component takes its own default (biometrics 90, id images 365, documents 1825, PII 2555). Values outside 30..365 are rejected even though each component accepts up to 2555: the alias keeps its original bounds so an older build never misreads a longer horizon.\n","uniqueKey":"retention_days","typeLabel":"integer"},"assessment_prompt_instructions":{"type":"string","maxLength":4000,"description":"Additional workflow-admin instructions for the review agent. Use for stricter or wider flagging behavior before deterministic controls exist; empty/omitted means no extra guidance.\n","uniqueKey":"assessment_prompt_instructions","typeLabel":"string"},"privacy_contact_email":{"oneOf":[{"type":"string","description":"Required before the workflow can be activated or created as active.","format":"email","maxLength":254,"uniqueKey":"privacy_contact_email.oneOf.0","typeLabel":"string\u003cemail>"},{"type":"string","description":"Required before the workflow can be activated or created as active.","maxLength":0,"uniqueKey":"privacy_contact_email.oneOf.1","typeLabel":"string"}],"uniqueKey":"privacy_contact_email","typeLabel":"string\u003cemail> | string"},"profile_update_enabled":{"type":"boolean","description":"Automatic profile-write opt-in (default false).","uniqueKey":"profile_update_enabled","typeLabel":"boolean"},"auto_approve_questionnaire_only":{"type":"boolean","description":"Explicit approval policy for workflows consisting only of questionnaire steps, including optional steps. Default false.\n","uniqueKey":"auto_approve_questionnaire_only","typeLabel":"boolean"},"iframe_enabled":{"type":"boolean","description":"Enable iframe embedding for future sessions. Default false.","uniqueKey":"iframe_enabled","typeLabel":"boolean"},"allowed_frame_origins":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":253,"uniqueKey":"allowed_frame_origins.items.[INDEX]","typeLabel":"string"},"description":"HTTPS parent origins. Use an exact origin or leftmost wildcard, for example https://example.com or https://*.example.com.\n","uniqueKey":"allowed_frame_origins","typeLabel":"string[]"},"flag_settings":{"type":"object","description":"Sparse per-code review overrides. A code ABSENT from the map is ENABLED (default-true). Keys are validated against the known configurable fraud-flag taxonomy: an unknown key -> 400 idv_flag_code_unknown. Deterministic service-enforced policy codes such as id_type_not_allowed cannot be disabled and return idv_flag_code_not_configurable.\n","additionalProperties":{"type":"object","properties":{"raise_for_review":{"type":"boolean","uniqueKey":"flag_settings.additionalProperties.raise_for_review","typeLabel":"boolean"}},"uniqueKey":"flag_settings.additionalProperties","typeLabel":"object"},"uniqueKey":"flag_settings","typeLabel":"object"},"revision":{"type":"integer","description":"Replace only: the CAS expectation (or use If-Match).","uniqueKey":"revision","typeLabel":"integer"},"supported_features":{"type":"array","maxItems":16,"uniqueItems":true,"items":{"type":"string","enum":["conditional_question_requirements_v1","conditional_question_visibility_v1","typed_response_fields_v1","retention_schedules_v1","workflow_security_and_questionnaire_approval_v1","conditional_steps_v1"],"uniqueKey":"supported_features.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Request-only editor capability assertions. Required when creating or replacing a workflow that contains a listed conditional question or typed response-field feature, and when replacing a workflow that already contains one. `typed_response_fields_v1` is required if any stored or incoming response field has an explicit answer_type, including text. An old full-replace editor receives 409 idv_workflow_editor_capability_required before persistence; omitted fields are not implicitly merged. Untyped legacy writes remain unchanged. `retention_schedules_v1` asserts the client renders and preserves all four per-component retention schedules; it is required on REPLACE when the stored schedule is not representable by the deprecated `retention_days` alias (i.e. not uniform and inside its 30..365 clamp) AND the write changes it. Retention create is never gated. This prevents older full-replace editors from silently removing rules they do not understand or shortening a schedule they cannot render. `workflow_security_and_questionnaire_approval_v1` is required on REPLACE when `iframe_enabled`, `allowed_frame_origins`, or `auto_approve_questionnaire_only` differs from the stored workflow. Include this assertion only if your editor renders and preserves all three settings. `conditional_steps_v1` is required when creating or replacing a workflow with any step `visible_when`, and when replacing a workflow that already has one.\n","uniqueKey":"supported_features","typeLabel":"enum\u003cstring>[]"},"biometrics_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":90,"description":"Retention of liveness captures AND the cross-session biometric templates derived from them, in days. Copied onto sessions at create, so later workflow edits affect only future sessions. Like every component, the workflow owner may set up to seven years (2555 days); the 90-day default is the recommended setting, and a shorter regional limit (for example Quebec's one year) is the configuring tenant's responsibility.\n","uniqueKey":"biometrics_retention_days","typeLabel":"integer"},"id_images_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":365,"description":"Retention of identity-document captures (id_front / id_back) in days.\n","uniqueKey":"id_images_retention_days","typeLabel":"integer"},"documents_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":1825,"description":"Retention of consumer-uploaded supporting documents in days.\n","uniqueKey":"documents_retention_days","typeLabel":"integer"},"pii_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":2555,"description":"Retention of the sensitive fields on a session (subject reference, questionnaire answers, capture and invite credentials, OCR fields, profile-mismatch details) in days. This is what the deprecated retention_days field has always governed.\n","uniqueKey":"pii_retention_days","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","steps":[{"step_id":"\u003cstring>","required":true,"title":"\u003cstring>","config":{"accepted_id_types":[],"custom_id_types":[{"id_type":"\u003cstring>","label":"\u003cstring>","description":"\u003cstring>"}],"sides":"auto","questions":[{"question_id":"\u003cstring>","label":"\u003cstring>","required":true,"options":[{"value":"\u003cstring>","label":"\u003cstring>"}],"response_fields":[{"field_id":"\u003cstring>","label":"\u003cstring>","required":true}],"allow_additional_responses":false,"max_response_rows":10}],"documents":[{"document_id":"\u003cstring>","label":"\u003cstring>","description":"\u003cstring>","accepted_content_types":[],"required":true}]}}],"description":"\u003cstring>","theme_id":"\u003cstring>","is_default":true,"retention_days":60,"assessment_prompt_instructions":"\u003cstring>","privacy_contact_email":"jsmith@example.com","profile_update_enabled":true,"auto_approve_questionnaire_only":true,"iframe_enabled":true,"allowed_frame_origins":["\u003cstring>"],"flag_settings":{},"revision":123,"supported_features":[],"biometrics_retention_days":90,"id_images_retention_days":365,"documents_retention_days":1825,"pii_retention_days":2555}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"4958f89f-d582-47aa-b938-edec9be7f274":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","description":"Tenant/workspace-scoped, versioned workflow object. (Distinct from the legacy `Workflow` PRESET enum above.) The cycle-2 inline branding block is REMOVED; presentation lives on Theme objects referenced by `theme_id`.\n","required":["workflow_id","tenant_id","workspace_id","name","profile_kind","steps","status","theme_id","is_default","retention_days","biometrics_retention_days","id_images_retention_days","documents_retention_days","pii_retention_days","assessment_prompt_instructions","privacy_contact_email","auto_approve_questionnaire_only","iframe_enabled","allowed_frame_origins","created_at","updated_at","revision"],"properties":{"workflow_id":{"type":"string","pattern":"^idvw_[0-9a-f]{24}$","isRequired":true,"uniqueKey":"data.workflow_id","typeLabel":"string"},"tenant_id":{"type":"string","isRequired":true,"uniqueKey":"data.tenant_id","typeLabel":"string"},"workspace_id":{"type":"string","isRequired":true,"uniqueKey":"data.workspace_id","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"data.name","typeLabel":"string"},"profile_kind":{"type":"string","enum":["individual","organization","both"],"description":"Profile-kind scope (KYB; default both). Session create rejects a workflow whose scope does not match the linked profile's kind (400 idv_workflow_profile_kind_mismatch); the dashboard shows a workflow only for the matching profile kind.\n","isRequired":true,"uniqueKey":"data.profile_kind","typeLabel":"enum\u003cstring>"},"steps":{"type":"array","minItems":1,"maxItems":10,"description":"EXACTLY the flow-steps step schema (same validator as sessions).","items":{"type":"object","required":["step_id","type"],"properties":{"step_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Unique per session.","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].step_id","typeLabel":"string"},"type":{"type":"string","enum":["liveness","id_capture","questionnaire","document_upload"],"isRequired":true,"uniqueKey":"data.steps.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"required":{"type":"boolean","default":true,"description":"false => the consumer may skip the step.","uniqueKey":"data.steps.items.[INDEX].required","typeLabel":"boolean"},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Optional display override.","uniqueKey":"data.steps.items.[INDEX].title","typeLabel":"string"},"config":{"type":"object","description":"Type-specific step config. Only the fields for the step type are allowed.","properties":{"accepted_id_types":{"type":"array","maxItems":20,"description":"id_capture only. Empty/omitted = any supported built-in type plus any custom_id_types configured on the same step.\n","items":{"oneOf":[{"type":"string","description":"Id types a consumer can declare or configure in accepted_id_types. Built-ins are listed explicitly; workflow-local custom ids must be defined in the id_capture step's custom_id_types. `unknown` is an inference outcome, not declarable. `passport` is the one-sided built-in type - declaring it drops id_back when sides=auto.\n","enum":["driver_license","government_id","health_card","passport","national_id","permanent_resident_card","residence_permit","other"],"uniqueKey":"data.steps.items.[INDEX].config.accepted_id_types.items.[INDEX].oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","description":"Id types a consumer can declare or configure in accepted_id_types. Built-ins are listed explicitly; workflow-local custom ids must be defined in the id_capture step's custom_id_types. `unknown` is an inference outcome, not declarable. `passport` is the one-sided built-in type - declaring it drops id_back when sides=auto.\n","pattern":"^[a-z0-9_-]{1,64}$","uniqueKey":"data.steps.items.[INDEX].config.accepted_id_types.items.[INDEX].oneOf.1","typeLabel":"string"}],"uniqueKey":"data.steps.items.[INDEX].config.accepted_id_types.items.[INDEX]","typeLabel":"enum\u003cstring> | string"},"uniqueKey":"data.steps.items.[INDEX].config.accepted_id_types","typeLabel":"(enum\u003cstring> | string)[]"},"custom_id_types":{"type":"array","maxItems":20,"description":"id_capture only. Workflow-local document categories that can be referenced from accepted_id_types and declared by the applicant.\n","items":{"type":"object","required":["id_type","label","sides"],"properties":{"id_type":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Workflow-local id type identifier. Must not match a built-in ID type or `unknown`; accepted_id_types can reference it only within the same id_capture step.\n","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.custom_id_types.items.[INDEX].id_type","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":120,"description":"Human-readable document type label shown to applicants and reviewers.","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.custom_id_types.items.[INDEX].label","typeLabel":"string"},"sides":{"type":"string","enum":["one_sided","two_sided"],"description":"Capture side requirement when the custom type is declared.","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.custom_id_types.items.[INDEX].sides","typeLabel":"enum\u003cstring>"},"description":{"type":"string","maxLength":1000,"description":"Optional workflow-admin guidance describing the ID, authenticity requirements, and specific details reviewers or the assessment agent should inspect for this custom type.\n","uniqueKey":"data.steps.items.[INDEX].config.custom_id_types.items.[INDEX].description","typeLabel":"string"}},"uniqueKey":"data.steps.items.[INDEX].config.custom_id_types.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.steps.items.[INDEX].config.custom_id_types","typeLabel":"object[]"},"sides":{"type":"string","description":"auto adapts to the declared document type; one_sided never demands id_back.","enum":["auto","two_sided","one_sided"],"default":"auto","uniqueKey":"data.steps.items.[INDEX].config.sides","typeLabel":"enum\u003cstring>"},"questions":{"type":"array","minItems":1,"maxItems":50,"description":"questionnaire only.","items":{"type":"object","required":["question_id","label","type"],"properties":{"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Unique within the step.","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].question_id","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":500,"isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].label","typeLabel":"string"},"type":{"type":"string","enum":["text","textarea","select","multi_select","date","country","boolean"],"isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"required":{"type":"boolean","default":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].required","typeLabel":"boolean"},"required_when":{"type":"object","description":"Mutually exclusive with required=true; required defaults to false when this field is present.","required":["question_id","equals"],"properties":{"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].required_when.question_id","typeLabel":"string"},"equals":{"type":"boolean","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].required_when.equals","typeLabel":"boolean"}},"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].required_when","typeLabel":"object"},"visible_when":{"type":"object","description":"Shows this otherwise-optional question only when the earlier, always-shown and required boolean question has the specified value. Mutually exclusive with required=true. If required_when is also present, both fields must contain the same condition.\n","required":["question_id","equals"],"properties":{"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].visible_when.question_id","typeLabel":"string"},"equals":{"type":"boolean","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].visible_when.equals","typeLabel":"boolean"}},"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].visible_when","typeLabel":"object"},"options":{"type":"array","maxItems":50,"description":"Required for select/multi_select; forbidden otherwise.","items":{"type":"object","required":["value","label"],"properties":{"value":{"type":"string","minLength":1,"maxLength":128,"isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].options.items.[INDEX].value","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":200,"isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].options.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].options.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].options","typeLabel":"object[]"},"response_fields":{"type":"array","minItems":1,"maxItems":10,"description":"Text/textarea only. Field IDs must be unique and at least one field must be required. Omitted on scalar questions.\n","items":{"type":"object","required":["field_id","label"],"properties":{"field_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].field_id","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":200,"description":"Trimmed field label.","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].label","typeLabel":"string"},"required":{"type":"boolean","default":true,"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].required","typeLabel":"boolean"},"answer_type":{"type":"string","enum":["text","date","number"],"description":"Optional. Omission is preserved in stored and returned manifests. Omission and text inherit the parent text/textarea presentation. Every answer cell remains a JSON string, trimmed with the existing ECMAScript whitespace rules. Date requires ASCII YYYY-MM-DD with a valid Gregorian date in years 0001-9999, without a time or timezone. Number requires ASCII -?(0|[1-9][0-9]*)(\\.[0-9]+)? and preserves its sign, precision, zero and trailing zeros without numeric conversion. Exponents, leading plus signs, grouping separators and nonfinite values are invalid. Optional empty cells remain optional.\n","uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX].answer_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].response_fields.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].response_fields","typeLabel":"object[]"},"allow_additional_responses":{"type":"boolean","default":false,"description":"Requires response_fields. Allows the recipient to add or remove response rows.","uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].allow_additional_responses","typeLabel":"boolean"},"max_response_rows":{"type":"integer","minimum":1,"maximum":20,"description":"Fixed groups use 1; repeatable groups use 2-20 (default 20).","uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX].max_response_rows","typeLabel":"integer"}},"uniqueKey":"data.steps.items.[INDEX].config.questions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.steps.items.[INDEX].config.questions","typeLabel":"object[]"},"documents":{"type":"array","minItems":1,"maxItems":5,"description":"document_upload only; the full workflow supports at most five documents.","items":{"type":"object","required":["document_id","label"],"properties":{"document_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","description":"Unique within the full workflow.","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.documents.items.[INDEX].document_id","typeLabel":"string"},"label":{"type":"string","minLength":1,"maxLength":200,"isRequired":true,"uniqueKey":"data.steps.items.[INDEX].config.documents.items.[INDEX].label","typeLabel":"string"},"description":{"type":"string","maxLength":1000,"uniqueKey":"data.steps.items.[INDEX].config.documents.items.[INDEX].description","typeLabel":"string"},"accepted_content_types":{"type":"array","minItems":1,"maxItems":4,"uniqueItems":true,"description":"Defaults to [application/pdf, image/jpeg, image/png] when omitted.","items":{"type":"string","enum":["application/pdf","image/jpeg","image/png","image/webp"],"uniqueKey":"data.steps.items.[INDEX].config.documents.items.[INDEX].accepted_content_types.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"data.steps.items.[INDEX].config.documents.items.[INDEX].accepted_content_types","typeLabel":"enum\u003cstring>[]"},"required":{"type":"boolean","default":true,"uniqueKey":"data.steps.items.[INDEX].config.documents.items.[INDEX].required","typeLabel":"boolean"}},"uniqueKey":"data.steps.items.[INDEX].config.documents.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.steps.items.[INDEX].config.documents","typeLabel":"object[]"}},"uniqueKey":"data.steps.items.[INDEX].config","typeLabel":"object"},"visible_when":{"type":"object","description":"Omitted for unconditional steps.","required":["step_id","question_id","equals"],"properties":{"step_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].visible_when.step_id","typeLabel":"string"},"question_id":{"type":"string","pattern":"^[a-z0-9_-]{1,64}$","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].visible_when.question_id","typeLabel":"string"},"equals":{"type":"boolean","isRequired":true,"uniqueKey":"data.steps.items.[INDEX].visible_when.equals","typeLabel":"boolean"}},"additionalProperties":false,"uniqueKey":"data.steps.items.[INDEX].visible_when","typeLabel":"object"}},"uniqueKey":"data.steps.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"data.steps","typeLabel":"object[]"},"status":{"type":"string","description":"Shared management lifecycle (workflows AND themes): draft -> active -> archived, archived -> active (restore), draft -> archived. Transitions only via the idempotent POST /activate and /archive endpoints, never via PUT.\n","enum":["draft","active","archived"],"isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"theme_id":{"oneOf":[{"type":"string","description":"Theme reference or null (= use the workspace default theme).","pattern":"^idvt_[0-9a-f]{24}$","isRequired":true,"uniqueKey":"data.theme_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Theme reference or null (= use the workspace default theme).","isRequired":true,"uniqueKey":"data.theme_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.theme_id","typeLabel":"string | null"},"is_default":{"type":"boolean","isRequired":true,"uniqueKey":"data.is_default","typeLabel":"boolean"},"retention_days":{"type":"integer","minimum":30,"maximum":365,"default":60,"deprecated":true,"description":"DEPRECATED alias for pii_retention_days, emitted CLAMPED to 30..365 so an editor that predates the four-component split reads a value inside its own bounds rather than normalizing a longer horizon down to its 60-day default and writing that back on save. Read pii_retention_days (up to 2555) for the actual PII schedule.\n","isRequired":true,"uniqueKey":"data.retention_days","typeLabel":"integer"},"biometrics_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":90,"description":"Retention of liveness captures AND the cross-session biometric templates derived from them, in days. Copied onto sessions at create, so later workflow edits affect only future sessions. Like every component, the workflow owner may set up to seven years (2555 days); the 90-day default is the recommended setting, and a shorter regional limit (for example Quebec's one year) is the configuring tenant's responsibility.\n","isRequired":true,"uniqueKey":"data.biometrics_retention_days","typeLabel":"integer"},"id_images_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":365,"description":"Retention of identity-document captures (id_front / id_back) in days.\n","isRequired":true,"uniqueKey":"data.id_images_retention_days","typeLabel":"integer"},"documents_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":1825,"description":"Retention of consumer-uploaded supporting documents in days.\n","isRequired":true,"uniqueKey":"data.documents_retention_days","typeLabel":"integer"},"pii_retention_days":{"type":"integer","minimum":30,"maximum":2555,"default":2555,"description":"Retention of the sensitive fields on a session (subject reference, questionnaire answers, capture and invite credentials, OCR fields, profile-mismatch details) in days. This is what the deprecated retention_days field has always governed.\n","isRequired":true,"uniqueKey":"data.pii_retention_days","typeLabel":"integer"},"assessment_prompt_instructions":{"type":"string","maxLength":4000,"description":"Workflow-admin instructions copied onto future sessions and shown to the review agent as policy guidance. The model treats these as subordinate to system, schema, privacy, and evidence rules.\n","isRequired":true,"uniqueKey":"data.assessment_prompt_instructions","typeLabel":"string"},"privacy_contact_email":{"oneOf":[{"type":"string","description":"Consumer-facing privacy/deletion contact embedded in the consent notice and copied onto future sessions. Required before a workflow can be activated or created as active.\n","format":"email","maxLength":254,"isRequired":true,"uniqueKey":"data.privacy_contact_email.oneOf.0","typeLabel":"string\u003cemail>"},{"type":"string","description":"Consumer-facing privacy/deletion contact embedded in the consent notice and copied onto future sessions. Required before a workflow can be activated or created as active.\n","maxLength":0,"isRequired":true,"uniqueKey":"data.privacy_contact_email.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"data.privacy_contact_email","typeLabel":"string\u003cemail> | string"},"auto_approve_questionnaire_only":{"type":"boolean","description":"Approve completed self-declared questionnaires without review when every workflow step is a questionnaire, including optional steps, and at least one answer remains on a non-skipped step. Default false; no document, biometric, or identity verification is implied.\n","isRequired":true,"uniqueKey":"data.auto_approve_questionnaire_only","typeLabel":"boolean"},"iframe_enabled":{"type":"boolean","description":"Permit the hosted page in the listed parent origins. Default false.","isRequired":true,"uniqueKey":"data.iframe_enabled","typeLabel":"boolean"},"allowed_frame_origins":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":253,"uniqueKey":"data.allowed_frame_origins.items.[INDEX]","typeLabel":"string"},"description":"Exact HTTPS origins or a leftmost subdomain wildcard such as https://*.example.com. A global wildcard, URL path, and HTTP are rejected.\n","isRequired":true,"uniqueKey":"data.allowed_frame_origins","typeLabel":"string[]"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string\u003cdate-time>"},"revision":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"data.revision","typeLabel":"integer"},"description":{"type":"string","maxLength":500,"uniqueKey":"data.description","typeLabel":"string"},"profile_update_enabled":{"type":"boolean","description":"Automatic profile-write opt-in (default false). Copied onto sessions at create.","uniqueKey":"data.profile_update_enabled","typeLabel":"boolean"},"flag_settings":{"type":"object","description":"Sparse per-code review overrides. A code ABSENT from the map is ENABLED (default-true). Keys are validated against the known configurable fraud-flag taxonomy: an unknown key -> 400 idv_flag_code_unknown. Deterministic service-enforced policy codes such as id_type_not_allowed cannot be disabled and return idv_flag_code_not_configurable.\n","additionalProperties":{"type":"object","properties":{"raise_for_review":{"type":"boolean","uniqueKey":"data.flag_settings.additionalProperties.raise_for_review","typeLabel":"boolean"}},"uniqueKey":"data.flag_settings.additionalProperties","typeLabel":"object"},"uniqueKey":"data.flag_settings","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"workflow_id":"\u003cstring>","tenant_id":"\u003cstring>","workspace_id":"\u003cstring>","name":"\u003cstring>","profile_kind":"individual","steps":[{"step_id":"\u003cstring>","type":"liveness","required":true,"title":"\u003cstring>","config":{"accepted_id_types":["driver_license"],"custom_id_types":[{"id_type":"\u003cstring>","label":"\u003cstring>","sides":"one_sided","description":"\u003cstring>"}],"sides":"auto","questions":[{"question_id":"\u003cstring>","label":"\u003cstring>","type":"text","required":true,"required_when":{"question_id":"\u003cstring>","equals":true},"visible_when":{"question_id":"\u003cstring>","equals":true},"options":[{"value":"\u003cstring>","label":"\u003cstring>"}],"response_fields":[{"field_id":"\u003cstring>","label":"\u003cstring>","required":true,"answer_type":"text"}],"allow_additional_responses":false,"max_response_rows":10}],"documents":[{"document_id":"\u003cstring>","label":"\u003cstring>","description":"\u003cstring>","accepted_content_types":["application/pdf"],"required":true}]},"visible_when":{"step_id":"\u003cstring>","question_id":"\u003cstring>","equals":true}}],"status":"draft","theme_id":"\u003cstring>","is_default":true,"retention_days":60,"biometrics_retention_days":90,"id_images_retention_days":365,"documents_retention_days":1825,"pii_retention_days":2555,"assessment_prompt_instructions":"\u003cstring>","privacy_contact_email":"jsmith@example.com","auto_approve_questionnaire_only":true,"iframe_enabled":true,"allowed_frame_origins":["\u003cstring>"],"created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","revision":2,"description":"\u003cstring>","profile_update_enabled":true,"flag_settings":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"170911d2-b5b1-49fc-8980-bf81aa040ea6":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"idv_session_not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"idv_session_not_found","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"cecc6b6f-136f-4a85-914c-f0dde055497e":{"description":"Missing or invalid credentials (uniform for token plane, no existence oracle)","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"idv_session_not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"idv_session_not_found","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"d50020f6-c5a8-407d-adde-c6fa880ea591":{"description":"Resolved dashboard user lacks the required capability or scope","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"idv_session_not_found","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"idv_session_not_found","message":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"daa46f56-0171-4590-89b8-ecddf79da162":{"applicationApiKey":{"type":"apiKey","in":"header","name":"Authorization","description":"`Authorization: Api-Key \u003capplication_api_key>` (legacy `X-Api-Key` also accepted).","scopes":[],"schemeName":"applicationApiKey"}},"fa9e3588-06ae-4a3b-aa14-572314aaa041":{"dashboardUserToken":{"type":"apiKey","in":"header","name":"x-user-token","description":"Dashboard session token for Minerva dashboard users. Management routes accept it alongside an application API key; any in-scope workspace user (member or above) can read sessions and record review decisions, while workflow and theme writes need a management-capable role. Send it with the `x-tenant-id` and `x-workspace-id` headers; a header/access mismatch is refused with 403, and when dashboard authentication is disabled (the default) any request carrying this header gets a uniform 401.\n","scopes":[],"schemeName":"dashboardUserToken"}}},"servers":{"2d270158-b0b4-4a7f-a4ee-f351d95099b6":{"url":"https://api.gominerva.com/idv/v1","description":"The production API server for Minerva identity verification"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"`Authorization: Api-Key \u003capplication_api_key>` (legacy `X-Api-Key` also accepted).","scopes":[],"schemeName":"applicationApiKey"},"schema":{"title":"Authorization","type":"string","description":"`Authorization: Api-Key \u003capplication_api_key>` (legacy `X-Api-Key` also accepted).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"applicationApiKey","name":"Authorization"}],"title":"applicationApiKey"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-user-token","description":"Dashboard session token for Minerva dashboard users. Management routes accept it alongside an application API key; any in-scope workspace user (member or above) can read sessions and record review decisions, while workflow and theme writes need a management-capable role. Send it with the `x-tenant-id` and `x-workspace-id` headers; a header/access mismatch is refused with 403, and when dashboard authentication is disabled (the default) any request carrying this header gets a uniform 401.\n","scopes":[],"schemeName":"dashboardUserToken"},"schema":{"title":"x-user-token","type":"string","description":"Dashboard session token for Minerva dashboard users. Management routes accept it alongside an application API key; any in-scope workspace user (member or above) can read sessions and record review decisions, while workflow and theme writes need a management-capable role. Send it with the `x-tenant-id` and `x-workspace-id` headers; a header/access mismatch is refused with 403, and when dashboard authentication is disabled (the default) any request carrying this header gets a uniform 401.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"dashboardUserToken","name":"x-user-token"}],"title":"dashboardUserToken"}]},"originalFileLocation":"api-reference/idv-svc.json"},"subdomain":"minerva-557aeab7","siteName":"Minerva Docs","title":"Create a workflow - Minerva Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T01:21:44.032Z","originalFileLocation":"api-reference/workflows/create-a-workflow.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Steps are validated with the same validator as create-session inline steps. theme_id must reference a non-archived theme in the caller\u0026#x27;s scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. status defaults to draft; \u0026quot;active\u0026quot; creates-and-activates (\u0026quot;archived\u0026quot; is rejected). is_default: true runs the atomic per-scope default swap after insert.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Minerva Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a workflow - Minerva Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Steps are validated with the same validator as create-session inline steps. theme_id must reference a non-archived theme in the caller\u0026#x27;s scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. status defaults to draft; \u0026quot;active\u0026quot; creates-and-activates (\u0026quot;archived\u0026quot; is rejected). is_default: true runs the atomic per-scope default swap after insert.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Minerva Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://minerva-557aeab7.mintlify.site/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Create+a+workflow\u0026amp;description=Steps+are+validated+with+the+same+validator+as+create-session+inline+steps.+%60theme_id%60+must+reference+a+non-archived+theme+in+the+caller%27s+scope+%28400+idv_theme_\u0026amp;theme=802683985af28e0bed63a6bd\u0026amp;signature=f79674a522d05bdd2679e2ba82ae6ea58498297d64cacb7172f9aa7a62a769b1\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a workflow - Minerva Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Steps are validated with the same validator as create-session inline steps. theme_id must reference a non-archived theme in the caller\u0026#x27;s scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. status defaults to draft; \u0026quot;active\u0026quot; creates-and-activates (\u0026quot;archived\u0026quot; is rejected). is_default: true runs the atomic per-scope default swap after insert.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://minerva-557aeab7.mintlify.site/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Create+a+workflow\u0026amp;description=Steps+are+validated+with+the+same+validator+as+create-session+inline+steps.+%60theme_id%60+must+reference+a+non-archived+theme+in+the+caller%27s+scope+%28400+idv_theme_\u0026amp;theme=802683985af28e0bed63a6bd\u0026amp;signature=f79674a522d05bdd2679e2ba82ae6ea58498297d64cacb7172f9aa7a62a769b1\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/minerva-557aeab7/wxw0aTOZ3vYCYbpb/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Minerva Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4e26b1\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/workflows/create-a-workflow.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.gominerva.com/#organization\",\"name\":\"Minerva Docs\",\"url\":\"https://docs.gominerva.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/minerva-557aeab7/42KvxtYHwgz1q8RK/logo/minerva-dark.svg?fit=max\u0026auto=format\u0026n=42KvxtYHwgz1q8RK\u0026q=85\u0026s=b6ef1ed1a0b7ff7df81fdbb1c2ac0db4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.gominerva.com#website\",\"name\":\"Minerva Docs\",\"url\":\"https://docs.gominerva.com\",\"publisher\":{\"@id\":\"https://docs.gominerva.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow#webpage\",\"url\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow\",\"name\":\"Create a workflow\",\"description\":\"Steps are validated with the same validator as create-session inline steps. theme_id must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. status defaults to draft; \\\"active\\\" creates-and-activates (\\\"archived\\\" is rejected). is_default: true runs the atomic per-scope default swap after insert.\",\"dateModified\":\"2026-10-28T01:21:44.032Z\",\"isPartOf\":{\"@id\":\"https://docs.gominerva.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Identity Verification - Endpoints\",\"item\":\"https://docs.gominerva.com/api-reference/sessions/create-an-idv-session\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a workflow\",\"item\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow#apireference\",\"headline\":\"Create a workflow\",\"name\":\"Create a workflow\",\"description\":\"Steps are validated with the same validator as create-session inline steps. theme_id must reference a non-archived theme in the caller's scope (400 idv_theme_not_found / idv_theme_archived); null/absent = use the workspace default theme. status defaults to draft; \\\"active\\\" creates-and-activates (\\\"archived\\\" is rejected). is_default: true runs the atomic per-scope default swap after insert.\",\"url\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.gominerva.com/api-reference/workflows/create-a-workflow#webpage\"},\"dateModified\":\"2026-10-28T01:21:44.032Z\",\"publisher\":{\"@id\":\"https://docs.gominerva.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.gominerva.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Minerva Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Minerva Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/workflows/create-a-workflow.md","siteName":"Minerva Docs","nav":{"global":{"anchors":[{"anchor":"Support","icon":"headset","href":"mailto:support@gominerva.com"},{"anchor":"Trust Page","icon":"shield","href":"https://app.conveyor.com/profile/gominerva"}]},"tabs":[{"tab":"Knowledge Hub","pages":[{"title":"Knowledge Hub","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/api-reference/introduction"},{"title":"Screening Integration Guide","href":"/api-reference/screening-integration-guide"},{"title":"IDV Integration Guide","href":"/api-reference/idv-integration-guide"},{"title":"Automatic Disposition Guide","tag":"New","href":"/api-reference/automatic-disposition-guide"},{"title":"API Keys","mode":"wide","href":"/api-reference/api-keys"},{"title":"Workspace management \u0026 tenant configuration via API","sidebarTitle":"Workspace Management API","href":"/api-reference/workspace-management-api"},{"title":"Automate custom lists via API","sidebarTitle":"Custom Lists API","href":"/api-reference/custom-lists-api"},{"title":"Webhooks","href":"/api-reference/webhooks"},{"title":"Minerva MCP","mode":"wide","href":"/api-reference/minerva-mcp-guide"},{"title":"Search History","href":"/api-reference/search-history"},{"title":"Profile Groups API","href":"/api-reference/profile-groups"},{"title":"Profile Custom Fields API","href":"/api-reference/profile-custom-fields"},{"title":"Risk Assessment Agents API","tag":"New","href":"/api-reference/risk-assessment-agents"}]},{"group":"Screening - Endpoints","pages":[{"group":"Search","pages":[{"title":"Submit a batch search","deprecated":null,"version":null,"openapi":"/api-reference/core.json post /v1/search","href":"/api-reference/search/submit-a-batch-search"},{"title":"Get batch search results","deprecated":null,"version":null,"openapi":"/api-reference/core.json get /v1/search/{jobid}","href":"/api-reference/search/get-batch-search-results"},{"title":"Search one person or organization","deprecated":null,"version":null,"openapi":"/api-reference/core.json post /v1/search-sync","href":"/api-reference/search/search-one-person-or-organization"},{"title":"Submit a v2 search","deprecated":null,"version":null,"openapi":"/api-reference/core.json post /v2/search","href":"/api-reference/search/submit-a-v2-search"},{"title":"List search request history","deprecated":null,"version":null,"openapi":"/api-reference/core.json get /v2/search/requests","href":"/api-reference/search/list-search-request-history"},{"title":"Generate a PDF report","deprecated":null,"version":null,"openapi":"/api-reference/core.json post /v1/reports","href":"/api-reference/search/generate-a-pdf-report"}]},{"group":"Legacy","pages":[{"title":"Search one person or organization (legacy GET)","deprecated":true,"version":null,"openapi":"/api-reference/core.json get /v1/search-sync","href":"/api-reference/legacy/search-one-person-or-organization-legacy-get"}]},{"group":"API to UI Integration","pages":[{"title":"Send an API result to a user","deprecated":null,"version":null,"openapi":"/api-reference/core.json post /v1/sendAPIResultToUser","href":"/api-reference/api-to-ui-integration/send-an-api-result-to-a-user"}]}]},{"group":"Admin Actions - Endpoints","pages":[{"group":"Screening Webhooks","pages":[{"title":"Get screening webhook","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /webhooks/v2/screening/{webhookId}","href":"/api-reference/screening-webhooks/get-screening-webhook"},{"title":"Delete screening webhook","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json delete /webhooks/v2/screening/{webhookId}","href":"/api-reference/screening-webhooks/delete-screening-webhook"},{"title":"Update screening webhook","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /webhooks/v2/screening/{webhookId}","href":"/api-reference/screening-webhooks/update-screening-webhook"},{"title":"Test screening webhook","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /webhooks/v2/screening/{webhookId}/test","href":"/api-reference/screening-webhooks/test-screening-webhook"},{"title":"List screening webhooks","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /webhooks/v2/screening","href":"/api-reference/screening-webhooks/list-screening-webhooks"},{"title":"Create screening webhook","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /webhooks/v2/screening","href":"/api-reference/screening-webhooks/create-screening-webhook"}]},{"group":"Custom Lists","pages":[{"title":"Get custom-list entitlements","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/entitlements","href":"/api-reference/custom-lists/get-custom-list-entitlements"},{"title":"Get a workspace custom-list manifest","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/workspaces/{workspaceId}/manifest","href":"/api-reference/custom-lists/get-a-workspace-custom-list-manifest"},{"title":"Activate or deactivate a list in a workspace","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json put /custom-lists/v2/organizations/{orgId}/workspaces/{workspaceId}/lists/{listId}/activation","href":"/api-reference/custom-lists/activate-or-deactivate-a-list-in-a-workspace"},{"title":"List custom lists","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}","href":"/api-reference/custom-lists/list-custom-lists"},{"title":"Create a custom list","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}","href":"/api-reference/custom-lists/create-a-custom-list"},{"title":"Download the generic upload template","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/upload-template","href":"/api-reference/custom-lists/download-the-generic-upload-template"},{"title":"Get a custom-list background job","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/jobs/{jobId}","href":"/api-reference/custom-lists/get-a-custom-list-background-job"},{"title":"Get a custom list","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}","href":"/api-reference/custom-lists/get-a-custom-list"},{"title":"Archive a custom list","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json delete /custom-lists/v2/organizations/{orgId}/{listId}","href":"/api-reference/custom-lists/archive-a-custom-list"},{"title":"Update a custom list","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /custom-lists/v2/organizations/{orgId}/{listId}","href":"/api-reference/custom-lists/update-a-custom-list"},{"title":"Get list deployment status","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/status","href":"/api-reference/custom-lists/get-list-deployment-status"},{"title":"Get unpublished changes","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/pending-changes","href":"/api-reference/custom-lists/get-unpublished-changes"},{"title":"Publish the working set","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/publish","href":"/api-reference/custom-lists/publish-the-working-set"},{"title":"Discard unpublished changes","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/discard","href":"/api-reference/custom-lists/discard-unpublished-changes"},{"title":"List published versions","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/versions","href":"/api-reference/custom-lists/list-published-versions"},{"title":"List records","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/records","href":"/api-reference/custom-lists/list-records"},{"title":"Add a record","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/records","href":"/api-reference/custom-lists/add-a-record"},{"title":"Archive a record","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json delete /custom-lists/v2/organizations/{orgId}/{listId}/records/{recordId}","href":"/api-reference/custom-lists/archive-a-record"},{"title":"Update a record","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /custom-lists/v2/organizations/{orgId}/{listId}/records/{recordId}","href":"/api-reference/custom-lists/update-a-record"},{"title":"Set a record's status","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json put /custom-lists/v2/organizations/{orgId}/{listId}/records/{recordId}/status","href":"/api-reference/custom-lists/set-a-records-status"},{"title":"List uploads","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/uploads","href":"/api-reference/custom-lists/list-uploads"},{"title":"Upload parsed records","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/uploads","href":"/api-reference/custom-lists/upload-parsed-records"},{"title":"Upload a file","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/uploads/file","href":"/api-reference/custom-lists/upload-a-file"},{"title":"Preview parsed records","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/uploads/preview","href":"/api-reference/custom-lists/preview-parsed-records"},{"title":"Preview a file","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/uploads/preview/file","href":"/api-reference/custom-lists/preview-a-file"},{"title":"Download the list's upload template","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/uploads/template","href":"/api-reference/custom-lists/download-the-lists-upload-template"},{"title":"Get an upload","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/uploads/{uploadId}","href":"/api-reference/custom-lists/get-an-upload"},{"title":"Get upload status","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /custom-lists/v2/organizations/{orgId}/{listId}/uploads/{uploadId}/status","href":"/api-reference/custom-lists/get-upload-status"},{"title":"Publish an upload","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /custom-lists/v2/organizations/{orgId}/{listId}/uploads/{uploadId}/publish","href":"/api-reference/custom-lists/publish-an-upload"}]},{"group":"CRR Scorecards","pages":[{"title":"List CRR scorecards","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-scorecards","href":"/api-reference/crr-scorecards/list-crr-scorecards"},{"title":"Create a CRR scorecard","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-scorecards","href":"/api-reference/crr-scorecards/create-a-crr-scorecard"},{"title":"List scorecard revisions","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-scorecards/{scorecardId}/revisions","href":"/api-reference/crr-scorecards/list-scorecard-revisions"},{"title":"Get a CRR scorecard","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-scorecards/{scorecardId}","href":"/api-reference/crr-scorecards/get-a-crr-scorecard"},{"title":"Archive a CRR scorecard","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json delete /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-scorecards/{scorecardId}","href":"/api-reference/crr-scorecards/archive-a-crr-scorecard"},{"title":"Update a CRR scorecard","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-scorecards/{scorecardId}","href":"/api-reference/crr-scorecards/update-a-crr-scorecard"},{"title":"Set the default scorecard","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-scorecards/{scorecardId}/default","href":"/api-reference/crr-scorecards/set-the-default-scorecard"}]},{"group":"CRR Profile Templates","pages":[{"title":"List CRR profile templates","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates","href":"/api-reference/crr-profile-templates/list-crr-profile-templates"},{"title":"Create a CRR profile template","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates","href":"/api-reference/crr-profile-templates/create-a-crr-profile-template"},{"title":"List selectable templates","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates/selectable","href":"/api-reference/crr-profile-templates/list-selectable-templates"},{"title":"Get a CRR profile template","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates/{templateId}","href":"/api-reference/crr-profile-templates/get-a-crr-profile-template"},{"title":"Update a CRR profile template","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates/{templateId}","href":"/api-reference/crr-profile-templates/update-a-crr-profile-template"},{"title":"Activate a template","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates/{templateId}/activate","href":"/api-reference/crr-profile-templates/activate-a-template"},{"title":"Archive a template","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates/{templateId}/archive","href":"/api-reference/crr-profile-templates/archive-a-template"},{"title":"List template revisions","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/crr-templates/{templateId}/revisions","href":"/api-reference/crr-profile-templates/list-template-revisions"}]},{"group":"Workspaces","pages":[{"title":"Get a workspace","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}","href":"/api-reference/workspaces/get-a-workspace"},{"title":"Delete a workspace","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json delete /workspaces/v2/organizations/{orgId}/{workspaceId}","href":"/api-reference/workspaces/delete-a-workspace"},{"title":"Update a workspace","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /workspaces/v2/organizations/{orgId}/{workspaceId}","href":"/api-reference/workspaces/update-a-workspace"},{"title":"List workspaces","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}","href":"/api-reference/workspaces/list-workspaces"},{"title":"Create a workspace","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}","href":"/api-reference/workspaces/create-a-workspace"}]},{"group":"Workspace Presets","pages":[{"title":"List presets","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/presets","href":"/api-reference/workspace-presets/list-presets"},{"title":"Create a preset","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/presets","href":"/api-reference/workspace-presets/create-a-preset"},{"title":"Delete a preset","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json delete /workspaces/v2/organizations/{orgId}/{workspaceId}/presets/{presetId}","href":"/api-reference/workspace-presets/delete-a-preset"},{"title":"Update a preset","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /workspaces/v2/organizations/{orgId}/{workspaceId}/presets/{presetId}","href":"/api-reference/workspace-presets/update-a-preset"},{"title":"Apply a preset","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/presets/{presetId}/promotions","href":"/api-reference/workspace-presets/apply-a-preset"}]},{"group":"Profile Groups","pages":[{"title":"List profile groups","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json get /workspaces/v2/organizations/{orgId}/{workspaceId}/profile-groups","href":"/api-reference/profile-groups/list-profile-groups"},{"title":"Create a profile group","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json post /workspaces/v2/organizations/{orgId}/{workspaceId}/profile-groups","href":"/api-reference/profile-groups/create-a-profile-group"},{"title":"Delete a profile group","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json delete /workspaces/v2/organizations/{orgId}/{workspaceId}/profile-groups/{profileGroupId}","href":"/api-reference/profile-groups/delete-a-profile-group"},{"title":"Update a profile group","deprecated":null,"version":null,"openapi":"/api-reference/admin-api.json patch /workspaces/v2/organizations/{orgId}/{workspaceId}/profile-groups/{profileGroupId}","href":"/api-reference/profile-groups/update-a-profile-group"}]}]},{"group":"Profiles - Endpoints","pages":[{"group":"Profile Management","pages":[{"title":"Create and screen a profile","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json post /onboarding/profiles","href":"/api-reference/profile-management/create-and-screen-a-profile"},{"title":"List profiles","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json get /profiles","href":"/api-reference/profile-management/list-profiles"},{"title":"Create a profile","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json post /profiles","href":"/api-reference/profile-management/create-a-profile"},{"title":"Get profile details","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json get /profiles/{profileId}","href":"/api-reference/profile-management/get-profile-details"},{"title":"Update a profile","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json patch /profiles/{profileId}","href":"/api-reference/profile-management/update-a-profile"},{"title":"Add a profile comment","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json post /profiles/{profileId}/comments","href":"/api-reference/profile-management/add-a-profile-comment"},{"title":"Generate a profile audit PDF","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json post /profile-audit-reports/v1/profiles/{profile_id}/pdf","href":"/api-reference/profile-management/generate-a-profile-audit-pdf"},{"title":"List profile groups","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json get /profile-groups","href":"/api-reference/profile-management/list-profile-groups"},{"title":"Create a profile group","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json post /profile-groups","href":"/api-reference/profile-management/create-a-profile-group"},{"title":"Get a profile group","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json get /profile-groups/{profileGroupId}","href":"/api-reference/profile-management/get-a-profile-group"},{"title":"Archive a profile group","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json delete /profile-groups/{profileGroupId}","href":"/api-reference/profile-management/archive-a-profile-group"},{"title":"Update a profile group","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json patch /profile-groups/{profileGroupId}","href":"/api-reference/profile-management/update-a-profile-group"}]},{"group":"Potential Matches","pages":[{"title":"Update potential match status","deprecated":null,"version":null,"openapi":"/api-reference/profiles.json patch /v2/search/matches/{match_id}","href":"/api-reference/potential-matches/update-potential-match-status"}]}]},{"group":"Agent Risk Assessments - Endpoints","pages":[{"group":"Configuration","pages":[{"title":"List risk assessment workflows","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /workflows","href":"/api-reference/configuration/list-risk-assessment-workflows"},{"title":"List assessment and task statuses","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /status-definitions","href":"/api-reference/configuration/list-assessment-and-task-statuses"},{"title":"List client risk rating scorecards","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /crr-scorecards","href":"/api-reference/configuration/list-client-risk-rating-scorecards"}]},{"group":"Assessments","pages":[{"title":"List risk assessments","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments","href":"/api-reference/assessments/list-risk-assessments"},{"title":"Create a risk assessment","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments","href":"/api-reference/assessments/create-a-risk-assessment"},{"title":"Get a risk assessment","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}","href":"/api-reference/assessments/get-a-risk-assessment"},{"title":"Get assessment summary","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/summary","href":"/api-reference/assessments/get-assessment-summary"},{"title":"Get assessment tasks, notes, and interrupts","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/tasks","href":"/api-reference/assessments/get-assessment-tasks-notes-and-interrupts"},{"title":"Update assessment title","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json patch /assessments/{assessmentId}/title","href":"/api-reference/assessments/update-assessment-title"},{"title":"Append assessment uploads","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/uploads","href":"/api-reference/assessments/append-assessment-uploads"},{"title":"Start an assessment agent run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/start","href":"/api-reference/assessments/start-an-assessment-agent-run"},{"title":"Stop an assessment and its latest run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/stop","href":"/api-reference/assessments/stop-an-assessment-and-its-latest-run"},{"title":"Cancel an assessment and its latest run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/cancel","href":"/api-reference/assessments/cancel-an-assessment-and-its-latest-run"},{"title":"Conclude an assessment","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/conclude","href":"/api-reference/assessments/conclude-an-assessment"}]},{"group":"Review And Collaboration","pages":[{"title":"List assessment comments","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/comments","href":"/api-reference/review-and-collaboration/list-assessment-comments"},{"title":"Add an assessment comment","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/comments","href":"/api-reference/review-and-collaboration/add-an-assessment-comment"},{"title":"Update task status","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json patch /assessments/{assessmentId}/tasks/{taskId}/status","href":"/api-reference/review-and-collaboration/update-task-status"},{"title":"Update task details","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json patch /assessments/{assessmentId}/tasks/{taskId}","href":"/api-reference/review-and-collaboration/update-task-details"},{"title":"Append assessment notes","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/notes/append","href":"/api-reference/review-and-collaboration/append-assessment-notes"},{"title":"Replace assessment notes","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json put /assessments/{assessmentId}/notes","href":"/api-reference/review-and-collaboration/replace-assessment-notes"},{"title":"Answer an agent question","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/questions/{questionId}/answer","href":"/api-reference/review-and-collaboration/answer-an-agent-question"},{"title":"Resolve an agent confirmation","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/confirmations/{confirmationId}/resolve","href":"/api-reference/review-and-collaboration/resolve-an-agent-confirmation"}]},{"group":"Relationships Canvas","pages":[{"title":"Get or create the default canvas","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/canvas","href":"/api-reference/relationships-canvas/get-or-create-the-default-canvas"},{"title":"Save the default canvas","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json put /assessments/{assessmentId}/canvas","href":"/api-reference/relationships-canvas/save-the-default-canvas"},{"title":"List assessment canvases","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/canvases","href":"/api-reference/relationships-canvas/list-assessment-canvases"},{"title":"Create a canvas","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/canvases","href":"/api-reference/relationships-canvas/create-a-canvas"},{"title":"Get a canvas by ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/canvases/{canvasId}","href":"/api-reference/relationships-canvas/get-a-canvas-by-id"},{"title":"Rename a canvas","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json patch /assessments/{assessmentId}/canvases/{canvasId}","href":"/api-reference/relationships-canvas/rename-a-canvas"},{"title":"Delete a canvas","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json delete /assessments/{assessmentId}/canvases/{canvasId}","href":"/api-reference/relationships-canvas/delete-a-canvas"},{"title":"Save a canvas by ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json put /assessments/{assessmentId}/canvases/{canvasId}","href":"/api-reference/relationships-canvas/save-a-canvas-by-id"}]},{"group":"Agent Runtime","pages":[{"title":"Get the latest assessment run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/run","href":"/api-reference/agent-runtime/get-the-latest-assessment-run"},{"title":"Get an assessment run by ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/runs/{runId}","href":"/api-reference/agent-runtime/get-an-assessment-run-by-id"},{"title":"List the latest run trajectory","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/trajectory","href":"/api-reference/agent-runtime/list-the-latest-run-trajectory"},{"title":"List run trajectory by run ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/runs/{runId}/trajectory","href":"/api-reference/agent-runtime/list-run-trajectory-by-run-id"},{"title":"List commands on the latest run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/commands","href":"/api-reference/agent-runtime/list-commands-on-the-latest-run"},{"title":"List run commands by run ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json get /assessments/{assessmentId}/runs/{runId}/commands","href":"/api-reference/agent-runtime/list-run-commands-by-run-id"},{"title":"Create a command on the latest run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/commands","href":"/api-reference/agent-runtime/create-a-command-on-the-latest-run"},{"title":"Create a run command by run ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/runs/{runId}/commands","href":"/api-reference/agent-runtime/create-a-run-command-by-run-id"},{"title":"Send user input to the latest run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/input","href":"/api-reference/agent-runtime/send-user-input-to-the-latest-run"},{"title":"Send user input to a run by run ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/runs/{runId}/input","href":"/api-reference/agent-runtime/send-user-input-to-a-run-by-run-id"},{"title":"Steer the latest run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/steer","href":"/api-reference/agent-runtime/steer-the-latest-run"},{"title":"Steer a run by run ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/runs/{runId}/steer","href":"/api-reference/agent-runtime/steer-a-run-by-run-id"},{"title":"Resume the latest run","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/resume","href":"/api-reference/agent-runtime/resume-the-latest-run"},{"title":"Resume a run by run ID","deprecated":null,"version":null,"openapi":"/api-reference/risk-assessment-agents.json post /assessments/{assessmentId}/runs/{runId}/resume","href":"/api-reference/agent-runtime/resume-a-run-by-run-id"}]}]},{"group":"Identity Verification - Endpoints","pages":[{"group":"Sessions","pages":[{"title":"Create an IDV session","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions","href":"/api-reference/sessions/create-an-idv-session"},{"title":"List sessions","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /sessions","href":"/api-reference/sessions/list-sessions"},{"title":"Poll a session","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /sessions/{sessionId}","href":"/api-reference/sessions/poll-a-session"},{"title":"Send a verification invite","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/invite","href":"/api-reference/sessions/send-a-verification-invite"},{"title":"Cancel a session","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/cancel","href":"/api-reference/sessions/cancel-a-session"},{"title":"Public branding for a session","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /sessions/{sessionId}/branding","href":"/api-reference/sessions/public-branding-for-a-session"},{"title":"Public session logo bytes","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /sessions/{sessionId}/branding/logo","href":"/api-reference/sessions/public-session-logo-bytes"},{"title":"Public session square-logo bytes","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /sessions/{sessionId}/branding/logo/square","href":"/api-reference/sessions/public-session-square-logo-bytes"}]},{"group":"Capture","pages":[{"title":"Exchange an invite for a fresh capture token","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/acquire","href":"/api-reference/capture/exchange-an-invite-for-a-fresh-capture-token"},{"title":"Session-scoped progress for the capture UI","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /sessions/{sessionId}/status","href":"/api-reference/capture/session-scoped-progress-for-the-capture-ui"},{"title":"Record consumer consent","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/consent","href":"/api-reference/capture/record-consumer-consent"},{"title":"Reserve an artifact slot","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/artifacts","href":"/api-reference/capture/reserve-an-artifact-slot"},{"title":"Upload artifact bytes","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json put /sessions/{sessionId}/artifacts/{artifactId}/object","href":"/api-reference/capture/upload-artifact-bytes"},{"title":"Submit questionnaire answers","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json put /sessions/{sessionId}/steps/{stepId}/answers","href":"/api-reference/capture/submit-questionnaire-answers"},{"title":"Skip an optional step","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/steps/{stepId}/skip","href":"/api-reference/capture/skip-an-optional-step"},{"title":"Record the document type","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/document-type","href":"/api-reference/capture/record-the-document-type"},{"title":"Submit for assessment","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/submit","href":"/api-reference/capture/submit-for-assessment"}]},{"group":"Review","pages":[{"title":"Apply a human review decision","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /sessions/{sessionId}/review","href":"/api-reference/review/apply-a-human-review-decision"},{"title":"Get decrypted session data","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /sessions/{sessionId}/data","href":"/api-reference/review/get-decrypted-session-data"},{"title":"Per-profile review summary","description":"Unresolved review counts for one profile (management planes, member+). `requires_review_count` drives the dashboard profile-tab badge; `flag_counts` tallies UNRESOLVED sessions per flag category. Always tenant+workspace bounded: an unknown or foreign profile id counts zero sessions (no cross-tenant oracle).\n","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /profiles/{profileId}/review-summary","href":"/api-reference/review/per-profile-review-summary"}]},{"group":"Workflows","pages":[{"title":"Create a workflow","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /workflows","href":"/api-reference/workflows/create-a-workflow"},{"title":"List workflows (newest first)","description":null,"deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /workflows","href":"/api-reference/workflows/list-workflows-newest-first"},{"title":"Show a workflow","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /workflows/{workflowId}","href":"/api-reference/workflows/show-a-workflow"},{"title":"Replace a workflow","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json put /workflows/{workflowId}","href":"/api-reference/workflows/replace-a-workflow"},{"title":"Activate a workflow","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /workflows/{workflowId}/activate","href":"/api-reference/workflows/activate-a-workflow"},{"title":"Archive a workflow","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /workflows/{workflowId}/archive","href":"/api-reference/workflows/archive-a-workflow"},{"title":"Make a workflow the scope default","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /workflows/{workflowId}/default","href":"/api-reference/workflows/make-a-workflow-the-scope-default"},{"title":"Delete a workflow","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json delete /workflows/{workflowId}","href":"/api-reference/workflows/delete-a-workflow"}]},{"group":"Themes","pages":[{"title":"Create a theme","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /themes","href":"/api-reference/themes/create-a-theme"},{"title":"List themes (newest first)","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /themes","href":"/api-reference/themes/list-themes-newest-first"},{"title":"Show a theme","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /themes/{themeId}","href":"/api-reference/themes/show-a-theme"},{"title":"Replace a theme","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json put /themes/{themeId}","href":"/api-reference/themes/replace-a-theme"},{"title":"Activate a theme","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /themes/{themeId}/activate","href":"/api-reference/themes/activate-a-theme"},{"title":"Archive a theme","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /themes/{themeId}/archive","href":"/api-reference/themes/archive-a-theme"},{"title":"Make a theme the scope default","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json post /themes/{themeId}/default","href":"/api-reference/themes/make-a-theme-the-scope-default"},{"title":"Upload a logo","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json put /themes/{themeId}/logo","href":"/api-reference/themes/upload-a-logo"},{"title":"Stream the theme's logo","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /themes/{themeId}/logo","href":"/api-reference/themes/stream-the-themes-logo"},{"title":"Remove the theme's logo reference","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json delete /themes/{themeId}/logo","href":"/api-reference/themes/remove-the-themes-logo-reference"},{"title":"Upload the square logo","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json put /themes/{themeId}/logo/square","href":"/api-reference/themes/upload-the-square-logo"},{"title":"Stream the theme's square logo","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json get /themes/{themeId}/logo/square","href":"/api-reference/themes/stream-the-themes-square-logo"},{"title":"Remove the theme's square logo reference","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json delete /themes/{themeId}/logo/square","href":"/api-reference/themes/remove-the-themes-square-logo-reference"},{"title":"Delete a theme","deprecated":null,"version":null,"openapi":"/api-reference/idv-svc.json delete /themes/{themeId}","href":"/api-reference/themes/delete-a-theme"}]}]}]}]},"basePath":"","title":"Create a workflow - Minerva Docs","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}