Administration (opt-in)

Workflows

List Workflows

discourse_list_workflows

List compact Discourse Workflow summaries. Requires an admin API key.

Parameters

filterstring
trigger_typestring
tagsArray<string>
cursorstring
limitinteger[1, 100]25
exclude_idstring

Get Workflow

discourse_get_workflow

Get the complete round-trippable workflow graph. GET immediately before updating it.

Body

application/json
idstring | integerrequired

Workflow ID

Show child attributes
Any of
string
integer

List Workflow Node Types

discourse_list_workflow_node_types

List a slim catalog, or pass identifier for schemas, ports, and output contracts. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting a node on whole-graph update deletes it. nodes and connections must always be sent together.

Parameters

kindstringtriggeractionconditionflow
identifierstring
manually_triggerable_onlyboolean

Resolve Workflow Entity

discourse_resolve_workflow_entity

Resolve category, tag, group, user, badge, chat channel, or data-table ids for workflow parameters.

Parameters

kindstringcategorytagusergroupbadgedata_tablechat_channelrequired
querystringrequired

List Workflow Templates

discourse_list_workflow_templates

List templates or retrieve a complete template graph by id. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting a node on whole-graph update deletes it. nodes and connections must always be sent together.

Parameters

idstring

List Workflow Executions

discourse_list_workflow_executions

List global or per-workflow execution history.

Body

application/json
workflow_idstring | integer
Show child attributes
Any of
string
integer
cursorstring
limitinteger[1, 100]25

Get Workflow Execution

discourse_get_workflow_execution

Poll an execution for status, errors, timing, trigger data, and steps.

Body

application/json
idstring | integerrequired

Execution ID

Show child attributes
Any of
string
integer

List Workflow Versions

discourse_list_workflow_versions

List workflow version history and UUIDs available for restore.

Body

application/json
workflow_idstring | integerrequired
Show child attributes
Any of
string
integer

List Workflow Credentials

discourse_list_workflow_credentials

List workflow credentials with secrets redacted. Credential creation remains in the admin UI.

Parameters

typestring
cursorstring
limitinteger[1, 100]25

Evaluate Workflow Expression

discourse_evaluate_workflow_expression

Evaluate a workflow expression without mutating the forum. Interpolating expressions start with =.

Body

application/json
templatestringrequired
workflow_idstring | integer
Show child attributes
Any of
string
integer
node_idstring

Create Workflow

discourse_create_workflow

Create a draft from a complete small graph or template. Prefer a complete graph over blank creation. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting a node on whole-graph update deletes it. nodes and connections must always be sent together.

Body

application/json
namestringrequired
nodesArray<object>
Show child attributes
idstring
typestringrequired
namestringrequired
parametersobject
Show child attributes
[key: string]any
credentialsobject
Show child attributes
[key: string]any
positionany
connectionsArray<object> | object
Show child attributes
Any of
Array<object>
Show child attributes
fromstringrequired
tostringrequired
typestringmain
output_indexinteger>= 00
input_indexinteger>= 00
[key: string]object
Show child attributes
[key: string]Array<Array<object>>
Show child attributes
Array<object>
Show child attributes
nodestringrequired
typestringrequired
indexinteger>= 0required
tagsArray<string>
static_dataobject
Show child attributes
[key: string]any
template_idstring

Update Workflow

discourse_update_workflow

GET first. A replace PUT replaces the whole draft graph; omitted nodes are deleted. Use complete nodes+connections or operations[], never both. Authoring loop: inspect the slim node catalog, request identifiers for schemas and output keys, resolve entity ids, create from a template or complete graph, GET before edits, test the draft, then publish. Interpolating strings start with =. Filter/if use leftValue/rightValue and output ports true/false. Connection type is the source output key, not always main. Prefer declarative nodes over action:code. Manual runs execute the current draft. Omitting a node on whole-graph update deletes it. nodes and connections must always be sent together.

Body

application/json
idstring | integerrequired
Show child attributes
Any of
string
integer
namestring
tagsArray<string>
timezonestring
error_workflow_idstring | integer | null
Show child attributes
Any of
Any of
string
integer
null
static_dataobject
Show child attributes
[key: string]any
publishedboolean
autosavedboolean
nodesArray<object>
Show child attributes
idstring
typestringrequired
namestringrequired
parametersobject
Show child attributes
[key: string]any
credentialsobject
Show child attributes
[key: string]any
positionany
connectionsArray<object> | object
Show child attributes
Any of
Array<object>
Show child attributes
fromstringrequired
tostringrequired
typestringmain
output_indexinteger>= 00
input_indexinteger>= 00
[key: string]object
Show child attributes
[key: string]Array<Array<object>>
Show child attributes
Array<object>
Show child attributes
nodestringrequired
typestringrequired
indexinteger>= 0required
operationsArray<object>
Show child attributes
Any of
opstringrequired
idstring
nodeobjectrequired
Show child attributes
idstring
typestringrequired
namestringrequired
parametersobject
Show child attributes
[key: string]any
credentialsobject
Show child attributes
[key: string]any
positionany
opstringrequired
parametersobjectrequired
Show child attributes
[key: string]any
idstring
namestring
opstringrequired
namestringrequired
idstring
current_namestring
opstringrequired
idstring
namestring
opstringrequired
fromstringrequired
tostringrequired
typestringmain
output_indexinteger>= 00
input_indexinteger>= 00
opstringrequired
fromstringrequired
tostringrequired
typestring
output_indexinteger>= 0
input_indexinteger>= 0

Delete Workflow

discourse_delete_workflow

Permanently delete a workflow. Fails when another workflow calls it.

Body

application/json
idstring | integerrequired
Show child attributes
Any of
string
integer

Discard Workflow Draft

discourse_discard_workflow_draft

Replace the draft with its published snapshot. Requires an existing published version.

Body

application/json
idstring | integerrequired
Show child attributes
Any of
string
integer

Restore Workflow Version

discourse_restore_workflow_version

Restore a historical workflow version by UUID into the draft.

Body

application/json
workflow_idstring | integerrequired
Show child attributes
Any of
string
integer
version_idstring<uuid>required

Run Workflow Draft

discourse_run_workflow

Run the current unpublished draft asynchronously. This can create posts, send chat, or call external HTTP; poll the returned execution id.

Body

application/json
workflow_idstring | integerrequired
Show child attributes
Any of
string
integer
trigger_node_idstringrequired
trigger_dataobject
Show child attributes
[key: string]any

Run Workflow Step

discourse_run_workflow_step

Run one non-trigger, non-waiting draft node asynchronously. Requires upstream pin-data or a prior successful run.

Body

application/json
workflow_idstring | integerrequired
Show child attributes
Any of
string
integer
node_idstringrequired

Update Workflow Pin Data

discourse_update_workflow_pin_data

Pin test items to a node name, or omit items to unpin it.

Body

application/json
workflow_idstring | integerrequired
Show child attributes
Any of
string
integer
node_namestringrequired
itemsArray<object>
Show child attributes
jsonobjectrequired
Show child attributes
[key: string]any