picked 0.0.101 → 0.0.102-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/docs/reference/dashboard/workflow-test-runs.md +40 -17
  2. package/docs/reference/management-api/schema/action.md +67 -79
  3. package/docs/reference/management-api/schema/analytics-session.md +77 -94
  4. package/docs/reference/management-api/schema/analytics.md +16 -14
  5. package/docs/reference/management-api/schema/api-key.md +43 -51
  6. package/docs/reference/management-api/schema/auth.md +271 -404
  7. package/docs/reference/management-api/schema/cms-fields.md +348 -245
  8. package/docs/reference/management-api/schema/cms-models.md +369 -378
  9. package/docs/reference/management-api/schema/common.md +69 -130
  10. package/docs/reference/management-api/schema/condition.md +63 -74
  11. package/docs/reference/management-api/schema/design-system.md +59 -51
  12. package/docs/reference/management-api/schema/experience.md +388 -364
  13. package/docs/reference/management-api/schema/external-api.md +153 -171
  14. package/docs/reference/management-api/schema/feature.md +85 -103
  15. package/docs/reference/management-api/schema/feedback.md +27 -31
  16. package/docs/reference/management-api/schema/field.md +117 -135
  17. package/docs/reference/management-api/schema/index.md +184 -184
  18. package/docs/reference/management-api/schema/integration.md +72 -78
  19. package/docs/reference/management-api/schema/label.md +81 -137
  20. package/docs/reference/management-api/schema/lead.md +80 -119
  21. package/docs/reference/management-api/schema/mcp-server.md +73 -71
  22. package/docs/reference/management-api/schema/metric.md +6 -9
  23. package/docs/reference/management-api/schema/operation.md +17 -26
  24. package/docs/reference/management-api/schema/organization.md +198 -220
  25. package/docs/reference/management-api/schema/project.md +177 -186
  26. package/docs/reference/management-api/schema/report.md +69 -65
  27. package/docs/reference/management-api/schema/saved-view.md +71 -71
  28. package/docs/reference/management-api/schema/shopify.md +331 -204
  29. package/docs/reference/management-api/schema/step.md +72 -80
  30. package/docs/reference/management-api/schema/tenant-branding.md +48 -70
  31. package/docs/reference/management-api/schema/workbench.md +54 -66
  32. package/docs/reference/management-api/schema/workflow-run.md +66 -79
  33. package/docs/reference/management-api/schema/workflow.md +310 -353
  34. package/docs/reference/management-api/schema/workspace-version.md +212 -261
  35. package/docs/reference/management-api/schema/workspace.md +275 -328
  36. package/package.json +4 -4
@@ -6,13 +6,14 @@ generated: true
6
6
 
7
7
  # Workflow schema
8
8
 
9
- The operations and types that `workflow.graphql` adds to the Management API. See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
9
+ See [Management API schema](/reference/management-api/schema) for every domain, the endpoint and authentication.
10
10
 
11
11
  ## Queries
12
12
 
13
13
  ### `workflow`
14
14
 
15
- Get a workflow by ID.
15
+ Reads a workflow.
16
+ Scope: `ORGANIZATION_WORKSPACE_READ`.
16
17
 
17
18
  ```graphql
18
19
  workflow(id: ID!): Workflow @auth
@@ -20,8 +21,7 @@ workflow(id: ID!): Workflow @auth
20
21
 
21
22
  ### `workflowTools`
22
23
 
23
- Every tool a workflow node may run, with the arguments each accepts. Read by
24
- the editor to build its node palette.
24
+ Lists every tool a workflow node can run, with the arguments each takes.
25
25
 
26
26
  ```graphql
27
27
  workflowTools: [WorkflowToolDefinition!]! @auth
@@ -29,8 +29,8 @@ workflowTools: [WorkflowToolDefinition!]! @auth
29
29
 
30
30
  ### `workflows`
31
31
 
32
- List workflows in a workspace. Filter by name with `search` (case-insensitive
33
- substring) and order with `sortKey` (default `NAME`) plus `reverse`.
32
+ Lists the workflows in a workspace. `search` matches a case-insensitive substring of the name.
33
+ Scope: `ORGANIZATION_WORKSPACE_READ`.
34
34
 
35
35
  ```graphql
36
36
  workflows(first: Int, after: String, last: Int, before: String, workspaceId: ID!, search: String, sortKey: WorkflowSortKeys = NAME, reverse: Boolean = false): WorkflowConnection! @auth
@@ -40,7 +40,9 @@ workflows(first: Int, after: String, last: Int, before: String, workspaceId: ID!
40
40
 
41
41
  ### `workflowCreate`
42
42
 
43
- Create a new workflow. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
43
+ Creates a workflow in a workspace. The caller must hold the scopes the tools of the graph need,
44
+ as `Workflow.scopes` describes.
45
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
44
46
 
45
47
  ```graphql
46
48
  workflowCreate(input: WorkflowCreateInput!): WorkflowCreatePayload! @auth
@@ -48,7 +50,8 @@ workflowCreate(input: WorkflowCreateInput!): WorkflowCreatePayload! @auth
48
50
 
49
51
  ### `workflowUpdate`
50
52
 
51
- Update a workflow. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
53
+ Updates the name or the node visit limit of a workflow.
54
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
52
55
 
53
56
  ```graphql
54
57
  workflowUpdate(input: WorkflowUpdateInput!): WorkflowUpdatePayload! @auth
@@ -56,8 +59,9 @@ workflowUpdate(input: WorkflowUpdateInput!): WorkflowUpdatePayload! @auth
56
59
 
57
60
  ### `workflowGraphUpdate`
58
61
 
59
- Apply a batch of changes to a workflow's graph, all or nothing. Requires
60
- scope: `ORGANIZATION_PROJECTS_UPDATE`.
62
+ Updates the graph of a workflow with a change set, all or nothing. A refused change set writes
63
+ nothing and comes back in `errors`.
64
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
61
65
 
62
66
  ```graphql
63
67
  workflowGraphUpdate(input: WorkflowGraphUpdateInput!): WorkflowGraphUpdatePayload! @auth
@@ -65,7 +69,9 @@ workflowGraphUpdate(input: WorkflowGraphUpdateInput!): WorkflowGraphUpdatePayloa
65
69
 
66
70
  ### `workflowDelete`
67
71
 
68
- Delete a workflow. Requires scope: `ORGANIZATION_PROJECTS_UPDATE`.
72
+ Deletes a workflow. Published versions keep their copy, and an action that started it can start
73
+ another workflow.
74
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
69
75
 
70
76
  ```graphql
71
77
  workflowDelete(input: WorkflowDeleteInput!): WorkflowDeletePayload! @auth
@@ -73,10 +79,9 @@ workflowDelete(input: WorkflowDeleteInput!): WorkflowDeletePayload! @auth
73
79
 
74
80
  ### `workflowTestRun`
75
81
 
76
- Walk a workflow's draft graph once against a supplied trigger input, holding
77
- every write back, and return what each node did. Nothing is stored. Requires
78
- scope `ORGANIZATION_WORKSPACE_UPDATE` and every scope in `Workflow.scopes`;
79
- a refusal names each one missing.
82
+ Tests a workflow by walking its draft graph once, holding back every write. Nothing is stored,
83
+ and the caller must also hold every scope in `Workflow.scopes`.
84
+ Scope: `ORGANIZATION_WORKSPACE_UPDATE`.
80
85
 
81
86
  ```graphql
82
87
  workflowTestRun(input: WorkflowTestRunInput!): WorkflowTestRunPayload! @auth
@@ -88,49 +93,43 @@ workflowTestRun(input: WorkflowTestRunInput!): WorkflowTestRunPayload! @auth
88
93
 
89
94
  ```graphql
90
95
  """
91
- An automation rule: when its trigger fires, its definition runs.
92
-
93
- The definition is a graph of `nodes` and `edges`, authored directly through
94
- `workflowCreate` and `workflowGraphUpdate`.
96
+ An automation in a workspace: when its trigger fires, a run walks its graph of `nodes` and
97
+ `edges`. Publishing freezes a copy into the version, so an edit does not change a published
98
+ version.
95
99
  """
96
100
  type Workflow {
97
- """Unique workflow identifier."""
101
+ """The ID of the workflow."""
98
102
  id: ID!
99
- """Display name of the workflow."""
103
+ """The name of the workflow."""
100
104
  name: String!
101
- """
102
- What causes this workflow to run. Chosen at create and fixed for the workflow's life.
103
- """
105
+ """What starts a run. Set at creation and fixed after."""
104
106
  trigger: WorkflowTrigger!
105
107
  """
106
- Scopes a run of this workflow acts with, derived from the tools its graph
107
- names and rewritten whenever the graph is written. An author may only save a
108
- graph naming tools they hold these for.
108
+ The scopes a run acts with, set by the tools the graph names each time the graph is saved.
109
+ Saving needs each of them except `ORGANIZATION_LEADS_CREATE`, `ORGANIZATION_ACTION_RUNS_READ`,
110
+ `ORGANIZATION_ACTION_RUNS_UPDATE` and `ORGANIZATION_EXTERNAL_APIS_CALL`, which any author grants.
109
111
  """
110
112
  scopes: [Scope!]!
111
- """Nodes in the workflow graph, typed by their `__typename`."""
113
+ """The nodes of the graph."""
112
114
  nodes: [WorkflowNode!]!
113
- """Edges connecting nodes in the workflow graph."""
115
+ """The edges of the graph."""
114
116
  edges: [WorkflowEdge!]!
115
117
  """
116
- How many times a run may visit any one node, from 1 to 100; 10 unless set. A run that
117
- arrives at a node it has already visited this many times fails with `loop_limit_reached`.
118
+ The most times a run can visit one node, from 1 to 100; 10 by default. A run that reaches a node
119
+ this many times fails with `loop_limit_reached`.
118
120
  """
119
121
  maxNodeVisits: Int!
120
- """When this workflow was created."""
122
+ """When the workflow was created."""
121
123
  createdAt: DateTime!
122
- """When this workflow was last updated."""
124
+ """When the workflow last changed."""
123
125
  updatedAt: DateTime!
124
- """The workspace this workflow belongs to."""
126
+ """The workspace of the workflow."""
125
127
  workspace: Workspace!
126
- """
127
- The workspace ID this workflow belongs to (denormalised for query convenience).
128
- """
128
+ """The ID of the workspace of the workflow."""
129
129
  workspaceId: ID
130
130
  """
131
- Every path this workflow's templates and rules may address: `trigger`, `nodes.<id>` by
132
- the tool the node runs, and the run's variables beneath `run`, `workflow` and `current`.
133
- Read by the editor's reference picker and its condition builder.
131
+ Every path the templates and rules of the workflow can address: the trigger, the output of each
132
+ tool by `nodes.<id>`, and the run variables.
134
133
  """
135
134
  references: WorkflowReferences!
136
135
  }
@@ -139,13 +138,11 @@ type Workflow {
139
138
  ### `WorkflowTriggerType`
140
139
 
141
140
  ```graphql
142
- """
143
- Which kind of trigger this is: what tells `WorkflowEventTrigger` and `WorkflowActionTrigger` apart.
144
- """
141
+ """The kind of workflow trigger."""
145
142
  enum WorkflowTriggerType {
146
143
  """A domain event starts the run."""
147
144
  EVENT
148
- """One action starts the run."""
145
+ """An action starts the run."""
149
146
  ACTION
150
147
  }
151
148
  ```
@@ -154,10 +151,8 @@ enum WorkflowTriggerType {
154
151
 
155
152
  ```graphql
156
153
  """
157
- Domain events a workflow can be bound to.
158
-
159
- An action is reached through an `ACTION` trigger rather than an event, so that a
160
- workflow names the one action it answers to.
154
+ The domain events that can start a workflow. An action starts a workflow through an `ACTION`
155
+ trigger.
161
156
  """
162
157
  enum WorkflowEventName {
163
158
  """A workspace was created."""
@@ -168,11 +163,11 @@ enum WorkflowEventName {
168
163
  WORKSPACE_DELETED
169
164
  """A workspace version was published."""
170
165
  WORKSPACE_PUBLISHED
171
- """A feature was created."""
166
+ """A feature flag was created."""
172
167
  FEATURE_CREATED
173
- """A feature was updated."""
168
+ """A feature flag was updated."""
174
169
  FEATURE_UPDATED
175
- """A feature was deleted."""
170
+ """A feature flag was deleted."""
176
171
  FEATURE_DELETED
177
172
  """A step was deleted."""
178
173
  STEP_DELETED
@@ -186,11 +181,9 @@ enum WorkflowEventName {
186
181
  ### `WorkflowTrigger`
187
182
 
188
183
  ```graphql
189
- """
190
- What starts a workflow's run. Use `__typename` to discriminate the implementation.
191
- """
184
+ """What starts the runs of a workflow. `__typename` names the kind."""
192
185
  interface WorkflowTrigger {
193
- """Which kind this is. `__typename` says the same thing."""
186
+ """The kind of trigger."""
194
187
  type: WorkflowTriggerType!
195
188
  }
196
189
  ```
@@ -198,8 +191,9 @@ interface WorkflowTrigger {
198
191
  ### `WorkflowEventTrigger`
199
192
 
200
193
  ```graphql
201
- """A workflow started by a domain event."""
194
+ """A trigger that starts a run on a domain event."""
202
195
  type WorkflowEventTrigger implements WorkflowTrigger {
196
+ """The kind of trigger."""
203
197
  type: WorkflowTriggerType!
204
198
  """The event that starts the run."""
205
199
  eventName: WorkflowEventName!
@@ -210,15 +204,14 @@ type WorkflowEventTrigger implements WorkflowTrigger {
210
204
 
211
205
  ```graphql
212
206
  """
213
- A workflow started by one action. An action starts at most one workflow.
207
+ A trigger that starts a run when an action runs. An action starts at most one workflow.
214
208
  """
215
209
  type WorkflowActionTrigger implements WorkflowTrigger {
210
+ """The kind of trigger."""
216
211
  type: WorkflowTriggerType!
217
- """ID of the action whose run starts the workflow."""
212
+ """The ID of the action."""
218
213
  actionId: ID!
219
- """
220
- The action whose run starts the workflow. Null once that action is deleted.
221
- """
214
+ """The action. Null when the action was deleted."""
222
215
  action: Action
223
216
  }
224
217
  ```
@@ -226,16 +219,14 @@ type WorkflowActionTrigger implements WorkflowTrigger {
226
219
  ### `WorkflowTriggerInput`
227
220
 
228
221
  ```graphql
229
- """
230
- Input form of a workflow's trigger. Only the field matching `type` is read.
231
- """
222
+ """A workflow trigger to set. Only the field that matches `type` is read."""
232
223
  input WorkflowTriggerInput {
233
- """Which kind of trigger this is."""
224
+ """The kind of trigger."""
234
225
  type: WorkflowTriggerType!
235
- """For EVENT triggers: the domain event that starts the run."""
226
+ """The event that starts the run, for an `EVENT` trigger."""
236
227
  eventName: WorkflowEventName
237
228
  """
238
- For ACTION triggers: the action to bind, which must start no workflow yet.
229
+ The ID of an action that starts no workflow yet, for an `ACTION` trigger.
239
230
  """
240
231
  actionId: ID
241
232
  }
@@ -244,15 +235,15 @@ input WorkflowTriggerInput {
244
235
  ### `WorkflowNodeType`
245
236
 
246
237
  ```graphql
247
- """Which kind of node this is: what tells the four node types apart."""
238
+ """The kind of workflow node."""
248
239
  enum WorkflowNodeType {
249
240
  """Where a run starts. Exactly one per workflow."""
250
241
  ORIGIN
251
- """A node that runs a registered tool."""
242
+ """Runs a tool."""
252
243
  TOOL
253
- """A node that branches the run on a rule."""
244
+ """Chooses a branch by a rule."""
254
245
  CONDITION
255
- """A node that suspends the run for a duration."""
246
+ """Pauses the run for a duration."""
256
247
  SLEEP
257
248
  }
258
249
  ```
@@ -260,16 +251,13 @@ enum WorkflowNodeType {
260
251
  ### `WorkflowEdgeHandle`
261
252
 
262
253
  ```graphql
263
- """
264
- Edge handle for `WorkflowConditionNode` outgoing edges. Picks which branch the
265
- run follows when the condition resolves true / false.
266
- """
254
+ """The exit an edge leaves a node by."""
267
255
  enum WorkflowEdgeHandle {
268
- """The TRUE branch of a condition."""
256
+ """The branch a condition takes when its rule is true."""
269
257
  TRUE
270
- """The FALSE branch of a condition."""
258
+ """The branch a condition takes when its rule is false."""
271
259
  FALSE
272
- """A tool's error exit, which a run follows when the tool fails."""
260
+ """The exit a run takes when a tool fails."""
273
261
  ERROR
274
262
  }
275
263
  ```
@@ -277,17 +265,13 @@ enum WorkflowEdgeHandle {
277
265
  ### `WorkflowNode`
278
266
 
279
267
  ```graphql
280
- """
281
- A node in the workflow graph. Use `__typename` to discriminate the implementation.
282
- """
268
+ """A node in the graph of a workflow. `__typename` names the kind."""
283
269
  interface WorkflowNode {
284
- """
285
- Stable node identifier within the graph, and the run's durable step id.
286
- """
270
+ """The ID of the node, unique in the graph."""
287
271
  id: ID!
288
- """Which kind of node this is. `__typename` says the same thing."""
272
+ """The kind of node."""
289
273
  type: WorkflowNodeType!
290
- """Canvas position for the dashboard editor."""
274
+ """The position of the node on the canvas."""
291
275
  position: Position!
292
276
  }
293
277
  ```
@@ -295,14 +279,13 @@ interface WorkflowNode {
295
279
  ### `WorkflowOriginNode`
296
280
 
297
281
  ```graphql
298
- """
299
- Where a run starts. Exactly one per workflow.
300
-
301
- It carries no trigger: what starts a workflow is the workflow's own `trigger`.
302
- """
282
+ """The node where every run starts. Exactly one per workflow."""
303
283
  type WorkflowOriginNode implements WorkflowNode {
284
+ """The ID of the node, unique in the graph."""
304
285
  id: ID!
286
+ """The kind of node."""
305
287
  type: WorkflowNodeType!
288
+ """The position of the node on the canvas."""
306
289
  position: Position!
307
290
  }
308
291
  ```
@@ -310,14 +293,17 @@ type WorkflowOriginNode implements WorkflowNode {
310
293
  ### `WorkflowToolNode`
311
294
 
312
295
  ```graphql
313
- """A node that runs a registered tool with the given configuration."""
296
+ """A node that runs a tool."""
314
297
  type WorkflowToolNode implements WorkflowNode {
298
+ """The ID of the node, unique in the graph."""
315
299
  id: ID!
300
+ """The kind of node."""
316
301
  type: WorkflowNodeType!
302
+ """The position of the node on the canvas."""
317
303
  position: Position!
318
- """Name of the tool this node runs."""
304
+ """The name of the tool."""
319
305
  tool: String!
320
- """Values for the arguments that tool declares."""
306
+ """The values of the arguments of the tool."""
321
307
  configuration: JSON!
322
308
  }
323
309
  ```
@@ -326,13 +312,16 @@ type WorkflowToolNode implements WorkflowNode {
326
312
 
327
313
  ```graphql
328
314
  """
329
- A node that branches the run. Outgoing edges carry `sourceHandle: TRUE | FALSE`.
315
+ A node that chooses a branch. Its outgoing edges carry `sourceHandle` `TRUE` or `FALSE`.
330
316
  """
331
317
  type WorkflowConditionNode implements WorkflowNode {
318
+ """The ID of the node, unique in the graph."""
332
319
  id: ID!
320
+ """The kind of node."""
333
321
  type: WorkflowNodeType!
322
+ """The position of the node on the canvas."""
334
323
  position: Position!
335
- """The rule evaluated when the run reaches this node."""
324
+ """The rule the node evaluates."""
336
325
  logic: JSON!
337
326
  }
338
327
  ```
@@ -340,13 +329,16 @@ type WorkflowConditionNode implements WorkflowNode {
340
329
  ### `WorkflowSleepNode`
341
330
 
342
331
  ```graphql
343
- """A node that suspends the run."""
332
+ """A node that pauses the run."""
344
333
  type WorkflowSleepNode implements WorkflowNode {
334
+ """The ID of the node, unique in the graph."""
345
335
  id: ID!
336
+ """The kind of node."""
346
337
  type: WorkflowNodeType!
338
+ """The position of the node on the canvas."""
347
339
  position: Position!
348
340
  """
349
- How long the run suspends for, as a count and a unit: `500ms`, `30s`, `5m`, `2h`, `1d`. At most one day.
341
+ The length of the pause, as a count and a unit such as `500ms`, `30s`, `5m`, `2h` or `1d`. At most one day.
350
342
  """
351
343
  duration: String!
352
344
  }
@@ -355,16 +347,16 @@ type WorkflowSleepNode implements WorkflowNode {
355
347
  ### `WorkflowEdge`
356
348
 
357
349
  ```graphql
358
- """An edge connecting two nodes in the workflow graph."""
350
+ """A connection between two nodes in the graph of a workflow."""
359
351
  type WorkflowEdge {
360
- """Stable edge identifier within the graph."""
352
+ """The ID of the edge, unique in the graph."""
361
353
  id: ID!
362
- """Node the edge leaves."""
354
+ """The ID of the node the edge leaves."""
363
355
  sourceNodeId: ID!
364
- """Node the edge arrives at."""
356
+ """The ID of the node the edge arrives at."""
365
357
  destinationNodeId: ID!
366
358
  """
367
- The exit the edge leaves by: a `WorkflowConditionNode` branch (TRUE / FALSE), or a `WorkflowToolNode`'s error exit (ERROR).
359
+ The exit the edge leaves by: `TRUE` or `FALSE` from a condition, `ERROR` from a tool. Null for any other exit.
368
360
  """
369
361
  sourceHandle: WorkflowEdgeHandle
370
362
  }
@@ -373,17 +365,12 @@ type WorkflowEdge {
373
365
  ### `WorkflowToolNodeInput`
374
366
 
375
367
  ```graphql
376
- """
377
- The data a `TOOL` node carries: which registered tool runs, and with what.
378
-
379
- A tool's arguments belong to one node in one workflow, so they sit on the node
380
- rather than on an entity of their own.
381
- """
368
+ """The data of a `TOOL` node: the tool and its arguments."""
382
369
  input WorkflowToolNodeInput {
383
- """Name of a registered tool, as `workflowTools` lists it."""
370
+ """The name of a tool that `workflowTools` lists."""
384
371
  name: String!
385
372
  """
386
- Values for the arguments that tool declares. Omit for a tool that takes none.
373
+ The values of the arguments of the tool. Omit for a tool with no arguments.
387
374
  """
388
375
  configuration: JSON
389
376
  }
@@ -392,11 +379,9 @@ input WorkflowToolNodeInput {
392
379
  ### `WorkflowConditionNodeInput`
393
380
 
394
381
  ```graphql
395
- """The data a `CONDITION` node carries: the rule that picks the branch."""
382
+ """The data of a `CONDITION` node: the rule that chooses the branch."""
396
383
  input WorkflowConditionNodeInput {
397
- """
398
- The rule evaluated when the run reaches the node. Outgoing edges carry `sourceHandle`.
399
- """
384
+ """The rule the node evaluates."""
400
385
  logic: JSON!
401
386
  }
402
387
  ```
@@ -404,9 +389,11 @@ input WorkflowConditionNodeInput {
404
389
  ### `WorkflowSleepNodeInput`
405
390
 
406
391
  ```graphql
407
- """The data a `SLEEP` node carries: how long the run suspends."""
392
+ """The data of a `SLEEP` node: the length of the pause."""
408
393
  input WorkflowSleepNodeInput {
409
- """A count and a unit: `500ms`, `30s`, `5m`, `2h`, `1d`. At most one day."""
394
+ """
395
+ A count and a unit, such as `500ms`, `30s`, `5m`, `2h` or `1d`. At most one day.
396
+ """
410
397
  duration: String!
411
398
  }
412
399
  ```
@@ -415,21 +402,20 @@ input WorkflowSleepNodeInput {
415
402
 
416
403
  ```graphql
417
404
  """
418
- Input form of a node in the workflow graph. Every node carries an id, a kind and
419
- a position; the block matching its kind carries the rest. `ORIGIN` has no block.
405
+ A node to set in a graph. The block that matches `type` carries its data; `ORIGIN` has none.
420
406
  """
421
407
  input WorkflowNodeInput {
422
- """Graph-unique identifier, and the run's durable step id."""
408
+ """The ID of the node, unique in the graph."""
423
409
  id: ID!
424
- """Which kind of node to create."""
410
+ """The kind of node."""
425
411
  type: WorkflowNodeType!
426
- """Canvas position."""
412
+ """The position of the node on the canvas."""
427
413
  position: PositionInput!
428
- """For TOOL nodes: the tool to run and its arguments."""
414
+ """The tool and its arguments, for a `TOOL` node."""
429
415
  tool: WorkflowToolNodeInput
430
- """For CONDITION nodes: the rule that picks the branch."""
416
+ """The rule, for a `CONDITION` node."""
431
417
  condition: WorkflowConditionNodeInput
432
- """For SLEEP nodes: how long the run suspends."""
418
+ """The length of the pause, for a `SLEEP` node."""
433
419
  sleep: WorkflowSleepNodeInput
434
420
  }
435
421
  ```
@@ -437,16 +423,16 @@ input WorkflowNodeInput {
437
423
  ### `WorkflowEdgeInput`
438
424
 
439
425
  ```graphql
440
- """Input form of an edge in the workflow graph."""
426
+ """An edge to set in a graph."""
441
427
  input WorkflowEdgeInput {
442
- """Graph-unique identifier."""
428
+ """The ID of the edge, unique in the graph."""
443
429
  id: ID!
444
- """Node the edge leaves."""
430
+ """The ID of the node the edge leaves."""
445
431
  sourceNodeId: ID!
446
- """Node the edge arrives at."""
432
+ """The ID of the node the edge arrives at."""
447
433
  destinationNodeId: ID!
448
434
  """
449
- The exit the edge leaves by: a `WorkflowConditionNode` branch (TRUE / FALSE), or a `WorkflowToolNode`'s error exit (ERROR).
435
+ The exit the edge leaves by: `TRUE` or `FALSE` from a condition, `ERROR` from a tool.
450
436
  """
451
437
  sourceHandle: WorkflowEdgeHandle
452
438
  }
@@ -456,29 +442,27 @@ input WorkflowEdgeInput {
456
442
 
457
443
  ```graphql
458
444
  """
459
- The type an argument takes.
460
-
461
- Every argument also accepts a Liquid template — `{{ nodes.n1.leads[0].id }}` — in place of a
462
- literal. A template that is the whole value keeps the type of what it names; one mixed with
463
- text renders to text and is read as the declared type when the node runs.
445
+ The type of a tool argument. Every argument also takes a workflow template such as
446
+ `{{ nodes.n1.leads[0].id }}`: a template that is the whole value keeps the type of what it names,
447
+ and one mixed with text is read as the declared type when the node runs.
464
448
  """
465
449
  enum WorkflowArgumentType {
466
- """A text value."""
450
+ """Text."""
467
451
  STRING
468
- """A numeric value."""
452
+ """A number."""
469
453
  NUMBER
470
- """A true / false value."""
454
+ """True or false."""
471
455
  BOOLEAN
472
456
  """Any JSON value."""
473
457
  JSON
474
458
  """
475
- A query over one resource, written as a string in that resource's own query language.
476
- A template may stand in a clause's value and nowhere else.
459
+ A query in the query language of one resource. A template can stand only in the value of a
460
+ clause.
477
461
  """
478
462
  QUERY
479
463
  """
480
- One record of the resource type `resourceType` names, written as a reference to it.
481
- The value resolves to that record's identifier before the tool runs.
464
+ A reference to one record of the type `resourceType` names, which resolves to the ID of the
465
+ record before the tool runs.
482
466
  """
483
467
  REFERENCE
484
468
  }
@@ -487,36 +471,31 @@ enum WorkflowArgumentType {
487
471
  ### `WorkflowToolArgument`
488
472
 
489
473
  ```graphql
490
- """One argument a tool accepts."""
474
+ """An argument a tool takes."""
491
475
  type WorkflowToolArgument {
492
- """Argument name, as it appears in a tool node's `configuration`."""
493
- name: String!
494
476
  """
495
- The argument's name for authors, such as `Lead`, which an editor's form field takes.
477
+ The name of the argument, as a key in the `configuration` of a tool node.
496
478
  """
479
+ name: String!
480
+ """The display name of the argument, such as `Lead`."""
497
481
  label: String!
498
- """The type the argument takes."""
482
+ """The type of the argument."""
499
483
  type: WorkflowArgumentType!
500
484
  """
501
- For a `JSON` argument, the structured shape its value takes, such as `labels` — the
502
- editor renders the control that shape calls for and validates against it. Null for
503
- free-form JSON. Unlike `type` this vocabulary is open: an editor that does not know the
504
- shape edits the value as raw JSON.
485
+ The structured shape of a `JSON` argument, such as `labels`. Null for free-form JSON. The set of
486
+ shapes can grow; edit an unknown shape as raw JSON.
505
487
  """
506
488
  shape: String
507
489
  """
508
- For a `REFERENCE` argument, the resource type the value must name, such as `Lead` — the
509
- editor offers only the paths that produce one. Null otherwise. Like `shape` this
510
- vocabulary is open, and it is matched against `WorkflowReferenceEntry.resourceType` by
511
- equality.
490
+ The resource type a `REFERENCE` argument names, such as `Lead`, matched by equality against
491
+ `WorkflowReferenceEntry.resourceType`. Null for other types.
512
492
  """
513
493
  resourceType: String
514
494
  """
515
- For a `STRING` argument, the literals it admits, so the editor offers a choice rather
516
- than free text. Null when the argument takes any string.
495
+ The values a `STRING` argument accepts. Null when it accepts any string.
517
496
  """
518
497
  options: [String!]
519
- """Whether the argument must be given."""
498
+ """Whether the argument is required."""
520
499
  required: Boolean!
521
500
  """What the argument is for."""
522
501
  description: String!
@@ -526,19 +505,18 @@ type WorkflowToolArgument {
526
505
  ### `WorkflowToolDefinition`
527
506
 
528
507
  ```graphql
529
- """A tool a workflow node may run."""
508
+ """A tool a workflow node can run."""
530
509
  type WorkflowToolDefinition {
531
- """Name a node references."""
510
+ """The name a tool node uses."""
532
511
  name: String!
533
- """The tool's name for authors, such as `External endpoint`."""
512
+ """The display name of the tool, such as `External endpoint`."""
534
513
  label: String!
535
514
  """What the tool does."""
536
515
  description: String!
537
- """The arguments it accepts."""
516
+ """The arguments the tool takes."""
538
517
  arguments: [WorkflowToolArgument!]!
539
518
  """
540
- The scopes a run must hold for this tool to run. Empty for a tool that touches
541
- no data. Read by the editor to show which tools the viewer can place.
519
+ The scopes a run needs to run the tool. Empty for a tool that touches no data.
542
520
  """
543
521
  scopes: [Scope!]!
544
522
  }
@@ -547,20 +525,20 @@ type WorkflowToolDefinition {
547
525
  ### `WorkflowReferenceType`
548
526
 
549
527
  ```graphql
550
- """How a reference entry's value reads."""
528
+ """The type of the value at a reference path."""
551
529
  enum WorkflowReferenceType {
552
- """A text value."""
530
+ """Text."""
553
531
  STRING
554
- """A numeric value."""
532
+ """A number."""
555
533
  NUMBER
556
- """A true / false value."""
534
+ """True or false."""
557
535
  BOOLEAN
558
- """Any JSON value; paths beneath it are not listed."""
536
+ """Any JSON value. Paths beneath it are not listed."""
559
537
  JSON
560
- """A record whose fields are listed beneath it."""
538
+ """A record, with its fields listed beneath it."""
561
539
  OBJECT
562
540
  """
563
- A list of records, addressed by index; `.0.` entries describe each item and `.truncated` says whether the list was cut at its bound.
541
+ A list addressed by index. `.0.` entries describe each item, and `.truncated` says whether the list was cut short.
564
542
  """
565
543
  COLLECTION
566
544
  }
@@ -570,28 +548,24 @@ enum WorkflowReferenceType {
570
548
 
571
549
  ```graphql
572
550
  """
573
- One path a workflow's templates and rules may address, with what the picker shows for it.
574
-
575
- The path is relative to its owner and written in the dotted form a rule reads —
576
- `action.responses.email` beneath `trigger`, `leads.0.id` beneath `nodes.<id>`, and
577
- `current.startedAt` from the root for a variable. A template writes an index as
578
- `leads[0].id`.
551
+ A path that the templates and rules of a workflow can address. The path is relative to its owner,
552
+ in dotted form: `action.responses.email` beneath `trigger`, `leads.0.id` beneath `nodes.<id>`. A
553
+ template writes an index as `leads[0].id`.
579
554
  """
580
555
  type WorkflowReferenceEntry {
581
556
  """The path, relative to its owner."""
582
557
  path: String!
583
- """How the value reads."""
558
+ """The type of the value."""
584
559
  type: WorkflowReferenceType!
585
- """A human-readable label."""
560
+ """The display name of the path."""
586
561
  label: String!
587
- """A few words on what the path holds, shown beneath the label."""
562
+ """What the path holds."""
588
563
  description: String!
589
- """A representative value, declared with the tool."""
564
+ """An example value."""
590
565
  example: JSON!
591
566
  """
592
- The resource type this path materialises to, such as `Lead`, for a path that names a
593
- whole record or that record's identifier. Null for everything else. Matched against
594
- `WorkflowToolArgument.resourceType` by equality.
567
+ The resource type of a path that names a whole record or its ID, such as `Lead`, matched by
568
+ equality against `WorkflowToolArgument.resourceType`. Null for other paths.
595
569
  """
596
570
  resourceType: String
597
571
  }
@@ -601,12 +575,12 @@ type WorkflowReferenceEntry {
601
575
 
602
576
  ```graphql
603
577
  """
604
- The paths one tool's output makes addressable beneath `nodes.<id>` for every node running it.
578
+ The paths the output of one tool adds beneath `nodes.<id>` for each node that runs it.
605
579
  """
606
580
  type WorkflowToolReferences {
607
- """The tool name, as a node's `tool` names it."""
581
+ """The name of the tool."""
608
582
  tool: String!
609
- """The addressable paths, relative to the node."""
583
+ """The paths, relative to the node."""
610
584
  entries: [WorkflowReferenceEntry!]!
611
585
  }
612
586
  ```
@@ -615,24 +589,21 @@ type WorkflowToolReferences {
615
589
 
616
590
  ```graphql
617
591
  """
618
- Everything one workflow's templates and rules may address: the trigger, resolved from the
619
- workflow's trigger, each tool's output with its shapes resolved against the workspace's
620
- fields, and the run's variables. The editor filters the tool outputs to the nodes upstream of
621
- the one being edited.
592
+ Every path the templates and rules of one workflow can address: the trigger, the output of each
593
+ tool with its shapes resolved against the fields of the workspace, and the run variables.
622
594
  """
623
595
  type WorkflowReferences {
624
596
  """
625
- Paths beneath `trigger`: `action` and its responses on an action-triggered workflow, `event` on an event-triggered one.
597
+ The paths beneath `trigger`: `action` and its responses for an `ACTION` trigger, `event` for an `EVENT` trigger.
626
598
  """
627
599
  trigger: [WorkflowReferenceEntry!]!
628
- """Paths beneath `nodes.<id>`, by the tool the node runs."""
600
+ """The paths beneath `nodes.<id>`, by the tool the node runs."""
629
601
  tools: [WorkflowToolReferences!]!
630
602
  """
631
- The run's variables, the same on every workflow, each path written from its root:
632
- `run.id`, `run.startedAt` and `run.preview` for the run; `workflow.id` and
633
- `workflow.name` for the workflow; `current.id`, `current.startedAt` and `current.visit`
634
- for the node that reads them. Times are ISO 8601 in UTC. A save refuses any other path
635
- beneath these three roots.
603
+ The run variables, the same on every workflow, each written from its root: `run.id`,
604
+ `run.startedAt`, `run.preview`, `workflow.id`, `workflow.name`, `current.id`,
605
+ `current.startedAt` and `current.visit`. Times are in UTC. A save refuses any other path beneath
606
+ these three roots.
636
607
  """
637
608
  variables: [WorkflowReferenceEntry!]!
638
609
  }
@@ -641,11 +612,11 @@ type WorkflowReferences {
641
612
  ### `WorkflowChangesInput`
642
613
 
643
614
  ```graphql
644
- """Container for all change operations on a workflow graph."""
615
+ """The changes to a workflow graph."""
645
616
  input WorkflowChangesInput {
646
- """Node changes in the workflow graph."""
617
+ """The changes to nodes."""
647
618
  nodes: WorkflowNodeChangesInput
648
- """Edge changes connecting nodes."""
619
+ """The changes to edges."""
649
620
  edges: WorkflowEdgeChangesInput
650
621
  }
651
622
  ```
@@ -653,17 +624,17 @@ input WorkflowChangesInput {
653
624
  ### `WorkflowNodeChangesInput`
654
625
 
655
626
  ```graphql
656
- """Node-level changes within a `workflowGraphUpdate` batch."""
627
+ """The changes to the nodes of a workflow graph."""
657
628
  input WorkflowNodeChangesInput {
658
- """
659
- Nodes to create, each named by its `clientId` until the server mints its id.
660
- """
629
+ """The nodes to create, each named by its `clientId`."""
661
630
  create: [WorkflowNodeCreateData!]
662
631
  """
663
- Fields to merge into the nodes they name. An id the graph lacks is ignored.
632
+ The changes to existing nodes. An ID the graph does not have is ignored.
664
633
  """
665
634
  update: [WorkflowNodeUpdateData!]
666
- """Node ids to delete. Edges touching a deleted node are dropped with it."""
635
+ """
636
+ The IDs of the nodes to delete. The edges of a deleted node are deleted with it.
637
+ """
667
638
  delete: [ID!]
668
639
  }
669
640
  ```
@@ -671,24 +642,22 @@ input WorkflowNodeChangesInput {
671
642
  ### `WorkflowNodeCreateData`
672
643
 
673
644
  ```graphql
674
- """
675
- A node to add to the graph. The block matching `type` carries its data.
676
- """
645
+ """A node to create. The block that matches `type` carries its data."""
677
646
  input WorkflowNodeCreateData {
678
647
  """
679
- Client-generated id, for cross-referencing from edges in the same change set.
680
- The server mints the persisted id and returns the pair in `idMappings`.
648
+ An ID of your choice, which edges in the same change set can name. The result maps it to the
649
+ node ID in `idMappings`.
681
650
  """
682
651
  clientId: ID!
683
- """Which kind of node to create."""
652
+ """The kind of node."""
684
653
  type: WorkflowNodeType!
685
- """Canvas position."""
654
+ """The position of the node on the canvas."""
686
655
  position: PositionInput!
687
- """For TOOL nodes: the tool to run and its arguments."""
656
+ """The tool and its arguments, for a `TOOL` node."""
688
657
  tool: WorkflowToolNodeInput
689
- """For CONDITION nodes: the rule that picks the branch."""
658
+ """The rule, for a `CONDITION` node."""
690
659
  condition: WorkflowConditionNodeInput
691
- """For SLEEP nodes: how long the run suspends."""
660
+ """The length of the pause, for a `SLEEP` node."""
692
661
  sleep: WorkflowSleepNodeInput
693
662
  }
694
663
  ```
@@ -697,19 +666,19 @@ input WorkflowNodeCreateData {
697
666
 
698
667
  ```graphql
699
668
  """
700
- Fields to merge into an existing node. Omit a field to leave it unchanged; a
701
- kind block that is given replaces that kind's data whole.
669
+ A change to an existing node. Omit a field to keep its value; a kind block replaces all the data
670
+ of that kind.
702
671
  """
703
672
  input WorkflowNodeUpdateData {
704
- """Id of the node to change."""
673
+ """The ID of the node."""
705
674
  id: ID!
706
- """New canvas position."""
675
+ """The position of the node on the canvas."""
707
676
  position: PositionInput
708
- """For TOOL nodes: the tool to run and its arguments."""
677
+ """The tool and its arguments, for a `TOOL` node."""
709
678
  tool: WorkflowToolNodeInput
710
- """For CONDITION nodes: the rule that picks the branch."""
679
+ """The rule, for a `CONDITION` node."""
711
680
  condition: WorkflowConditionNodeInput
712
- """For SLEEP nodes: how long the run suspends."""
681
+ """The length of the pause, for a `SLEEP` node."""
713
682
  sleep: WorkflowSleepNodeInput
714
683
  }
715
684
  ```
@@ -717,17 +686,15 @@ input WorkflowNodeUpdateData {
717
686
  ### `WorkflowEdgeChangesInput`
718
687
 
719
688
  ```graphql
720
- """Edge-level changes within a `workflowGraphUpdate` batch."""
689
+ """The changes to the edges of a workflow graph."""
721
690
  input WorkflowEdgeChangesInput {
722
- """
723
- Edges to create, each named by its `clientId` until the server mints its id.
724
- """
691
+ """The edges to create, each named by its `clientId`."""
725
692
  create: [WorkflowEdgeCreateInput!]
726
693
  """
727
- Fields to merge into the edges they name. An id the graph lacks is ignored.
694
+ The changes to existing edges. An ID the graph does not have is ignored.
728
695
  """
729
696
  update: [WorkflowEdgeUpdateInput!]
730
- """Edge ids to delete."""
697
+ """The IDs of the edges to delete."""
731
698
  delete: [ID!]
732
699
  }
733
700
  ```
@@ -736,31 +703,32 @@ input WorkflowEdgeChangesInput {
736
703
 
737
704
  ```graphql
738
705
  """
739
- An edge to add to the graph. Each endpoint is named one way: by its persisted id, or by the client id of a node created in the same change set.
706
+ An edge to create. Name each end once: by node ID, or by the `clientId` of a node created in the
707
+ same change set.
740
708
  """
741
709
  input WorkflowEdgeCreateInput {
742
710
  """
743
- Client-generated id. The server mints the persisted id and returns the pair in `idMappings`.
711
+ An ID of your choice. The result maps it to the edge ID in `idMappings`.
744
712
  """
745
713
  clientId: ID!
746
714
  """
747
- Node the edge leaves, by persisted id. Mutually exclusive with `sourceNodeClientId`.
715
+ The ID of the node the edge leaves. Not allowed with `sourceNodeClientId`.
748
716
  """
749
717
  sourceNodeId: ID
750
718
  """
751
- Node the edge leaves, created in this same change set. Mutually exclusive with `sourceNodeId`.
719
+ The `clientId` of a new node the edge leaves. Not allowed with `sourceNodeId`.
752
720
  """
753
721
  sourceNodeClientId: ID
754
722
  """
755
- Node the edge arrives at, by persisted id. Mutually exclusive with `destinationNodeClientId`.
723
+ The ID of the node the edge arrives at. Not allowed with `destinationNodeClientId`.
756
724
  """
757
725
  destinationNodeId: ID
758
726
  """
759
- Node the edge arrives at, created in this same change set. Mutually exclusive with `destinationNodeId`.
727
+ The `clientId` of a new node the edge arrives at. Not allowed with `destinationNodeId`.
760
728
  """
761
729
  destinationNodeClientId: ID
762
730
  """
763
- The exit the edge leaves by: a `WorkflowConditionNode` branch (TRUE / FALSE), or a `WorkflowToolNode`'s error exit (ERROR).
731
+ The exit the edge leaves by: `TRUE` or `FALSE` from a condition, `ERROR` from a tool.
764
732
  """
765
733
  sourceHandle: WorkflowEdgeHandle
766
734
  }
@@ -769,17 +737,17 @@ input WorkflowEdgeCreateInput {
769
737
  ### `WorkflowEdgeUpdateInput`
770
738
 
771
739
  ```graphql
772
- """
773
- Fields to merge into an existing edge. Omit a field to leave it unchanged.
774
- """
740
+ """A change to an existing edge. Omit a field to keep its value."""
775
741
  input WorkflowEdgeUpdateInput {
776
- """Id of the edge to change."""
742
+ """The ID of the edge."""
777
743
  id: ID!
778
- """New source node id."""
744
+ """The ID of the node the edge leaves."""
779
745
  sourceNodeId: ID
780
- """New destination node id."""
746
+ """The ID of the node the edge arrives at."""
781
747
  destinationNodeId: ID
782
- """New exit: TRUE or FALSE off a condition, ERROR off a tool."""
748
+ """
749
+ The exit the edge leaves by: `TRUE` or `FALSE` from a condition, `ERROR` from a tool.
750
+ """
783
751
  sourceHandle: WorkflowEdgeHandle
784
752
  }
785
753
  ```
@@ -787,19 +755,15 @@ input WorkflowEdgeUpdateInput {
787
755
  ### `WorkflowConnection`
788
756
 
789
757
  ```graphql
790
- """
791
- Relay-style connection of workflows, with both an `edges` list and a flat `nodes` accessor.
792
- """
758
+ """A page of workflows."""
793
759
  type WorkflowConnection {
794
- """List of workflow edges."""
760
+ """The edges in this page."""
795
761
  edges: [WorkflowConnectionEdge!]!
796
- """
797
- Flat list of workflows, equivalent to `edges[].node`. Convenience accessor.
798
- """
762
+ """The workflows in this page."""
799
763
  nodes: [Workflow!]!
800
- """Pagination metadata."""
764
+ """Where this page sits in the list."""
801
765
  pageInfo: PageInfo!
802
- """Total number of workflows."""
766
+ """The total number of workflows."""
803
767
  totalCount: Int!
804
768
  }
805
769
  ```
@@ -807,9 +771,9 @@ type WorkflowConnection {
807
771
  ### `WorkflowConnectionEdge`
808
772
 
809
773
  ```graphql
810
- """Edge type for `WorkflowConnection`."""
774
+ """A workflow in a page of results."""
811
775
  type WorkflowConnectionEdge {
812
- """Pagination cursor for this edge."""
776
+ """The cursor of this edge."""
813
777
  cursor: String!
814
778
  """The workflow."""
815
779
  node: Workflow!
@@ -819,19 +783,19 @@ type WorkflowConnectionEdge {
819
783
  ### `WorkflowCreateInput`
820
784
 
821
785
  ```graphql
822
- """Input for `workflowCreate`."""
786
+ """The input of `workflowCreate`."""
823
787
  input WorkflowCreateInput {
824
- """Workspace ID to create the workflow in."""
788
+ """The ID of the workspace."""
825
789
  workspaceId: ID!
826
790
  """
827
- Display name. Omit it to derive one from the trigger, suffixed until unused.
791
+ The name. When omitted, a name taken from the trigger, with a number added until it is unique.
828
792
  """
829
793
  name: String
830
- """What causes this workflow to run."""
794
+ """What starts a run. Fixed after creation."""
831
795
  trigger: WorkflowTriggerInput!
832
- """Nodes of the graph to build. The `ORIGIN` node is added automatically."""
796
+ """The nodes of the graph. The `ORIGIN` node is added when absent."""
833
797
  nodes: [WorkflowNodeInput!]
834
- """Edges of the graph to build. Read only when `nodes` is given."""
798
+ """The edges of the graph. Ignored without `nodes`."""
835
799
  edges: [WorkflowEdgeInput!]
836
800
  }
837
801
  ```
@@ -839,9 +803,9 @@ input WorkflowCreateInput {
839
803
  ### `WorkflowCreatePayload`
840
804
 
841
805
  ```graphql
842
- """Payload returned by `workflowCreate`."""
806
+ """The result of `workflowCreate`."""
843
807
  type WorkflowCreatePayload {
844
- """The created workflow."""
808
+ """The workflow."""
845
809
  workflow: Workflow
846
810
  }
847
811
  ```
@@ -849,17 +813,13 @@ type WorkflowCreatePayload {
849
813
  ### `WorkflowUpdateInput`
850
814
 
851
815
  ```graphql
852
- """
853
- Input for `workflowUpdate`. Omit a field to leave it unchanged. The trigger is fixed at create.
854
- """
816
+ """The input of `workflowUpdate`. Omit a field to keep its value."""
855
817
  input WorkflowUpdateInput {
856
- """Workflow ID."""
818
+ """The ID of the workflow."""
857
819
  id: ID!
858
- """New display name."""
820
+ """The name."""
859
821
  name: String
860
- """
861
- How many times a run may visit any one node, from 1 to 100. A value outside that range is refused.
862
- """
822
+ """The most times a run can visit one node, from 1 to 100."""
863
823
  maxNodeVisits: Int
864
824
  }
865
825
  ```
@@ -868,23 +828,16 @@ input WorkflowUpdateInput {
868
828
 
869
829
  ```graphql
870
830
  """
871
- Input for `workflowGraphUpdate`.
872
-
873
- The whole change set is applied or none of it is: the graph is validated once,
874
- after every change lands, so a set that would leave it unrunnable is refused
875
- entire and nothing is written.
831
+ The input of `workflowGraphUpdate`. Omit a field to keep its value. `changes` is required.
876
832
  """
877
833
  input WorkflowGraphUpdateInput {
878
- """The workflow to update."""
834
+ """The ID of the workflow."""
879
835
  workflowId: ID!
880
- """New display name."""
836
+ """The name."""
881
837
  name: String
882
- """
883
- How many times a run may visit any one node, from 1 to 100, set with the change set.
884
- A value outside that range comes back in `errors` and nothing is written.
885
- """
838
+ """The most times a run can visit one node, from 1 to 100."""
886
839
  maxNodeVisits: Int
887
- """All changes to apply to the workflow graph."""
840
+ """The changes to the graph."""
888
841
  changes: WorkflowChangesInput!
889
842
  }
890
843
  ```
@@ -892,24 +845,24 @@ input WorkflowGraphUpdateInput {
892
845
  ### `WorkflowGraphUpdatePayload`
893
846
 
894
847
  ```graphql
895
- """Payload returned by `workflowGraphUpdate`."""
848
+ """The result of `workflowGraphUpdate`."""
896
849
  type WorkflowGraphUpdatePayload {
897
850
  """
898
- The updated workflow with all changes applied, or null when `errors` is non-empty.
851
+ The workflow with every change applied. Null when `errors` is not empty.
899
852
  """
900
853
  workflow: Workflow
901
- """Validation errors. An empty array indicates success."""
854
+ """
855
+ The reasons the change set was refused, one per problem. Empty on success.
856
+ """
902
857
  errors: [UserError!]!
903
858
  """
904
- What the author should look at on a graph that saved. The change was written;
905
- each entry names a node that will not do what its author meant when the
906
- workflow runs: one no path from the origin reaches, a sleep of no length, or
907
- one calling an origin the project has not registered as an external API.
908
- Empty when `errors` is non-empty.
859
+ The nodes of a saved graph that will not run as meant: a node no path from the origin reaches, a
860
+ sleep of no length, or an `http` call to an origin the project has not registered as an
861
+ external API. Empty when `errors` is not empty.
909
862
  """
910
863
  warnings: [UserError!]!
911
864
  """
912
- The persisted id minted for each created node and edge. Empty when `errors` is non-empty.
865
+ The ID given to each created node and edge. Empty when `errors` is not empty.
913
866
  """
914
867
  idMappings: WorkflowIdMappings!
915
868
  }
@@ -919,12 +872,12 @@ type WorkflowGraphUpdatePayload {
919
872
 
920
873
  ```graphql
921
874
  """
922
- The persisted ids a change set's creates were given, keyed by the client ids that named them.
875
+ The IDs given to the nodes and edges a change set created, by `clientId`.
923
876
  """
924
877
  type WorkflowIdMappings {
925
- """Node id mappings, in the order the nodes were created."""
878
+ """The node IDs, in the order the nodes were created."""
926
879
  nodes: [IdMapping!]!
927
- """Edge id mappings, in the order the edges were created."""
880
+ """The edge IDs, in the order the edges were created."""
928
881
  edges: [IdMapping!]!
929
882
  }
930
883
  ```
@@ -932,9 +885,9 @@ type WorkflowIdMappings {
932
885
  ### `WorkflowUpdatePayload`
933
886
 
934
887
  ```graphql
935
- """Payload returned by `workflowUpdate`."""
888
+ """The result of `workflowUpdate`."""
936
889
  type WorkflowUpdatePayload {
937
- """The updated workflow."""
890
+ """The workflow."""
938
891
  workflow: Workflow
939
892
  }
940
893
  ```
@@ -942,9 +895,9 @@ type WorkflowUpdatePayload {
942
895
  ### `WorkflowDeleteInput`
943
896
 
944
897
  ```graphql
945
- """Input for `workflowDelete`."""
898
+ """The input of `workflowDelete`."""
946
899
  input WorkflowDeleteInput {
947
- """Workflow ID."""
900
+ """The ID of the workflow."""
948
901
  id: ID!
949
902
  }
950
903
  ```
@@ -952,9 +905,9 @@ input WorkflowDeleteInput {
952
905
  ### `WorkflowDeletePayload`
953
906
 
954
907
  ```graphql
955
- """Payload returned by `workflowDelete`."""
908
+ """The result of `workflowDelete`."""
956
909
  type WorkflowDeletePayload {
957
- """ID of the deleted workflow."""
910
+ """The ID of the deleted workflow."""
958
911
  deletedWorkflowId: ID
959
912
  }
960
913
  ```
@@ -963,23 +916,28 @@ type WorkflowDeletePayload {
963
916
 
964
917
  ```graphql
965
918
  """
966
- Input for `workflowTestRun`. Supply the field the workflow's trigger takes and
967
- omit the other.
919
+ The input of `workflowTestRun`. Give the field the trigger of the workflow takes, and omit the
920
+ other.
968
921
  """
969
922
  input WorkflowTestRunInput {
970
- """The workflow to test-run."""
923
+ """The ID of the workflow."""
971
924
  workflowId: ID!
972
925
  """
973
- For an `ACTION` trigger: the answers the action carries, keyed by field key.
974
- Templates and rules reach them as `trigger.action.responses.<key>`. Defaults to
975
- no answers. Refused on an `EVENT` trigger.
926
+ The answers the action carries, keyed by field key, for an `ACTION` trigger. Templates and rules
927
+ read them as `trigger.action.responses.<key>`. Defaults to none. Refused for an `EVENT` trigger.
976
928
  """
977
929
  responses: JSON
978
930
  """
979
- For an `EVENT` trigger: the entity the event is about, reached as
980
- `trigger.entityId`. Defaults to the workflow's workspace ID.
931
+ The ID of the entity the event is about, for an `EVENT` trigger, read as `trigger.entityId`.
932
+ Defaults to the ID of the workspace.
981
933
  """
982
934
  entityId: ID
935
+ """
936
+ Whether tools that write run for real, as the workflow, as in a live run. Labels set on the run
937
+ are held under its `test_` ID and removed when it ends, and the test run stops after 60 seconds.
938
+ Defaults to false.
939
+ """
940
+ executeWrites: Boolean = false
983
941
  }
984
942
  ```
985
943
 
@@ -988,9 +946,11 @@ input WorkflowTestRunInput {
988
946
  ```graphql
989
947
  """How a test run ended."""
990
948
  enum WorkflowTestRunStatus {
991
- """Every node the walk reached did its work, or held its write back."""
949
+ """Every node reached did its work or was skipped."""
992
950
  COMPLETED
993
- """A node failed and the walk stopped there."""
951
+ """
952
+ A node failed, or a test run that executes writes passed its 60-second limit.
953
+ """
994
954
  FAILED
995
955
  }
996
956
  ```
@@ -1000,13 +960,16 @@ enum WorkflowTestRunStatus {
1000
960
  ```graphql
1001
961
  """How one task of a test run ended."""
1002
962
  enum WorkflowTestRunTaskStatus {
1003
- """The node did its work. A tool that reads ran for real."""
963
+ """The node did its work. A tool that only reads ran for real."""
1004
964
  SUCCEEDED
1005
- """The node failed, and the walk stopped there."""
965
+ """
966
+ The node failed, which stopped the test run. A tool still running at the 60-second limit is
967
+ `FAILED`, and its writes can still land.
968
+ """
1006
969
  FAILED
1007
970
  """
1008
- The tool writes, so the test run did not run it. `input` holds what it would
1009
- have sent; it recorded nothing, so a later node addressing it finds nothing.
971
+ The tool writes and the test run does not execute writes, or the tool never runs in a test run.
972
+ `input` holds what it would have sent, and a later node that reads its output finds nothing.
1010
973
  """
1011
974
  SKIPPED
1012
975
  }
@@ -1015,41 +978,37 @@ enum WorkflowTestRunTaskStatus {
1015
978
  ### `WorkflowTestRunTask`
1016
979
 
1017
980
  ```graphql
1018
- """
1019
- One visit a test run made to a node. Never stored: it exists only in the payload that
1020
- returned it.
1021
- """
981
+ """One visit of a test run to a node. It is not stored."""
1022
982
  type WorkflowTestRunTask {
1023
- """The node's ID."""
983
+ """The ID of the node."""
1024
984
  nodeId: ID!
1025
985
  """
1026
- The node's place in the walk. The `ORIGIN` node is 0 and is not listed.
986
+ The position of the task in the test run, from 1. The `ORIGIN` node is 0 and is not listed.
1027
987
  """
1028
988
  index: Int!
1029
- """
1030
- Which visit of its node the task is, from 1. A walk that re-enters a node lists each visit.
1031
- """
989
+ """The number of the visit to the node, from 1."""
1032
990
  visit: Int!
1033
- """The node's kind. Never `ORIGIN`."""
991
+ """The kind of node. Never `ORIGIN`."""
1034
992
  type: WorkflowTaskType!
1035
- """The tool a `TOOL` node runs."""
993
+ """The tool of a `TOOL` node. Null for other kinds."""
1036
994
  tool: String
1037
995
  """How the task ended."""
1038
996
  status: WorkflowTestRunTaskStatus!
1039
997
  """
1040
- A `TOOL` node's arguments with every template resolved, as the tool received
1041
- them or, when `SKIPPED`, would have. A `SLEEP` node's `{ duration }`.
998
+ The arguments of a `TOOL` node with every template resolved, as the tool received them or would
999
+ have. For a `SLEEP` node, `{ duration }`.
1042
1000
  """
1043
1001
  input: JSON
1044
1002
  """
1045
- What a `TOOL` node recorded, in the form later nodes read it: a reference is a
1046
- `$ref` envelope naming the tool and what it resolves. Null when skipped.
1003
+ The output of a `TOOL` node, as later nodes read it; a reference is a `$ref` envelope that names
1004
+ the tool and what it resolves. An `action_response` node also carries its `payload`. Null when
1005
+ skipped.
1047
1006
  """
1048
1007
  output: JSON
1049
- """The branch a `CONDITION` node took."""
1008
+ """The branch a `CONDITION` node took. Null for other kinds."""
1050
1009
  branch: WorkflowEdgeHandle
1051
1010
  """
1052
- Why the task failed, naming the node, its tool and at most an argument.
1011
+ Why the task failed, naming the node, its tool and at most one argument. Null unless it failed.
1053
1012
  """
1054
1013
  failureMessage: String
1055
1014
  }
@@ -1059,20 +1018,21 @@ type WorkflowTestRunTask {
1059
1018
 
1060
1019
  ```graphql
1061
1020
  """
1062
- A workflow's draft graph walked once against a supplied trigger, with every
1063
- write held back.
1064
-
1065
- Tools that read (`search_leads`, `http` with `GET` or `HEAD`) run for real;
1066
- tools that write are `SKIPPED`. `SLEEP` nodes do not wait. Nothing is stored:
1067
- no run appears in `Workflow.runs`, no operation is recorded and no event is
1068
- published.
1021
+ One walk of the draft graph of a workflow against a given trigger. Tools that only read run for
1022
+ real, tools that write are `SKIPPED` unless the input sets `executeWrites`, and `SLEEP` nodes do
1023
+ not wait. With `executeWrites`, what the writes store and record remains.
1069
1024
  """
1070
1025
  type WorkflowTestRun {
1071
- """How the run ended."""
1026
+ """How the test run ended."""
1072
1027
  status: WorkflowTestRunStatus!
1073
- """Why the run stopped, when `status` is `FAILED`."""
1028
+ """
1029
+ Why the test run stopped: a run failure code such as `node_failed`, or `test_run_timed_out` when
1030
+ a test run that executes writes passed its 60-second limit. Null unless `status` is `FAILED`.
1031
+ """
1032
+ failureCode: String
1033
+ """Why the test run stopped. Null unless `status` is `FAILED`."""
1074
1034
  failureMessage: String
1075
- """Every node the walk reached after the `ORIGIN`, in order."""
1035
+ """Every node the test run reached after the `ORIGIN`, in order."""
1076
1036
  tasks: [WorkflowTestRunTask!]!
1077
1037
  }
1078
1038
  ```
@@ -1080,13 +1040,13 @@ type WorkflowTestRun {
1080
1040
  ### `WorkflowTestRunPayload`
1081
1041
 
1082
1042
  ```graphql
1083
- """Payload returned by `workflowTestRun`."""
1043
+ """The result of `workflowTestRun`."""
1084
1044
  type WorkflowTestRunPayload {
1085
- """The test run, or null when `userErrors` is non-empty."""
1045
+ """The test run. Null when `userErrors` is not empty."""
1086
1046
  testRun: WorkflowTestRun
1087
1047
  """
1088
- Why the input cannot start this workflow. Codes: `RESPONSES_NOT_ACCEPTED`,
1089
- `INVALID_RESPONSES`, `ACTION_DELETED`, `TRIGGER_UNUSABLE`.
1048
+ The reasons the input cannot start the workflow, with codes `RESPONSES_NOT_ACCEPTED`,
1049
+ `INVALID_RESPONSES`, `ACTION_DELETED` or `TRIGGER_UNUSABLE`.
1090
1050
  """
1091
1051
  userErrors: [UserError!]!
1092
1052
  }
@@ -1095,16 +1055,13 @@ type WorkflowTestRunPayload {
1095
1055
  ### `WorkflowSortKeys`
1096
1056
 
1097
1057
  ```graphql
1098
- """
1099
- Sort keys for `workflows(...)`. Pair with `reverse: true` to flip the order
1100
- (`NAME` + `reverse: false` sorts A→Z; `CREATED_AT` + `reverse: true` is newest-first).
1101
- """
1058
+ """The orders `workflows` can sort by. `reverse: true` flips the order."""
1102
1059
  enum WorkflowSortKeys {
1103
- """Sort by `name` (alphabetical)."""
1060
+ """By `name`, A to Z."""
1104
1061
  NAME
1105
- """Sort by `createdAt`."""
1062
+ """By `createdAt`, oldest first."""
1106
1063
  CREATED_AT
1107
- """Sort by `updatedAt`."""
1064
+ """By `updatedAt`, oldest first."""
1108
1065
  UPDATED_AT
1109
1066
  }
1110
1067
  ```