{"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"title":"Detail","type":"array"}},"title":"HTTPValidationError","type":"object"},"JsonValue":{},"PersonalWorkflowPublishAuthorization":{"additionalProperties":false,"properties":{"allowed_actions":{"items":{"type":"string"},"minItems":1,"title":"Allowed Actions","type":"array"},"connection_id":{"format":"uuid","title":"Connection Id","type":"string"},"credential_revision":{"minimum":1,"title":"Credential Revision","type":"integer"},"draft_content_fingerprint":{"pattern":"^[0-9a-f]{64}$","title":"Draft Content Fingerprint","type":"string"},"draft_version_id":{"format":"uuid","title":"Draft Version Id","type":"string"}},"required":["connection_id","credential_revision","allowed_actions","draft_version_id","draft_content_fingerprint"],"title":"PersonalWorkflowPublishAuthorization","type":"object"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"title":"Location","type":"array"},"msg":{"title":"Message","type":"string"},"type":{"title":"Error Type","type":"string"}},"required":["loc","msg","type"],"title":"ValidationError","type":"object"},"WorkflowActionCapability":{"additionalProperties":false,"description":"One callable integration action available to the authenticated tenant.","properties":{"connection_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Connection Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"fields":{"items":{"additionalProperties":true,"type":"object"},"title":"Fields","type":"array"},"group":{"title":"Group","type":"string"},"handler":{"title":"Handler","type":"string"},"input_schema":{"additionalProperties":true,"description":"First-pass authoring guidance derived from public field metadata; runtime action validation remains authoritative.","title":"Input Schema","type":"object"},"integration_node_config":{"additionalProperties":true,"title":"Integration Node Config","type":"object"},"label":{"title":"Label","type":"string"},"output_schema":{"additionalProperties":true,"description":"Best-effort declared output names; fields and JSON types may be incomplete.","title":"Output Schema","type":"object"},"output_schema_completeness":{"title":"Output Schema Completeness","type":"string"},"outputs":{"items":{"additionalProperties":true,"type":"object"},"title":"Outputs","type":"array"},"safety":{"$ref":"#/components/schemas/WorkflowActionSafety"},"score":{"title":"Score","type":"integer"}},"required":["handler","group","label","fields","outputs","safety","score","integration_node_config","input_schema","output_schema","output_schema_completeness"],"title":"WorkflowActionCapability","type":"object"},"WorkflowActionSafety":{"additionalProperties":false,"description":"Conservative execution guidance for an integration action.","properties":{"confirmation_recommended":{"description":"Confirm business intent and identifiers before publishing this step.","title":"Confirmation Recommended","type":"boolean"},"dry_run_supported":{"description":"Whether the action declares a top-level dry_run input.","title":"Dry Run Supported","type":"boolean"},"effect":{"description":"Conservative action effect: write includes local persistence and external writes; unknown actions default to write.","enum":["read","write","irreversible"],"title":"Effect","type":"string"},"retry_safe":{"description":"Whether an agent may automatically retry without duplicating a business write.","title":"Retry Safe","type":"boolean"}},"required":["effect","confirmation_recommended","retry_safe","dry_run_supported"],"title":"WorkflowActionSafety","type":"object"},"WorkflowActionSearchResponse":{"additionalProperties":false,"properties":{"actions":{"items":{"$ref":"#/components/schemas/WorkflowActionCapability"},"title":"Actions","type":"array"},"count":{"title":"Count","type":"integer"},"group":{"title":"Group","type":"string"},"has_more":{"default":false,"title":"Has More","type":"boolean"},"next_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Offset"},"offset":{"default":0,"title":"Offset","type":"integer"},"query":{"title":"Query","type":"string"},"success":{"default":true,"title":"Success","type":"boolean"},"total_matches":{"title":"Total Matches","type":"integer"}},"required":["query","group","count","total_matches","actions"],"title":"WorkflowActionSearchResponse","type":"object"},"WorkflowAuditFinding":{"additionalProperties":false,"properties":{"category":{"title":"Category","type":"string"},"code":{"title":"Code","type":"string"},"details":{"additionalProperties":true,"title":"Details","type":"object"},"edge":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Edge"},"id":{"title":"Id","type":"string"},"message":{"title":"Message","type":"string"},"node_ids":{"items":{"type":"string"},"title":"Node Ids","type":"array"},"severity":{"enum":["blocking","warning"],"title":"Severity","type":"string"},"suggestion":{"title":"Suggestion","type":"string"}},"required":["id","code","category","severity","node_ids","edge","message","suggestion"],"title":"WorkflowAuditFinding","type":"object"},"WorkflowAuditResponse":{"additionalProperties":true,"properties":{"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"editable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Editable"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"filtered":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Filtered"},"findings":{"items":{"additionalProperties":true,"type":"object"},"title":"Findings","type":"array"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"runtime_notes":{"items":{"additionalProperties":true,"type":"object"},"title":"Runtime Notes","type":"array"},"scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"},"success":{"title":"Success","type":"boolean"},"summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Summary"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"version_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version Number"},"version_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Status"},"workflow_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Status"}},"required":["success"],"title":"WorkflowAuditResponse","type":"object"},"WorkflowAuditRuntimeNote":{"additionalProperties":false,"properties":{"category":{"title":"Category","type":"string"},"code":{"title":"Code","type":"string"},"id":{"title":"Id","type":"string"},"message":{"title":"Message","type":"string"},"node_ids":{"items":{"type":"string"},"title":"Node Ids","type":"array"},"suggestion":{"title":"Suggestion","type":"string"}},"required":["id","code","category","node_ids","message","suggestion"],"title":"WorkflowAuditRuntimeNote","type":"object"},"WorkflowBuilderCapabilities":{"properties":{"isolated_batch_loops":{"default":false,"title":"Isolated Batch Loops","type":"boolean"}},"title":"WorkflowBuilderCapabilities","type":"object"},"WorkflowCapabilityManifest":{"additionalProperties":false,"description":"Top-level contract intended for API clients and AI agents.","properties":{"expression_syntax":{"additionalProperties":true,"title":"Expression Syntax","type":"object"},"graph_schema":{"additionalProperties":true,"title":"Graph Schema","type":"object"},"integration_actions":{"additionalProperties":true,"title":"Integration Actions","type":"object"},"lifecycle":{"additionalProperties":true,"title":"Lifecycle","type":"object"},"node_types":{"items":{"$ref":"#/components/schemas/WorkflowNodeCapability"},"title":"Node Types","type":"array"},"recipes":{"items":{"additionalProperties":true,"type":"object"},"title":"Recipes","type":"array"},"schema_version":{"const":1,"default":1,"title":"Schema Version","type":"integer"}},"required":["graph_schema","expression_syntax","lifecycle","node_types","integration_actions","recipes"],"title":"WorkflowCapabilityManifest","type":"object"},"WorkflowDefinitionListResponse":{"properties":{"pagination":{"additionalProperties":true,"title":"Pagination","type":"object"},"workflow_definitions":{"items":{"$ref":"#/components/schemas/WorkflowDefinitionResponse"},"title":"Workflow Definitions","type":"array"}},"required":["workflow_definitions","pagination"],"title":"WorkflowDefinitionListResponse","type":"object"},"WorkflowDefinitionResponse":{"properties":{"_created":{"format":"date-time","title":"Created","type":"string"},"_last_modified":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Last Modified"},"active_version_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"title":"Active Version Id"},"capabilities":{"$ref":"#/components/schemas/WorkflowBuilderCapabilities"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"deleted":{"default":false,"title":"Deleted","type":"boolean"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"draft_version_id":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"title":"Draft Version Id"},"edges":{"default":[],"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Edited At"},"has_draft":{"default":false,"title":"Has Draft","type":"boolean"},"id":{"format":"uuid","title":"Id","type":"string"},"legacy":{"default":false,"title":"Legacy","type":"boolean"},"name":{"title":"Name","type":"string"},"nodes":{"default":[],"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"org_id":{"format":"uuid","title":"Org Id","type":"string"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"},"status":{"title":"Status","type":"string"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","title":"Trigger"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"updated_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Email"},"version":{"default":1,"title":"Version","type":"integer"}},"required":["id","org_id","name","status","_created"],"title":"WorkflowDefinitionResponse","type":"object"},"WorkflowDefinitionSchemaError":{"additionalProperties":false,"description":"One schema failure with a stable machine-readable location and code.","properties":{"code":{"title":"Code","type":"string"},"message":{"title":"Message","type":"string"},"path":{"title":"Path","type":"string"}},"required":["path","code","message"],"title":"WorkflowDefinitionSchemaError","type":"object"},"WorkflowDefinitionValidationRequest":{"additionalProperties":false,"description":"Canonical envelope candidate to validate without creating a workflow.","properties":{"definition":{"anyOf":[{"$ref":"#/components/schemas/WorkflowImportEnvelope"},{"$ref":"#/components/schemas/JsonValue"}],"description":"A genhealth.workflow_definition import envelope. Any JSON value is accepted here so schema mistakes can be returned as structured validation results.","title":"Definition"}},"required":["definition"],"title":"WorkflowDefinitionValidationRequest","type":"object"},"WorkflowDefinitionValidationResult":{"additionalProperties":false,"description":"Machine-readable outcome of validating an unpersisted definition.","properties":{"findings":{"items":{"$ref":"#/components/schemas/WorkflowAuditFinding"},"title":"Findings","type":"array"},"graph_valid":{"title":"Graph Valid","type":"boolean"},"policy_valid":{"title":"Policy Valid","type":"boolean"},"readiness":{"enum":["blocked","needs_review","ready"],"title":"Readiness","type":"string"},"runtime_notes":{"items":{"$ref":"#/components/schemas/WorkflowAuditRuntimeNote"},"title":"Runtime Notes","type":"array"},"runtime_verified":{"const":false,"default":false,"title":"Runtime Verified","type":"boolean"},"schema_errors":{"items":{"$ref":"#/components/schemas/WorkflowDefinitionSchemaError"},"title":"Schema Errors","type":"array"},"schema_valid":{"title":"Schema Valid","type":"boolean"},"success":{"default":true,"title":"Success","type":"boolean"},"summary":{"$ref":"#/components/schemas/WorkflowDefinitionValidationSummary"},"viable":{"title":"Viable","type":"boolean"},"workflow_valid":{"title":"Workflow Valid","type":"boolean"}},"required":["schema_valid","graph_valid","policy_valid","workflow_valid","viable","readiness","summary"],"title":"WorkflowDefinitionValidationResult","type":"object"},"WorkflowDefinitionValidationSummary":{"additionalProperties":false,"description":"Counts and readiness for one completed preflight validation.","properties":{"blocking_count":{"title":"Blocking Count","type":"integer"},"finding_count":{"title":"Finding Count","type":"integer"},"production_confidence":{"enum":["unverified_runtime","static_only"],"title":"Production Confidence","type":"string"},"readiness":{"enum":["blocked","needs_review","ready"],"title":"Readiness","type":"string"},"runtime_note_count":{"title":"Runtime Note Count","type":"integer"},"schema_error_count":{"title":"Schema Error Count","type":"integer"},"warning_count":{"title":"Warning Count","type":"integer"}},"required":["readiness","schema_error_count","finding_count","blocking_count","warning_count","runtime_note_count","production_confidence"],"title":"WorkflowDefinitionValidationSummary","type":"object"},"WorkflowDeveloperCapabilityManifestV2":{"additionalProperties":false,"description":"Versioned graph capabilities plus developer-transport handoff guidance.","properties":{"expression_syntax":{"additionalProperties":true,"title":"Expression Syntax","type":"object"},"graph_schema":{"additionalProperties":true,"title":"Graph Schema","type":"object"},"integration_actions":{"additionalProperties":true,"title":"Integration Actions","type":"object"},"lifecycle":{"additionalProperties":true,"title":"Lifecycle","type":"object"},"node_types":{"items":{"$ref":"#/components/schemas/WorkflowNodeCapability"},"title":"Node Types","type":"array"},"public_webhooks":{"$ref":"#/components/schemas/WorkflowDeveloperPublicWebhookCapability"},"recipes":{"items":{"additionalProperties":true,"type":"object"},"title":"Recipes","type":"array"},"schema_version":{"const":2,"default":2,"title":"Schema Version","type":"integer"}},"required":["graph_schema","expression_syntax","lifecycle","node_types","integration_actions","recipes","public_webhooks"],"title":"WorkflowDeveloperCapabilityManifestV2","type":"object"},"WorkflowDeveloperDefinitionCreate":{"additionalProperties":false,"description":"Strict compact-create body for deterministic agent authoring.","properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"name":{"title":"Name","type":"string"},"nodes":{"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","examples":[{"config":{"run_fields":[{"default":false,"key":"dry_run","type":"boolean"},{"key":"limit","required":true,"type":"number"}]},"type":"manual"}],"title":"Trigger"}},"required":["name"],"title":"WorkflowDeveloperDefinitionCreate","type":"object"},"WorkflowDeveloperDefinitionUpdate":{"additionalProperties":false,"description":"Strict metadata/draft update body for deterministic agent authoring.","properties":{"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"edges":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"type":"array"},{"type":"null"}],"title":"Edges"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"nodes":{"anyOf":[{"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"type":"array"},{"type":"null"}],"title":"Nodes"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","examples":[{"config":{"run_fields":[{"default":false,"key":"dry_run","type":"boolean"},{"key":"limit","required":true,"type":"number"}]},"type":"manual"}],"title":"Trigger"}},"title":"WorkflowDeveloperDefinitionUpdate","type":"object"},"WorkflowDeveloperImportEnvelope":{"additionalProperties":false,"description":"Canonical import envelope with public graph limits.","properties":{"kind":{"const":"genhealth.workflow_definition","title":"Kind","type":"string"},"schema_version":{"const":1,"title":"Schema Version","type":"integer"},"workflow":{"$ref":"#/components/schemas/WorkflowImportBody"}},"required":["kind","schema_version","workflow"],"title":"WorkflowDeveloperImportEnvelope","type":"object"},"WorkflowDeveloperPublicWebhookCapability":{"additionalProperties":false,"description":"Complete public webhook lifecycle safe to expose to an AI agent.","properties":{"authoring_example":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"title":"Authoring Example","type":"object"},"authoring_rules":{"items":{"type":"string"},"title":"Authoring Rules","type":"array"},"delivery":{"$ref":"#/components/schemas/WorkflowDeveloperWebhookDeliveryContract"},"deployment_enabled":{"title":"Deployment Enabled","type":"boolean"},"disabled_behavior":{"default":"When false, public webhook authoring and endpoint retrieval are unavailable.","title":"Disabled Behavior","type":"string"},"endpoint_retrieval":{"$ref":"#/components/schemas/WorkflowDeveloperWebhookEndpointDiscovery"},"node_type":{"const":"webhook_trigger","default":"webhook_trigger","title":"Node Type","type":"string"},"payload":{"$ref":"#/components/schemas/WorkflowDeveloperWebhookPayloadContract"},"provider":{"const":"generic","default":"generic","title":"Provider","type":"string"},"status":{"const":"supported","default":"supported","title":"Status","type":"string"}},"required":["deployment_enabled"],"title":"WorkflowDeveloperPublicWebhookCapability","type":"object"},"WorkflowDeveloperRunTriggerRequest":{"additionalProperties":false,"description":"AI-oriented manual run request with a required replay-safe identifier.","properties":{"idempotency_key":{"description":"Required opaque 16-256 character request identifier. Reuse it only for an exact retry of the same workflow version and trigger_data; generate a new UUID for a new logical run. Do not put PHI or credentials in this value.","maxLength":256,"minLength":16,"title":"Idempotency Key","type":"string","writeOnly":true},"trigger_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Optional manual-run input object supplied to the workflow trigger.","title":"Trigger Data"}},"required":["idempotency_key"],"title":"WorkflowDeveloperRunTriggerRequest","type":"object"},"WorkflowDeveloperWebhookDeliveryContract":{"additionalProperties":false,"description":"Machine-readable requirements for calling a retrieved webhook URL.","properties":{"additional_authentication_headers_required":{"const":false,"default":false,"title":"Additional Authentication Headers Required","type":"boolean"},"authentication":{"const":"webhook_url_credential","default":"webhook_url_credential","title":"Authentication","type":"string"},"body_type":{"const":"json_object","default":"json_object","title":"Body Type","type":"string"},"conflicting_retry_result":{"const":"HTTP 409","default":"HTTP 409","title":"Conflicting Retry Result","type":"string"},"content_type":{"const":"application/json","default":"application/json","title":"Content Type","type":"string"},"exact_retry_result":{"default":"Returns the original delivery and workflow run identifiers without dispatching again.","title":"Exact Retry Result","type":"string"},"idempotency_key_guidance":{"default":"Generate one stable opaque key per logical delivery, reuse it only for an exact retry with the same body, and never include PHI or credentials.","title":"Idempotency Key Guidance","type":"string"},"invalid_json_or_delivery_status":{"const":400,"default":400,"title":"Invalid Json Or Delivery Status","type":"integer"},"max_body_bytes":{"default":256000,"title":"Max Body Bytes","type":"integer"},"method":{"const":"POST","default":"POST","title":"Method","type":"string"},"oversized_body_status":{"const":413,"default":413,"title":"Oversized Body Status","type":"integer"},"quota_exceeded_status":{"const":429,"default":429,"title":"Quota Exceeded Status","type":"integer"},"required_idempotency_header":{"default":"Idempotency-Key","title":"Required Idempotency Header","type":"string"},"success_response_fields":{"items":{"type":"string"},"title":"Success Response Fields","type":"array"},"success_status":{"const":200,"default":200,"title":"Success Status","type":"integer"}},"title":"WorkflowDeveloperWebhookDeliveryContract","type":"object"},"WorkflowDeveloperWebhookEndpointDiscovery":{"additionalProperties":false,"description":"Non-secret handoff from MCP authoring to REST credential retrieval.","properties":{"available_as_mcp_tool":{"const":false,"default":false,"title":"Available As Mcp Tool","type":"boolean"},"credential_handling":{"default":"The returned URL is an execution credential. Fetch it outside MCP, honor no-store, and do not place it in model context, logs, or persisted workflow JSON.","title":"Credential Handling","type":"string"},"handoff_guidance":{"default":"After authoring and publishing, hand the definition_id to an authorized operator or non-LLM credential client to retrieve and store the URL. An MCP-only agent is not expected to retrieve it.","title":"Handoff Guidance","type":"string"},"method":{"const":"GET","default":"GET","title":"Method","type":"string"},"operator_handoff_required":{"const":true,"default":true,"title":"Operator Handoff Required","type":"boolean"},"path_template":{"default":"/developer/v1/workflows/{definition_id}/webhook-endpoint","title":"Path Template","type":"string"},"prerequisites":{"items":{"type":"string"},"title":"Prerequisites","type":"array"},"required_scope":{"default":"workflow:run","title":"Required Scope","type":"string"},"transport":{"const":"rest_only","default":"rest_only","title":"Transport","type":"string"}},"title":"WorkflowDeveloperWebhookEndpointDiscovery","type":"object"},"WorkflowDeveloperWebhookPayloadContract":{"additionalProperties":false,"description":"How arbitrary inbound JSON becomes workflow trigger data.","properties":{"accepted_body_schema":{"const":"open_json_object","default":"open_json_object","title":"Accepted Body Schema","type":"string"},"configurable_payload_schema":{"const":false,"default":false,"title":"Configurable Payload Schema","type":"boolean"},"expression_template":{"default":"{{webhook_node_id.default.field_name}}","title":"Expression Template","type":"string"},"trigger_output":{"const":"default","default":"default","title":"Trigger Output","type":"string"},"validation_guidance":{"default":"The trigger does not configure an accepted-payload schema. Validate or branch on required fields in downstream nodes.","title":"Validation Guidance","type":"string"}},"title":"WorkflowDeveloperWebhookPayloadContract","type":"object"},"WorkflowEdgeSchema":{"additionalProperties":false,"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"source_node_id":{"title":"Source Node Id","type":"string"},"source_output":{"default":"default","title":"Source Output","type":"string"},"target_input":{"default":"default","title":"Target Input","type":"string"},"target_node_id":{"title":"Target Node Id","type":"string"}},"required":["source_node_id","target_node_id"],"title":"WorkflowEdgeSchema","type":"object"},"WorkflowExportBody":{"additionalProperties":false,"properties":{"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"name":{"title":"Name","type":"string"},"nodes":{"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","title":"Trigger"}},"required":["name","nodes","edges"],"title":"WorkflowExportBody","type":"object"},"WorkflowExportEnvelope":{"additionalProperties":false,"properties":{"kind":{"const":"genhealth.workflow_definition","title":"Kind","type":"string"},"schema_version":{"const":1,"title":"Schema Version","type":"integer"},"workflow":{"$ref":"#/components/schemas/WorkflowExportBody"}},"required":["kind","schema_version","workflow"],"title":"WorkflowExportEnvelope","type":"object"},"WorkflowGraphReplaceRequest":{"additionalProperties":false,"description":"Complete graph replacement; omitted nodes are removed.","properties":{"edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"maxItems":1000,"title":"Edges","type":"array"},"nodes":{"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"maxItems":200,"minItems":1,"title":"Nodes","type":"array"}},"required":["nodes"],"title":"WorkflowGraphReplaceRequest","type":"object"},"WorkflowGraphResponse":{"additionalProperties":true,"properties":{"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"edge_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Edge Count"},"edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"editable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Editable"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"node_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Node Count"},"nodes":{"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"success":{"title":"Success","type":"boolean"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["success"],"title":"WorkflowGraphResponse","type":"object"},"WorkflowImportBody":{"additionalProperties":false,"description":"Upload shape with write-side limits that do not constrain exports.","properties":{"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"description":{"anyOf":[{"maxLength":20000,"type":"string"},{"type":"null"}],"title":"Description"},"edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"name":{"title":"Name","type":"string"},"nodes":{"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","examples":[{"config":{"run_fields":[{"default":false,"key":"dry_run","type":"boolean"},{"key":"limit","required":true,"type":"number"}]},"type":"manual"}],"title":"Trigger"}},"required":["name","nodes","edges"],"title":"WorkflowImportBody","type":"object"},"WorkflowImportEnvelope":{"additionalProperties":false,"properties":{"kind":{"const":"genhealth.workflow_definition","title":"Kind","type":"string"},"schema_version":{"const":1,"title":"Schema Version","type":"integer"},"workflow":{"$ref":"#/components/schemas/WorkflowImportBody"}},"required":["kind","schema_version","workflow"],"title":"WorkflowImportEnvelope","type":"object"},"WorkflowImportResponse":{"properties":{"warnings":{"items":{"$ref":"#/components/schemas/WorkflowImportWarning"},"title":"Warnings","type":"array"},"workflow":{"$ref":"#/components/schemas/WorkflowDefinitionResponse"}},"required":["workflow"],"title":"WorkflowImportResponse","type":"object"},"WorkflowImportWarning":{"properties":{"code":{"title":"Code","type":"string"},"message":{"title":"Message","type":"string"},"node_id":{"title":"Node Id","type":"string"}},"required":["node_id","code","message"],"title":"WorkflowImportWarning","type":"object"},"WorkflowIntegrationCatalogResponse":{"additionalProperties":false,"properties":{"action_count":{"title":"Action Count","type":"integer"},"integration_count":{"title":"Integration Count","type":"integer"},"integrations":{"items":{"$ref":"#/components/schemas/WorkflowIntegrationSummary"},"title":"Integrations","type":"array"}},"required":["integrations","integration_count","action_count"],"title":"WorkflowIntegrationCatalogResponse","type":"object"},"WorkflowIntegrationConnectionCatalogResponse":{"additionalProperties":false,"properties":{"connection_count":{"title":"Connection Count","type":"integer"},"connections":{"items":{"$ref":"#/components/schemas/WorkflowIntegrationConnectionStatus"},"title":"Connections","type":"array"}},"required":["connections","connection_count"],"title":"WorkflowIntegrationConnectionCatalogResponse","type":"object"},"WorkflowIntegrationConnectionStatus":{"additionalProperties":false,"description":"Credential-presence status without secret fields or validation errors.","properties":{"configured":{"title":"Configured","type":"boolean"},"connection_type":{"title":"Connection Type","type":"string"},"login_testable":{"title":"Login Testable","type":"boolean"},"status":{"enum":["not_connected","connected_unvalidated","connected_validated"],"title":"Status","type":"string"},"validated":{"title":"Validated","type":"boolean"}},"required":["connection_type","status","configured","validated","login_testable"],"title":"WorkflowIntegrationConnectionStatus","type":"object"},"WorkflowIntegrationFieldOptionResponse":{"description":"One dynamic workflow integration field option.","properties":{"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data"},"label":{"title":"Label","type":"string"},"value":{"title":"Value","type":"string"}},"required":["value","label"],"title":"WorkflowIntegrationFieldOptionResponse","type":"object"},"WorkflowIntegrationFieldOptionsResponse":{"description":"Dynamic workflow integration field options response.","properties":{"has_more":{"default":false,"title":"Has More","type":"boolean"},"input_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Mode"},"options":{"items":{"$ref":"#/components/schemas/WorkflowIntegrationFieldOptionResponse"},"title":"Options","type":"array"}},"required":["options"],"title":"WorkflowIntegrationFieldOptionsResponse","type":"object"},"WorkflowIntegrationSummary":{"additionalProperties":false,"properties":{"action_count":{"title":"Action Count","type":"integer"},"connection_types":{"items":{"anyOf":[{"type":"string"},{"type":"boolean"}]},"title":"Connection Types","type":"array"},"group":{"title":"Group","type":"string"}},"required":["group","action_count","connection_types"],"title":"WorkflowIntegrationSummary","type":"object"},"WorkflowMutationResponse":{"additionalProperties":true,"properties":{"added_edge_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Added Edge Count"},"changed_fields":{"items":{"type":"string"},"title":"Changed Fields","type":"array"},"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"inserted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inserted"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"node_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Name"},"removed_edge_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Removed Edge Count"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"rewired_edge_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rewired Edge Count"},"success":{"title":"Success","type":"boolean"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"}},"required":["success"],"title":"WorkflowMutationResponse","type":"object"},"WorkflowNodeCapability":{"additionalProperties":false,"description":"Machine-readable contract for one workflow node type.","properties":{"category":{"enum":["action","control","trigger","annotation"],"title":"Category","type":"string"},"config_schema":{"additionalProperties":true,"title":"Config Schema","type":"object"},"data_output_schema":{"additionalProperties":true,"title":"Data Output Schema","type":"object"},"description":{"title":"Description","type":"string"},"examples":{"items":{"additionalProperties":true,"type":"object"},"title":"Examples","type":"array"},"routing_ports":{"additionalProperties":true,"title":"Routing Ports","type":"object"},"status":{"enum":["supported","deprecated","internal_only","unavailable"],"title":"Status","type":"string"},"type":{"title":"Type","type":"string"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"},"warnings":{"items":{"type":"string"},"title":"Warnings","type":"array"}},"required":["type","version","status","category","description","config_schema","data_output_schema","routing_ports"],"title":"WorkflowNodeCapability","type":"object"},"WorkflowNodeContextResponse":{"additionalProperties":true,"properties":{"available_outputs":{"items":{"additionalProperties":true,"type":"object"},"title":"Available Outputs","type":"array"},"branch_outputs":{"items":{"additionalProperties":true,"type":"object"},"title":"Branch Outputs","type":"array"},"current_node":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Current Node"},"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"downstream_nodes":{"items":{"additionalProperties":true,"type":"object"},"title":"Downstream Nodes","type":"array"},"editable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Editable"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"incoming_edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Incoming Edges","type":"array"},"outgoing_edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Outgoing Edges","type":"array"},"outline_hints":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"title":"Outline Hints","type":"array"},"required_inputs":{"items":{"additionalProperties":true,"type":"object"},"title":"Required Inputs","type":"array"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"success":{"title":"Success","type":"boolean"},"upstream_nodes":{"items":{"additionalProperties":true,"type":"object"},"title":"Upstream Nodes","type":"array"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"version_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Status"},"workflow_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Status"}},"required":["success"],"title":"WorkflowNodeContextResponse","type":"object"},"WorkflowNodeDetailsResponse":{"additionalProperties":true,"properties":{"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"editable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Editable"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"incoming_edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Incoming Edges","type":"array"},"node":{"anyOf":[{"$ref":"#/components/schemas/WorkflowNodeSchema"},{"type":"null"}]},"outgoing_edges":{"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Outgoing Edges","type":"array"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"success":{"title":"Success","type":"boolean"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"version_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Status"},"workflow_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Status"}},"required":["success"],"title":"WorkflowNodeDetailsResponse","type":"object"},"WorkflowNodeInsertAfterRequest":{"additionalProperties":false,"properties":{"after_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Anchor node. Omit only when inserting the first node into an empty workflow.","title":"After Node Id"},"node":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"rewire_existing_targets":{"default":true,"title":"Rewire Existing Targets","type":"boolean"},"source_output":{"default":"default","title":"Source Output","type":"string"},"target_input":{"default":"default","title":"Target Input","type":"string"}},"required":["node"],"title":"WorkflowNodeInsertAfterRequest","type":"object"},"WorkflowNodeInsertBeforeRequest":{"additionalProperties":false,"properties":{"before_node_id":{"title":"Before Node Id","type":"string"},"node":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"rewire_existing_sources":{"default":true,"title":"Rewire Existing Sources","type":"boolean"},"source_output":{"default":"default","title":"Source Output","type":"string"},"target_input":{"default":"default","title":"Target Input","type":"string"}},"required":["before_node_id","node"],"title":"WorkflowNodeInsertBeforeRequest","type":"object"},"WorkflowNodeSchema":{"additionalProperties":false,"properties":{"config":{"additionalProperties":true,"title":"Config","type":"object"},"default_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Default Value"},"error_strategy":{"default":"fail","title":"Error Strategy","type":"string"},"id":{"title":"Id","type":"string"},"name":{"title":"Name","type":"string"},"position":{"anyOf":[{"maxItems":2,"minItems":2,"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array"},{"type":"null"}],"title":"Position"},"retry_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Retry Config"},"type":{"title":"Type","type":"string"}},"required":["id","type","name"],"title":"WorkflowNodeSchema","type":"object"},"WorkflowNodeUpdateRequest":{"additionalProperties":false,"description":"Patch one node. Config is a full replacement when supplied.","properties":{"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"default_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Default Value"},"error_strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Strategy"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"node_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Type"},"position":{"anyOf":[{"items":{"type":"integer"},"maxItems":2,"minItems":2,"type":"array"},{"type":"null"}],"title":"Position"},"retry_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Retry Config"}},"title":"WorkflowNodeUpdateRequest","type":"object"},"WorkflowOutlineResponse":{"additionalProperties":true,"properties":{"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"edge_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Edge Count"},"edges":{"items":{"additionalProperties":true,"type":"object"},"title":"Edges","type":"array"},"editable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Editable"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"node_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Node Count"},"nodes":{"items":{"additionalProperties":true,"type":"object"},"title":"Nodes","type":"array"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"success":{"title":"Success","type":"boolean"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"version_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Status"},"workflow_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Status"}},"required":["success"],"title":"WorkflowOutlineResponse","type":"object"},"WorkflowPublishRemovalConfirmation":{"description":"Binds a removal approval to one exact active/draft pair and diff.","properties":{"active_version_id":{"format":"uuid","title":"Active Version Id","type":"string"},"diff_fingerprint":{"maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","title":"Diff Fingerprint","type":"string"},"draft_version_id":{"format":"uuid","title":"Draft Version Id","type":"string"}},"required":["active_version_id","draft_version_id","diff_fingerprint"],"title":"WorkflowPublishRemovalConfirmation","type":"object"},"WorkflowPublishRequest":{"properties":{"confirm_removed_nodes":{"default":false,"title":"Confirm Removed Nodes","type":"boolean"},"description":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"title":"Description"},"personal_account_authorizations":{"items":{"$ref":"#/components/schemas/PersonalWorkflowPublishAuthorization"},"title":"Personal Account Authorizations","type":"array"},"removed_nodes_confirmation":{"anyOf":[{"$ref":"#/components/schemas/WorkflowPublishRemovalConfirmation"},{"type":"null"}]}},"title":"WorkflowPublishRequest","type":"object"},"WorkflowPublishResponse":{"properties":{"id":{"format":"uuid","title":"Id","type":"string"},"status":{"title":"Status","type":"string"},"version_id":{"format":"uuid","title":"Version Id","type":"string"},"version_number":{"title":"Version Number","type":"integer"}},"required":["id","version_id","version_number","status"],"title":"WorkflowPublishResponse","type":"object"},"WorkflowRunControlResponse":{"properties":{"run_id":{"title":"Run Id","type":"string"},"status":{"title":"Status","type":"string"}},"required":["run_id","status"],"title":"WorkflowRunControlResponse","type":"object"},"WorkflowRunNodeShapeResponse":{"additionalProperties":true,"properties":{"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"executed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Executed"},"hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hint"},"in_loop":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"In Loop"},"item_shapes":{"items":{"additionalProperties":true,"type":"object"},"title":"Item Shapes","type":"array"},"iteration_path":{"items":{"type":"integer"},"title":"Iteration Path","type":"array"},"iteration_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Iteration Status"},"iterations":{"items":{"additionalProperties":true,"type":"object"},"title":"Iterations","type":"array"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"loop_chain":{"items":{"type":"string"},"title":"Loop Chain","type":"array"},"node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"outline_hints":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"title":"Outline Hints","type":"array"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"},"run_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Status"},"success":{"title":"Success","type":"boolean"},"total_returned":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Returned"},"truncated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Truncated"}},"required":["success"],"title":"WorkflowRunNodeShapeResponse","type":"object"},"WorkflowRunTriggerResponse":{"properties":{"run_id":{"title":"Run Id","type":"string"},"status":{"title":"Status","type":"string"}},"required":["run_id","status"],"title":"WorkflowRunTriggerResponse","type":"object"},"WorkflowRunsIndexResponse":{"additionalProperties":true,"properties":{"definition_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition Id"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Category"},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"returned":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Returned"},"runs":{"items":{"additionalProperties":true,"type":"object"},"title":"Runs","type":"array"},"success":{"title":"Success","type":"boolean"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"}},"required":["success"],"title":"WorkflowRunsIndexResponse","type":"object"},"WorkflowVersionListResponse":{"properties":{"pagination":{"additionalProperties":true,"title":"Pagination","type":"object"},"versions":{"items":{"$ref":"#/components/schemas/WorkflowVersionSummaryResponse"},"title":"Versions","type":"array"}},"required":["versions","pagination"],"title":"WorkflowVersionListResponse","type":"object"},"WorkflowVersionResponse":{"properties":{"_created":{"format":"date-time","title":"Created","type":"string"},"_last_modified":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Last Modified"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"edges":{"default":[],"items":{"$ref":"#/components/schemas/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Edited At"},"id":{"format":"uuid","title":"Id","type":"string"},"nodes":{"default":[],"items":{"$ref":"#/components/schemas/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"published_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Published At"},"published_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published By"},"published_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published By Email"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"},"status":{"title":"Status","type":"string"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","title":"Trigger"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"updated_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Email"},"version_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version Number"},"workflow_id":{"format":"uuid","title":"Workflow Id","type":"string"}},"required":["id","workflow_id","status","_created"],"title":"WorkflowVersionResponse","type":"object"},"WorkflowVersionSummaryResponse":{"description":"Lightweight version info for the list endpoint (no nodes/edges).","properties":{"_created":{"format":"date-time","title":"Created","type":"string"},"created_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"edited_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Edited At"},"id":{"format":"uuid","title":"Id","type":"string"},"published_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Published At"},"published_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published By"},"published_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published By Email"},"status":{"title":"Status","type":"string"},"updated_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By"},"updated_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Email"},"version_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version Number"},"workflow_id":{"format":"uuid","title":"Workflow Id","type":"string"}},"required":["id","workflow_id","status","_created"],"title":"WorkflowVersionSummaryResponse","type":"object"},"WorkflowWebhookEndpointResponse":{"additionalProperties":false,"description":"Server-managed webhook URL; intentionally excluded from MCP tools.","properties":{"draft":{"title":"Draft","type":"boolean"},"idempotency_header":{"default":"Idempotency-Key","title":"Idempotency Header","type":"string"},"live":{"title":"Live","type":"boolean"},"provider":{"title":"Provider","type":"string"},"url":{"title":"Url","type":"string"},"version_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Id"},"workflow_id":{"title":"Workflow Id","type":"string"}},"required":["workflow_id","provider","url","draft","live"],"title":"WorkflowWebhookEndpointResponse","type":"object"}},"securitySchemes":{"HTTPBearer":{"scheme":"bearer","type":"http"}}},"info":{"description":"Create, version, audit, publish, run, and maintain UMPA workflows directly against the core ETL API. The capability and action-discovery operations are optimized for AI agents.","title":"GenHealth Workflow Developer API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/developer/v1/actions":{"get":{"description":"Search tenant-permitted platform actions; connection setup is reported separately.","operationId":"search_workflow_actions","parameters":[{"description":"Terms such as Brightree patient search or Niko order.","in":"query","name":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Terms such as Brightree patient search or Niko order.","title":"Query"}},{"description":"Optional partial integration group name.","in":"query","name":"group","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional partial integration group name.","title":"Group"}},{"in":"query","name":"limit","required":false,"schema":{"default":25,"maximum":100,"minimum":1,"title":"Limit","type":"integer"}},{"in":"query","name":"offset","required":false,"schema":{"default":0,"minimum":0,"title":"Offset","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowActionSearchResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Search Workflow Actions","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/actions/{handler}":{"get":{"description":"Return the complete first-pass schema for one exact public action handler.","operationId":"get_workflow_action","parameters":[{"in":"path","name":"handler","required":true,"schema":{"title":"Handler","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowActionCapability"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Workflow Action","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/actions/{handler}/fields/{field}/options":{"get":{"description":"Resolve dynamic choices for one action field without exposing credentials.","operationId":"list_workflow_action_field_options","parameters":[{"in":"path","name":"handler","required":true,"schema":{"title":"Handler","type":"string"}},{"in":"path","name":"field","required":true,"schema":{"title":"Field","type":"string"}},{"in":"query","name":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"}},{"in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"title":"Page","type":"integer"}},{"in":"query","name":"page_size","required":false,"schema":{"default":50,"maximum":100,"minimum":1,"title":"Page Size","type":"integer"}},{"in":"query","name":"account_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Id"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowIntegrationFieldOptionsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"List Workflow Action Field Options","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/capabilities":{"get":{"description":"Return the established strict V1 workflow capability manifest.","operationId":"get_workflow_capabilities","responses":{"200":{"content":{"application/json":{"example":{"expression_syntax":{"embedded_reference_stringifies":true,"loop_index_reference":"{{loop_node_id.index}}","loop_item_reference":"{{loop_node_id.item}}","reference":"{{node_id.output_name.path}}","whole_value_preserves_type":true},"graph_schema":{"edge":{"additionalProperties":false,"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"source_node_id":{"title":"Source Node Id","type":"string"},"source_output":{"default":"default","title":"Source Output","type":"string"},"target_input":{"default":"default","title":"Target Input","type":"string"},"target_node_id":{"title":"Target Node Id","type":"string"}},"required":["source_node_id","target_node_id"],"title":"WorkflowEdgeSchema","type":"object"},"node":{"additionalProperties":false,"allOf":[{"else":{"properties":{"retry_config":{"type":"null"}}},"if":{"properties":{"error_strategy":{"const":"retry"}},"required":["error_strategy"]},"then":{"properties":{"retry_config":{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"}},"required":["retry_config"]}}],"properties":{"config":{"additionalProperties":true,"title":"Config","type":"object"},"default_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Default Value"},"error_strategy":{"default":"fail","enum":["fail","fail_branch","default_value","retry"],"type":"string"},"id":{"title":"Id","type":"string"},"name":{"title":"Name","type":"string"},"position":{"anyOf":[{"maxItems":2,"minItems":2,"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array"},{"type":"null"}],"default":null,"title":"Position"},"retry_config":{"anyOf":[{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"},{"type":"null"}],"default":null},"type":{"title":"Type","type":"string"}},"required":["id","type","name"],"title":"WorkflowNodeSchema","type":"object"},"rules":["Node ids are unique within a workflow.","Every edge endpoint names an existing node.","Expressions may only reference statically upstream nodes.","Active workflows must be edited through a draft before publishing."],"workflow_import_envelope":{"$defs":{"WorkflowEdgeSchema":{"additionalProperties":false,"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"source_node_id":{"title":"Source Node Id","type":"string"},"source_output":{"default":"default","title":"Source Output","type":"string"},"target_input":{"default":"default","title":"Target Input","type":"string"},"target_node_id":{"title":"Target Node Id","type":"string"}},"required":["source_node_id","target_node_id"],"title":"WorkflowEdgeSchema","type":"object"},"WorkflowImportBody":{"additionalProperties":false,"description":"Upload shape with write-side limits that do not constrain exports.","properties":{"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Config"},"description":{"anyOf":[{"maxLength":20000,"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"edges":{"items":{"$ref":"#/$defs/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"name":{"title":"Name","type":"string"},"nodes":{"items":{"$ref":"#/$defs/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Route"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","examples":[{"config":{"run_fields":[{"default":false,"key":"dry_run","type":"boolean"},{"key":"limit","required":true,"type":"number"}]},"type":"manual"}],"title":"Trigger"}},"required":["name","nodes","edges"],"title":"WorkflowImportBody","type":"object"},"WorkflowNodeSchema":{"additionalProperties":false,"allOf":[{"else":{"properties":{"retry_config":{"type":"null"}}},"if":{"properties":{"error_strategy":{"const":"retry"}},"required":["error_strategy"]},"then":{"properties":{"retry_config":{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"}},"required":["retry_config"]}}],"properties":{"config":{"additionalProperties":true,"title":"Config","type":"object"},"default_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Default Value"},"error_strategy":{"default":"fail","enum":["fail","fail_branch","default_value","retry"],"type":"string"},"id":{"title":"Id","type":"string"},"name":{"title":"Name","type":"string"},"position":{"anyOf":[{"maxItems":2,"minItems":2,"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array"},{"type":"null"}],"default":null,"title":"Position"},"retry_config":{"anyOf":[{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"},{"type":"null"}],"default":null},"type":{"title":"Type","type":"string"}},"required":["id","type","name"],"title":"WorkflowNodeSchema","type":"object"}},"additionalProperties":false,"properties":{"kind":{"const":"genhealth.workflow_definition","title":"Kind","type":"string"},"schema_version":{"const":1,"title":"Schema Version","type":"integer"},"workflow":{"$ref":"#/$defs/WorkflowImportBody"}},"required":["kind","schema_version","workflow"],"title":"WorkflowImportEnvelope","type":"object"}},"integration_actions":{"connection_status":"Use the integration connection status endpoint before publishing; it reports only configured/validated state and never credential material.","detail_source":"Each result includes an exact handler/group, compact public fields, connection type, and best-effort declared outputs. Connection configuration status is not asserted.","discovery":"Use the workflow action search endpoint for compact, tenant-permitted results.","output_schema_completeness":"best_effort_declared_or_unknown","warning":"Output names may be incomplete or observed from production examples; use PHI-safe run-node shape inspection to observe runtime fields."},"lifecycle":{"recommended_sequence":["create or import an inactive workflow","read the editable graph","create a draft before changing any published workflow version","write and audit the graph","publish the draft","run and inspect PHI-safe run metadata"],"states":["inactive","active","paused"],"umpa_visibility":"Developer API and UMPA use the same organization-scoped workflow records and versions.","version_states":["draft","published","archived"]},"node_types":[{"category":"action","config_schema":{"additionalProperties":true,"properties":{"_group":{"description":"Integration group returned by workflow action search.","type":"string"},"handler":{"description":"Exact handler returned by workflow action search.","type":"string"},"params":{"additionalProperties":true,"properties":{},"type":"object"}},"required":["handler","params"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Invoke a public action in an integration configured for the organization.","examples":[{"config":{"_group":"NikoHealth","handler":"exact_handler_from_search","params":{}},"id":"find_patient","name":"Find patient","type":"integration"}],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"integration","version":1,"warnings":["Input and output schemas vary by action; call workflow action search before constructing this node."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"agent_id":{"type":"string"},"instructions":{"type":"string"},"max_actions":{"default":100,"minimum":1,"type":"integer"},"max_iterations":{"default":10,"minimum":1,"type":"integer"},"model":{"type":"string"},"output_schema":{"type":"object"},"prompt_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"tools":{"items":{"type":"string"},"type":"array"}},"required":["instructions"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"harness_run_id":{},"result":{},"selection":{},"steps":{},"tool_calls":{},"usage":{}},"type":"object"},"description":"Run an agent with instructions and an approved tool set.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"internal_only","type":"agent","version":1,"warnings":["Not accepted by third-party developer endpoints until referenced agents and tools have a public authorization contract."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"max_tokens":{"minimum":1,"type":"integer"},"model":{"type":"string"},"prompt":{"type":"string"},"seed":{"minimum":0,"type":"integer"},"structured_output":{"additionalProperties":true,"properties":{},"type":"object"},"system_prompt":{"type":"string"},"temperature":{"default":0.7,"maximum":2,"minimum":0,"type":"number"}},"required":["prompt"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"model":{},"output":{},"text":{}},"type":"object"},"description":"Generate text or configured structured fields with a language model.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"llm","version":1,"warnings":[]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"code":{"type":"string"}},"required":["code"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Run a Python transformation for trusted, internally authored workflows.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"internal_only","type":"code","version":1,"warnings":["Not accepted by third-party developer endpoints because execution isolation is not yet a public contract."]},{"category":"annotation","config_schema":{"additionalProperties":true,"properties":{"body":{"type":"string"},"heading":{"type":"string"}},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"body":{},"default":{},"heading":{}},"type":"object"},"description":"Carry human-readable documentation through the graph without performing an external action.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"comment","version":1,"warnings":[]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"operations":{"items":{"additionalProperties":true,"properties":{"op":{"enum":["add","add_duration","append","as_datetime_text","as_unix_milliseconds","as_unix_seconds","base64_decode","base64_encode","difference_to_now","hash","length","lowercase","pad_end","pad_start","parse_date","parse_datetime","parse_json","parse_number","parse_url","prepend","replace","replace_all","replace_regex","split","substring","subtract","subtract_duration","time_since","trim","truncate","uppercase","url_encode"],"type":"string"}},"required":["op"],"type":"object"},"type":"array"},"source":{}},"required":["source","operations"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"result":{}},"type":"object"},"description":"Apply a chain of text, date, parsing, encoding, and hashing transformations to one value.","examples":[{"config":{"operations":[{"op":"trim"},{"op":"lowercase"}],"source":"{{lookup.status}}"},"id":"normalize_status","name":"Normalize status","type":"formatter"}],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"formatter","version":1,"warnings":["Formatter transforms one value; it is not a general object/dictionary projection node."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"auth":{"additionalProperties":true,"properties":{"audience":{"type":"string"},"client_auth":{"enum":["body","header"],"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"},"key_in":{"enum":["header","query"],"type":"string"},"key_name":{"type":"string"},"key_value":{"type":"string"},"password":{"type":"string"},"scope":{"type":"string"},"token":{"type":"string"},"token_url":{"type":"string"},"type":{"enum":["none","basic","bearer","api_key","digest","oauth2_client_credentials"],"type":"string"},"username":{"type":"string"}},"type":"object"},"body":{},"body_type":{"enum":["none","json","form","multipart","raw"],"type":"string"},"fail_on_error_status":{"default":false,"type":"boolean"},"follow_redirects":{"default":true,"type":"boolean"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"max_redirects":{"default":10,"maximum":20,"minimum":0,"type":"integer"},"method":{"enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],"type":"string"},"pagination":{"additionalProperties":true,"properties":{"items_path":{"type":"string"},"max_pages":{"default":10,"maximum":100,"minimum":1,"type":"integer"},"mode":{"enum":["off","next_url","increment"],"type":"string"},"next_url_path":{"type":"string"},"param":{"type":"string"},"start":{"type":"integer"},"step":{"minimum":1,"type":"integer"}},"type":"object"},"query":{"type":"object"},"raw_content_type":{"type":"string"},"response_format":{"enum":["auto","json","text"],"type":"string"},"timeout":{"default":30,"maximum":300,"minimum":1,"type":"number"},"url":{"format":"uri","type":"string"}},"required":["url"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Make a generic HTTP request for trusted, internally authored workflows.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"internal_only","type":"http","version":1,"warnings":["Not accepted by third-party developer endpoints until DNS-aware egress controls are enforced."]},{"category":"control","config_schema":{"oneOf":[{"additionalProperties":true,"properties":{"condition":{"oneOf":[{"description":"Literal JSON value or expression string tested for truthiness.","type":["string","number","boolean","array"]},{"additionalProperties":false,"properties":{"left":{},"operator":{"enum":["eq","gt","gte","is_empty","is_not_empty","length_eq","length_gt","length_gte","length_lt","length_lte","length_neq","lt","lte","neq"],"type":"string"},"right":{}},"required":["left","operator"],"type":"object"}]}},"required":["condition"],"type":"object"},{"additionalProperties":true,"properties":{"conditions":{"items":{"additionalProperties":false,"properties":{"condition":{"oneOf":[{"description":"Literal JSON value or expression string tested for truthiness.","type":["string","number","boolean","array"]},{"additionalProperties":false,"properties":{"left":{},"operator":{"enum":["eq","gt","gte","is_empty","is_not_empty","length_eq","length_gt","length_gte","length_lt","length_lte","length_neq","lt","lte","neq"],"type":"string"},"right":{}},"required":["left","operator"],"type":"object"}]},"name":{"minLength":1,"type":"string"}},"required":["name","condition"],"type":"object"},"minItems":1,"type":"array"}},"required":["conditions"],"type":"object"}]},"data_output_schema":{"additionalProperties":true,"properties":{"branch":{},"default":{}},"type":"object"},"description":"Route execution through a two-way condition or an ordered named else-if chain.","examples":[{"config":{"condition":{"left":"{{search.orders}}","operator":"length_gt","right":0}},"id":"has_orders","name":"Has orders","type":"if"}],"routing_ports":{"description":"Named-condition mode uses each condition name plus else instead of true/false.","dynamic":true,"static":["true","false"]},"status":"supported","type":"if","version":1,"warnings":[]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{"cases":{"additionalProperties":{"type":"string"},"type":"object"},"value":{}},"required":["value","cases"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Route a resolved value to a configured output handle, falling back to default.","examples":[{"config":{"cases":{"active":"process","inactive":"skip"},"value":"{{lookup.status}}"},"id":"route_status","name":"Route status","type":"switch"}],"routing_ports":{"description":"Case values map to output-handle names; default is used when no case matches.","dynamic":true,"static":["default"]},"status":"supported","type":"switch","version":1,"warnings":["Named if conditions are preferred for new multi-branch workflows."]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{"execution_mode":{"default":"inline","enum":["inline","item_step"],"type":"string"},"items":{"description":"Array value or expression resolving to an array."},"loop_iteration_concurrency":{"default":10,"maximum":20,"minimum":1,"type":"integer"},"max_iterations":{"description":"Required public execution cap. Each loop is limited to 100 iterations and the product of all loop caps in one graph cannot exceed 500.","maximum":100,"minimum":1,"type":"integer"},"mode":{"default":"single_node","enum":["single_node","subgraph"],"type":"string"}},"required":["items","max_iterations"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"count":{},"default":{},"failure_count":{},"items":{},"results":{},"success_count":{}},"type":"object"},"description":"Iterate over an array using a single body node or an owned subgraph.","examples":[{"config":{"items":"{{search.orders}}","max_iterations":100,"mode":"subgraph"},"id":"each_order","name":"Each order","type":"loop"}],"routing_ports":{"description":"default enters the loop body; complete continues after all iterations.","dynamic":false,"static":["default","complete"]},"status":"supported","type":"loop","version":1,"warnings":["Loop-body expressions use {{loop_node_id.item}} and {{loop_node_id.index}}.","execution_mode=item_step requires mode=subgraph.","The developer API requires max_iterations <= 100; all loop caps have a cumulative product budget of 500."]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Legacy parallel branch marker; new graphs are rejected.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"deprecated","type":"fan_out","version":1,"warnings":["Use ordinary DAG branches or loop subgraphs instead."]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Reserved node type for invoking another workflow; no runtime implementation is registered.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"unavailable","type":"subworkflow","version":null,"warnings":["Do not use this node type in a graph."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"active_hours_end":{"anyOf":[{"maximum":23,"minimum":0,"type":"integer"},{"type":"null"}]},"active_hours_start":{"anyOf":[{"maximum":23,"minimum":0,"type":"integer"},{"type":"null"}]},"cron":{"description":"Runnable five-field cron expression; required when schedule_type is cron.","minLength":1,"type":"string"},"days_of_week":{"items":{"maximum":6,"minimum":0,"type":"integer"},"minItems":1,"type":"array","uniqueItems":true},"interval":{"description":"Repeat count; must be 1 for days, weeks, and months.","minimum":1,"type":"integer"},"jitter_seconds":{"maximum":300,"minimum":0,"type":"integer"},"review_route":{"default":"workflow-review","type":"string"},"schedule_type":{"description":"Required; choose the schedule evaluation mode explicitly.","enum":["cron","interval"],"type":"string"},"timezone":{"type":"string"},"unit":{"enum":["minutes","hours","days","weeks","months"],"type":"string"}},"required":["schedule_type"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"cron":{},"date_iso":{},"date_us":{},"day":{},"day_of_week":{},"default":{},"epoch_ms":{},"epoch_seconds":{},"human":{},"human_short":{},"jitter_seconds":{},"month":{},"review_route":{},"run_at_iso":{},"run_at_iso_utc":{},"schedule_type":{},"time_12h":{},"time_24h":{},"timezone":{},"timezone_used":{},"year":{}},"type":"object"},"description":"Start a workflow from a cron or interval schedule.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"schedule","version":1,"warnings":["Cron schedules require a runnable five-field expression.","For interval schedules, active-hour bounds must be paired and start must be less than end.","The runtime supports only interval=1 for days, weeks, and months; use cron for longer cadences."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"accepted_types":{"description":"Comma-separated MIME types or file extensions.","type":"string"},"completion_behavior":{"default":"always_review","enum":["always_review","always_complete","review_on_failure","preserve_status"],"type":"string"},"review_route":{"default":"workflow-review","type":"string"},"run_fields":{"items":{"additionalProperties":false,"properties":{"key":{"minLength":1,"type":"string"},"label":{"type":"string"},"required":{"default":true,"type":"boolean"},"type":{"enum":["text","date","number"],"type":"string"}},"required":["key","label","type"],"type":"object"},"type":"array"},"upload_fields":{"items":{"additionalProperties":false,"properties":{"key":{"minLength":1,"type":"string"},"label":{"type":"string"},"required":{"default":true,"type":"boolean"}},"required":["key","label"],"type":"object"},"type":"array"},"upload_instructions":{"type":"string"},"upload_mode":{"default":"single","enum":["single","structured"],"type":"string"}},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"document_content":{},"document_id":{},"document_title":{},"truncated":{}},"type":"object"},"description":"Start a workflow from a single or structured document upload.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"upload_trigger","version":1,"warnings":["Configured upload and run fields add dynamic properties to the trigger output."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"provider":{"enum":["generic"],"type":"string"},"slug":{"type":"string"},"slug_token":{"readOnly":true,"type":"string"}},"required":["provider"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"call_uuid":{},"correlation_id":{},"default":{},"order_id":{},"org_id":{},"patient_id":{},"recording_url":{},"status":{},"transcript":{}},"type":"object"},"description":"Start a workflow from an inbound provider webhook.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"webhook_trigger","version":1,"warnings":["The server manages the unguessable slug token; clients must not supply or persist it.","Signed Plivo webhooks remain internal until provider-path enforcement is enabled fleet-wide."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"fields":{"items":{"additionalProperties":false,"properties":{"key":{"minLength":1,"type":"string"},"label":{"type":"string"},"required":{"default":true,"type":"boolean"},"source":{"enum":["billing","manual"],"type":"string"},"type":{"enum":["text","date","code_ranges","payer"],"type":"string"}},"required":["key","label","type","source"],"type":"object"},"type":"array"}},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Start a workflow from a billing-system URL using configured input fields.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"billing_url_trigger","version":1,"warnings":["Configured fields add dynamic properties to the trigger output."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"form_kind":{"minLength":1,"type":"string"},"required_context":{"items":{"type":"string"},"type":"array"}},"required":["form_kind"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"context":{},"default":{},"document_id":{},"form_kind":{},"handoff_id":{},"payload":{}},"type":"object"},"description":"Start a workflow when a reviewer submits a review-handoff screen of the configured kind.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"form_trigger","version":1,"warnings":["Trigger data is built by the server from a committed review handoff; manual runs must pick one.","Every handoff context key becomes a flat output; required_context names the ones that must be set."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"allow_reprocess":{"type":"boolean"},"completion_behavior":{"default":"always_review","enum":["always_complete","always_review"],"type":"string"},"document_id":{"minLength":1,"type":"string"},"related_document_ids":{"items":{"type":"string"},"type":"array"},"review_route":{"default":"workflow-review","type":"string"},"summary_json":{},"target_document_id":{},"title":{"type":"string"}},"required":["document_id"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"display_status":{},"document_id":{},"primary_document_id":{},"related_document_ids":{},"review_route":{},"success":{},"title":{}},"type":"object"},"description":"Publish a workflow result as an operator-review artifact in UMPA.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"publish_to_inbox","version":1,"warnings":[]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{"correlation_id":{"description":"Literal value or resolved expression must match [A-Za-z0-9_.:\\-]{1,256}.","minLength":1,"type":"string"},"event_name":{"default":"etl/workflow.callback.received","enum":["etl/workflow.callback.received"],"type":"string"},"timeout_seconds":{"default":900,"minimum":1,"type":"integer"}},"required":["correlation_id"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Durably pause a run until a correlated callback arrives or the wait times out.","examples":[{"config":{"correlation_id":"{{submit.request_id}}","timeout_seconds":900},"id":"wait_for_vendor","name":"Wait for vendor callback","type":"wait_for_callback"}],"routing_ports":{"dynamic":false,"static":["default","timeout"]},"status":"supported","type":"wait_for_callback","version":1,"warnings":[]}],"recipes":[{"description":"JSON objects may be supplied directly in node params, bodies, and other open config fields.","name":"object_literals"},{"description":"There is no public first-class dictionary projection node yet; compose known fields in a target action's params.","name":"object_transform","status":"limited"},{"description":"Use if for truthy/operator checks and named conditions; connect its named routing ports with edges.","name":"branching"},{"description":"Use loop with default edges into the body and a complete edge to the post-loop continuation.","name":"iteration"}],"schema_version":1},"schema":{"$ref":"#/components/schemas/WorkflowCapabilityManifest"}}},"description":"Successful Response"}},"security":[{"HTTPBearer":[]}],"summary":"Get Workflow Capabilities","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/capabilities/v2":{"get":{"description":"Describe graph controls plus the public webhook lifecycle contract.","operationId":"get_workflow_capabilities_v2","responses":{"200":{"content":{"application/json":{"example":{"expression_syntax":{"embedded_reference_stringifies":true,"loop_index_reference":"{{loop_node_id.index}}","loop_item_reference":"{{loop_node_id.item}}","reference":"{{node_id.output_name.path}}","whole_value_preserves_type":true},"graph_schema":{"edge":{"additionalProperties":false,"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"source_node_id":{"title":"Source Node Id","type":"string"},"source_output":{"default":"default","title":"Source Output","type":"string"},"target_input":{"default":"default","title":"Target Input","type":"string"},"target_node_id":{"title":"Target Node Id","type":"string"}},"required":["source_node_id","target_node_id"],"title":"WorkflowEdgeSchema","type":"object"},"node":{"additionalProperties":false,"allOf":[{"else":{"properties":{"retry_config":{"type":"null"}}},"if":{"properties":{"error_strategy":{"const":"retry"}},"required":["error_strategy"]},"then":{"properties":{"retry_config":{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"}},"required":["retry_config"]}}],"properties":{"config":{"additionalProperties":true,"title":"Config","type":"object"},"default_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Default Value"},"error_strategy":{"default":"fail","enum":["fail","fail_branch","default_value","retry"],"type":"string"},"id":{"title":"Id","type":"string"},"name":{"title":"Name","type":"string"},"position":{"anyOf":[{"maxItems":2,"minItems":2,"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array"},{"type":"null"}],"default":null,"title":"Position"},"retry_config":{"anyOf":[{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"},{"type":"null"}],"default":null},"type":{"title":"Type","type":"string"}},"required":["id","type","name"],"title":"WorkflowNodeSchema","type":"object"},"rules":["Node ids are unique within a workflow.","Every edge endpoint names an existing node.","Expressions may only reference statically upstream nodes.","Active workflows must be edited through a draft before publishing."],"workflow_import_envelope":{"$defs":{"WorkflowEdgeSchema":{"additionalProperties":false,"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Id"},"source_node_id":{"title":"Source Node Id","type":"string"},"source_output":{"default":"default","title":"Source Output","type":"string"},"target_input":{"default":"default","title":"Target Input","type":"string"},"target_node_id":{"title":"Target Node Id","type":"string"}},"required":["source_node_id","target_node_id"],"title":"WorkflowEdgeSchema","type":"object"},"WorkflowImportBody":{"additionalProperties":false,"description":"Upload shape with write-side limits that do not constrain exports.","properties":{"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Config"},"description":{"anyOf":[{"maxLength":20000,"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"edges":{"items":{"$ref":"#/$defs/WorkflowEdgeSchema"},"title":"Edges","type":"array"},"name":{"title":"Name","type":"string"},"nodes":{"items":{"$ref":"#/$defs/WorkflowNodeSchema"},"title":"Nodes","type":"array"},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Route"},"trigger":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Only `webhook` and manual `config.run_fields` are active; other triggers are ignored. The server syncs `webhook` from the `webhook_trigger` node. Trigger-only updates leave it unchanged; missing or mismatched values fail closed until publish or a node-bearing update. `type: manual` fields: `key`, `label`, `type`, `required`, `default`. `key` is required and unique; `type`: `boolean`, `number`, `text` (default `text`); `required` defaults to false; `default` must match `type`. An `upload_trigger` uses `text`, `date`, `number` run-field types, distinct from manual. Max 50 fields; keys 128 chars; labels 200 chars. Invalid manual triggers are rejected; see `details[].msg` and `details[].loc`.","examples":[{"config":{"run_fields":[{"default":false,"key":"dry_run","type":"boolean"},{"key":"limit","required":true,"type":"number"}]},"type":"manual"}],"title":"Trigger"}},"required":["name","nodes","edges"],"title":"WorkflowImportBody","type":"object"},"WorkflowNodeSchema":{"additionalProperties":false,"allOf":[{"else":{"properties":{"retry_config":{"type":"null"}}},"if":{"properties":{"error_strategy":{"const":"retry"}},"required":["error_strategy"]},"then":{"properties":{"retry_config":{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"}},"required":["retry_config"]}}],"properties":{"config":{"additionalProperties":true,"title":"Config","type":"object"},"default_value":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Default Value"},"error_strategy":{"default":"fail","enum":["fail","fail_branch","default_value","retry"],"type":"string"},"id":{"title":"Id","type":"string"},"name":{"title":"Name","type":"string"},"position":{"anyOf":[{"maxItems":2,"minItems":2,"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array"},{"type":"null"}],"default":null,"title":"Position"},"retry_config":{"anyOf":[{"additionalProperties":false,"description":"Stricter retry settings advertised and enforced for third-party authors.","properties":{"delay_seconds":{"default":0,"maximum":300,"minimum":0,"title":"Delay Seconds","type":"number"},"max_retries":{"maximum":3,"minimum":0,"title":"Max Retries","type":"integer"}},"required":["max_retries"],"title":"PublicWorkflowRetryConfig","type":"object"},{"type":"null"}],"default":null},"type":{"title":"Type","type":"string"}},"required":["id","type","name"],"title":"WorkflowNodeSchema","type":"object"}},"additionalProperties":false,"properties":{"kind":{"const":"genhealth.workflow_definition","title":"Kind","type":"string"},"schema_version":{"const":1,"title":"Schema Version","type":"integer"},"workflow":{"$ref":"#/$defs/WorkflowImportBody"}},"required":["kind","schema_version","workflow"],"title":"WorkflowImportEnvelope","type":"object"}},"integration_actions":{"connection_status":"Use the integration connection status endpoint before publishing; it reports only configured/validated state and never credential material.","detail_source":"Each result includes an exact handler/group, compact public fields, connection type, and best-effort declared outputs. Connection configuration status is not asserted.","discovery":"Use the workflow action search endpoint for compact, tenant-permitted results.","output_schema_completeness":"best_effort_declared_or_unknown","warning":"Output names may be incomplete or observed from production examples; use PHI-safe run-node shape inspection to observe runtime fields."},"lifecycle":{"recommended_sequence":["create or import an inactive workflow","read the editable graph","create a draft before changing any published workflow version","write and audit the graph","publish the draft","run and inspect PHI-safe run metadata"],"states":["inactive","active","paused"],"umpa_visibility":"Developer API and UMPA use the same organization-scoped workflow records and versions.","version_states":["draft","published","archived"]},"node_types":[{"category":"action","config_schema":{"additionalProperties":true,"properties":{"_group":{"description":"Integration group returned by workflow action search.","type":"string"},"handler":{"description":"Exact handler returned by workflow action search.","type":"string"},"params":{"additionalProperties":true,"properties":{},"type":"object"}},"required":["handler","params"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Invoke a public action in an integration configured for the organization.","examples":[{"config":{"_group":"NikoHealth","handler":"exact_handler_from_search","params":{}},"id":"find_patient","name":"Find patient","type":"integration"}],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"integration","version":1,"warnings":["Input and output schemas vary by action; call workflow action search before constructing this node."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"agent_id":{"type":"string"},"instructions":{"type":"string"},"max_actions":{"default":100,"minimum":1,"type":"integer"},"max_iterations":{"default":10,"minimum":1,"type":"integer"},"model":{"type":"string"},"output_schema":{"type":"object"},"prompt_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"tools":{"items":{"type":"string"},"type":"array"}},"required":["instructions"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"harness_run_id":{},"result":{},"selection":{},"steps":{},"tool_calls":{},"usage":{}},"type":"object"},"description":"Run an agent with instructions and an approved tool set.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"internal_only","type":"agent","version":1,"warnings":["Not accepted by third-party developer endpoints until referenced agents and tools have a public authorization contract."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"max_tokens":{"minimum":1,"type":"integer"},"model":{"type":"string"},"prompt":{"type":"string"},"seed":{"minimum":0,"type":"integer"},"structured_output":{"additionalProperties":true,"properties":{},"type":"object"},"system_prompt":{"type":"string"},"temperature":{"default":0.7,"maximum":2,"minimum":0,"type":"number"}},"required":["prompt"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"model":{},"output":{},"text":{}},"type":"object"},"description":"Generate text or configured structured fields with a language model.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"llm","version":1,"warnings":[]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"code":{"type":"string"}},"required":["code"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Run a Python transformation for trusted, internally authored workflows.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"internal_only","type":"code","version":1,"warnings":["Not accepted by third-party developer endpoints because execution isolation is not yet a public contract."]},{"category":"annotation","config_schema":{"additionalProperties":true,"properties":{"body":{"type":"string"},"heading":{"type":"string"}},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"body":{},"default":{},"heading":{}},"type":"object"},"description":"Carry human-readable documentation through the graph without performing an external action.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"comment","version":1,"warnings":[]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"operations":{"items":{"additionalProperties":true,"properties":{"op":{"enum":["add","add_duration","append","as_datetime_text","as_unix_milliseconds","as_unix_seconds","base64_decode","base64_encode","difference_to_now","hash","length","lowercase","pad_end","pad_start","parse_date","parse_datetime","parse_json","parse_number","parse_url","prepend","replace","replace_all","replace_regex","split","substring","subtract","subtract_duration","time_since","trim","truncate","uppercase","url_encode"],"type":"string"}},"required":["op"],"type":"object"},"type":"array"},"source":{}},"required":["source","operations"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"result":{}},"type":"object"},"description":"Apply a chain of text, date, parsing, encoding, and hashing transformations to one value.","examples":[{"config":{"operations":[{"op":"trim"},{"op":"lowercase"}],"source":"{{lookup.status}}"},"id":"normalize_status","name":"Normalize status","type":"formatter"}],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"formatter","version":1,"warnings":["Formatter transforms one value; it is not a general object/dictionary projection node."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"auth":{"additionalProperties":true,"properties":{"audience":{"type":"string"},"client_auth":{"enum":["body","header"],"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"string"},"key_in":{"enum":["header","query"],"type":"string"},"key_name":{"type":"string"},"key_value":{"type":"string"},"password":{"type":"string"},"scope":{"type":"string"},"token":{"type":"string"},"token_url":{"type":"string"},"type":{"enum":["none","basic","bearer","api_key","digest","oauth2_client_credentials"],"type":"string"},"username":{"type":"string"}},"type":"object"},"body":{},"body_type":{"enum":["none","json","form","multipart","raw"],"type":"string"},"fail_on_error_status":{"default":false,"type":"boolean"},"follow_redirects":{"default":true,"type":"boolean"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"max_redirects":{"default":10,"maximum":20,"minimum":0,"type":"integer"},"method":{"enum":["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],"type":"string"},"pagination":{"additionalProperties":true,"properties":{"items_path":{"type":"string"},"max_pages":{"default":10,"maximum":100,"minimum":1,"type":"integer"},"mode":{"enum":["off","next_url","increment"],"type":"string"},"next_url_path":{"type":"string"},"param":{"type":"string"},"start":{"type":"integer"},"step":{"minimum":1,"type":"integer"}},"type":"object"},"query":{"type":"object"},"raw_content_type":{"type":"string"},"response_format":{"enum":["auto","json","text"],"type":"string"},"timeout":{"default":30,"maximum":300,"minimum":1,"type":"number"},"url":{"format":"uri","type":"string"}},"required":["url"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Make a generic HTTP request for trusted, internally authored workflows.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"internal_only","type":"http","version":1,"warnings":["Not accepted by third-party developer endpoints until DNS-aware egress controls are enforced."]},{"category":"control","config_schema":{"oneOf":[{"additionalProperties":true,"properties":{"condition":{"oneOf":[{"description":"Literal JSON value or expression string tested for truthiness.","type":["string","number","boolean","array"]},{"additionalProperties":false,"properties":{"left":{},"operator":{"enum":["eq","gt","gte","is_empty","is_not_empty","length_eq","length_gt","length_gte","length_lt","length_lte","length_neq","lt","lte","neq"],"type":"string"},"right":{}},"required":["left","operator"],"type":"object"}]}},"required":["condition"],"type":"object"},{"additionalProperties":true,"properties":{"conditions":{"items":{"additionalProperties":false,"properties":{"condition":{"oneOf":[{"description":"Literal JSON value or expression string tested for truthiness.","type":["string","number","boolean","array"]},{"additionalProperties":false,"properties":{"left":{},"operator":{"enum":["eq","gt","gte","is_empty","is_not_empty","length_eq","length_gt","length_gte","length_lt","length_lte","length_neq","lt","lte","neq"],"type":"string"},"right":{}},"required":["left","operator"],"type":"object"}]},"name":{"minLength":1,"type":"string"}},"required":["name","condition"],"type":"object"},"minItems":1,"type":"array"}},"required":["conditions"],"type":"object"}]},"data_output_schema":{"additionalProperties":true,"properties":{"branch":{},"default":{}},"type":"object"},"description":"Route execution through a two-way condition or an ordered named else-if chain.","examples":[{"config":{"condition":{"left":"{{search.orders}}","operator":"length_gt","right":0}},"id":"has_orders","name":"Has orders","type":"if"}],"routing_ports":{"description":"Named-condition mode uses each condition name plus else instead of true/false.","dynamic":true,"static":["true","false"]},"status":"supported","type":"if","version":1,"warnings":[]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{"cases":{"additionalProperties":{"type":"string"},"type":"object"},"value":{}},"required":["value","cases"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Route a resolved value to a configured output handle, falling back to default.","examples":[{"config":{"cases":{"active":"process","inactive":"skip"},"value":"{{lookup.status}}"},"id":"route_status","name":"Route status","type":"switch"}],"routing_ports":{"description":"Case values map to output-handle names; default is used when no case matches.","dynamic":true,"static":["default"]},"status":"supported","type":"switch","version":1,"warnings":["Named if conditions are preferred for new multi-branch workflows."]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{"execution_mode":{"default":"inline","enum":["inline","item_step"],"type":"string"},"items":{"description":"Array value or expression resolving to an array."},"loop_iteration_concurrency":{"default":10,"maximum":20,"minimum":1,"type":"integer"},"max_iterations":{"description":"Required public execution cap. Each loop is limited to 100 iterations and the product of all loop caps in one graph cannot exceed 500.","maximum":100,"minimum":1,"type":"integer"},"mode":{"default":"single_node","enum":["single_node","subgraph"],"type":"string"}},"required":["items","max_iterations"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"count":{},"default":{},"failure_count":{},"items":{},"results":{},"success_count":{}},"type":"object"},"description":"Iterate over an array using a single body node or an owned subgraph.","examples":[{"config":{"items":"{{search.orders}}","max_iterations":100,"mode":"subgraph"},"id":"each_order","name":"Each order","type":"loop"}],"routing_ports":{"description":"default enters the loop body; complete continues after all iterations.","dynamic":false,"static":["default","complete"]},"status":"supported","type":"loop","version":1,"warnings":["Loop-body expressions use {{loop_node_id.item}} and {{loop_node_id.index}}.","execution_mode=item_step requires mode=subgraph.","The developer API requires max_iterations <= 100; all loop caps have a cumulative product budget of 500."]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Legacy parallel branch marker; new graphs are rejected.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"deprecated","type":"fan_out","version":1,"warnings":["Use ordinary DAG branches or loop subgraphs instead."]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Reserved node type for invoking another workflow; no runtime implementation is registered.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"unavailable","type":"subworkflow","version":null,"warnings":["Do not use this node type in a graph."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"active_hours_end":{"anyOf":[{"maximum":23,"minimum":0,"type":"integer"},{"type":"null"}]},"active_hours_start":{"anyOf":[{"maximum":23,"minimum":0,"type":"integer"},{"type":"null"}]},"cron":{"description":"Runnable five-field cron expression; required when schedule_type is cron.","minLength":1,"type":"string"},"days_of_week":{"items":{"maximum":6,"minimum":0,"type":"integer"},"minItems":1,"type":"array","uniqueItems":true},"interval":{"description":"Repeat count; must be 1 for days, weeks, and months.","minimum":1,"type":"integer"},"jitter_seconds":{"maximum":300,"minimum":0,"type":"integer"},"review_route":{"default":"workflow-review","type":"string"},"schedule_type":{"description":"Required; choose the schedule evaluation mode explicitly.","enum":["cron","interval"],"type":"string"},"timezone":{"type":"string"},"unit":{"enum":["minutes","hours","days","weeks","months"],"type":"string"}},"required":["schedule_type"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"cron":{},"date_iso":{},"date_us":{},"day":{},"day_of_week":{},"default":{},"epoch_ms":{},"epoch_seconds":{},"human":{},"human_short":{},"jitter_seconds":{},"month":{},"review_route":{},"run_at_iso":{},"run_at_iso_utc":{},"schedule_type":{},"time_12h":{},"time_24h":{},"timezone":{},"timezone_used":{},"year":{}},"type":"object"},"description":"Start a workflow from a cron or interval schedule.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"schedule","version":1,"warnings":["Cron schedules require a runnable five-field expression.","For interval schedules, active-hour bounds must be paired and start must be less than end.","The runtime supports only interval=1 for days, weeks, and months; use cron for longer cadences."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"accepted_types":{"description":"Comma-separated MIME types or file extensions.","type":"string"},"completion_behavior":{"default":"always_review","enum":["always_review","always_complete","review_on_failure","preserve_status"],"type":"string"},"review_route":{"default":"workflow-review","type":"string"},"run_fields":{"items":{"additionalProperties":false,"properties":{"key":{"minLength":1,"type":"string"},"label":{"type":"string"},"required":{"default":true,"type":"boolean"},"type":{"enum":["text","date","number"],"type":"string"}},"required":["key","label","type"],"type":"object"},"type":"array"},"upload_fields":{"items":{"additionalProperties":false,"properties":{"key":{"minLength":1,"type":"string"},"label":{"type":"string"},"required":{"default":true,"type":"boolean"}},"required":["key","label"],"type":"object"},"type":"array"},"upload_instructions":{"type":"string"},"upload_mode":{"default":"single","enum":["single","structured"],"type":"string"}},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"document_content":{},"document_id":{},"document_title":{},"truncated":{}},"type":"object"},"description":"Start a workflow from a single or structured document upload.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"upload_trigger","version":1,"warnings":["Configured upload and run fields add dynamic properties to the trigger output."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"provider":{"enum":["generic"],"type":"string"},"slug":{"type":"string"},"slug_token":{"readOnly":true,"type":"string"}},"required":["provider"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"call_uuid":{},"correlation_id":{},"default":{"additionalProperties":true,"description":"Full inbound JSON object. Reference an arbitrary body field as {{webhook_node_id.default.field_name}}.","properties":{},"type":"object"},"order_id":{},"org_id":{},"patient_id":{},"recording_url":{},"status":{},"transcript":{}},"type":"object"},"description":"Start a workflow from a public generic webhook or a trusted internal provider webhook.","examples":[{"config":{"provider":"generic","slug":"orders"},"id":"receive_event","name":"Receive event","type":"webhook_trigger"}],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"webhook_trigger","version":1,"warnings":["The server manages the unguessable slug token; clients must not supply or persist it.","Public agents may author only generic webhooks; provider-specific webhooks such as Plivo remain internal.","For generic webhooks, read the complete request body from default; provider-specific named outputs may be empty."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"fields":{"items":{"additionalProperties":false,"properties":{"key":{"minLength":1,"type":"string"},"label":{"type":"string"},"required":{"default":true,"type":"boolean"},"source":{"enum":["billing","manual"],"type":"string"},"type":{"enum":["text","date","code_ranges","payer"],"type":"string"}},"required":["key","label","type","source"],"type":"object"},"type":"array"}},"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Start a workflow from a billing-system URL using configured input fields.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"billing_url_trigger","version":1,"warnings":["Configured fields add dynamic properties to the trigger output."]},{"category":"trigger","config_schema":{"additionalProperties":true,"properties":{"form_kind":{"minLength":1,"type":"string"},"required_context":{"items":{"type":"string"},"type":"array"}},"required":["form_kind"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"context":{},"default":{},"document_id":{},"form_kind":{},"handoff_id":{},"payload":{}},"type":"object"},"description":"Start a workflow when a reviewer submits a review-handoff screen of the configured kind.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"form_trigger","version":1,"warnings":["Trigger data is built by the server from a committed review handoff; manual runs must pick one.","Every handoff context key becomes a flat output; required_context names the ones that must be set."]},{"category":"action","config_schema":{"additionalProperties":true,"properties":{"allow_reprocess":{"type":"boolean"},"completion_behavior":{"default":"always_review","enum":["always_complete","always_review"],"type":"string"},"document_id":{"minLength":1,"type":"string"},"related_document_ids":{"items":{"type":"string"},"type":"array"},"review_route":{"default":"workflow-review","type":"string"},"summary_json":{},"target_document_id":{},"title":{"type":"string"}},"required":["document_id"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{},"display_status":{},"document_id":{},"primary_document_id":{},"related_document_ids":{},"review_route":{},"success":{},"title":{}},"type":"object"},"description":"Publish a workflow result as an operator-review artifact in UMPA.","examples":[],"routing_ports":{"dynamic":false,"static":["default"]},"status":"supported","type":"publish_to_inbox","version":1,"warnings":[]},{"category":"control","config_schema":{"additionalProperties":true,"properties":{"correlation_id":{"description":"Literal value or resolved expression must match [A-Za-z0-9_.:\\-]{1,256}.","minLength":1,"type":"string"},"event_name":{"default":"etl/workflow.callback.received","enum":["etl/workflow.callback.received"],"type":"string"},"timeout_seconds":{"default":900,"minimum":1,"type":"integer"}},"required":["correlation_id"],"type":"object"},"data_output_schema":{"additionalProperties":true,"properties":{"default":{}},"type":"object"},"description":"Durably pause a run until a correlated callback arrives or the wait times out.","examples":[{"config":{"correlation_id":"{{submit.request_id}}","timeout_seconds":900},"id":"wait_for_vendor","name":"Wait for vendor callback","type":"wait_for_callback"}],"routing_ports":{"dynamic":false,"static":["default","timeout"]},"status":"supported","type":"wait_for_callback","version":1,"warnings":[]}],"public_webhooks":{"authoring_example":{"config":{"provider":"generic","slug":"orders"},"id":"receive_event","name":"Receive event","type":"webhook_trigger"},"authoring_rules":["The optional slug is a readable label, not the URL credential.","Do not supply slug_token or require_idempotency_key; the server owns both fields.","Do not supply top-level trigger.webhook metadata; the server derives it from the node.","Provider-specific webhooks such as Plivo are internal and cannot be authored through this API."],"delivery":{"additional_authentication_headers_required":false,"authentication":"webhook_url_credential","body_type":"json_object","conflicting_retry_result":"HTTP 409","content_type":"application/json","exact_retry_result":"Returns the original delivery and workflow run identifiers without dispatching again.","idempotency_key_guidance":"Generate one stable opaque key per logical delivery, reuse it only for an exact retry with the same body, and never include PHI or credentials.","invalid_json_or_delivery_status":400,"max_body_bytes":256000,"method":"POST","oversized_body_status":413,"quota_exceeded_status":429,"required_idempotency_header":"Idempotency-Key","success_response_fields":["success","run_id","correlation_id","workflow_definition_id","delivery_id","duplicate"],"success_status":200},"deployment_enabled":false,"disabled_behavior":"When false, public webhook authoring and endpoint retrieval are unavailable.","endpoint_retrieval":{"available_as_mcp_tool":false,"credential_handling":"The returned URL is an execution credential. Fetch it outside MCP, honor no-store, and do not place it in model context, logs, or persisted workflow JSON.","handoff_guidance":"After authoring and publishing, hand the definition_id to an authorized operator or non-LLM credential client to retrieve and store the URL. An MCP-only agent is not expected to retrieve it.","method":"GET","operator_handoff_required":true,"path_template":"/developer/v1/workflows/{definition_id}/webhook-endpoint","prerequisites":["workflow status is active","active workflow version is published"],"required_scope":"workflow:run","transport":"rest_only"},"node_type":"webhook_trigger","payload":{"accepted_body_schema":"open_json_object","configurable_payload_schema":false,"expression_template":"{{webhook_node_id.default.field_name}}","trigger_output":"default","validation_guidance":"The trigger does not configure an accepted-payload schema. Validate or branch on required fields in downstream nodes."},"provider":"generic","status":"supported"},"recipes":[{"description":"JSON objects may be supplied directly in node params, bodies, and other open config fields.","name":"object_literals"},{"description":"There is no public first-class dictionary projection node yet; compose known fields in a target action's params.","name":"object_transform","status":"limited"},{"description":"Use if for truthy/operator checks and named conditions; connect its named routing ports with edges.","name":"branching"},{"description":"Use loop with default edges into the body and a complete edge to the post-loop continuation.","name":"iteration"}],"schema_version":2},"schema":{"$ref":"#/components/schemas/WorkflowDeveloperCapabilityManifestV2"}}},"description":"Successful Response"}},"security":[{"HTTPBearer":[]}],"summary":"Get Workflow Capabilities V2","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/integration-connections":{"get":{"description":"Report whether each public integration has credentials, without exposing them.","operationId":"list_workflow_integration_connections","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowIntegrationConnectionCatalogResponse"}}},"description":"Successful Response"}},"security":[{"HTTPBearer":[]}],"summary":"List Workflow Integration Connections","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/integrations":{"get":{"description":"List tenant-permitted public integrations; this does not assert connection setup.","operationId":"list_workflow_integrations","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowIntegrationCatalogResponse"}}},"description":"Successful Response"}},"security":[{"HTTPBearer":[]}],"summary":"List Workflow Integrations","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/runs/{run_id}/cancel":{"post":{"description":"Request cancellation of one organization-owned public-compatible workflow run.","operationId":"cancel_developer_workflow_run","parameters":[{"in":"path","name":"run_id","required":true,"schema":{"format":"uuid","title":"Run Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRunControlResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Cancel Developer Workflow Run","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:run"}},"/developer/v1/workflows":{"get":{"description":"List the same organization-scoped workflows shown in UMPA.","operationId":"list_developer_workflows","parameters":[{"in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"title":"Page","type":"integer"}},{"in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":100,"minimum":1,"title":"Limit","type":"integer"}},{"in":"query","name":"search","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"in":"query","name":"status","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDefinitionListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"List Developer Workflows","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"},"post":{"description":"Create a workflow directly in the core ETL store used by UMPA.","operationId":"create_developer_workflow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDeveloperDefinitionCreate"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDefinitionResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Create Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/import":{"post":{"description":"Import canonical JSON as an inactive UMPA workflow with published version 1.","operationId":"import_developer_workflow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDeveloperImportEnvelope"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowImportResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Import Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/validate":{"post":{"description":"Preflight canonical workflow JSON against save, audit, and public API rules.\n\nThis operation does not persist anything. A definition that fails validation still\nreturns HTTP 200 with ``viable=false`` and machine-actionable findings.","operationId":"validate_workflow_definition","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDefinitionValidationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDefinitionValidationResult"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Validate Workflow Definition","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}":{"delete":{"description":"Soft-delete a workflow after publish-scope authorization and explicit confirmation.","operationId":"delete_developer_workflow","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"description":"Must be true to confirm removal of the workflow from UMPA-visible lists.","in":"query","name":"confirm","required":false,"schema":{"default":false,"description":"Must be true to confirm removal of the workflow from UMPA-visible lists.","title":"Confirm","type":"boolean"}}],"responses":{"204":{"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Delete Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:publish"},"get":{"description":"Read an active, historical, or draft workflow definition by identifier.","operationId":"get_developer_workflow","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"query","name":"version_id","required":false,"schema":{"anyOf":[{"format":"uuid","type":"string"},{"type":"null"}],"title":"Version Id"}},{"in":"query","name":"draft","required":false,"schema":{"default":false,"title":"Draft","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDefinitionResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"},"patch":{"description":"Update workflow metadata or an existing draft; published graphs are immutable.","operationId":"update_developer_workflow","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDeveloperDefinitionUpdate"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDefinitionResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Update Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-conditional-scopes":{"body.status":"workflow:publish"},"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/audit":{"post":{"description":"Audit the unpublished draft and return actionable graph findings without mutation.","operationId":"audit_workflow","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"query","name":"node_id","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Node Id"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowAuditResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Audit Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}/draft":{"delete":{"description":"Discard the current unpublished draft while preserving published versions.","operationId":"discard_developer_workflow_draft","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"responses":{"204":{"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Discard Developer Workflow Draft","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"},"post":{"description":"Create an editable draft from the workflow's currently active version.","operationId":"create_developer_workflow_draft","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Create Developer Workflow Draft","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/draft/from-json":{"post":{"description":"Replace the complete draft graph from canonical JSON without publishing it.","operationId":"replace_developer_workflow_draft_from_json","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDeveloperImportEnvelope"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowImportResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Replace Developer Workflow Draft From Json","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/export":{"get":{"description":"Export canonical workflow JSON suitable for validation or exact re-import.","operationId":"export_developer_workflow","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowExportEnvelope"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Export Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}/graph":{"get":{"description":"Read the complete public-safe graph for a workflow's current target version.","operationId":"read_workflow_graph","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowGraphResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Workflow Graph","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"},"put":{"description":"Replace the entire editable draft graph after public policy validation.","operationId":"replace_workflow_graph","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowGraphReplaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowMutationResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Replace Workflow Graph","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/nodes/after":{"post":{"description":"Insert one node after an existing draft node and optionally rewire its targets.","operationId":"insert_workflow_node_after","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowNodeInsertAfterRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowMutationResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Insert Workflow Node After","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/nodes/before":{"post":{"description":"Insert one node before an existing draft node and optionally rewire its sources.","operationId":"insert_workflow_node_before","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowNodeInsertBeforeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowMutationResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Insert Workflow Node Before","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/nodes/{node_id}":{"delete":{"description":"Delete one draft node and optionally reconnect its incoming and outgoing edges.","operationId":"delete_workflow_node","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"path","name":"node_id","required":true,"schema":{"title":"Node Id","type":"string"}},{"in":"query","name":"rewire_edges","required":false,"schema":{"default":true,"title":"Rewire Edges","type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowMutationResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Delete Workflow Node","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"},"get":{"description":"Read one node's configuration, connections, and public action metadata.","operationId":"read_workflow_node_details","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"path","name":"node_id","required":true,"schema":{"title":"Node Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowNodeDetailsResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Workflow Node Details","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"},"patch":{"description":"Patch selected fields on one node in the editable draft graph.","operationId":"update_workflow_node","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"path","name":"node_id","required":true,"schema":{"title":"Node Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowNodeUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowMutationResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Update Workflow Node","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/nodes/{node_id}/context":{"get":{"description":"Read one node with its immediate upstream and downstream graph context.","operationId":"read_workflow_node_context","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"path","name":"node_id","required":true,"schema":{"title":"Node Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowNodeContextResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Workflow Node Context","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}/outline":{"get":{"description":"Read a compact node-and-edge outline before requesting larger graph details.","operationId":"read_workflow_outline","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowOutlineResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Workflow Outline","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}/publish":{"post":{"description":"Audit and publish the current draft as an immutable active version.\n\nInherits the same confirm_removed_nodes / 409 removed_nodes_require_confirmation contract as the interactive publish route (see publish_draft); confirmation retries must echo the returned removed_nodes_confirmation.","operationId":"publish_developer_workflow","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowPublishRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowPublishResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Publish Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:publish"}},"/developer/v1/workflows/{definition_id}/runs":{"get":{"description":"Return run navigation metadata without trigger or node-result values.","operationId":"list_workflow_runs_safe","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"query","name":"status","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":25,"minimum":1,"title":"Limit","type":"integer"}},{"in":"query","name":"since","required":false,"schema":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Since"}},{"in":"query","name":"until","required":false,"schema":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRunsIndexResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"List Workflow Runs Safe","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"},"post":{"description":"Start an active published workflow with idempotent retry semantics.","operationId":"run_developer_workflow","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"query","name":"draft","required":false,"schema":{"default":false,"title":"Draft","type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowDeveloperRunTriggerRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRunTriggerResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Run Developer Workflow","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:run"}},"/developer/v1/workflows/{definition_id}/runs/{run_id}/nodes/{node_id}":{"get":{"description":"Return status and value-free output shapes for one executed node.","operationId":"read_workflow_run_node_shape","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"path","name":"run_id","required":true,"schema":{"format":"uuid","title":"Run Id","type":"string"}},{"in":"path","name":"node_id","required":true,"schema":{"title":"Node Id","type":"string"}},{"in":"query","name":"iteration_path","required":false,"schema":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Iteration Path"}},{"in":"query","name":"limit","required":false,"schema":{"default":5,"maximum":25,"minimum":1,"title":"Limit","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRunNodeShapeResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Read Workflow Run Node Shape","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}/versions":{"get":{"description":"List immutable published versions and draft metadata for one workflow.","operationId":"list_developer_workflow_versions","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"title":"Page","type":"integer"}},{"in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":100,"minimum":1,"title":"Limit","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionListResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"List Developer Workflow Versions","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}/versions/{version_id}":{"get":{"description":"Read one immutable workflow version without changing the active version.","operationId":"get_developer_workflow_version","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"path","name":"version_id","required":true,"schema":{"format":"uuid","title":"Version Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Developer Workflow Version","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:read"}},"/developer/v1/workflows/{definition_id}/versions/{version_id}/revert":{"post":{"description":"Create a new editable draft copied from a historical workflow version.","operationId":"revert_developer_workflow_version","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}},{"in":"path","name":"version_id","required":true,"schema":{"format":"uuid","title":"Version Id","type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Revert Developer Workflow Version","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:write"}},"/developer/v1/workflows/{definition_id}/webhook-endpoint":{"get":{"description":"Return an active, published webhook URL; never exposed as an MCP tool.","operationId":"get_developer_workflow_webhook_endpoint","parameters":[{"in":"path","name":"definition_id","required":true,"schema":{"format":"uuid","title":"Definition Id","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowWebhookEndpointResponse"}}},"description":"Successful Response"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}},"description":"Validation Error"}},"security":[{"HTTPBearer":[]}],"summary":"Get Developer Workflow Webhook Endpoint","tags":["Workflow Developer API"],"x-alternative-scope-sets":[["read:umpa","write:umpa","admin:umpa"]],"x-required-scope":"workflow:run"}}}}