forked from windmill-labs/windmill
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenflow.openapi.yaml
More file actions
1013 lines (980 loc) · 33.8 KB
/
openflow.openapi.yaml
File metadata and controls
1013 lines (980 loc) · 33.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
openapi: '3.0.3'
info:
version: 1.624.0
title: OpenFlow Spec
contact:
name: Ruben Fiszel
email: ruben@windmill.dev
url: https://windmill.dev
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
paths: {}
externalDocs:
description: documentation portal
url: https://windmill.dev
components:
schemas:
OpenFlow:
type: object
description: Top-level flow definition containing metadata, configuration, and the flow structure
properties:
summary:
type: string
description: Short description of what this flow does
description:
type: string
description: Detailed documentation for this flow
value:
$ref: '#/components/schemas/FlowValue'
schema:
type: object
description: JSON Schema for flow inputs. Use this to define input parameters, their types, defaults, and validation. For resource inputs, set type to 'object' and format to 'resource-<type>' (e.g., 'resource-stripe')
required:
- summary
- value
FlowValue:
type: object
description: The flow structure containing modules and optional preprocessor/failure handlers
properties:
modules:
type: array
description: Array of steps that execute in sequence. Each step can be a script, subflow, loop, or branch
items:
$ref: '#/components/schemas/FlowModule'
failure_module:
description: Special module that executes when the flow fails. Receives error object with message, name, stack, and step_id. Must have id 'failure'. Only supports script/rawscript types
$ref: '#/components/schemas/FlowModule'
preprocessor_module:
description: Special module that runs before the first step on external triggers. Must have id 'preprocessor'. Only supports script/rawscript types. Cannot reference other step results
$ref: '#/components/schemas/FlowModule'
same_worker:
type: boolean
description: If true, all steps run on the same worker for better performance
concurrent_limit:
type: number
description: Maximum number of concurrent executions of this flow
concurrency_key:
type: string
description: Expression to group concurrent executions (e.g., by user ID)
concurrency_time_window_s:
type: number
description: Time window in seconds for concurrent_limit
debounce_delay_s:
type: number
description: Delay in seconds to debounce flow executions
debounce_key:
type: string
description: Expression to group debounced executions
debounce_args_to_accumulate:
type: array
description: Arguments to accumulate across debounced executions
items:
type: string
max_total_debouncing_time:
type: number
description: Maximum total time in seconds that a job can be debounced
max_total_debounces_amount:
type: number
description: Maximum number of times a job can be debounced
skip_expr:
type: string
description: JavaScript expression to conditionally skip the entire flow
cache_ttl:
type: number
description: Cache duration in seconds for flow results
cache_ignore_s3_path:
type: boolean
flow_env:
type: object
description: Environment variables available to all steps
additionalProperties:
type: string
priority:
type: number
description: Execution priority (higher numbers run first)
early_return:
type: string
description: JavaScript expression to return early from the flow
chat_input_enabled:
type: boolean
description: Whether this flow accepts chat-style input
notes:
type: array
description: Sticky notes attached to the flow
items:
$ref: '#/components/schemas/FlowNote'
required:
- modules
Retry:
type: object
description: Retry configuration for failed module executions
properties:
constant:
type: object
description: Retry with constant delay between attempts
properties:
attempts:
type: integer
description: Number of retry attempts
seconds:
type: integer
description: Seconds to wait between retries
exponential:
type: object
description: Retry with exponential backoff (delay doubles each time)
properties:
attempts:
type: integer
description: Number of retry attempts
multiplier:
type: integer
description: Multiplier for exponential backoff
seconds:
type: integer
minimum: 1
description: Initial delay in seconds
random_factor:
type: integer
minimum: 0
maximum: 100
description: Random jitter percentage (0-100) to avoid thundering herd
retry_if:
$ref: '#/components/schemas/RetryIf'
FlowNote:
type: object
description: A sticky note attached to a flow for documentation and annotation
properties:
id:
type: string
description: Unique identifier for the note
text:
type: string
description: Content of the note
position:
type: object
description: Position of the note in the flow editor
properties:
x:
type: number
description: X coordinate
y:
type: number
description: Y coordinate
required:
- x
- y
size:
type: object
description: Size of the note in the flow editor
properties:
width:
type: number
description: Width in pixels
height:
type: number
description: Height in pixels
required:
- width
- height
color:
type: string
description: Color of the note (e.g., "yellow", "#ffff00")
type:
type: string
enum: [free, group]
description: Type of note - 'free' for standalone notes, 'group' for notes that group other nodes
locked:
type: boolean
default: false
description: Whether the note is locked and cannot be edited or moved
contained_node_ids:
type: array
items:
type: string
description: For group notes, the IDs of nodes contained within this group
required:
- id
- text
- color
- type
RetryIf:
type: object
description: Conditional retry based on error or result
properties:
expr:
type: string
description: JavaScript expression that returns true to retry. Has access to 'result' and 'error' variables
required:
- expr
StopAfterIf:
type: object
description: Early termination condition for a module
properties:
skip_if_stopped:
type: boolean
description: If true, following steps are skipped when this condition triggers
expr:
type: string
description: JavaScript expression evaluated after the module runs. Can use 'result' (step's result) or 'flow_input'. Return true to stop
error_message:
type: string
description: Custom error message shown when stopping
required:
- expr
FlowModule:
type: object
description: A single step in a flow. Can be a script, subflow, loop, or branch
properties:
id:
type: string
description: Unique identifier for this step. Used to reference results via 'results.step_id'. Must be a valid identifier (alphanumeric, underscore, hyphen)
value:
$ref: '#/components/schemas/FlowModuleValue'
stop_after_if:
description: Early termination condition evaluated after this step completes
$ref: '#/components/schemas/StopAfterIf'
stop_after_all_iters_if:
description: For loops only - early termination condition evaluated after all iterations complete
$ref: '#/components/schemas/StopAfterIf'
skip_if:
type: object
description: Conditionally skip this step based on previous results or flow inputs
properties:
expr:
type: string
description: JavaScript expression that returns true to skip. Can use 'flow_input' or 'results.<step_id>'
required:
- expr
sleep:
description: Delay before executing this step (in seconds or as expression)
$ref: '#/components/schemas/InputTransform'
cache_ttl:
type: number
description: Cache duration in seconds for this step's results
cache_ignore_s3_path:
type: boolean
timeout:
description: Maximum execution time in seconds (static value or expression)
$ref: '#/components/schemas/InputTransform'
delete_after_use:
type: boolean
description: If true, this step's result is deleted after use to save memory
summary:
type: string
description: Short description of what this step does
mock:
type: object
description: Mock configuration for testing without executing the actual step
properties:
enabled:
type: boolean
description: If true, return mock value instead of executing
return_value:
description: Value to return when mocked
suspend:
type: object
description: Configuration for approval/resume steps that wait for user input
properties:
required_events:
type: integer
description: Number of approvals required before continuing
timeout:
type: integer
description: Timeout in seconds before auto-continuing or canceling
resume_form:
type: object
description: Form schema for collecting input when resuming
properties:
schema:
type: object
description: JSON Schema for the resume form
user_auth_required:
type: boolean
description: If true, only authenticated users can approve
user_groups_required:
description: Expression or list of groups that can approve
$ref: '#/components/schemas/InputTransform'
self_approval_disabled:
type: boolean
description: If true, the user who started the flow cannot approve
hide_cancel:
type: boolean
description: If true, hide the cancel button on the approval form
continue_on_disapprove_timeout:
type: boolean
description: If true, continue flow on timeout instead of canceling
priority:
type: number
description: Execution priority for this step (higher numbers run first)
continue_on_error:
type: boolean
description: If true, flow continues even if this step fails
retry:
description: Retry configuration if this step fails
$ref: '#/components/schemas/Retry'
required:
- value
- id
InputTransform:
description: Maps input parameters for a step. Can be a static value or a JavaScript expression that references previous results or flow inputs
oneOf:
- $ref: '#/components/schemas/StaticTransform'
- $ref: '#/components/schemas/JavascriptTransform'
- $ref: '#/components/schemas/AiTransform'
discriminator:
propertyName: type
mapping:
static: '#/components/schemas/StaticTransform'
javascript: '#/components/schemas/JavascriptTransform'
ai: '#/components/schemas/AiTransform'
StaticTransform:
type: object
description: Static value passed directly to the step. Use for hardcoded values or resource references like '$res:path/to/resource'
properties:
value:
description: The static value. For resources, use format '$res:path/to/resource'
type:
type: string
enum:
- static
required:
- type
JavascriptTransform:
type: object
description: JavaScript expression evaluated at runtime. Can reference previous step results via 'results.step_id' or flow inputs via 'flow_input.property'. Inside loops, use 'flow_input.iter.value' for the current iteration value
properties:
expr:
type: string
description: JavaScript expression returning the value. Available variables - results (object with all previous step results), flow_input (flow inputs), flow_input.iter (in loops)
type:
type: string
enum:
- javascript
required:
- expr
- type
AiTransform:
type: object
description: Value resolved by the AI runtime for this input. The AI engine decides how to satisfy the parameter.
properties:
type:
type: string
enum:
- ai
required:
- type
FlowModuleValue:
description: The actual implementation of a flow step. Can be a script (inline or referenced), subflow, loop, branch, or special module type
oneOf:
- $ref: '#/components/schemas/RawScript'
- $ref: '#/components/schemas/PathScript'
- $ref: '#/components/schemas/PathFlow'
- $ref: '#/components/schemas/ForloopFlow'
- $ref: '#/components/schemas/WhileloopFlow'
- $ref: '#/components/schemas/BranchOne'
- $ref: '#/components/schemas/BranchAll'
- $ref: '#/components/schemas/Identity'
- $ref: '#/components/schemas/AiAgent'
discriminator:
propertyName: type
mapping:
rawscript: '#/components/schemas/RawScript'
script: '#/components/schemas/PathScript'
flow: '#/components/schemas/PathFlow'
forloopflow: '#/components/schemas/ForloopFlow'
whileloopflow: '#/components/schemas/WhileloopFlow'
branchone: '#/components/schemas/BranchOne'
branchall: '#/components/schemas/BranchAll'
identity: '#/components/schemas/Identity'
aiagent: '#/components/schemas/AiAgent'
RawScript:
type: object
description: Inline script with code defined directly in the flow. Use 'bun' as default language if unspecified. The script receives arguments from input_transforms
properties:
# to be made required once migration is over
input_transforms:
type: object
description: Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments
additionalProperties:
$ref: '#/components/schemas/InputTransform'
content:
type: string
description: The script source code. Should export a 'main' function
language:
type: string
description: Programming language for this script
enum:
- deno
- bun
- python3
- go
- bash
- powershell
- postgresql
- mysql
- bigquery
- snowflake
- mssql
- oracledb
- graphql
- nativets
- php
# TODO: Add missing languages
path:
type: string
description: Optional path for saving this script
lock:
type: string
description: Lock file content for dependencies
type:
type: string
enum:
- rawscript
tag:
type: string
description: Worker group tag for execution routing
concurrent_limit:
type: number
description: Maximum concurrent executions of this script
concurrency_time_window_s:
type: number
description: Time window for concurrent_limit
custom_concurrency_key:
type: string
description: Custom key for grouping concurrent executions
is_trigger:
type: boolean
description: If true, this script is a trigger that can start the flow
assets:
type: array
description: External resources this script accesses (S3 objects, resources, etc.)
items:
type: object
required:
- path
- kind
properties:
path:
type: string
description: Path to the asset
kind:
type: string
description: Type of asset
enum:
- s3object
- resource
- ducklake
- datatable
access_type:
type: string
description: Access level for this asset
enum: [r, w, rw]
alt_access_type:
type: string
description: Alternative access level
enum: [r, w, rw]
required:
- type
- content
- language
- input_transforms
PathScript:
type: object
description: Reference to an existing script by path. Use this when calling a previously saved script instead of writing inline code
properties:
input_transforms:
type: object
description: Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments
additionalProperties:
$ref: '#/components/schemas/InputTransform'
path:
type: string
description: Path to the script in the workspace (e.g., 'f/scripts/send_email')
hash:
type: string
description: Optional specific version hash of the script to use
type:
type: string
enum:
- script
tag_override:
type: string
description: Override the script's default worker group tag
is_trigger:
type: boolean
description: If true, this script is a trigger that can start the flow
required:
- type
- path
- input_transforms
PathFlow:
type: object
description: Reference to an existing flow by path. Use this to call another flow as a subflow
properties:
input_transforms:
type: object
description: Map of parameter names to their values (static or JavaScript expressions). These become the subflow's input arguments
additionalProperties:
$ref: '#/components/schemas/InputTransform'
path:
type: string
description: Path to the flow in the workspace (e.g., 'f/flows/process_user')
type:
type: string
enum:
- flow
required:
- type
- path
- input_transforms
ForloopFlow:
type: object
description: Executes nested modules in a loop over an iterator. Inside the loop, use 'flow_input.iter.value' to access the current iteration value, and 'flow_input.iter.index' for the index. Supports parallel execution for better performance on I/O-bound operations
properties:
modules:
type: array
description: Steps to execute for each iteration. These can reference the iteration value via 'flow_input.iter.value'
items:
$ref: '#/components/schemas/FlowModule'
iterator:
description: JavaScript expression that returns an array to iterate over. Can reference 'results.step_id' or 'flow_input'
$ref: '#/components/schemas/InputTransform'
skip_failures:
type: boolean
description: If true, iteration failures don't stop the loop. Failed iterations return null
type:
type: string
enum:
- forloopflow
parallel:
type: boolean
description: If true, iterations run concurrently (faster for I/O-bound operations). Use with parallelism to control concurrency
parallelism:
description: Maximum number of concurrent iterations when parallel=true. Limits resource usage. Can be static number or expression
$ref: '#/components/schemas/InputTransform'
squash:
type: boolean
required:
- modules
- iterator
- skip_failures
- type
WhileloopFlow:
type: object
description: Executes nested modules repeatedly while a condition is true. The loop checks the condition after each iteration. Use stop_after_if on modules to control loop termination
properties:
modules:
type: array
description: Steps to execute in each iteration. Use stop_after_if to control when the loop ends
items:
$ref: '#/components/schemas/FlowModule'
skip_failures:
type: boolean
description: If true, iteration failures don't stop the loop. Failed iterations return null
type:
type: string
enum:
- whileloopflow
parallel:
type: boolean
description: If true, iterations run concurrently (use with caution in while loops)
parallelism:
description: Maximum number of concurrent iterations when parallel=true
$ref: '#/components/schemas/InputTransform'
squash:
type: boolean
required:
- modules
- skip_failures
- type
BranchOne:
type: object
description: Conditional branching where only the first matching branch executes. Branches are evaluated in order, and the first one with a true expression runs. If no branches match, the default branch executes
properties:
branches:
type: array
description: Array of branches to evaluate in order. The first branch with expr evaluating to true executes
items:
type: object
properties:
summary:
type: string
description: Short description of this branch condition
expr:
type: string
description: JavaScript expression that returns boolean. Can use 'results.step_id' or 'flow_input'. First true expr wins
modules:
type: array
description: Steps to execute if this branch's expr is true
items:
$ref: '#/components/schemas/FlowModule'
required:
- modules
- expr
default:
type: array
description: Steps to execute if no branch expressions match
items:
$ref: '#/components/schemas/FlowModule'
type:
type: string
enum:
- branchone
required:
- branches
- default
- type
BranchAll:
type: object
description: Parallel branching where all branches execute simultaneously. Unlike BranchOne, all branches run regardless of conditions. Useful for executing independent tasks concurrently
properties:
branches:
type: array
description: Array of branches that all execute (either in parallel or sequentially)
items:
type: object
properties:
summary:
type: string
description: Short description of this branch's purpose
skip_failure:
type: boolean
description: If true, failure in this branch doesn't fail the entire flow
modules:
type: array
description: Steps to execute in this branch
items:
$ref: '#/components/schemas/FlowModule'
required:
- modules
type:
type: string
enum:
- branchall
parallel:
type: boolean
description: If true, all branches execute concurrently. If false, they execute sequentially
required:
- branches
- type
AgentTool:
type: object
description: A tool available to an AI agent. Can be a flow module or an external MCP (Model Context Protocol) tool
properties:
id:
type: string
description: Unique identifier for this tool. Cannot contain spaces - use underscores instead (e.g., 'get_user_data' not 'get user data')
summary:
type: string
description: Short description of what this tool does (shown to the AI)
value:
$ref: '#/components/schemas/ToolValue'
required:
- id
- value
ToolValue:
description: The implementation of a tool. Can be a flow module (script/flow) or an MCP tool reference
oneOf:
- $ref: '#/components/schemas/FlowModuleTool'
- $ref: '#/components/schemas/McpToolValue'
- $ref: '#/components/schemas/WebsearchToolValue'
discriminator:
propertyName: tool_type
mapping:
flowmodule: '#/components/schemas/FlowModuleTool'
mcp: '#/components/schemas/McpToolValue'
websearch: '#/components/schemas/WebsearchToolValue'
FlowModuleTool:
description: A tool implemented as a flow module (script, flow, etc.). The AI can call this like any other flow module
allOf:
- type: object
properties:
tool_type:
type: string
enum:
- flowmodule
required:
- tool_type
- $ref: '#/components/schemas/FlowModuleValue'
WebsearchToolValue:
type: object
description: A tool implemented as a websearch tool. The AI can call this like any other websearch tool
properties:
tool_type:
type: string
enum:
- websearch
required:
- tool_type
McpToolValue:
type: object
description: Reference to an external MCP (Model Context Protocol) tool. The AI can call tools from MCP servers
properties:
tool_type:
type: string
enum:
- mcp
resource_path:
type: string
description: Path to the MCP resource/server configuration
include_tools:
type: array
description: Whitelist of specific tools to include from this MCP server
items:
type: string
exclude_tools:
type: array
description: Blacklist of tools to exclude from this MCP server
items:
type: string
required:
- tool_type
- resource_path
AiAgent:
type: object
description: AI agent step that can use tools to accomplish tasks. The agent receives inputs and can call any of its configured tools to complete the task
properties:
input_transforms:
type: object
description: Input parameters for the AI agent mapped to their values
properties:
provider:
$ref: '#/components/schemas/InputTransform'
output_type:
$ref: '#/components/schemas/InputTransform'
user_message:
$ref: '#/components/schemas/InputTransform'
system_prompt:
$ref: '#/components/schemas/InputTransform'
streaming:
$ref: '#/components/schemas/InputTransform'
memory:
$ref: '#/components/schemas/InputTransform'
output_schema:
$ref: '#/components/schemas/InputTransform'
user_images:
$ref: '#/components/schemas/InputTransform'
max_completion_tokens:
$ref: '#/components/schemas/InputTransform'
temperature:
$ref: '#/components/schemas/InputTransform'
required:
- provider
- user_message
- output_type
tools:
type: array
description: Array of tools the agent can use. The agent decides which tools to call based on the task
items:
$ref: '#/components/schemas/AgentTool'
type:
type: string
enum:
- aiagent
parallel:
type: boolean
description: If true, the agent can execute multiple tool calls in parallel
required:
- tools
- type
- input_transforms
Identity:
type: object
description: Pass-through module that returns its input unchanged. Useful for flow structure or as a placeholder
properties:
type:
type: string
enum:
- identity
flow:
type: boolean
description: If true, marks this as a flow identity (special handling)
required:
- type
FlowStatus:
type: object
properties:
step:
type: integer
modules:
type: array
items:
$ref: '#/components/schemas/FlowStatusModule'
user_states:
additionalProperties: true
preprocessor_module:
allOf:
- $ref: '#/components/schemas/FlowStatusModule'
failure_module:
allOf:
- $ref: '#/components/schemas/FlowStatusModule'
- type: object
properties:
parent_module:
type: string
retry:
type: object
properties:
fail_count:
type: integer
failed_jobs:
type: array
items:
type: string
format: uuid
required:
- step
- modules
- failure_module
FlowStatusModule:
type: object
properties:
type:
type: string
enum:
- WaitingForPriorSteps
- WaitingForEvents
- WaitingForExecutor
- InProgress
- Success
- Failure
id:
type: string
job:
type: string
format: uuid
count:
type: integer
progress:
type: integer
iterator:
type: object
properties:
index:
type: integer
itered:
type: array
items: {}
itered_len:
type: integer
args: {}
flow_jobs:
type: array
items:
type: string
flow_jobs_success:
type: array
items:
type: boolean
flow_jobs_duration:
type: object
properties:
started_at:
type: array
items:
type: string
duration_ms:
type: array
items:
type: integer
branch_chosen:
type: object
properties:
type:
type: string
enum: [branch, default]
branch:
type: integer
required:
- type
branchall:
type: object
properties:
branch:
type: integer
len:
type: integer
required:
- branch
- len
approvers:
type: array
items:
type: object
properties:
resume_id:
type: integer
approver:
type: string
required:
- resume_id
- approver
failed_retries:
type: array
items:
type: string
format: uuid
skipped:
type: boolean
agent_actions:
type: array
items:
type: object
oneOf:
- type: object
properties:
job_id:
type: string
format: uuid
function_name:
type: string
type:
type: string
enum: [tool_call]
module_id:
type: string
required:
- job_id
- function_name
- type
- module_id
- type: object
properties:
call_id:
type: string
format: uuid
function_name:
type: string
resource_path:
type: string
type:
type: string
enum: [mcp_tool_call]
arguments:
type: object
required:
- call_id
- function_name
- resource_path
- type
- type: object
properties:
type:
type: string
enum: [web_search]
required:
- type