Skip to main content

ProcessMutations

No description

type ProcessMutations {
createProcess(
name: String!
description: String!
kind: String
timeoutMs: Long
triggerKind: String
): CreateProcessResultGql
createWorkflow(
processId: Long!
name: String!
description: String
duplicateWorkflowId: Long
): WorkflowDataGql
saveWorkflow(
workflowData: WorkflowDataGqlInput!
): WorkflowDataGql
archiveProcess(
processId: Long!
): Boolean
archiveWorkflow(
workflowId: Long!
): Boolean
runNodeInMemory(
workflowData: WorkflowDataGqlInput!
nodeName: String!
previousRunNodes: [KVStringRunNodeGqlInput!]
iterationLimit: Int
currentNodeOnly: Boolean
loopRunMode: String
loopSelectorName: String
loopSelectorIndex: Int
loopSelectorKey: String
): RunWorkflowDataGql
validateJsPackages(
packages: [JsPackageInput!]!
): [JsPackageValidationResult!]
updateProcessJsPackages(
processId: Long!
packages: [JsPackageInput!]!
): ProcessData
updateProcessDetails(
processId: Long!
name: String!
description: String!
): ProcessData
updateProcessSettings(
processId: Long!
settings: ProcessSettingsInput!
): ProcessData
updateEndpointContract(
processId: Long!
contract: String
): ProcessData
setProcessPaused(
processId: Long!
paused: Boolean!
): ProcessData
setEndpointPublicAccess(
processPublicId: String!
enabled: Boolean
rotate: Boolean
allowedOrigins: [String!]
allowAnyOrigin: Boolean
): EndpointPublicAccessGql
generateWebhookApiKey(
webhookId: Long!
): String
runProcess(
processId: Long!
triggerNodeName: String!
payload: String
): Boolean
confirmRunAuthorization(
publicId: String!
alwaysAllow: Boolean
): RunAuthorizationPreview
declineRunAuthorization(
publicId: String!
): RunAuthorizationPreview
confirmActionAuthorization(
publicId: String!
alwaysAllow: Boolean
): ActionAuthorizationPreview
declineActionAuthorization(
publicId: String!
): ActionAuthorizationPreview
cancelRun(
runWorkflowId: Long!
): Boolean
cancelInMemoryRun(
runId: String!
): Boolean
workflowFileDownloadUrl(
publicId: String!
source: String
inline: Boolean
): String
requestWorkflowFileUploadUrl(
fileName: String!
contentType: String!
declaredSize: Long!
): WorkflowFileUploadTicket
commitWorkflowFileUpload(
publicId: String!
): String
detectCsvDialect(
publicId: String!
): String
}

Fields​

ProcessMutations.createProcess ● CreateProcessResultGql object​

Create a new process with a default workflow

ProcessMutations.createProcess.name ● String! non-null scalar​
ProcessMutations.createProcess.description ● String! non-null scalar​
ProcessMutations.createProcess.kind ● String scalar​
ProcessMutations.createProcess.timeoutMs ● Long scalar​
ProcessMutations.createProcess.triggerKind ● String scalar​

The trigger the first draft starts with: schedule, webhook, form or manual (the webhook scaffold, which is what a manual run starts from). Omitted = webhook. Standard processes only; an endpoint keeps its own scaffold. Nothing is activated until a release.

ProcessMutations.createWorkflow ● WorkflowDataGql object​

Create a new workflow in a process, optionally duplicating an existing workflow

ProcessMutations.createWorkflow.processId ● Long! non-null scalar​
ProcessMutations.createWorkflow.name ● String! non-null scalar​
ProcessMutations.createWorkflow.description ● String scalar​
ProcessMutations.createWorkflow.duplicateWorkflowId ● Long scalar​

ProcessMutations.saveWorkflow ● WorkflowDataGql object​

Save changes to a workflow's nodes and edges

ProcessMutations.saveWorkflow.workflowData ● WorkflowDataGqlInput! non-null input​

ProcessMutations.archiveProcess ● Boolean scalar​

Archive a process and all its workflows

ProcessMutations.archiveProcess.processId ● Long! non-null scalar​

ProcessMutations.archiveWorkflow ● Boolean scalar​

Archive a specific workflow

ProcessMutations.archiveWorkflow.workflowId ● Long! non-null scalar​

ProcessMutations.runNodeInMemory ● RunWorkflowDataGql object​

Execute a single node in memory for testing without persisting results

ProcessMutations.runNodeInMemory.workflowData ● WorkflowDataGqlInput! non-null input​
ProcessMutations.runNodeInMemory.nodeName ● String! non-null scalar​
ProcessMutations.runNodeInMemory.previousRunNodes ● [KVStringRunNodeGqlInput!] list input​
ProcessMutations.runNodeInMemory.iterationLimit ● Int scalar​
ProcessMutations.runNodeInMemory.currentNodeOnly ● Boolean scalar​
ProcessMutations.runNodeInMemory.loopRunMode ● String scalar​
ProcessMutations.runNodeInMemory.loopSelectorName ● String scalar​
ProcessMutations.runNodeInMemory.loopSelectorIndex ● Int scalar​
ProcessMutations.runNodeInMemory.loopSelectorKey ● String scalar​

ProcessMutations.validateJsPackages ● [JsPackageValidationResult!] list object​

Validate JavaScript packages for availability and version

ProcessMutations.validateJsPackages.packages ● [JsPackageInput!]! non-null input​

ProcessMutations.updateProcessJsPackages ● ProcessData object​

Update the JavaScript packages on a process (shared across all its workflow versions). Allowed even when releases are immutable.

ProcessMutations.updateProcessJsPackages.processId ● Long! non-null scalar​
ProcessMutations.updateProcessJsPackages.packages ● [JsPackageInput!]! non-null input​

ProcessMutations.updateProcessDetails ● ProcessData object​

Update the process name and description without changing workflow versions or publishing.

ProcessMutations.updateProcessDetails.processId ● Long! non-null scalar​
ProcessMutations.updateProcessDetails.name ● String! non-null scalar​
ProcessMutations.updateProcessDetails.description ● String! non-null scalar​

ProcessMutations.updateProcessSettings ● ProcessData object​

Update a process's operational settings (timeout, loop concurrency, failure notification), shared by all its workflow versions. Allowed even when releases are immutable.

ProcessMutations.updateProcessSettings.processId ● Long! non-null scalar​
ProcessMutations.updateProcessSettings.settings ● ProcessSettingsInput! non-null input​

ProcessMutations.updateEndpointContract ● ProcessData object​

Declare an endpoint's request/response contract, or clear it by passing null. Each half is an optional JSON Schema (the same subset Agent tools use). The request half is ENFORCED: a call whose body does not match is refused with 400 before the workflow runs. The response half is observed and counted, never enforced, so a schema edit cannot break live traffic. Endpoints only; unversioned, so re-releasing the workflow never changes it.

ProcessMutations.updateEndpointContract.processId ● Long! non-null scalar​
ProcessMutations.updateEndpointContract.contract ● String scalar​

ProcessMutations.setProcessPaused ● ProcessData object​

Set the paused state of a process

ProcessMutations.setProcessPaused.processId ● Long! non-null scalar​
ProcessMutations.setProcessPaused.paused ● Boolean! non-null scalar​

ProcessMutations.setEndpointPublicAccess ● EndpointPublicAccessGql object​

Make an endpoint callable WITHOUT a login at POST /api/public/endpoints/<token> (for static sites), rotate that token, set the browser origins allowed to call it, or revoke it. Off by default. Anyone holding the token can call the endpoint, so return only what a stranger may see. Requires canManageReleases and canBuildWorkflows. Returns the resulting state, or null when the endpoint is not public.

ProcessMutations.setEndpointPublicAccess.processPublicId ● String! non-null scalar​
ProcessMutations.setEndpointPublicAccess.enabled ● Boolean scalar​

true = make the endpoint public (mints a token if it has none; an already-public endpoint keeps its token). false = revoke: the URL stops working immediately. Cannot be combined with rotate, allowedOrigins or allowAnyOrigin.

ProcessMutations.setEndpointPublicAccess.rotate ● Boolean scalar​

true = replace the token; the previous URL stops working immediately. Only on an endpoint that is already public, unless enabled: true is sent too (a rotation never makes an endpoint public).

ProcessMutations.setEndpointPublicAccess.allowedOrigins ● [String!] list scalar​

REPLACES the origins (exact scheme://host[:port], e.g. https://example.com) whose browser pages may call the endpoint. A request carrying any other Origin header is refused with 403 before the workflow runs; requests without an Origin (servers, curl) are allowed. [] = no browser page may call (the default when public access is first enabled). At most 20. Cannot be combined with allowAnyOrigin: true.

ProcessMutations.setEndpointPublicAccess.allowAnyOrigin ● Boolean scalar​

true = ANY website may call the endpoint from a visitor's browser (any Origin, including 'null'), so any page can make a visitor's browser trigger it. false = only allowedOrigins (none if it is omitted). Omitted = unchanged.

ProcessMutations.generateWebhookApiKey ● String scalar​

Generate (or regenerate) an API key for a webhook; returns the plaintext key once

ProcessMutations.generateWebhookApiKey.webhookId ● Long! non-null scalar​

ProcessMutations.runProcess ● Boolean scalar​

Manually run a process now through one of its trigger nodes. Authenticated by the caller's session and bypasses the paused state (pause only gates automated webhook/schedule triggers); records run history with a Manual source.

ProcessMutations.runProcess.processId ● Long! non-null scalar​
ProcessMutations.runProcess.triggerNodeName ● String! non-null scalar​
ProcessMutations.runProcess.payload ● String scalar​

ProcessMutations.confirmRunAuthorization ● RunAuthorizationPreview object​

Confirm an MCP run authorization request and start the run under the caller's own session. Requires the session of the user who was asked; single-use (a second confirm is rejected as already answered), rejected once the 30-minute window has passed. Same permission (canBuildWorkflows), same Manual source and same run-history row as runProcess. Returns the updated preview with runWorkflowId set, or with status failed and a failureReason when the run could not start.

ProcessMutations.confirmRunAuthorization.publicId ● String! non-null scalar​
ProcessMutations.confirmRunAuthorization.alwaysAllow ● Boolean scalar​

Also record a standing approval for MCP runs ("Approve always"): from then on, request_run_authorization starts the run immediately for this user instead of minting a link. Personal, revocable from the Standing approvals list, never widens permissions.

ProcessMutations.declineRunAuthorization ● RunAuthorizationPreview object​

Decline an MCP run authorization request. Requires the session of the user who was asked; nothing runs and the assistant polling get_run_authorization sees status declined.

ProcessMutations.declineRunAuthorization.publicId ● String! non-null scalar​

ProcessMutations.confirmActionAuthorization ● ActionAuthorizationPreview object​

Confirm an MCP action authorization request and perform the action under the caller's own session, through the same executor Barry uses (every check re-runs). Requires the session of the user who was asked; single-use; rejected after the 30-minute window. Returns the updated preview (status confirmed, or failed with a failureReason).

ProcessMutations.confirmActionAuthorization.publicId ● String! non-null scalar​
ProcessMutations.confirmActionAuthorization.alwaysAllow ● Boolean scalar​

Also record a standing approval for THIS tool over MCP ("Confirm and always allow"): from then on the assistant's request for it runs immediately for this user. Personal, revocable from the Standing approvals list, never widens permissions.

ProcessMutations.declineActionAuthorization ● ActionAuthorizationPreview object​

Decline an MCP action authorization request. Requires the session of the user who was asked; nothing happens and the assistant polling get_action_authorization sees status declined.

ProcessMutations.declineActionAuthorization.publicId ● String! non-null scalar​

ProcessMutations.cancelRun ● Boolean scalar​

Cancel a run: a queued run is dropped before it executes; a running run stops at the next node boundary.

ProcessMutations.cancelRun.runWorkflowId ● Long! non-null scalar​

ProcessMutations.cancelInMemoryRun ● Boolean scalar​

Cancel an in-memory (editor test) run by its run UUID; it stops at the next node boundary. These runs have no run history row, so they cannot be cancelled through cancelRun.

ProcessMutations.cancelInMemoryRun.runId ● String! non-null scalar​

ProcessMutations.workflowFileDownloadUrl ● String scalar​

Mint a short-lived signed download URL for a file produced by a workflow node. Takes the id from the file reference in a node's output. Org-scoped: holding a reference is not authority to read the file, so the URL is minted per request for an authenticated member of the owning organization and is never stored in run state, the run cache, or an AI context.

ProcessMutations.workflowFileDownloadUrl.publicId ● String! non-null scalar​
ProcessMutations.workflowFileDownloadUrl.source ● String scalar​
ProcessMutations.workflowFileDownloadUrl.inline ● Boolean scalar​

ProcessMutations.requestWorkflowFileUploadUrl ● WorkflowFileUploadTicket object​

Sign a direct browser upload of a file for use in workflows, and record it pending. The browser POSTs the bytes straight to the bucket with the returned fields (the file part last) and then calls commitWorkflowFileUpload with the returned public id. Requires canBuildWorkflows; the file counts against the organization's storage quota and is reaped on the same 30-day clock as files produced by runs.

ProcessMutations.requestWorkflowFileUploadUrl.fileName ● String! non-null scalar​
ProcessMutations.requestWorkflowFileUploadUrl.contentType ● String! non-null scalar​
ProcessMutations.requestWorkflowFileUploadUrl.declaredSize ● Long! non-null scalar​

ProcessMutations.commitWorkflowFileUpload ● String scalar​

Verify an uploaded file landed and mark it committed, returning the file reference to use in expressions. The size declared when the upload was requested is a client claim; this checks the real object size.

ProcessMutations.commitWorkflowFileUpload.publicId ● String! non-null scalar​

ProcessMutations.detectCsvDialect ● String scalar​

Suggest a CSV dialect (delimiter, charset) by sampling the start of an uploaded file. A suggestion only — it pre-fills the editor's dialect form, and what is saved on the node is what runs. Returns null when nothing can be inferred confidently. Org-scoped like every other file read.

ProcessMutations.detectCsvDialect.publicId ● String! non-null scalar​

Returned By​

processes mutation