@windmill-labs/shared-utils 1.0.5 → 1.0.12

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.
@@ -1,27 +1,97 @@
1
+ /**
2
+ * Top-level flow definition containing metadata, configuration, and the flow structure
3
+ */
1
4
  export type OpenFlow = {
5
+ /**
6
+ * Short description of what this flow does
7
+ */
2
8
  summary: string;
9
+ /**
10
+ * Detailed documentation for this flow
11
+ */
3
12
  description?: string;
4
13
  value: FlowValue;
14
+ /**
15
+ * 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')
16
+ */
5
17
  schema?: {
6
18
  [key: string]: unknown;
7
19
  };
8
20
  };
21
+ /**
22
+ * The flow structure containing modules and optional preprocessor/failure handlers
23
+ */
9
24
  export type FlowValue = {
25
+ /**
26
+ * Array of steps that execute in sequence. Each step can be a script, subflow, loop, or branch
27
+ */
10
28
  modules: Array<FlowModule>;
29
+ /**
30
+ * 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
31
+ */
11
32
  failure_module?: FlowModule;
33
+ /**
34
+ * 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
35
+ */
12
36
  preprocessor_module?: FlowModule;
37
+ /**
38
+ * If true, all steps run on the same worker for better performance
39
+ */
13
40
  same_worker?: boolean;
41
+ /**
42
+ * Maximum number of concurrent executions of this flow
43
+ */
14
44
  concurrent_limit?: number;
45
+ /**
46
+ * Expression to group concurrent executions (e.g., by user ID)
47
+ */
15
48
  concurrency_key?: string;
49
+ /**
50
+ * Time window in seconds for concurrent_limit
51
+ */
16
52
  concurrency_time_window_s?: number;
53
+ /**
54
+ * Delay in seconds to debounce flow executions
55
+ */
17
56
  debounce_delay_s?: number;
57
+ /**
58
+ * Expression to group debounced executions
59
+ */
18
60
  debounce_key?: string;
61
+ /**
62
+ * Arguments to accumulate across debounced executions
63
+ */
64
+ debounce_args_to_accumulate?: Array<(string)>;
65
+ /**
66
+ * Maximum total time in seconds that a job can be debounced
67
+ */
68
+ max_total_debouncing_time?: number;
69
+ /**
70
+ * Maximum number of times a job can be debounced
71
+ */
72
+ max_total_debounces_amount?: number;
73
+ /**
74
+ * JavaScript expression to conditionally skip the entire flow
75
+ */
19
76
  skip_expr?: string;
77
+ /**
78
+ * Cache duration in seconds for flow results
79
+ */
20
80
  cache_ttl?: number;
81
+ cache_ignore_s3_path?: boolean;
82
+ /**
83
+ * Environment variables available to all steps
84
+ */
21
85
  flow_env?: {
22
86
  [key: string]: (string);
23
87
  };
88
+ /**
89
+ * Execution priority (higher numbers run first)
90
+ */
24
91
  priority?: number;
92
+ /**
93
+ * JavaScript expression to return early from the flow
94
+ */
25
95
  early_return?: string;
26
96
  /**
27
97
  * Whether this flow accepts chat-style input
@@ -32,163 +102,501 @@ export type FlowValue = {
32
102
  */
33
103
  notes?: Array<FlowNote>;
34
104
  };
105
+ /**
106
+ * Retry configuration for failed module executions
107
+ */
35
108
  export type Retry = {
109
+ /**
110
+ * Retry with constant delay between attempts
111
+ */
36
112
  constant?: {
113
+ /**
114
+ * Number of retry attempts
115
+ */
37
116
  attempts?: number;
117
+ /**
118
+ * Seconds to wait between retries
119
+ */
38
120
  seconds?: number;
39
121
  };
122
+ /**
123
+ * Retry with exponential backoff (delay doubles each time)
124
+ */
40
125
  exponential?: {
126
+ /**
127
+ * Number of retry attempts
128
+ */
41
129
  attempts?: number;
130
+ /**
131
+ * Multiplier for exponential backoff
132
+ */
42
133
  multiplier?: number;
134
+ /**
135
+ * Initial delay in seconds
136
+ */
43
137
  seconds?: number;
138
+ /**
139
+ * Random jitter percentage (0-100) to avoid thundering herd
140
+ */
44
141
  random_factor?: number;
45
142
  };
143
+ /**
144
+ * Conditional retry based on error or result
145
+ */
46
146
  retry_if?: {
147
+ /**
148
+ * JavaScript expression that returns true to retry. Has access to 'result' and 'error' variables
149
+ */
47
150
  expr: string;
48
151
  };
49
152
  };
153
+ /**
154
+ * Early termination condition for a module
155
+ */
50
156
  export type StopAfterIf = {
157
+ /**
158
+ * If true, following steps are skipped when this condition triggers
159
+ */
51
160
  skip_if_stopped?: boolean;
161
+ /**
162
+ * JavaScript expression evaluated after the module runs. Can use 'result' (step's result) or 'flow_input'. Return true to stop
163
+ */
52
164
  expr: string;
165
+ /**
166
+ * Custom error message shown when stopping
167
+ */
53
168
  error_message?: string;
54
169
  };
170
+ /**
171
+ * A single step in a flow. Can be a script, subflow, loop, or branch
172
+ */
55
173
  export type FlowModule = {
174
+ /**
175
+ * Unique identifier for this step. Used to reference results via 'results.step_id'. Must be a valid identifier (alphanumeric, underscore, hyphen)
176
+ */
56
177
  id: string;
57
178
  value: FlowModuleValue;
179
+ /**
180
+ * Early termination condition evaluated after this step completes
181
+ */
58
182
  stop_after_if?: StopAfterIf;
183
+ /**
184
+ * For loops only - early termination condition evaluated after all iterations complete
185
+ */
59
186
  stop_after_all_iters_if?: StopAfterIf;
187
+ /**
188
+ * Conditionally skip this step based on previous results or flow inputs
189
+ */
60
190
  skip_if?: {
191
+ /**
192
+ * JavaScript expression that returns true to skip. Can use 'flow_input' or 'results.<step_id>'
193
+ */
61
194
  expr: string;
62
195
  };
196
+ /**
197
+ * Delay before executing this step (in seconds or as expression)
198
+ */
63
199
  sleep?: InputTransform;
200
+ /**
201
+ * Cache duration in seconds for this step's results
202
+ */
64
203
  cache_ttl?: number;
204
+ cache_ignore_s3_path?: boolean;
205
+ /**
206
+ * Maximum execution time in seconds (static value or expression)
207
+ */
65
208
  timeout?: InputTransform;
209
+ /**
210
+ * If true, this step's result is deleted after use to save memory
211
+ */
66
212
  delete_after_use?: boolean;
213
+ /**
214
+ * Short description of what this step does
215
+ */
67
216
  summary?: string;
217
+ /**
218
+ * Mock configuration for testing without executing the actual step
219
+ */
68
220
  mock?: {
221
+ /**
222
+ * If true, return mock value instead of executing
223
+ */
69
224
  enabled?: boolean;
225
+ /**
226
+ * Value to return when mocked
227
+ */
70
228
  return_value?: unknown;
71
229
  };
230
+ /**
231
+ * Configuration for approval/resume steps that wait for user input
232
+ */
72
233
  suspend?: {
234
+ /**
235
+ * Number of approvals required before continuing
236
+ */
73
237
  required_events?: number;
238
+ /**
239
+ * Timeout in seconds before auto-continuing or canceling
240
+ */
74
241
  timeout?: number;
242
+ /**
243
+ * Form schema for collecting input when resuming
244
+ */
75
245
  resume_form?: {
246
+ /**
247
+ * JSON Schema for the resume form
248
+ */
76
249
  schema?: {
77
250
  [key: string]: unknown;
78
251
  };
79
252
  };
253
+ /**
254
+ * If true, only authenticated users can approve
255
+ */
80
256
  user_auth_required?: boolean;
257
+ /**
258
+ * Expression or list of groups that can approve
259
+ */
81
260
  user_groups_required?: InputTransform;
261
+ /**
262
+ * If true, the user who started the flow cannot approve
263
+ */
82
264
  self_approval_disabled?: boolean;
265
+ /**
266
+ * If true, hide the cancel button on the approval form
267
+ */
83
268
  hide_cancel?: boolean;
269
+ /**
270
+ * If true, continue flow on timeout instead of canceling
271
+ */
84
272
  continue_on_disapprove_timeout?: boolean;
85
273
  };
274
+ /**
275
+ * Execution priority for this step (higher numbers run first)
276
+ */
86
277
  priority?: number;
278
+ /**
279
+ * If true, flow continues even if this step fails
280
+ */
87
281
  continue_on_error?: boolean;
282
+ /**
283
+ * Retry configuration if this step fails
284
+ */
88
285
  retry?: Retry;
89
286
  };
287
+ /**
288
+ * Maps input parameters for a step. Can be a static value or a JavaScript expression that references previous results or flow inputs
289
+ */
90
290
  export type InputTransform = StaticTransform | JavascriptTransform;
291
+ /**
292
+ * Static value passed directly to the step. Use for hardcoded values or resource references like '$res:path/to/resource'
293
+ */
91
294
  export type StaticTransform = {
295
+ /**
296
+ * The static value. For resources, use format '$res:path/to/resource'
297
+ */
92
298
  value?: unknown;
93
299
  type: 'static';
94
300
  };
301
+ /**
302
+ * 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
303
+ */
95
304
  export type JavascriptTransform = {
305
+ /**
306
+ * JavaScript expression returning the value. Available variables - results (object with all previous step results), flow_input (flow inputs), flow_input.iter (in loops)
307
+ */
96
308
  expr: string;
97
309
  type: 'javascript';
98
310
  };
311
+ /**
312
+ * The actual implementation of a flow step. Can be a script (inline or referenced), subflow, loop, branch, or special module type
313
+ */
99
314
  export type FlowModuleValue = RawScript | PathScript | PathFlow | ForloopFlow | WhileloopFlow | BranchOne | BranchAll | Identity | AiAgent;
315
+ /**
316
+ * Inline script with code defined directly in the flow. Use 'bun' as default language if unspecified. The script receives arguments from input_transforms
317
+ */
100
318
  export type RawScript = {
319
+ /**
320
+ * Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments
321
+ */
101
322
  input_transforms: {
102
323
  [key: string]: InputTransform;
103
324
  };
325
+ /**
326
+ * The script source code. Should export a 'main' function
327
+ */
104
328
  content: string;
329
+ /**
330
+ * Programming language for this script
331
+ */
105
332
  language: 'deno' | 'bun' | 'python3' | 'go' | 'bash' | 'powershell' | 'postgresql' | 'mysql' | 'bigquery' | 'snowflake' | 'mssql' | 'oracledb' | 'graphql' | 'nativets' | 'php';
333
+ /**
334
+ * Optional path for saving this script
335
+ */
106
336
  path?: string;
337
+ /**
338
+ * Lock file content for dependencies
339
+ */
107
340
  lock?: string;
108
341
  type: 'rawscript';
342
+ /**
343
+ * Worker group tag for execution routing
344
+ */
109
345
  tag?: string;
346
+ /**
347
+ * Maximum concurrent executions of this script
348
+ */
110
349
  concurrent_limit?: number;
350
+ /**
351
+ * Time window for concurrent_limit
352
+ */
111
353
  concurrency_time_window_s?: number;
354
+ /**
355
+ * Custom key for grouping concurrent executions
356
+ */
112
357
  custom_concurrency_key?: string;
358
+ /**
359
+ * If true, this script is a trigger that can start the flow
360
+ */
113
361
  is_trigger?: boolean;
362
+ /**
363
+ * External resources this script accesses (S3 objects, resources, etc.)
364
+ */
114
365
  assets?: Array<{
366
+ /**
367
+ * Path to the asset
368
+ */
115
369
  path: string;
116
- kind: 's3object' | 'resource' | 'ducklake';
370
+ /**
371
+ * Type of asset
372
+ */
373
+ kind: 's3object' | 'resource' | 'ducklake' | 'datatable';
374
+ /**
375
+ * Access level for this asset
376
+ */
117
377
  access_type?: 'r' | 'w' | 'rw';
378
+ /**
379
+ * Alternative access level
380
+ */
118
381
  alt_access_type?: 'r' | 'w' | 'rw';
119
382
  }>;
120
383
  };
384
+ /**
385
+ * Reference to an existing script by path. Use this when calling a previously saved script instead of writing inline code
386
+ */
121
387
  export type PathScript = {
388
+ /**
389
+ * Map of parameter names to their values (static or JavaScript expressions). These become the script's input arguments
390
+ */
122
391
  input_transforms: {
123
392
  [key: string]: InputTransform;
124
393
  };
394
+ /**
395
+ * Path to the script in the workspace (e.g., 'f/scripts/send_email')
396
+ */
125
397
  path: string;
398
+ /**
399
+ * Optional specific version hash of the script to use
400
+ */
126
401
  hash?: string;
127
402
  type: 'script';
403
+ /**
404
+ * Override the script's default worker group tag
405
+ */
128
406
  tag_override?: string;
407
+ /**
408
+ * If true, this script is a trigger that can start the flow
409
+ */
129
410
  is_trigger?: boolean;
130
411
  };
412
+ /**
413
+ * Reference to an existing flow by path. Use this to call another flow as a subflow
414
+ */
131
415
  export type PathFlow = {
416
+ /**
417
+ * Map of parameter names to their values (static or JavaScript expressions). These become the subflow's input arguments
418
+ */
132
419
  input_transforms: {
133
420
  [key: string]: InputTransform;
134
421
  };
422
+ /**
423
+ * Path to the flow in the workspace (e.g., 'f/flows/process_user')
424
+ */
135
425
  path: string;
136
426
  type: 'flow';
137
427
  };
428
+ /**
429
+ * 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
430
+ */
138
431
  export type ForloopFlow = {
432
+ /**
433
+ * Steps to execute for each iteration. These can reference the iteration value via 'flow_input.iter.value'
434
+ */
139
435
  modules: Array<FlowModule>;
436
+ /**
437
+ * JavaScript expression that returns an array to iterate over. Can reference 'results.step_id' or 'flow_input'
438
+ */
140
439
  iterator: InputTransform;
440
+ /**
441
+ * If true, iteration failures don't stop the loop. Failed iterations return null
442
+ */
141
443
  skip_failures: boolean;
142
444
  type: 'forloopflow';
445
+ /**
446
+ * If true, iterations run concurrently (faster for I/O-bound operations). Use with parallelism to control concurrency
447
+ */
143
448
  parallel?: boolean;
449
+ /**
450
+ * Maximum number of concurrent iterations when parallel=true. Limits resource usage. Can be static number or expression
451
+ */
144
452
  parallelism?: InputTransform;
453
+ squash?: boolean;
145
454
  };
455
+ /**
456
+ * 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
457
+ */
146
458
  export type WhileloopFlow = {
459
+ /**
460
+ * Steps to execute in each iteration. Use stop_after_if to control when the loop ends
461
+ */
147
462
  modules: Array<FlowModule>;
463
+ /**
464
+ * If true, iteration failures don't stop the loop. Failed iterations return null
465
+ */
148
466
  skip_failures: boolean;
149
467
  type: 'whileloopflow';
468
+ /**
469
+ * If true, iterations run concurrently (use with caution in while loops)
470
+ */
150
471
  parallel?: boolean;
472
+ /**
473
+ * Maximum number of concurrent iterations when parallel=true
474
+ */
151
475
  parallelism?: InputTransform;
476
+ squash?: boolean;
152
477
  };
478
+ /**
479
+ * 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
480
+ */
153
481
  export type BranchOne = {
482
+ /**
483
+ * Array of branches to evaluate in order. The first branch with expr evaluating to true executes
484
+ */
154
485
  branches: Array<{
486
+ /**
487
+ * Short description of this branch condition
488
+ */
155
489
  summary?: string;
490
+ /**
491
+ * JavaScript expression that returns boolean. Can use 'results.step_id' or 'flow_input'. First true expr wins
492
+ */
156
493
  expr: string;
494
+ /**
495
+ * Steps to execute if this branch's expr is true
496
+ */
157
497
  modules: Array<FlowModule>;
158
498
  }>;
499
+ /**
500
+ * Steps to execute if no branch expressions match
501
+ */
159
502
  default: Array<FlowModule>;
160
503
  type: 'branchone';
161
504
  };
505
+ /**
506
+ * Parallel branching where all branches execute simultaneously. Unlike BranchOne, all branches run regardless of conditions. Useful for executing independent tasks concurrently
507
+ */
162
508
  export type BranchAll = {
509
+ /**
510
+ * Array of branches that all execute (either in parallel or sequentially)
511
+ */
163
512
  branches: Array<{
513
+ /**
514
+ * Short description of this branch's purpose
515
+ */
164
516
  summary?: string;
517
+ /**
518
+ * If true, failure in this branch doesn't fail the entire flow
519
+ */
165
520
  skip_failure?: boolean;
521
+ /**
522
+ * Steps to execute in this branch
523
+ */
166
524
  modules: Array<FlowModule>;
167
525
  }>;
168
526
  type: 'branchall';
527
+ /**
528
+ * If true, all branches execute concurrently. If false, they execute sequentially
529
+ */
169
530
  parallel?: boolean;
170
531
  };
532
+ /**
533
+ * 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
534
+ */
171
535
  export type AiAgent = {
536
+ /**
537
+ * Input parameters for the AI agent mapped to their values
538
+ */
172
539
  input_transforms: {
173
- [key: string]: InputTransform;
540
+ provider: InputTransform;
541
+ output_type: InputTransform;
542
+ user_message: InputTransform;
543
+ system_prompt?: InputTransform;
544
+ streaming?: InputTransform;
545
+ memory?: InputTransform;
546
+ output_schema?: InputTransform;
547
+ user_images?: InputTransform;
548
+ max_completion_tokens?: InputTransform;
549
+ temperature?: InputTransform;
174
550
  };
551
+ /**
552
+ * Array of tools the agent can use. The agent decides which tools to call based on the task
553
+ */
175
554
  tools: Array<{
555
+ /**
556
+ * Unique identifier for this tool. Cannot contain spaces - use underscores instead (e.g., 'get_user_data' not 'get user data')
557
+ */
176
558
  id: string;
559
+ /**
560
+ * Short description of what this tool does (shown to the AI)
561
+ */
177
562
  summary?: string;
563
+ /**
564
+ * The implementation of a tool. Can be a flow module (script/flow) or an MCP tool reference
565
+ */
178
566
  value: {
179
567
  tool_type: 'flowmodule';
180
568
  } & FlowModuleValue | {
181
569
  tool_type: 'mcp';
570
+ /**
571
+ * Path to the MCP resource/server configuration
572
+ */
182
573
  resource_path: string;
574
+ /**
575
+ * Whitelist of specific tools to include from this MCP server
576
+ */
183
577
  include_tools?: Array<(string)>;
578
+ /**
579
+ * Blacklist of tools to exclude from this MCP server
580
+ */
184
581
  exclude_tools?: Array<(string)>;
582
+ } | {
583
+ tool_type: 'websearch';
185
584
  };
186
585
  }>;
187
586
  type: 'aiagent';
587
+ /**
588
+ * If true, the agent can execute multiple tool calls in parallel
589
+ */
188
590
  parallel?: boolean;
189
591
  };
592
+ /**
593
+ * Pass-through module that returns its input unchanged. Useful for flow structure or as a placeholder
594
+ */
190
595
  export type Identity = {
191
596
  type: 'identity';
597
+ /**
598
+ * If true, marks this as a flow identity (special handling)
599
+ */
192
600
  flow?: boolean;
193
601
  };
194
602
  export type FlowStatus = {
@@ -213,6 +621,7 @@ export type FlowStatusModule = {
213
621
  iterator?: {
214
622
  index?: number;
215
623
  itered?: Array<unknown>;
624
+ itered_len?: number;
216
625
  args?: unknown;
217
626
  };
218
627
  flow_jobs?: Array<(string)>;
@@ -248,6 +657,8 @@ export type FlowStatusModule = {
248
657
  arguments?: {
249
658
  [key: string]: unknown;
250
659
  };
660
+ } | {
661
+ type: 'web_search';
251
662
  } | {
252
663
  type: 'message';
253
664
  })>;
@@ -445,6 +856,23 @@ export type Alert = {
445
856
  export type Configs = {
446
857
  alerts?: Array<Alert>;
447
858
  } | null;
859
+ export type WorkspaceDependencies = {
860
+ id: number;
861
+ archived: boolean;
862
+ name?: string;
863
+ description?: string;
864
+ content: string;
865
+ language: ScriptLang;
866
+ workspace_id: string;
867
+ created_at: string;
868
+ };
869
+ export type NewWorkspaceDependencies = {
870
+ workspace_id: string;
871
+ language: ScriptLang;
872
+ name?: string;
873
+ description?: string;
874
+ content: string;
875
+ };
448
876
  export type Script = {
449
877
  workspace_id?: string;
450
878
  hash: string;
@@ -482,6 +910,9 @@ export type Script = {
482
910
  concurrency_key?: string;
483
911
  debounce_key?: string;
484
912
  debounce_delay_s?: number;
913
+ debounce_args_to_accumulate?: Array<(string)>;
914
+ max_total_debouncing_time?: number;
915
+ max_total_debounces_amount?: number;
485
916
  cache_ttl?: number;
486
917
  dedicated_worker?: boolean;
487
918
  ws_error_handler_muted?: boolean;
@@ -514,6 +945,7 @@ export type NewScript = {
514
945
  concurrent_limit?: number;
515
946
  concurrency_time_window_s?: number;
516
947
  cache_ttl?: number;
948
+ cache_ignore_s3_path?: boolean;
517
949
  dedicated_worker?: boolean;
518
950
  ws_error_handler_muted?: boolean;
519
951
  priority?: number;
@@ -524,6 +956,9 @@ export type NewScript = {
524
956
  concurrency_key?: string;
525
957
  debounce_key?: string;
526
958
  debounce_delay_s?: number;
959
+ debounce_args_to_accumulate?: Array<(string)>;
960
+ max_total_debouncing_time?: number;
961
+ max_total_debounces_amount?: number;
527
962
  visible_to_runner_only?: boolean;
528
963
  no_main_func?: boolean;
529
964
  codebase?: string;
@@ -588,7 +1023,7 @@ export type QueuedJob = {
588
1023
  canceled_by?: string;
589
1024
  canceled_reason?: string;
590
1025
  last_ping?: string;
591
- job_kind: 'script' | 'preview' | 'dependencies' | 'flowdependencies' | 'appdependencies' | 'flow' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlestepflow' | 'flowscript' | 'flownode' | 'appscript' | 'aiagent';
1026
+ job_kind: 'script' | 'preview' | 'dependencies' | 'flowdependencies' | 'appdependencies' | 'flow' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlestepflow' | 'flowscript' | 'flownode' | 'appscript' | 'aiagent' | 'unassigned_script' | 'unassigned_flow' | 'unassigned_singlestepflow';
592
1027
  schedule_path?: string;
593
1028
  /**
594
1029
  * The user (u/userfoo) or group (g/groupfoo) whom
@@ -632,7 +1067,7 @@ export type CompletedJob = {
632
1067
  canceled: boolean;
633
1068
  canceled_by?: string;
634
1069
  canceled_reason?: string;
635
- job_kind: 'script' | 'preview' | 'dependencies' | 'flow' | 'flowdependencies' | 'appdependencies' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlestepflow' | 'flowscript' | 'flownode' | 'appscript' | 'aiagent';
1070
+ job_kind: 'script' | 'preview' | 'dependencies' | 'flow' | 'flowdependencies' | 'appdependencies' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlestepflow' | 'flowscript' | 'flownode' | 'appscript' | 'aiagent' | 'unassigned_script' | 'unassigned_flow' | 'unassigned_singlestepflow';
636
1071
  schedule_path?: string;
637
1072
  /**
638
1073
  * The user (u/userfoo) or group (g/groupfoo) whom
@@ -657,6 +1092,151 @@ export type CompletedJob = {
657
1092
  preprocessed?: boolean;
658
1093
  worker?: string;
659
1094
  };
1095
+ /**
1096
+ * Completed job with full data for export/import operations
1097
+ */
1098
+ export type ExportableCompletedJob = {
1099
+ id: string;
1100
+ parent_job?: string;
1101
+ created_by: string;
1102
+ created_at: string;
1103
+ started_at?: string;
1104
+ completed_at?: string;
1105
+ duration_ms?: number;
1106
+ script_path?: string;
1107
+ script_hash?: string;
1108
+ /**
1109
+ * Full job arguments without size restrictions
1110
+ */
1111
+ args?: {
1112
+ [key: string]: unknown;
1113
+ };
1114
+ /**
1115
+ * Full job result without size restrictions
1116
+ */
1117
+ result?: {
1118
+ [key: string]: unknown;
1119
+ };
1120
+ /**
1121
+ * Complete job logs from v2_job table
1122
+ */
1123
+ logs?: string;
1124
+ raw_code?: string;
1125
+ raw_lock?: string;
1126
+ canceled_by?: string;
1127
+ canceled_reason?: string;
1128
+ job_kind: 'script' | 'preview' | 'dependencies' | 'flow' | 'flowdependencies' | 'appdependencies' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlestepflow' | 'flowscript' | 'flownode' | 'appscript' | 'aiagent' | 'unassigned_script' | 'unassigned_flow' | 'unassigned_singlestepflow';
1129
+ /**
1130
+ * Trigger path for the job (replaces schedule_path)
1131
+ */
1132
+ trigger?: string;
1133
+ trigger_kind?: 'webhook' | 'http' | 'websocket' | 'kafka' | 'email' | 'nats' | 'schedule' | 'app' | 'ui' | 'postgres' | 'sqs' | 'gcp';
1134
+ permissioned_as: string;
1135
+ permissioned_as_email?: string;
1136
+ /**
1137
+ * Flow status from v2_job_status table
1138
+ */
1139
+ flow_status?: {
1140
+ [key: string]: unknown;
1141
+ };
1142
+ workflow_as_code_status?: {
1143
+ [key: string]: unknown;
1144
+ };
1145
+ raw_flow?: {
1146
+ [key: string]: unknown;
1147
+ };
1148
+ is_flow_step?: boolean;
1149
+ language?: ScriptLang;
1150
+ is_skipped?: boolean;
1151
+ email: string;
1152
+ visible_to_owner: boolean;
1153
+ mem_peak?: number;
1154
+ tag?: string;
1155
+ priority?: number;
1156
+ labels?: Array<(string)>;
1157
+ same_worker?: boolean;
1158
+ flow_step_id?: string;
1159
+ flow_innermost_root_job?: string;
1160
+ concurrent_limit?: number;
1161
+ concurrency_time_window_s?: number;
1162
+ timeout?: number;
1163
+ cache_ttl?: number;
1164
+ self_wait_time_ms?: number;
1165
+ aggregate_wait_time_ms?: number;
1166
+ preprocessed?: boolean;
1167
+ worker?: string;
1168
+ /**
1169
+ * Actual job status from database
1170
+ */
1171
+ status?: string;
1172
+ };
1173
+ /**
1174
+ * Queued job with full data for export/import operations
1175
+ */
1176
+ export type ExportableQueuedJob = {
1177
+ id: string;
1178
+ parent_job?: string;
1179
+ created_by: string;
1180
+ created_at: string;
1181
+ started_at?: string;
1182
+ scheduled_for?: string;
1183
+ script_path?: string;
1184
+ script_hash?: string;
1185
+ /**
1186
+ * Full job arguments without size restrictions
1187
+ */
1188
+ args?: {
1189
+ [key: string]: unknown;
1190
+ };
1191
+ /**
1192
+ * Complete job logs from v2_job table
1193
+ */
1194
+ logs?: string;
1195
+ raw_code?: string;
1196
+ raw_lock?: string;
1197
+ canceled_by?: string;
1198
+ canceled_reason?: string;
1199
+ job_kind: 'script' | 'preview' | 'dependencies' | 'flowdependencies' | 'appdependencies' | 'flow' | 'flowpreview' | 'script_hub' | 'identity' | 'deploymentcallback' | 'singlestepflow' | 'flowscript' | 'flownode' | 'appscript' | 'aiagent' | 'unassigned_script' | 'unassigned_flow' | 'unassigned_singlestepflow';
1200
+ /**
1201
+ * Trigger path for the job (replaces schedule_path)
1202
+ */
1203
+ trigger?: string;
1204
+ trigger_kind?: 'webhook' | 'http' | 'websocket' | 'kafka' | 'email' | 'nats' | 'schedule' | 'app' | 'ui' | 'postgres' | 'sqs' | 'gcp';
1205
+ permissioned_as: string;
1206
+ permissioned_as_email?: string;
1207
+ /**
1208
+ * Flow status from v2_job_status table
1209
+ */
1210
+ flow_status?: {
1211
+ [key: string]: unknown;
1212
+ };
1213
+ workflow_as_code_status?: {
1214
+ [key: string]: unknown;
1215
+ };
1216
+ raw_flow?: {
1217
+ [key: string]: unknown;
1218
+ };
1219
+ is_flow_step?: boolean;
1220
+ language?: ScriptLang;
1221
+ email: string;
1222
+ visible_to_owner: boolean;
1223
+ mem_peak?: number;
1224
+ tag?: string;
1225
+ priority?: number;
1226
+ labels?: Array<(string)>;
1227
+ same_worker?: boolean;
1228
+ flow_step_id?: string;
1229
+ flow_innermost_root_job?: string;
1230
+ concurrent_limit?: number;
1231
+ concurrency_time_window_s?: number;
1232
+ timeout?: number;
1233
+ cache_ttl?: number;
1234
+ self_wait_time_ms?: number;
1235
+ aggregate_wait_time_ms?: number;
1236
+ preprocessed?: boolean;
1237
+ suspend?: number;
1238
+ suspend_until?: string;
1239
+ };
660
1240
  export type ObscuredJob = {
661
1241
  typ?: string;
662
1242
  started_at?: string;
@@ -703,6 +1283,9 @@ export type Login = {
703
1283
  email: string;
704
1284
  password: string;
705
1285
  };
1286
+ export type PasswordResetResponse = {
1287
+ message: string;
1288
+ };
706
1289
  export type EditWorkspaceUser = {
707
1290
  is_admin?: boolean;
708
1291
  operator?: boolean;
@@ -866,6 +1449,14 @@ export type Preview = {
866
1449
  dedicated_worker?: boolean;
867
1450
  lock?: string;
868
1451
  };
1452
+ export type PreviewInline = {
1453
+ /**
1454
+ * The code to run
1455
+ */
1456
+ content: string;
1457
+ args: ScriptArgs;
1458
+ language: ScriptLang;
1459
+ };
869
1460
  export type WorkflowTask = {
870
1461
  args: ScriptArgs;
871
1462
  };
@@ -1185,6 +1776,14 @@ export type EditSchedule = {
1185
1776
  */
1186
1777
  dynamic_skip?: string;
1187
1778
  };
1779
+ /**
1780
+ * job trigger kind (schedule, http, websocket...)
1781
+ */
1782
+ export type JobTriggerKind = 'webhook' | 'default_email' | 'email' | 'schedule' | 'http' | 'websocket' | 'postgres' | 'kafka' | 'nats' | 'mqtt' | 'sqs' | 'gcp';
1783
+ /**
1784
+ * job trigger mode
1785
+ */
1786
+ export type TriggerMode = 'enabled' | 'disabled' | 'suspended';
1188
1787
  export type TriggerExtraProperty = {
1189
1788
  path: string;
1190
1789
  script_path: string;
@@ -1196,7 +1795,7 @@ export type TriggerExtraProperty = {
1196
1795
  edited_by: string;
1197
1796
  edited_at: string;
1198
1797
  is_flow: boolean;
1199
- enabled: boolean;
1798
+ mode: TriggerMode;
1200
1799
  };
1201
1800
  export type AuthenticationMethod = 'none' | 'windmill' | 'api_key' | 'basic_http' | 'custom_script' | 'signature';
1202
1801
  export type RunnableKind = 'script' | 'flow';
@@ -1281,7 +1880,7 @@ export type NewHttpTrigger = {
1281
1880
  authentication_method: AuthenticationMethod;
1282
1881
  is_static_website: boolean;
1283
1882
  wrap_body?: boolean;
1284
- enabled?: boolean;
1883
+ mode?: TriggerMode;
1285
1884
  raw_string?: boolean;
1286
1885
  error_handler_path?: string;
1287
1886
  error_handler_args?: ScriptArgs;
@@ -1354,7 +1953,7 @@ export type NewWebsocketTrigger = {
1354
1953
  script_path: string;
1355
1954
  is_flow: boolean;
1356
1955
  url: string;
1357
- enabled?: boolean;
1956
+ mode?: TriggerMode;
1358
1957
  filters: Array<{
1359
1958
  key: string;
1360
1959
  value: unknown;
@@ -1431,7 +2030,7 @@ export type NewMqttTrigger = {
1431
2030
  path: string;
1432
2031
  script_path: string;
1433
2032
  is_flow: boolean;
1434
- enabled?: boolean;
2033
+ mode?: TriggerMode;
1435
2034
  error_handler_path?: string;
1436
2035
  error_handler_args?: ScriptArgs;
1437
2036
  retry?: Retry;
@@ -1446,7 +2045,7 @@ export type EditMqttTrigger = {
1446
2045
  path: string;
1447
2046
  script_path: string;
1448
2047
  is_flow: boolean;
1449
- enabled: boolean;
2048
+ mode?: TriggerMode;
1450
2049
  error_handler_path?: string;
1451
2050
  error_handler_args?: ScriptArgs;
1452
2051
  retry?: Retry;
@@ -1485,7 +2084,7 @@ export type GcpTriggerData = {
1485
2084
  path: string;
1486
2085
  script_path: string;
1487
2086
  is_flow: boolean;
1488
- enabled?: boolean;
2087
+ mode?: TriggerMode;
1489
2088
  auto_acknowledge_msg?: boolean;
1490
2089
  /**
1491
2090
  * Time in seconds within which the message must be acknowledged. If not provided, defaults to the subscription's acknowledgment deadline (600 seconds).
@@ -1515,19 +2114,17 @@ export type SqsTrigger = TriggerExtraProperty & {
1515
2114
  retry?: Retry;
1516
2115
  };
1517
2116
  export type LoggedWizardStatus = 'OK' | 'SKIP' | 'FAIL';
1518
- export type DucklakeInstanceCatalogDbStatusLogs = {
2117
+ export type CustomInstanceDbLogs = {
1519
2118
  super_admin?: LoggedWizardStatus;
1520
2119
  database_credentials?: LoggedWizardStatus;
1521
2120
  valid_dbname?: LoggedWizardStatus;
1522
- /**
1523
- * Created database status log
1524
- */
1525
2121
  created_database?: LoggedWizardStatus;
1526
2122
  db_connect?: LoggedWizardStatus;
1527
2123
  grant_permissions?: LoggedWizardStatus;
1528
2124
  };
1529
- export type DucklakeInstanceCatalogDbStatus = {
1530
- logs: DucklakeInstanceCatalogDbStatusLogs;
2125
+ export type CustomInstanceDbTag = 'ducklake' | 'datatable';
2126
+ export type CustomInstanceDb = {
2127
+ logs: CustomInstanceDbLogs;
1531
2128
  /**
1532
2129
  * Whether the operation completed successfully
1533
2130
  */
@@ -1536,6 +2133,7 @@ export type DucklakeInstanceCatalogDbStatus = {
1536
2133
  * Error message if the operation failed
1537
2134
  */
1538
2135
  error?: string | null;
2136
+ tag?: CustomInstanceDbTag;
1539
2137
  };
1540
2138
  export type NewSqsTrigger = {
1541
2139
  queue_url: string;
@@ -1545,7 +2143,7 @@ export type NewSqsTrigger = {
1545
2143
  path: string;
1546
2144
  script_path: string;
1547
2145
  is_flow: boolean;
1548
- enabled?: boolean;
2146
+ mode?: TriggerMode;
1549
2147
  error_handler_path?: string;
1550
2148
  error_handler_args?: ScriptArgs;
1551
2149
  retry?: Retry;
@@ -1558,7 +2156,7 @@ export type EditSqsTrigger = {
1558
2156
  path: string;
1559
2157
  script_path: string;
1560
2158
  is_flow: boolean;
1561
- enabled: boolean;
2159
+ mode?: TriggerMode;
1562
2160
  error_handler_path?: string;
1563
2161
  error_handler_args?: ScriptArgs;
1564
2162
  retry?: Retry;
@@ -1606,7 +2204,7 @@ export type NewPostgresTrigger = {
1606
2204
  path: string;
1607
2205
  script_path: string;
1608
2206
  is_flow: boolean;
1609
- enabled: boolean;
2207
+ mode?: TriggerMode;
1610
2208
  postgres_resource_path: string;
1611
2209
  publication?: PublicationData;
1612
2210
  error_handler_path?: string;
@@ -1619,7 +2217,7 @@ export type EditPostgresTrigger = {
1619
2217
  path: string;
1620
2218
  script_path: string;
1621
2219
  is_flow: boolean;
1622
- enabled: boolean;
2220
+ mode?: TriggerMode;
1623
2221
  postgres_resource_path: string;
1624
2222
  publication?: PublicationData;
1625
2223
  error_handler_path?: string;
@@ -1644,7 +2242,7 @@ export type NewKafkaTrigger = {
1644
2242
  kafka_resource_path: string;
1645
2243
  group_id: string;
1646
2244
  topics: Array<(string)>;
1647
- enabled?: boolean;
2245
+ mode?: TriggerMode;
1648
2246
  error_handler_path?: string;
1649
2247
  error_handler_args?: ScriptArgs;
1650
2248
  retry?: Retry;
@@ -1682,7 +2280,7 @@ export type NewNatsTrigger = {
1682
2280
  stream_name?: string;
1683
2281
  consumer_name?: string;
1684
2282
  subjects: Array<(string)>;
1685
- enabled?: boolean;
2283
+ mode?: TriggerMode;
1686
2284
  error_handler_path?: string;
1687
2285
  error_handler_args?: ScriptArgs;
1688
2286
  retry?: Retry;
@@ -1716,7 +2314,7 @@ export type NewEmailTrigger = {
1716
2314
  error_handler_path?: string;
1717
2315
  error_handler_args?: ScriptArgs;
1718
2316
  retry?: Retry;
1719
- enabled?: boolean;
2317
+ mode?: TriggerMode;
1720
2318
  };
1721
2319
  export type EditEmailTrigger = {
1722
2320
  path: string;
@@ -1823,6 +2421,15 @@ export type DependencyMap = {
1823
2421
  imported_path?: string | null;
1824
2422
  importer_node_id?: string | null;
1825
2423
  };
2424
+ export type DependencyDependent = {
2425
+ importer_path: string;
2426
+ importer_kind: 'script' | 'flow' | 'app';
2427
+ importer_node_ids?: Array<(string)> | null;
2428
+ };
2429
+ export type DependentsAmount = {
2430
+ imported_path: string;
2431
+ count: number;
2432
+ };
1826
2433
  export type WorkspaceInvite = {
1827
2434
  workspace_id: string;
1828
2435
  email: string;
@@ -1887,6 +2494,7 @@ export type RestartedFrom = {
1887
2494
  flow_job_id?: string;
1888
2495
  step_id?: string;
1889
2496
  branch_or_iteration_n?: number;
2497
+ flow_version?: number;
1890
2498
  };
1891
2499
  export type Policy = {
1892
2500
  triggerables?: {
@@ -2024,9 +2632,34 @@ export type DucklakeSettings = {
2024
2632
  storage?: string;
2025
2633
  path: string;
2026
2634
  };
2635
+ extra_args?: string;
2027
2636
  };
2028
2637
  };
2029
2638
  };
2639
+ export type DataTableSettings = {
2640
+ datatables: {
2641
+ [key: string]: {
2642
+ database: {
2643
+ resource_type: 'postgresql' | 'instance';
2644
+ resource_path?: string;
2645
+ };
2646
+ };
2647
+ };
2648
+ };
2649
+ export type DataTableSchema = {
2650
+ datatable_name: string;
2651
+ /**
2652
+ * Hierarchical schema: schema_name -> table_name -> column_name -> compact_type (e.g. 'int4', 'text?', 'int4?=0')
2653
+ */
2654
+ schemas: {
2655
+ [key: string]: {
2656
+ [key: string]: {
2657
+ [key: string]: (string);
2658
+ };
2659
+ };
2660
+ };
2661
+ error?: string;
2662
+ };
2030
2663
  export type DynamicInputData = {
2031
2664
  /**
2032
2665
  * Name of the function to execute for dynamic select
@@ -2263,10 +2896,100 @@ export type OperatorSettings = {
2263
2896
  */
2264
2897
  folders: boolean;
2265
2898
  /**
2266
- * Whether operators can view workers page
2899
+ * Whether operators can view workers page
2900
+ */
2901
+ workers: boolean;
2902
+ } | null;
2903
+ export type WorkspaceComparison = {
2904
+ /**
2905
+ * All items with changes ahead are visible by the user of the request.
2906
+ */
2907
+ all_ahead_items_visible: boolean;
2908
+ /**
2909
+ * All items with changes behind are visible by the user of the request.
2910
+ */
2911
+ all_behind_items_visible: boolean;
2912
+ /**
2913
+ * Whether the comparison was skipped. This happens with old forks that where not being kept track of
2914
+ */
2915
+ skipped_comparison: boolean;
2916
+ /**
2917
+ * List of differences found between workspaces
2918
+ */
2919
+ diffs: Array<WorkspaceItemDiff>;
2920
+ /**
2921
+ * Summary statistics of the comparison
2922
+ */
2923
+ summary: CompareSummary;
2924
+ };
2925
+ export type WorkspaceItemDiff = {
2926
+ /**
2927
+ * Type of the item
2928
+ */
2929
+ kind: 'script' | 'flow' | 'app' | 'resource' | 'variable';
2930
+ /**
2931
+ * Path of the item in the workspace
2932
+ */
2933
+ path: string;
2934
+ /**
2935
+ * Number of versions source is ahead of target
2936
+ */
2937
+ ahead: number;
2938
+ /**
2939
+ * Number of versions source is behind target
2940
+ */
2941
+ behind: number;
2942
+ /**
2943
+ * Whether the item has any differences
2944
+ */
2945
+ has_changes: boolean;
2946
+ /**
2947
+ * If the item exists in the source workspace
2948
+ */
2949
+ exists_in_source: boolean;
2950
+ /**
2951
+ * If the item exists in the fork workspace
2952
+ */
2953
+ exists_in_fork: boolean;
2954
+ };
2955
+ export type CompareSummary = {
2956
+ /**
2957
+ * Total number of items with differences
2958
+ */
2959
+ total_diffs: number;
2960
+ /**
2961
+ * Total number of ahead changes
2962
+ */
2963
+ total_ahead: number;
2964
+ /**
2965
+ * Total number of behind changes
2966
+ */
2967
+ total_behind: number;
2968
+ /**
2969
+ * Number of scripts with differences
2970
+ */
2971
+ scripts_changed: number;
2972
+ /**
2973
+ * Number of flows with differences
2974
+ */
2975
+ flows_changed: number;
2976
+ /**
2977
+ * Number of apps with differences
2978
+ */
2979
+ apps_changed: number;
2980
+ /**
2981
+ * Number of resources with differences
2982
+ */
2983
+ resources_changed: number;
2984
+ /**
2985
+ * Number of variables with differences
2986
+ */
2987
+ variables_changed: number;
2988
+ /**
2989
+ * Number of items that are both ahead and behind (conflicts)
2267
2990
  */
2268
- workers: boolean;
2269
- } | null;
2991
+ conflicts: number;
2992
+ };
2270
2993
  export type TeamInfo = {
2271
2994
  /**
2272
2995
  * The unique identifier of the Microsoft Teams team
@@ -2315,6 +3038,10 @@ export type GithubInstallations = Array<{
2315
3038
  * Number of repositories loaded per page
2316
3039
  */
2317
3040
  per_page: number;
3041
+ /**
3042
+ * Error message if token retrieval failed
3043
+ */
3044
+ error?: string;
2318
3045
  }>;
2319
3046
  export type WorkspaceGithubInstallation = {
2320
3047
  account_id: string;
@@ -2346,7 +3073,7 @@ export type TeamsChannel = {
2346
3073
  };
2347
3074
  export type AssetUsageKind = 'script' | 'flow';
2348
3075
  export type AssetUsageAccessType = 'r' | 'w' | 'rw';
2349
- export type AssetKind = 's3object' | 'resource' | 'ducklake';
3076
+ export type AssetKind = 's3object' | 'resource' | 'ducklake' | 'datatable';
2350
3077
  export type Asset = {
2351
3078
  path: string;
2352
3079
  kind: AssetKind;
@@ -2381,7 +3108,7 @@ export type ParameterPerPage = number;
2381
3108
  /**
2382
3109
  * trigger kind (schedule, http, websocket...)
2383
3110
  */
2384
- export type ParameterJobTriggerKind = 'webhook' | 'default_email' | 'email' | 'schedule' | 'http' | 'websocket' | 'postgres' | 'kafka' | 'nats' | 'mqtt' | 'sqs' | 'gcp' | 'poll' | 'cli';
3111
+ export type ParameterJobTriggerKind = JobTriggerKind;
2385
3112
  /**
2386
3113
  * order by desc order (default true)
2387
3114
  */
@@ -2443,6 +3170,10 @@ export type ParameterScriptStartPath = string;
2443
3170
  * mask to filter by schedule path
2444
3171
  */
2445
3172
  export type ParameterSchedulePath = string;
3173
+ /**
3174
+ * mask to filter by trigger path
3175
+ */
3176
+ export type ParameterTriggerPath = string;
2446
3177
  /**
2447
3178
  * mask to filter exact matching path
2448
3179
  */
@@ -2553,6 +3284,20 @@ export type BackendVersionResponse = string;
2553
3284
  export type BackendUptodateResponse = string;
2554
3285
  export type GetLicenseIdResponse = string;
2555
3286
  export type GetOpenApiYamlResponse = string;
3287
+ export type QueryDocumentationData = {
3288
+ /**
3289
+ * query to send to the AI documentation assistant
3290
+ */
3291
+ requestBody: {
3292
+ /**
3293
+ * The documentation query to send to the AI assistant
3294
+ */
3295
+ query: string;
3296
+ };
3297
+ };
3298
+ export type QueryDocumentationResponse = {
3299
+ [key: string]: unknown;
3300
+ };
2556
3301
  export type GetAuditLogData = {
2557
3302
  id: number;
2558
3303
  workspace: string;
@@ -2614,6 +3359,26 @@ export type LoginData = {
2614
3359
  };
2615
3360
  export type LoginResponse = string;
2616
3361
  export type LogoutResponse = string;
3362
+ export type IsSmtpConfiguredResponse = boolean;
3363
+ export type RequestPasswordResetData = {
3364
+ /**
3365
+ * email to send password reset link to
3366
+ */
3367
+ requestBody: {
3368
+ email: string;
3369
+ };
3370
+ };
3371
+ export type RequestPasswordResetResponse = PasswordResetResponse;
3372
+ export type ResetPasswordData = {
3373
+ /**
3374
+ * token and new password
3375
+ */
3376
+ requestBody: {
3377
+ token: string;
3378
+ new_password: string;
3379
+ };
3380
+ };
3381
+ export type ResetPasswordResponse = PasswordResetResponse;
2617
3382
  export type GetUserData = {
2618
3383
  username: string;
2619
3384
  workspace: string;
@@ -2747,6 +3512,7 @@ export type RefreshUserTokenData = {
2747
3512
  export type RefreshUserTokenResponse = string;
2748
3513
  export type GetTutorialProgressResponse = {
2749
3514
  progress?: number;
3515
+ skipped_all?: boolean;
2750
3516
  };
2751
3517
  export type UpdateTutorialProgressData = {
2752
3518
  /**
@@ -2754,6 +3520,7 @@ export type UpdateTutorialProgressData = {
2754
3520
  */
2755
3521
  requestBody: {
2756
3522
  progress?: number;
3523
+ skipped_all?: boolean;
2757
3524
  };
2758
3525
  };
2759
3526
  export type UpdateTutorialProgressResponse = string;
@@ -2920,6 +3687,10 @@ export type ImportInstallationResponse = unknown;
2920
3687
  export type ListWorkspacesResponse = Array<Workspace>;
2921
3688
  export type IsDomainAllowedResponse = boolean;
2922
3689
  export type ListUserWorkspacesResponse = UserWorkspaceList;
3690
+ export type GetWorkspaceAsSuperAdminData = {
3691
+ workspace: string;
3692
+ };
3693
+ export type GetWorkspaceAsSuperAdminResponse = Workspace;
2923
3694
  export type ListWorkspacesAsSuperAdminData = {
2924
3695
  /**
2925
3696
  * which page to return (start at 1, default 1)
@@ -3068,6 +3839,22 @@ export type UpdateOperatorSettingsData = {
3068
3839
  workspace: string;
3069
3840
  };
3070
3841
  export type UpdateOperatorSettingsResponse = string;
3842
+ export type CompareWorkspacesData = {
3843
+ /**
3844
+ * The ID of the workspace to compare with
3845
+ */
3846
+ targetWorkspaceId: string;
3847
+ workspace: string;
3848
+ };
3849
+ export type CompareWorkspacesResponse = WorkspaceComparison;
3850
+ export type ResetDiffTallyData = {
3851
+ /**
3852
+ * The ID of the workspace to compare with
3853
+ */
3854
+ forkWorkspaceId: string;
3855
+ workspace: string;
3856
+ };
3857
+ export type ResetDiffTallyResponse = unknown;
3071
3858
  export type ListPendingInvitesData = {
3072
3859
  workspace: string;
3073
3860
  };
@@ -3085,6 +3872,7 @@ export type GetSettingsResponse = {
3085
3872
  teams_team_id?: string;
3086
3873
  teams_command_script?: string;
3087
3874
  teams_team_name?: string;
3875
+ teams_team_guid?: string;
3088
3876
  auto_invite_domain?: string;
3089
3877
  auto_invite_operator?: boolean;
3090
3878
  auto_add?: boolean;
@@ -3102,6 +3890,7 @@ export type GetSettingsResponse = {
3102
3890
  error_handler_muted_on_cancel: boolean;
3103
3891
  large_file_storage?: LargeFileStorage;
3104
3892
  ducklake?: DucklakeSettings;
3893
+ datatable?: DataTableSettings;
3105
3894
  git_sync?: WorkspaceGitSyncSettings;
3106
3895
  deploy_ui?: WorkspaceDeployUISettings;
3107
3896
  default_app?: string;
@@ -3156,6 +3945,22 @@ export type RebuildDependencyMapData = {
3156
3945
  workspace: string;
3157
3946
  };
3158
3947
  export type RebuildDependencyMapResponse = string;
3948
+ export type GetDependentsData = {
3949
+ /**
3950
+ * The imported path to get dependents for
3951
+ */
3952
+ importedPath: string;
3953
+ workspace: string;
3954
+ };
3955
+ export type GetDependentsResponse = Array<DependencyDependent>;
3956
+ export type GetDependentsAmountsData = {
3957
+ /**
3958
+ * List of imported paths to get dependents counts for
3959
+ */
3960
+ requestBody: Array<(string)>;
3961
+ workspace: string;
3962
+ };
3963
+ export type GetDependentsAmountsResponse = Array<DependentsAmount>;
3159
3964
  export type GetDependencyMapData = {
3160
3965
  workspace: string;
3161
3966
  };
@@ -3207,30 +4012,47 @@ export type EditTeamsCommandData = {
3207
4012
  export type EditTeamsCommandResponse = string;
3208
4013
  export type ListAvailableTeamsIdsData = {
3209
4014
  /**
3210
- * Search teams by name
4015
+ * Pagination cursor URL from previous response. Pass this to fetch the next page of results.
4016
+ */
4017
+ nextLink?: string;
4018
+ /**
4019
+ * Search teams by name. If omitted, returns first page of all teams.
3211
4020
  */
3212
4021
  search?: string;
3213
4022
  workspace: string;
3214
4023
  };
3215
- export type ListAvailableTeamsIdsResponse = Array<{
3216
- team_name?: string;
3217
- team_id?: string;
3218
- }>;
3219
- export type ListAvailableTeamsChannelsData = {
4024
+ export type ListAvailableTeamsIdsResponse = {
4025
+ teams?: Array<{
4026
+ team_name?: string;
4027
+ team_id?: string;
4028
+ }>;
3220
4029
  /**
3221
- * Search channels by name
4030
+ * Total number of teams across all pages
3222
4031
  */
3223
- search?: string;
4032
+ total_count?: number;
4033
+ /**
4034
+ * Number of teams per page (configurable via TEAMS_PER_PAGE env var)
4035
+ */
4036
+ per_page?: number;
4037
+ /**
4038
+ * URL to fetch next page of results. Null if no more pages.
4039
+ */
4040
+ next_link?: string | null;
4041
+ };
4042
+ export type ListAvailableTeamsChannelsData = {
3224
4043
  /**
3225
4044
  * Microsoft Teams team ID
3226
4045
  */
3227
4046
  teamId: string;
3228
4047
  workspace: string;
3229
4048
  };
3230
- export type ListAvailableTeamsChannelsResponse = Array<{
3231
- channel_name?: string;
3232
- channel_id?: string;
3233
- }>;
4049
+ export type ListAvailableTeamsChannelsResponse = {
4050
+ channels?: Array<{
4051
+ channel_name?: string;
4052
+ channel_id?: string;
4053
+ }>;
4054
+ total_count?: number;
4055
+ };
3234
4056
  export type ConnectTeamsData = {
3235
4057
  /**
3236
4058
  * connect teams
@@ -3350,6 +4172,14 @@ export type ListDucklakesData = {
3350
4172
  workspace: string;
3351
4173
  };
3352
4174
  export type ListDucklakesResponse = Array<(string)>;
4175
+ export type ListDataTablesData = {
4176
+ workspace: string;
4177
+ };
4178
+ export type ListDataTablesResponse = Array<(string)>;
4179
+ export type ListDataTableSchemasData = {
4180
+ workspace: string;
4181
+ };
4182
+ export type ListDataTableSchemasResponse = Array<DataTableSchema>;
3353
4183
  export type EditDucklakeConfigData = {
3354
4184
  /**
3355
4185
  * Ducklake settings
@@ -3360,6 +4190,16 @@ export type EditDucklakeConfigData = {
3360
4190
  workspace: string;
3361
4191
  };
3362
4192
  export type EditDucklakeConfigResponse = unknown;
4193
+ export type EditDataTableConfigData = {
4194
+ /**
4195
+ * DataTable settings
4196
+ */
4197
+ requestBody: {
4198
+ settings: DataTableSettings;
4199
+ };
4200
+ workspace: string;
4201
+ };
4202
+ export type EditDataTableConfigResponse = unknown;
3363
4203
  export type EditWorkspaceGitSyncConfigData = {
3364
4204
  /**
3365
4205
  * Workspace Git sync settings
@@ -3485,16 +4325,22 @@ export type GetUsedTriggersResponse = {
3485
4325
  sqs_used: boolean;
3486
4326
  email_used: boolean;
3487
4327
  };
3488
- export type GetDucklakeInstanceCatalogDbStatusResponse = {
3489
- [key: string]: DucklakeInstanceCatalogDbStatus;
4328
+ export type RefreshCustomInstanceUserPwdResponse = {
4329
+ [key: string]: unknown;
4330
+ };
4331
+ export type ListCustomInstanceDbsResponse = {
4332
+ [key: string]: CustomInstanceDb;
3490
4333
  };
3491
- export type SetupDucklakeCatalogDbData = {
4334
+ export type SetupCustomInstanceDbData = {
3492
4335
  /**
3493
4336
  * The name of the database to create
3494
4337
  */
3495
4338
  name: string;
4339
+ requestBody: {
4340
+ tag?: CustomInstanceDbTag;
4341
+ };
3496
4342
  };
3497
- export type SetupDucklakeCatalogDbResponse = DucklakeInstanceCatalogDbStatus;
4343
+ export type SetupCustomInstanceDbResponse = CustomInstanceDb;
3498
4344
  export type GetGlobalData = {
3499
4345
  key: string;
3500
4346
  };
@@ -3650,6 +4496,7 @@ export type WorkspaceMuteCriticalAlertsUiResponse = string;
3650
4496
  export type ListAvailableScopesResponse = Array<ScopeDomain>;
3651
4497
  export type GetOidcTokenData = {
3652
4498
  audience: string;
4499
+ expiresIn?: number;
3653
4500
  workspace: string;
3654
4501
  };
3655
4502
  export type GetOidcTokenResponse = string;
@@ -3808,6 +4655,10 @@ export type CreateAccountData = {
3808
4655
  * OAuth token URL override for resource-level authentication (client_credentials flow only)
3809
4656
  */
3810
4657
  cc_token_url?: string;
4658
+ /**
4659
+ * MCP server URL for MCP OAuth token refresh
4660
+ */
4661
+ mcp_server_url?: string;
3811
4662
  };
3812
4663
  workspace: string;
3813
4664
  };
@@ -4218,13 +5069,11 @@ export type ListFlowPathsFromWorkspaceRunnableData = {
4218
5069
  };
4219
5070
  export type ListFlowPathsFromWorkspaceRunnableResponse = Array<(string)>;
4220
5071
  export type GetFlowVersionData = {
4221
- path: string;
4222
5072
  version: number;
4223
5073
  workspace: string;
4224
5074
  };
4225
5075
  export type GetFlowVersionResponse = Flow;
4226
5076
  export type UpdateFlowHistoryData = {
4227
- path: string;
4228
5077
  /**
4229
5078
  * Flow deployment message
4230
5079
  */
@@ -4247,6 +5096,7 @@ export type GetFlowDeploymentStatusData = {
4247
5096
  };
4248
5097
  export type GetFlowDeploymentStatusResponse = {
4249
5098
  lock_error_logs?: string;
5099
+ job_id?: string;
4250
5100
  };
4251
5101
  export type GetTriggersCountOfFlowData = {
4252
5102
  path: string;
@@ -4953,6 +5803,7 @@ export type GetScriptDeploymentStatusData = {
4953
5803
  export type GetScriptDeploymentStatusResponse = {
4954
5804
  lock?: string;
4955
5805
  lock_error_logs?: string;
5806
+ job_id?: string;
4956
5807
  };
4957
5808
  export type CreateDraftData = {
4958
5809
  requestBody: {
@@ -4996,6 +5847,10 @@ export type ExistsWorkersWithTagsData = {
4996
5847
  * comma separated list of tags
4997
5848
  */
4998
5849
  tags: string;
5850
+ /**
5851
+ * workspace to filter tags visibility (required when TAGS_ARE_SENSITIVE is enabled for non-superadmins)
5852
+ */
5853
+ workspace?: string;
4999
5854
  };
5000
5855
  export type ExistsWorkersWithTagsResponse = {
5001
5856
  [key: string]: (boolean);
@@ -5013,6 +5868,36 @@ export type GetCountsOfJobsWaitingPerTagResponse = {
5013
5868
  export type GetCountsOfRunningJobsPerTagResponse = {
5014
5869
  [key: string]: (number);
5015
5870
  };
5871
+ export type CreateWorkspaceDependenciesData = {
5872
+ /**
5873
+ * New workspace dependencies
5874
+ */
5875
+ requestBody: NewWorkspaceDependencies;
5876
+ workspace: string;
5877
+ };
5878
+ export type CreateWorkspaceDependenciesResponse = string;
5879
+ export type ArchiveWorkspaceDependenciesData = {
5880
+ language: ScriptLang;
5881
+ name?: string;
5882
+ workspace: string;
5883
+ };
5884
+ export type ArchiveWorkspaceDependenciesResponse = unknown;
5885
+ export type DeleteWorkspaceDependenciesData = {
5886
+ language: ScriptLang;
5887
+ name?: string;
5888
+ workspace: string;
5889
+ };
5890
+ export type DeleteWorkspaceDependenciesResponse = unknown;
5891
+ export type ListWorkspaceDependenciesData = {
5892
+ workspace: string;
5893
+ };
5894
+ export type ListWorkspaceDependenciesResponse = Array<WorkspaceDependencies>;
5895
+ export type GetLatestWorkspaceDependenciesData = {
5896
+ language: ScriptLang;
5897
+ name?: string;
5898
+ workspace: string;
5899
+ };
5900
+ export type GetLatestWorkspaceDependenciesResponse = WorkspaceDependencies;
5016
5901
  export type ListSelectedJobGroupsData = {
5017
5902
  /**
5018
5903
  * script args
@@ -5725,10 +6610,6 @@ export type BatchReRunJobsData = {
5725
6610
  };
5726
6611
  export type BatchReRunJobsResponse = string;
5727
6612
  export type RestartFlowAtStepData = {
5728
- /**
5729
- * for branchall or loop, the iteration at which the flow should restart
5730
- */
5731
- branchOrIterationN: number;
5732
6613
  id: string;
5733
6614
  /**
5734
6615
  * List of headers's keys (separated with ',') whove value are added to the args
@@ -5749,9 +6630,22 @@ export type RestartFlowAtStepData = {
5749
6630
  */
5750
6631
  parentJob?: string;
5751
6632
  /**
5752
- * flow args
6633
+ * restart flow parameters
5753
6634
  */
5754
- requestBody: ScriptArgs;
6635
+ requestBody: {
6636
+ /**
6637
+ * step id to restart the flow from
6638
+ */
6639
+ step_id: string;
6640
+ /**
6641
+ * for branchall or loop, the iteration at which the flow should restart (optional)
6642
+ */
6643
+ branch_or_iteration_n?: number;
6644
+ /**
6645
+ * specific flow version to use for restart (optional, uses current version if not specified)
6646
+ */
6647
+ flow_version?: number;
6648
+ };
5755
6649
  /**
5756
6650
  * when to schedule this job (leave empty for immediate run)
5757
6651
  */
@@ -5760,10 +6654,6 @@ export type RestartFlowAtStepData = {
5760
6654
  * schedule the script to execute in the number of seconds starting now
5761
6655
  */
5762
6656
  scheduledInSecs?: number;
5763
- /**
5764
- * step id to restart the flow from
5765
- */
5766
- stepId: string;
5767
6657
  /**
5768
6658
  * Override the tag to use
5769
6659
  */
@@ -5842,6 +6732,14 @@ export type RunScriptPreviewData = {
5842
6732
  workspace: string;
5843
6733
  };
5844
6734
  export type RunScriptPreviewResponse = string;
6735
+ export type RunScriptPreviewInlineData = {
6736
+ /**
6737
+ * preview
6738
+ */
6739
+ requestBody: PreviewInline;
6740
+ workspace: string;
6741
+ };
6742
+ export type RunScriptPreviewInlineResponse = unknown;
5845
6743
  export type RunScriptPreviewAndWaitResultData = {
5846
6744
  /**
5847
6745
  * preview
@@ -6008,6 +6906,14 @@ export type ListQueueData = {
6008
6906
  * filter on jobs with a given tag/worker group
6009
6907
  */
6010
6908
  tag?: string;
6909
+ /**
6910
+ * trigger kind (schedule, http, websocket...)
6911
+ */
6912
+ triggerKind?: JobTriggerKind;
6913
+ /**
6914
+ * mask to filter by trigger path
6915
+ */
6916
+ triggerPath?: string;
6011
6917
  /**
6012
6918
  * worker this job was ran on
6013
6919
  */
@@ -6366,6 +7272,45 @@ export type ListCompletedJobsData = {
6366
7272
  workspace: string;
6367
7273
  };
6368
7274
  export type ListCompletedJobsResponse = Array<CompletedJob>;
7275
+ export type ExportCompletedJobsData = {
7276
+ /**
7277
+ * which page to return (start at 1, default 1)
7278
+ */
7279
+ page?: number;
7280
+ /**
7281
+ * number of items to return for a given page (default 30, max 100)
7282
+ */
7283
+ perPage?: number;
7284
+ workspace: string;
7285
+ };
7286
+ export type ExportCompletedJobsResponse = Array<ExportableCompletedJob>;
7287
+ export type ImportCompletedJobsData = {
7288
+ requestBody: Array<ExportableCompletedJob>;
7289
+ workspace: string;
7290
+ };
7291
+ export type ImportCompletedJobsResponse = string;
7292
+ export type ExportQueuedJobsData = {
7293
+ /**
7294
+ * which page to return (start at 1, default 1)
7295
+ */
7296
+ page?: number;
7297
+ /**
7298
+ * number of items to return for a given page (default 30, max 100)
7299
+ */
7300
+ perPage?: number;
7301
+ workspace: string;
7302
+ };
7303
+ export type ExportQueuedJobsResponse = Array<ExportableQueuedJob>;
7304
+ export type ImportQueuedJobsData = {
7305
+ requestBody: Array<ExportableQueuedJob>;
7306
+ workspace: string;
7307
+ };
7308
+ export type ImportQueuedJobsResponse = string;
7309
+ export type DeleteJobsData = {
7310
+ requestBody: Array<(string)>;
7311
+ workspace: string;
7312
+ };
7313
+ export type DeleteJobsResponse = string;
6369
7314
  export type ListJobsData = {
6370
7315
  /**
6371
7316
  * allow wildcards (*) in the filter of label, tag, worker
@@ -6490,7 +7435,7 @@ export type ListJobsData = {
6490
7435
  /**
6491
7436
  * trigger kind (schedule, http, websocket...)
6492
7437
  */
6493
- triggerKind?: 'webhook' | 'default_email' | 'email' | 'schedule' | 'http' | 'websocket' | 'postgres' | 'kafka' | 'nats' | 'mqtt' | 'sqs' | 'gcp' | 'poll' | 'cli';
7438
+ triggerKind?: JobTriggerKind;
6494
7439
  /**
6495
7440
  * worker this job was ran on
6496
7441
  */
@@ -6616,6 +7561,15 @@ export type GetCompletedJobResultMaybeResponse = {
6616
7561
  success?: boolean;
6617
7562
  started?: boolean;
6618
7563
  };
7564
+ export type GetCompletedJobTimingData = {
7565
+ id: string;
7566
+ workspace: string;
7567
+ };
7568
+ export type GetCompletedJobTimingResponse = {
7569
+ created_at: string;
7570
+ started_at?: string;
7571
+ duration_ms?: number;
7572
+ };
6619
7573
  export type DeleteCompletedJobData = {
6620
7574
  id: string;
6621
7575
  workspace: string;
@@ -6678,6 +7632,10 @@ export type CreateJobSignatureData = {
6678
7632
  export type CreateJobSignatureResponse = string;
6679
7633
  export type GetResumeUrlsData = {
6680
7634
  approver?: string;
7635
+ /**
7636
+ * If true, generate resume URLs for the parent flow instead of the specific step. This allows pre-approvals that can be consumed by any later suspend step in the same flow.
7637
+ */
7638
+ flowLevel?: boolean;
6681
7639
  id: string;
6682
7640
  resumeId: number;
6683
7641
  workspace: string;
@@ -6911,7 +7869,7 @@ export type ListExtendedJobsData = {
6911
7869
  /**
6912
7870
  * trigger kind (schedule, http, websocket...)
6913
7871
  */
6914
- triggerKind?: 'webhook' | 'default_email' | 'email' | 'schedule' | 'http' | 'websocket' | 'postgres' | 'kafka' | 'nats' | 'mqtt' | 'sqs' | 'gcp' | 'poll' | 'cli';
7872
+ triggerKind?: JobTriggerKind;
6915
7873
  workspace: string;
6916
7874
  };
6917
7875
  export type ListExtendedJobsResponse = ExtendedJobs;
@@ -7034,6 +7992,48 @@ export type DeleteRawAppData = {
7034
7992
  workspace: string;
7035
7993
  };
7036
7994
  export type DeleteRawAppResponse = string;
7995
+ export type ResumeSuspendedTriggerJobsData = {
7996
+ /**
7997
+ * Optional list of job IDs to reassign
7998
+ */
7999
+ requestBody?: {
8000
+ /**
8001
+ * Optional list of specific job UUIDs to reassign. If not provided, all suspended jobs for the trigger will be reassigned.
8002
+ */
8003
+ job_ids?: Array<(string)>;
8004
+ };
8005
+ /**
8006
+ * The kind of trigger
8007
+ */
8008
+ triggerKind: JobTriggerKind;
8009
+ /**
8010
+ * The path of the trigger (can contain forward slashes)
8011
+ */
8012
+ triggerPath: string;
8013
+ workspace: string;
8014
+ };
8015
+ export type ResumeSuspendedTriggerJobsResponse = string;
8016
+ export type CancelSuspendedTriggerJobsData = {
8017
+ /**
8018
+ * Optional list of job IDs to cancel
8019
+ */
8020
+ requestBody?: {
8021
+ /**
8022
+ * Optional list of specific job UUIDs to cancel. If not provided, all suspended jobs for the trigger will be canceled.
8023
+ */
8024
+ job_ids?: Array<(string)>;
8025
+ };
8026
+ /**
8027
+ * The kind of trigger
8028
+ */
8029
+ triggerKind: JobTriggerKind;
8030
+ /**
8031
+ * The path of the trigger (can contain forward slashes)
8032
+ */
8033
+ triggerPath: string;
8034
+ workspace: string;
8035
+ };
8036
+ export type CancelSuspendedTriggerJobsResponse = string;
7037
8037
  export type PreviewScheduleData = {
7038
8038
  /**
7039
8039
  * schedule
@@ -7233,14 +8233,14 @@ export type ExistsRouteData = {
7233
8233
  workspace: string;
7234
8234
  };
7235
8235
  export type ExistsRouteResponse = boolean;
7236
- export type SetHttpTriggerEnabledData = {
8236
+ export type SetHttpTriggerModeData = {
7237
8237
  path: string;
7238
8238
  requestBody: {
7239
- enabled: boolean;
8239
+ mode: TriggerMode;
7240
8240
  };
7241
8241
  workspace: string;
7242
8242
  };
7243
- export type SetHttpTriggerEnabledResponse = string;
8243
+ export type SetHttpTriggerModeResponse = string;
7244
8244
  export type CreateWebsocketTriggerData = {
7245
8245
  /**
7246
8246
  * new websocket trigger
@@ -7291,17 +8291,17 @@ export type ExistsWebsocketTriggerData = {
7291
8291
  workspace: string;
7292
8292
  };
7293
8293
  export type ExistsWebsocketTriggerResponse = boolean;
7294
- export type SetWebsocketTriggerEnabledData = {
8294
+ export type SetWebsocketTriggerModeData = {
7295
8295
  path: string;
7296
8296
  /**
7297
8297
  * updated websocket trigger enable
7298
8298
  */
7299
8299
  requestBody: {
7300
- enabled: boolean;
8300
+ mode: TriggerMode;
7301
8301
  };
7302
8302
  workspace: string;
7303
8303
  };
7304
- export type SetWebsocketTriggerEnabledResponse = string;
8304
+ export type SetWebsocketTriggerModeResponse = string;
7305
8305
  export type TestWebsocketConnectionData = {
7306
8306
  /**
7307
8307
  * test websocket connection
@@ -7364,17 +8364,17 @@ export type ExistsKafkaTriggerData = {
7364
8364
  workspace: string;
7365
8365
  };
7366
8366
  export type ExistsKafkaTriggerResponse = boolean;
7367
- export type SetKafkaTriggerEnabledData = {
8367
+ export type SetKafkaTriggerModeData = {
7368
8368
  path: string;
7369
8369
  /**
7370
8370
  * updated kafka trigger enable
7371
8371
  */
7372
8372
  requestBody: {
7373
- enabled: boolean;
8373
+ mode: TriggerMode;
7374
8374
  };
7375
8375
  workspace: string;
7376
8376
  };
7377
- export type SetKafkaTriggerEnabledResponse = string;
8377
+ export type SetKafkaTriggerModeResponse = string;
7378
8378
  export type TestKafkaConnectionData = {
7379
8379
  /**
7380
8380
  * test kafka connection
@@ -7437,17 +8437,17 @@ export type ExistsNatsTriggerData = {
7437
8437
  workspace: string;
7438
8438
  };
7439
8439
  export type ExistsNatsTriggerResponse = boolean;
7440
- export type SetNatsTriggerEnabledData = {
8440
+ export type SetNatsTriggerModeData = {
7441
8441
  path: string;
7442
8442
  /**
7443
8443
  * updated nats trigger enable
7444
8444
  */
7445
8445
  requestBody: {
7446
- enabled: boolean;
8446
+ mode: TriggerMode;
7447
8447
  };
7448
8448
  workspace: string;
7449
8449
  };
7450
- export type SetNatsTriggerEnabledResponse = string;
8450
+ export type SetNatsTriggerModeResponse = string;
7451
8451
  export type TestNatsConnectionData = {
7452
8452
  /**
7453
8453
  * test nats connection
@@ -7510,17 +8510,17 @@ export type ExistsSqsTriggerData = {
7510
8510
  workspace: string;
7511
8511
  };
7512
8512
  export type ExistsSqsTriggerResponse = boolean;
7513
- export type SetSqsTriggerEnabledData = {
8513
+ export type SetSqsTriggerModeData = {
7514
8514
  path: string;
7515
8515
  /**
7516
8516
  * updated sqs trigger enable
7517
8517
  */
7518
8518
  requestBody: {
7519
- enabled: boolean;
8519
+ mode: TriggerMode;
7520
8520
  };
7521
8521
  workspace: string;
7522
8522
  };
7523
- export type SetSqsTriggerEnabledResponse = string;
8523
+ export type SetSqsTriggerModeResponse = string;
7524
8524
  export type TestSqsConnectionData = {
7525
8525
  /**
7526
8526
  * test sqs connection
@@ -7583,17 +8583,17 @@ export type ExistsMqttTriggerData = {
7583
8583
  workspace: string;
7584
8584
  };
7585
8585
  export type ExistsMqttTriggerResponse = boolean;
7586
- export type SetMqttTriggerEnabledData = {
8586
+ export type SetMqttTriggerModeData = {
7587
8587
  path: string;
7588
8588
  /**
7589
8589
  * updated mqtt trigger enable
7590
8590
  */
7591
8591
  requestBody: {
7592
- enabled: boolean;
8592
+ mode: TriggerMode;
7593
8593
  };
7594
8594
  workspace: string;
7595
8595
  };
7596
- export type SetMqttTriggerEnabledResponse = string;
8596
+ export type SetMqttTriggerModeResponse = string;
7597
8597
  export type TestMqttConnectionData = {
7598
8598
  /**
7599
8599
  * test mqtt connection
@@ -7656,17 +8656,17 @@ export type ExistsGcpTriggerData = {
7656
8656
  workspace: string;
7657
8657
  };
7658
8658
  export type ExistsGcpTriggerResponse = boolean;
7659
- export type SetGcpTriggerEnabledData = {
8659
+ export type SetGcpTriggerModeData = {
7660
8660
  path: string;
7661
8661
  /**
7662
8662
  * updated gcp trigger enable
7663
8663
  */
7664
8664
  requestBody: {
7665
- enabled: boolean;
8665
+ mode: TriggerMode;
7666
8666
  };
7667
8667
  workspace: string;
7668
8668
  };
7669
- export type SetGcpTriggerEnabledResponse = string;
8669
+ export type SetGcpTriggerModeResponse = string;
7670
8670
  export type TestGcpConnectionData = {
7671
8671
  /**
7672
8672
  * test gcp connection
@@ -7847,17 +8847,17 @@ export type ExistsPostgresTriggerData = {
7847
8847
  workspace: string;
7848
8848
  };
7849
8849
  export type ExistsPostgresTriggerResponse = boolean;
7850
- export type SetPostgresTriggerEnabledData = {
8850
+ export type SetPostgresTriggerModeData = {
7851
8851
  path: string;
7852
8852
  /**
7853
8853
  * updated postgres trigger enable
7854
8854
  */
7855
8855
  requestBody: {
7856
- enabled: boolean;
8856
+ mode: TriggerMode;
7857
8857
  };
7858
8858
  workspace: string;
7859
8859
  };
7860
- export type SetPostgresTriggerEnabledResponse = string;
8860
+ export type SetPostgresTriggerModeResponse = string;
7861
8861
  export type TestPostgresConnectionData = {
7862
8862
  /**
7863
8863
  * test postgres connection
@@ -7930,14 +8930,14 @@ export type ExistsEmailLocalPartData = {
7930
8930
  workspace: string;
7931
8931
  };
7932
8932
  export type ExistsEmailLocalPartResponse = boolean;
7933
- export type SetEmailTriggerEnabledData = {
8933
+ export type SetEmailTriggerModeData = {
7934
8934
  path: string;
7935
8935
  requestBody: {
7936
- enabled: boolean;
8936
+ mode: TriggerMode;
7937
8937
  };
7938
8938
  workspace: string;
7939
8939
  };
7940
- export type SetEmailTriggerEnabledResponse = string;
8940
+ export type SetEmailTriggerModeResponse = string;
7941
8941
  export type ListInstanceGroupsResponse = Array<InstanceGroup>;
7942
8942
  export type ListInstanceGroupsWithWorkspacesResponse = Array<InstanceGroupWithWorkspaces>;
7943
8943
  export type GetInstanceGroupData = {
@@ -8070,6 +9070,25 @@ export type RemoveUserToGroupData = {
8070
9070
  workspace: string;
8071
9071
  };
8072
9072
  export type RemoveUserToGroupResponse = string;
9073
+ export type GetGroupPermissionHistoryData = {
9074
+ name: string;
9075
+ /**
9076
+ * which page to return (start at 1, default 1)
9077
+ */
9078
+ page?: number;
9079
+ /**
9080
+ * number of items to return for a given page (default 30, max 100)
9081
+ */
9082
+ perPage?: number;
9083
+ workspace: string;
9084
+ };
9085
+ export type GetGroupPermissionHistoryResponse = Array<{
9086
+ id?: number;
9087
+ changed_by?: string;
9088
+ changed_at?: string;
9089
+ change_type?: string;
9090
+ member_affected?: string | null;
9091
+ }>;
8073
9092
  export type ListFoldersData = {
8074
9093
  /**
8075
9094
  * which page to return (start at 1, default 1)
@@ -8166,6 +9185,25 @@ export type RemoveOwnerToFolderData = {
8166
9185
  workspace: string;
8167
9186
  };
8168
9187
  export type RemoveOwnerToFolderResponse = string;
9188
+ export type GetFolderPermissionHistoryData = {
9189
+ name: string;
9190
+ /**
9191
+ * which page to return (start at 1, default 1)
9192
+ */
9193
+ page?: number;
9194
+ /**
9195
+ * number of items to return for a given page (default 30, max 100)
9196
+ */
9197
+ perPage?: number;
9198
+ workspace: string;
9199
+ };
9200
+ export type GetFolderPermissionHistoryResponse = Array<{
9201
+ id?: number;
9202
+ changed_by?: string;
9203
+ changed_at?: string;
9204
+ change_type?: string;
9205
+ affected?: string | null;
9206
+ }>;
8169
9207
  export type ListWorkerGroupsResponse = Array<{
8170
9208
  name: string;
8171
9209
  config: unknown;
@@ -8264,6 +9302,7 @@ export type ListBlacklistedAgentTokensResponse = Array<{
8264
9302
  */
8265
9303
  blacklisted_by: string;
8266
9304
  }>;
9305
+ export type GetMinVersionResponse = string;
8267
9306
  export type GetGranularAclsData = {
8268
9307
  kind: 'script' | 'group_' | 'resource' | 'schedule' | 'variable' | 'flow' | 'folder' | 'app' | 'raw_app' | 'http_trigger' | 'websocket_trigger' | 'kafka_trigger' | 'nats_trigger' | 'postgres_trigger' | 'mqtt_trigger' | 'gcp_trigger' | 'sqs_trigger' | 'email_trigger';
8269
9308
  path: string;
@@ -8875,6 +9914,42 @@ export type ListMcpToolsData = {
8875
9914
  workspace: string;
8876
9915
  };
8877
9916
  export type ListMcpToolsResponse = Array<EndpointTool>;
9917
+ export type DiscoverMcpOauthData = {
9918
+ requestBody: {
9919
+ /**
9920
+ * URL of the MCP server to discover OAuth metadata from
9921
+ */
9922
+ mcp_server_url: string;
9923
+ };
9924
+ };
9925
+ export type DiscoverMcpOauthResponse = {
9926
+ scopes_supported?: Array<(string)>;
9927
+ authorization_endpoint?: string;
9928
+ token_endpoint?: string;
9929
+ registration_endpoint?: string;
9930
+ supports_dynamic_registration?: boolean;
9931
+ };
9932
+ export type StartMcpOauthPopupData = {
9933
+ /**
9934
+ * URL of the MCP server to connect to
9935
+ */
9936
+ mcpServerUrl: string;
9937
+ /**
9938
+ * Comma-separated list of OAuth scopes to request
9939
+ */
9940
+ scopes?: string;
9941
+ };
9942
+ export type McpOauthCallbackData = {
9943
+ /**
9944
+ * OAuth authorization code
9945
+ */
9946
+ code: string;
9947
+ /**
9948
+ * CSRF state token
9949
+ */
9950
+ state: string;
9951
+ };
9952
+ export type McpOauthCallbackResponse = string;
8878
9953
  export type $OpenApiTs = {
8879
9954
  '/version': {
8880
9955
  get: {
@@ -8910,9 +9985,36 @@ export type $OpenApiTs = {
8910
9985
  get: {
8911
9986
  res: {
8912
9987
  /**
8913
- * openapi yaml file content
9988
+ * openapi yaml file content
9989
+ */
9990
+ 200: string;
9991
+ };
9992
+ };
9993
+ };
9994
+ '/inkeep': {
9995
+ post: {
9996
+ req: {
9997
+ /**
9998
+ * query to send to the AI documentation assistant
9999
+ */
10000
+ requestBody: {
10001
+ /**
10002
+ * The documentation query to send to the AI assistant
10003
+ */
10004
+ query: string;
10005
+ };
10006
+ };
10007
+ res: {
10008
+ /**
10009
+ * AI documentation assistant response
8914
10010
  */
8915
- 200: string;
10011
+ 200: {
10012
+ [key: string]: unknown;
10013
+ };
10014
+ /**
10015
+ * Enterprise Edition required
10016
+ */
10017
+ 403: string;
8916
10018
  };
8917
10019
  };
8918
10020
  };
@@ -9014,6 +10116,61 @@ export type $OpenApiTs = {
9014
10116
  };
9015
10117
  };
9016
10118
  };
10119
+ '/auth/is_smtp_configured': {
10120
+ get: {
10121
+ res: {
10122
+ /**
10123
+ * returns true if SMTP is configured
10124
+ */
10125
+ 200: boolean;
10126
+ };
10127
+ };
10128
+ };
10129
+ '/auth/request_password_reset': {
10130
+ post: {
10131
+ req: {
10132
+ /**
10133
+ * email to send password reset link to
10134
+ */
10135
+ requestBody: {
10136
+ email: string;
10137
+ };
10138
+ };
10139
+ res: {
10140
+ /**
10141
+ * password reset email sent (if user exists)
10142
+ */
10143
+ 200: PasswordResetResponse;
10144
+ /**
10145
+ * SMTP not configured
10146
+ */
10147
+ 400: unknown;
10148
+ };
10149
+ };
10150
+ };
10151
+ '/auth/reset_password': {
10152
+ post: {
10153
+ req: {
10154
+ /**
10155
+ * token and new password
10156
+ */
10157
+ requestBody: {
10158
+ token: string;
10159
+ new_password: string;
10160
+ };
10161
+ };
10162
+ res: {
10163
+ /**
10164
+ * password reset successfully
10165
+ */
10166
+ 200: PasswordResetResponse;
10167
+ /**
10168
+ * invalid or expired token
10169
+ */
10170
+ 400: unknown;
10171
+ };
10172
+ };
10173
+ };
9017
10174
  '/w/{workspace}/users/get/{username}': {
9018
10175
  get: {
9019
10176
  req: {
@@ -9315,6 +10472,7 @@ export type $OpenApiTs = {
9315
10472
  */
9316
10473
  200: {
9317
10474
  progress?: number;
10475
+ skipped_all?: boolean;
9318
10476
  };
9319
10477
  };
9320
10478
  };
@@ -9325,6 +10483,7 @@ export type $OpenApiTs = {
9325
10483
  */
9326
10484
  requestBody: {
9327
10485
  progress?: number;
10486
+ skipped_all?: boolean;
9328
10487
  };
9329
10488
  };
9330
10489
  res: {
@@ -9751,6 +10910,19 @@ export type $OpenApiTs = {
9751
10910
  };
9752
10911
  };
9753
10912
  };
10913
+ '/w/{workspace}/workspaces/get_as_superadmin': {
10914
+ get: {
10915
+ req: {
10916
+ workspace: string;
10917
+ };
10918
+ res: {
10919
+ /**
10920
+ * workspace
10921
+ */
10922
+ 200: Workspace;
10923
+ };
10924
+ };
10925
+ };
9754
10926
  '/workspaces/list_as_superadmin': {
9755
10927
  get: {
9756
10928
  req: {
@@ -10070,6 +11242,40 @@ export type $OpenApiTs = {
10070
11242
  };
10071
11243
  };
10072
11244
  };
11245
+ '/w/{workspace}/workspaces/compare/{target_workspace_id}': {
11246
+ get: {
11247
+ req: {
11248
+ /**
11249
+ * The ID of the workspace to compare with
11250
+ */
11251
+ targetWorkspaceId: string;
11252
+ workspace: string;
11253
+ };
11254
+ res: {
11255
+ /**
11256
+ * Workspace comparison results
11257
+ */
11258
+ 200: WorkspaceComparison;
11259
+ };
11260
+ };
11261
+ };
11262
+ '/w/{workspace}/workspaces/reset_diff_tally/{fork_workspace_id}': {
11263
+ post: {
11264
+ req: {
11265
+ /**
11266
+ * The ID of the workspace to compare with
11267
+ */
11268
+ forkWorkspaceId: string;
11269
+ workspace: string;
11270
+ };
11271
+ res: {
11272
+ /**
11273
+ * status
11274
+ */
11275
+ 200: unknown;
11276
+ };
11277
+ };
11278
+ };
10073
11279
  '/w/{workspace}/workspaces/list_pending_invites': {
10074
11280
  get: {
10075
11281
  req: {
@@ -10102,6 +11308,7 @@ export type $OpenApiTs = {
10102
11308
  teams_team_id?: string;
10103
11309
  teams_command_script?: string;
10104
11310
  teams_team_name?: string;
11311
+ teams_team_guid?: string;
10105
11312
  auto_invite_domain?: string;
10106
11313
  auto_invite_operator?: boolean;
10107
11314
  auto_add?: boolean;
@@ -10119,6 +11326,7 @@ export type $OpenApiTs = {
10119
11326
  error_handler_muted_on_cancel: boolean;
10120
11327
  large_file_storage?: LargeFileStorage;
10121
11328
  ducklake?: DucklakeSettings;
11329
+ datatable?: DataTableSettings;
10122
11330
  git_sync?: WorkspaceGitSyncSettings;
10123
11331
  deploy_ui?: WorkspaceDeployUISettings;
10124
11332
  default_app?: string;
@@ -10228,6 +11436,40 @@ export type $OpenApiTs = {
10228
11436
  };
10229
11437
  };
10230
11438
  };
11439
+ '/w/{workspace}/workspaces/get_dependents/{imported_path}': {
11440
+ get: {
11441
+ req: {
11442
+ /**
11443
+ * The imported path to get dependents for
11444
+ */
11445
+ importedPath: string;
11446
+ workspace: string;
11447
+ };
11448
+ res: {
11449
+ /**
11450
+ * list of dependents
11451
+ */
11452
+ 200: Array<DependencyDependent>;
11453
+ };
11454
+ };
11455
+ };
11456
+ '/w/{workspace}/workspaces/get_dependents_amounts': {
11457
+ post: {
11458
+ req: {
11459
+ /**
11460
+ * List of imported paths to get dependents counts for
11461
+ */
11462
+ requestBody: Array<(string)>;
11463
+ workspace: string;
11464
+ };
11465
+ res: {
11466
+ /**
11467
+ * list of dependents amounts
11468
+ */
11469
+ 200: Array<DependentsAmount>;
11470
+ };
11471
+ };
11472
+ };
10231
11473
  '/w/{workspace}/workspaces/get_dependency_map': {
10232
11474
  get: {
10233
11475
  req: {
@@ -10331,7 +11573,11 @@ export type $OpenApiTs = {
10331
11573
  get: {
10332
11574
  req: {
10333
11575
  /**
10334
- * Search teams by name
11576
+ * Pagination cursor URL from previous response. Pass this to fetch the next page of results.
11577
+ */
11578
+ nextLink?: string;
11579
+ /**
11580
+ * Search teams by name. If omitted, returns first page of all teams.
10335
11581
  */
10336
11582
  search?: string;
10337
11583
  workspace: string;
@@ -10340,20 +11586,30 @@ export type $OpenApiTs = {
10340
11586
  /**
10341
11587
  * status
10342
11588
  */
10343
- 200: Array<{
10344
- team_name?: string;
10345
- team_id?: string;
10346
- }>;
11589
+ 200: {
11590
+ teams?: Array<{
11591
+ team_name?: string;
11592
+ team_id?: string;
11593
+ }>;
11594
+ /**
11595
+ * Total number of teams across all pages
11596
+ */
11597
+ total_count?: number;
11598
+ /**
11599
+ * Number of teams per page (configurable via TEAMS_PER_PAGE env var)
11600
+ */
11601
+ per_page?: number;
11602
+ /**
11603
+ * URL to fetch next page of results. Null if no more pages.
11604
+ */
11605
+ next_link?: string | null;
11606
+ };
10347
11607
  };
10348
11608
  };
10349
11609
  };
10350
11610
  '/w/{workspace}/workspaces/available_teams_channels': {
10351
11611
  get: {
10352
11612
  req: {
10353
- /**
10354
- * Search channels by name
10355
- */
10356
- search?: string;
10357
11613
  /**
10358
11614
  * Microsoft Teams team ID
10359
11615
  */
@@ -10364,10 +11620,13 @@ export type $OpenApiTs = {
10364
11620
  /**
10365
11621
  * List of channels for the specified team
10366
11622
  */
10367
- 200: Array<{
10368
- channel_name?: string;
10369
- channel_id?: string;
10370
- }>;
11623
+ 200: {
11624
+ channels?: Array<{
11625
+ channel_name?: string;
11626
+ channel_id?: string;
11627
+ }>;
11628
+ total_count?: number;
11629
+ };
10371
11630
  };
10372
11631
  };
10373
11632
  };
@@ -10598,6 +11857,32 @@ export type $OpenApiTs = {
10598
11857
  };
10599
11858
  };
10600
11859
  };
11860
+ '/w/{workspace}/workspaces/list_datatables': {
11861
+ get: {
11862
+ req: {
11863
+ workspace: string;
11864
+ };
11865
+ res: {
11866
+ /**
11867
+ * status
11868
+ */
11869
+ 200: Array<(string)>;
11870
+ };
11871
+ };
11872
+ };
11873
+ '/w/{workspace}/workspaces/list_datatable_schemas': {
11874
+ get: {
11875
+ req: {
11876
+ workspace: string;
11877
+ };
11878
+ res: {
11879
+ /**
11880
+ * schemas of all datatables
11881
+ */
11882
+ 200: Array<DataTableSchema>;
11883
+ };
11884
+ };
11885
+ };
10601
11886
  '/w/{workspace}/workspaces/edit_ducklake_config': {
10602
11887
  post: {
10603
11888
  req: {
@@ -10617,6 +11902,25 @@ export type $OpenApiTs = {
10617
11902
  };
10618
11903
  };
10619
11904
  };
11905
+ '/w/{workspace}/workspaces/edit_datatable_config': {
11906
+ post: {
11907
+ req: {
11908
+ /**
11909
+ * DataTable settings
11910
+ */
11911
+ requestBody: {
11912
+ settings: DataTableSettings;
11913
+ };
11914
+ workspace: string;
11915
+ };
11916
+ res: {
11917
+ /**
11918
+ * status
11919
+ */
11920
+ 200: unknown;
11921
+ };
11922
+ };
11923
+ };
10620
11924
  '/w/{workspace}/workspaces/edit_git_sync_config': {
10621
11925
  post: {
10622
11926
  req: {
@@ -10864,31 +12168,46 @@ export type $OpenApiTs = {
10864
12168
  };
10865
12169
  };
10866
12170
  };
10867
- '/settings/get_ducklake_instance_catalog_db_status': {
12171
+ '/settings/refresh_custom_instance_user_pwd': {
12172
+ post: {
12173
+ res: {
12174
+ /**
12175
+ * Success
12176
+ */
12177
+ 200: {
12178
+ [key: string]: unknown;
12179
+ };
12180
+ };
12181
+ };
12182
+ };
12183
+ '/settings/list_custom_instance_pg_databases': {
10868
12184
  post: {
10869
12185
  res: {
10870
12186
  /**
10871
- * Statuses of all ducklake instance catalog dbs
12187
+ * Statuses of all custom instance dbs
10872
12188
  */
10873
12189
  200: {
10874
- [key: string]: DucklakeInstanceCatalogDbStatus;
12190
+ [key: string]: CustomInstanceDb;
10875
12191
  };
10876
12192
  };
10877
12193
  };
10878
12194
  };
10879
- '/settings/setup_ducklake_catalog_db/{name}': {
12195
+ '/settings/setup_custom_instance_pg_database/{name}': {
10880
12196
  post: {
10881
12197
  req: {
10882
12198
  /**
10883
12199
  * The name of the database to create
10884
12200
  */
10885
12201
  name: string;
12202
+ requestBody: {
12203
+ tag?: CustomInstanceDbTag;
12204
+ };
10886
12205
  };
10887
12206
  res: {
10888
12207
  /**
10889
12208
  * status
10890
12209
  */
10891
- 200: DucklakeInstanceCatalogDbStatus;
12210
+ 200: CustomInstanceDb;
10892
12211
  };
10893
12212
  };
10894
12213
  };
@@ -11245,6 +12564,7 @@ export type $OpenApiTs = {
11245
12564
  post: {
11246
12565
  req: {
11247
12566
  audience: string;
12567
+ expiresIn?: number;
11248
12568
  workspace: string;
11249
12569
  };
11250
12570
  res: {
@@ -11529,6 +12849,10 @@ export type $OpenApiTs = {
11529
12849
  * OAuth token URL override for resource-level authentication (client_credentials flow only)
11530
12850
  */
11531
12851
  cc_token_url?: string;
12852
+ /**
12853
+ * MCP server URL for MCP OAuth token refresh
12854
+ */
12855
+ mcp_server_url?: string;
11532
12856
  };
11533
12857
  workspace: string;
11534
12858
  };
@@ -12314,10 +13638,9 @@ export type $OpenApiTs = {
12314
13638
  };
12315
13639
  };
12316
13640
  };
12317
- '/w/{workspace}/flows/get/v/{version}/p/{path}': {
13641
+ '/w/{workspace}/flows/get/v/{version}': {
12318
13642
  get: {
12319
13643
  req: {
12320
- path: string;
12321
13644
  version: number;
12322
13645
  workspace: string;
12323
13646
  };
@@ -12329,10 +13652,9 @@ export type $OpenApiTs = {
12329
13652
  };
12330
13653
  };
12331
13654
  };
12332
- '/w/{workspace}/flows/history_update/v/{version}/p/{path}': {
13655
+ '/w/{workspace}/flows/history_update/v/{version}': {
12333
13656
  post: {
12334
13657
  req: {
12335
- path: string;
12336
13658
  /**
12337
13659
  * Flow deployment message
12338
13660
  */
@@ -12377,6 +13699,7 @@ export type $OpenApiTs = {
12377
13699
  */
12378
13700
  200: {
12379
13701
  lock_error_logs?: string;
13702
+ job_id?: string;
12380
13703
  };
12381
13704
  };
12382
13705
  };
@@ -13677,6 +15000,7 @@ export type $OpenApiTs = {
13677
15000
  200: {
13678
15001
  lock?: string;
13679
15002
  lock_error_logs?: string;
15003
+ job_id?: string;
13680
15004
  };
13681
15005
  };
13682
15006
  };
@@ -13779,6 +15103,10 @@ export type $OpenApiTs = {
13779
15103
  * comma separated list of tags
13780
15104
  */
13781
15105
  tags: string;
15106
+ /**
15107
+ * workspace to filter tags visibility (required when TAGS_ARE_SENSITIVE is enabled for non-superadmins)
15108
+ */
15109
+ workspace?: string;
13782
15110
  };
13783
15111
  res: {
13784
15112
  /**
@@ -13830,6 +15158,81 @@ export type $OpenApiTs = {
13830
15158
  };
13831
15159
  };
13832
15160
  };
15161
+ '/w/{workspace}/workspace_dependencies/create': {
15162
+ post: {
15163
+ req: {
15164
+ /**
15165
+ * New workspace dependencies
15166
+ */
15167
+ requestBody: NewWorkspaceDependencies;
15168
+ workspace: string;
15169
+ };
15170
+ res: {
15171
+ /**
15172
+ * workspace dependencies created
15173
+ */
15174
+ 201: string;
15175
+ };
15176
+ };
15177
+ };
15178
+ '/w/{workspace}/workspace_dependencies/archive/{language}': {
15179
+ post: {
15180
+ req: {
15181
+ language: ScriptLang;
15182
+ name?: string;
15183
+ workspace: string;
15184
+ };
15185
+ res: {
15186
+ /**
15187
+ * result
15188
+ */
15189
+ 200: unknown;
15190
+ };
15191
+ };
15192
+ };
15193
+ '/w/{workspace}/workspace_dependencies/delete/{language}': {
15194
+ post: {
15195
+ req: {
15196
+ language: ScriptLang;
15197
+ name?: string;
15198
+ workspace: string;
15199
+ };
15200
+ res: {
15201
+ /**
15202
+ * result
15203
+ */
15204
+ 200: unknown;
15205
+ };
15206
+ };
15207
+ };
15208
+ '/w/{workspace}/workspace_dependencies/list': {
15209
+ get: {
15210
+ req: {
15211
+ workspace: string;
15212
+ };
15213
+ res: {
15214
+ /**
15215
+ * All workspace dependencies
15216
+ */
15217
+ 200: Array<WorkspaceDependencies>;
15218
+ };
15219
+ };
15220
+ };
15221
+ '/w/{workspace}/workspace_dependencies/get_latest/{language}': {
15222
+ get: {
15223
+ req: {
15224
+ language: ScriptLang;
15225
+ name?: string;
15226
+ workspace: string;
15227
+ };
15228
+ res: {
15229
+ /**
15230
+ * Latest workspace dependencies
15231
+ */
15232
+ 200: WorkspaceDependencies;
15233
+ };
15234
+ };
15235
+ };
13833
15236
  '/w/{workspace}/jobs/list_selected_job_groups': {
13834
15237
  post: {
13835
15238
  req: {
@@ -14700,13 +16103,9 @@ export type $OpenApiTs = {
14700
16103
  };
14701
16104
  };
14702
16105
  };
14703
- '/w/{workspace}/jobs/restart/f/{id}/from/{step_id}/{branch_or_iteration_n}': {
16106
+ '/w/{workspace}/jobs/restart/f/{id}': {
14704
16107
  post: {
14705
16108
  req: {
14706
- /**
14707
- * for branchall or loop, the iteration at which the flow should restart
14708
- */
14709
- branchOrIterationN: number;
14710
16109
  id: string;
14711
16110
  /**
14712
16111
  * List of headers's keys (separated with ',') whove value are added to the args
@@ -14727,9 +16126,22 @@ export type $OpenApiTs = {
14727
16126
  */
14728
16127
  parentJob?: string;
14729
16128
  /**
14730
- * flow args
16129
+ * restart flow parameters
14731
16130
  */
14732
- requestBody: ScriptArgs;
16131
+ requestBody: {
16132
+ /**
16133
+ * step id to restart the flow from
16134
+ */
16135
+ step_id: string;
16136
+ /**
16137
+ * for branchall or loop, the iteration at which the flow should restart (optional)
16138
+ */
16139
+ branch_or_iteration_n?: number;
16140
+ /**
16141
+ * specific flow version to use for restart (optional, uses current version if not specified)
16142
+ */
16143
+ flow_version?: number;
16144
+ };
14733
16145
  /**
14734
16146
  * when to schedule this job (leave empty for immediate run)
14735
16147
  */
@@ -14738,10 +16150,6 @@ export type $OpenApiTs = {
14738
16150
  * schedule the script to execute in the number of seconds starting now
14739
16151
  */
14740
16152
  scheduledInSecs?: number;
14741
- /**
14742
- * step id to restart the flow from
14743
- */
14744
- stepId: string;
14745
16153
  /**
14746
16154
  * Override the tag to use
14747
16155
  */
@@ -14845,6 +16253,23 @@ export type $OpenApiTs = {
14845
16253
  };
14846
16254
  };
14847
16255
  };
16256
+ '/w/{workspace}/jobs/run_inline/preview': {
16257
+ post: {
16258
+ req: {
16259
+ /**
16260
+ * preview
16261
+ */
16262
+ requestBody: PreviewInline;
16263
+ workspace: string;
16264
+ };
16265
+ res: {
16266
+ /**
16267
+ * script result
16268
+ */
16269
+ 200: unknown;
16270
+ };
16271
+ };
16272
+ };
14848
16273
  '/w/{workspace}/jobs/run_wait_result/preview': {
14849
16274
  post: {
14850
16275
  req: {
@@ -15067,6 +16492,14 @@ export type $OpenApiTs = {
15067
16492
  * filter on jobs with a given tag/worker group
15068
16493
  */
15069
16494
  tag?: string;
16495
+ /**
16496
+ * trigger kind (schedule, http, websocket...)
16497
+ */
16498
+ triggerKind?: JobTriggerKind;
16499
+ /**
16500
+ * mask to filter by trigger path
16501
+ */
16502
+ triggerPath?: string;
15070
16503
  /**
15071
16504
  * worker this job was ran on
15072
16505
  */
@@ -15495,6 +16928,90 @@ export type $OpenApiTs = {
15495
16928
  };
15496
16929
  };
15497
16930
  };
16931
+ '/w/{workspace}/jobs/completed/export': {
16932
+ get: {
16933
+ req: {
16934
+ /**
16935
+ * which page to return (start at 1, default 1)
16936
+ */
16937
+ page?: number;
16938
+ /**
16939
+ * number of items to return for a given page (default 30, max 100)
16940
+ */
16941
+ perPage?: number;
16942
+ workspace: string;
16943
+ };
16944
+ res: {
16945
+ /**
16946
+ * All completed jobs exported
16947
+ */
16948
+ 200: Array<ExportableCompletedJob>;
16949
+ };
16950
+ };
16951
+ };
16952
+ '/w/{workspace}/jobs/completed/import': {
16953
+ post: {
16954
+ req: {
16955
+ requestBody: Array<ExportableCompletedJob>;
16956
+ workspace: string;
16957
+ };
16958
+ res: {
16959
+ /**
16960
+ * Successfully imported completed jobs
16961
+ */
16962
+ 200: string;
16963
+ };
16964
+ };
16965
+ };
16966
+ '/w/{workspace}/jobs/queue/export': {
16967
+ get: {
16968
+ req: {
16969
+ /**
16970
+ * which page to return (start at 1, default 1)
16971
+ */
16972
+ page?: number;
16973
+ /**
16974
+ * number of items to return for a given page (default 30, max 100)
16975
+ */
16976
+ perPage?: number;
16977
+ workspace: string;
16978
+ };
16979
+ res: {
16980
+ /**
16981
+ * All queued jobs exported
16982
+ */
16983
+ 200: Array<ExportableQueuedJob>;
16984
+ };
16985
+ };
16986
+ };
16987
+ '/w/{workspace}/jobs/queue/import': {
16988
+ post: {
16989
+ req: {
16990
+ requestBody: Array<ExportableQueuedJob>;
16991
+ workspace: string;
16992
+ };
16993
+ res: {
16994
+ /**
16995
+ * Successfully imported queued jobs
16996
+ */
16997
+ 200: string;
16998
+ };
16999
+ };
17000
+ };
17001
+ '/w/{workspace}/jobs/delete': {
17002
+ post: {
17003
+ req: {
17004
+ requestBody: Array<(string)>;
17005
+ workspace: string;
17006
+ };
17007
+ res: {
17008
+ /**
17009
+ * Successfully deleted jobs
17010
+ */
17011
+ 200: string;
17012
+ };
17013
+ };
17014
+ };
15498
17015
  '/w/{workspace}/jobs/list': {
15499
17016
  get: {
15500
17017
  req: {
@@ -15621,7 +17138,7 @@ export type $OpenApiTs = {
15621
17138
  /**
15622
17139
  * trigger kind (schedule, http, websocket...)
15623
17140
  */
15624
- triggerKind?: 'webhook' | 'default_email' | 'email' | 'schedule' | 'http' | 'websocket' | 'postgres' | 'kafka' | 'nats' | 'mqtt' | 'sqs' | 'gcp' | 'poll' | 'cli';
17141
+ triggerKind?: JobTriggerKind;
15625
17142
  /**
15626
17143
  * worker this job was ran on
15627
17144
  */
@@ -15889,6 +17406,24 @@ export type $OpenApiTs = {
15889
17406
  };
15890
17407
  };
15891
17408
  };
17409
+ '/w/{workspace}/jobs_u/completed/get_timing/{id}': {
17410
+ get: {
17411
+ req: {
17412
+ id: string;
17413
+ workspace: string;
17414
+ };
17415
+ res: {
17416
+ /**
17417
+ * job timing details
17418
+ */
17419
+ 200: {
17420
+ created_at: string;
17421
+ started_at?: string;
17422
+ duration_ms?: number;
17423
+ };
17424
+ };
17425
+ };
17426
+ };
15892
17427
  '/w/{workspace}/jobs/completed/delete/{id}': {
15893
17428
  post: {
15894
17429
  req: {
@@ -16016,6 +17551,10 @@ export type $OpenApiTs = {
16016
17551
  get: {
16017
17552
  req: {
16018
17553
  approver?: string;
17554
+ /**
17555
+ * If true, generate resume URLs for the parent flow instead of the specific step. This allows pre-approvals that can be consumed by any later suspend step in the same flow.
17556
+ */
17557
+ flowLevel?: boolean;
16019
17558
  id: string;
16020
17559
  resumeId: number;
16021
17560
  workspace: string;
@@ -16342,7 +17881,7 @@ export type $OpenApiTs = {
16342
17881
  /**
16343
17882
  * trigger kind (schedule, http, websocket...)
16344
17883
  */
16345
- triggerKind?: 'webhook' | 'default_email' | 'email' | 'schedule' | 'http' | 'websocket' | 'postgres' | 'kafka' | 'nats' | 'mqtt' | 'sqs' | 'gcp' | 'poll' | 'cli';
17884
+ triggerKind?: JobTriggerKind;
16346
17885
  workspace: string;
16347
17886
  };
16348
17887
  res: {
@@ -16553,6 +18092,66 @@ export type $OpenApiTs = {
16553
18092
  };
16554
18093
  };
16555
18094
  };
18095
+ '/w/{workspace}/trigger/{trigger_kind}/resume_suspended_trigger_jobs/{trigger_path}': {
18096
+ post: {
18097
+ req: {
18098
+ /**
18099
+ * Optional list of job IDs to reassign
18100
+ */
18101
+ requestBody?: {
18102
+ /**
18103
+ * Optional list of specific job UUIDs to reassign. If not provided, all suspended jobs for the trigger will be reassigned.
18104
+ */
18105
+ job_ids?: Array<(string)>;
18106
+ };
18107
+ /**
18108
+ * The kind of trigger
18109
+ */
18110
+ triggerKind: JobTriggerKind;
18111
+ /**
18112
+ * The path of the trigger (can contain forward slashes)
18113
+ */
18114
+ triggerPath: string;
18115
+ workspace: string;
18116
+ };
18117
+ res: {
18118
+ /**
18119
+ * confirmation message
18120
+ */
18121
+ 200: string;
18122
+ };
18123
+ };
18124
+ };
18125
+ '/w/{workspace}/trigger/{trigger_kind}/cancel_suspended_trigger_jobs/{trigger_path}': {
18126
+ post: {
18127
+ req: {
18128
+ /**
18129
+ * Optional list of job IDs to cancel
18130
+ */
18131
+ requestBody?: {
18132
+ /**
18133
+ * Optional list of specific job UUIDs to cancel. If not provided, all suspended jobs for the trigger will be canceled.
18134
+ */
18135
+ job_ids?: Array<(string)>;
18136
+ };
18137
+ /**
18138
+ * The kind of trigger
18139
+ */
18140
+ triggerKind: JobTriggerKind;
18141
+ /**
18142
+ * The path of the trigger (can contain forward slashes)
18143
+ */
18144
+ triggerPath: string;
18145
+ workspace: string;
18146
+ };
18147
+ res: {
18148
+ /**
18149
+ * confirmation message
18150
+ */
18151
+ 200: string;
18152
+ };
18153
+ };
18154
+ };
16556
18155
  '/schedules/preview': {
16557
18156
  post: {
16558
18157
  req: {
@@ -16932,12 +18531,12 @@ export type $OpenApiTs = {
16932
18531
  };
16933
18532
  };
16934
18533
  };
16935
- '/w/{workspace}/http_triggers/setenabled/{path}': {
18534
+ '/w/{workspace}/http_triggers/setmode/{path}': {
16936
18535
  post: {
16937
18536
  req: {
16938
18537
  path: string;
16939
18538
  requestBody: {
16940
- enabled: boolean;
18539
+ mode: TriggerMode;
16941
18540
  };
16942
18541
  workspace: string;
16943
18542
  };
@@ -17053,7 +18652,7 @@ export type $OpenApiTs = {
17053
18652
  };
17054
18653
  };
17055
18654
  };
17056
- '/w/{workspace}/websocket_triggers/setenabled/{path}': {
18655
+ '/w/{workspace}/websocket_triggers/setmode/{path}': {
17057
18656
  post: {
17058
18657
  req: {
17059
18658
  path: string;
@@ -17061,7 +18660,7 @@ export type $OpenApiTs = {
17061
18660
  * updated websocket trigger enable
17062
18661
  */
17063
18662
  requestBody: {
17064
- enabled: boolean;
18663
+ mode: TriggerMode;
17065
18664
  };
17066
18665
  workspace: string;
17067
18666
  };
@@ -17198,7 +18797,7 @@ export type $OpenApiTs = {
17198
18797
  };
17199
18798
  };
17200
18799
  };
17201
- '/w/{workspace}/kafka_triggers/setenabled/{path}': {
18800
+ '/w/{workspace}/kafka_triggers/setmode/{path}': {
17202
18801
  post: {
17203
18802
  req: {
17204
18803
  path: string;
@@ -17206,7 +18805,7 @@ export type $OpenApiTs = {
17206
18805
  * updated kafka trigger enable
17207
18806
  */
17208
18807
  requestBody: {
17209
- enabled: boolean;
18808
+ mode: TriggerMode;
17210
18809
  };
17211
18810
  workspace: string;
17212
18811
  };
@@ -17343,7 +18942,7 @@ export type $OpenApiTs = {
17343
18942
  };
17344
18943
  };
17345
18944
  };
17346
- '/w/{workspace}/nats_triggers/setenabled/{path}': {
18945
+ '/w/{workspace}/nats_triggers/setmode/{path}': {
17347
18946
  post: {
17348
18947
  req: {
17349
18948
  path: string;
@@ -17351,7 +18950,7 @@ export type $OpenApiTs = {
17351
18950
  * updated nats trigger enable
17352
18951
  */
17353
18952
  requestBody: {
17354
- enabled: boolean;
18953
+ mode: TriggerMode;
17355
18954
  };
17356
18955
  workspace: string;
17357
18956
  };
@@ -17488,7 +19087,7 @@ export type $OpenApiTs = {
17488
19087
  };
17489
19088
  };
17490
19089
  };
17491
- '/w/{workspace}/sqs_triggers/setenabled/{path}': {
19090
+ '/w/{workspace}/sqs_triggers/setmode/{path}': {
17492
19091
  post: {
17493
19092
  req: {
17494
19093
  path: string;
@@ -17496,7 +19095,7 @@ export type $OpenApiTs = {
17496
19095
  * updated sqs trigger enable
17497
19096
  */
17498
19097
  requestBody: {
17499
- enabled: boolean;
19098
+ mode: TriggerMode;
17500
19099
  };
17501
19100
  workspace: string;
17502
19101
  };
@@ -17633,7 +19232,7 @@ export type $OpenApiTs = {
17633
19232
  };
17634
19233
  };
17635
19234
  };
17636
- '/w/{workspace}/mqtt_triggers/setenabled/{path}': {
19235
+ '/w/{workspace}/mqtt_triggers/setmode/{path}': {
17637
19236
  post: {
17638
19237
  req: {
17639
19238
  path: string;
@@ -17641,7 +19240,7 @@ export type $OpenApiTs = {
17641
19240
  * updated mqtt trigger enable
17642
19241
  */
17643
19242
  requestBody: {
17644
- enabled: boolean;
19243
+ mode: TriggerMode;
17645
19244
  };
17646
19245
  workspace: string;
17647
19246
  };
@@ -17778,7 +19377,7 @@ export type $OpenApiTs = {
17778
19377
  };
17779
19378
  };
17780
19379
  };
17781
- '/w/{workspace}/gcp_triggers/setenabled/{path}': {
19380
+ '/w/{workspace}/gcp_triggers/setmode/{path}': {
17782
19381
  post: {
17783
19382
  req: {
17784
19383
  path: string;
@@ -17786,7 +19385,7 @@ export type $OpenApiTs = {
17786
19385
  * updated gcp trigger enable
17787
19386
  */
17788
19387
  requestBody: {
17789
- enabled: boolean;
19388
+ mode: TriggerMode;
17790
19389
  };
17791
19390
  workspace: string;
17792
19391
  };
@@ -18176,7 +19775,7 @@ export type $OpenApiTs = {
18176
19775
  };
18177
19776
  };
18178
19777
  };
18179
- '/w/{workspace}/postgres_triggers/setenabled/{path}': {
19778
+ '/w/{workspace}/postgres_triggers/setmode/{path}': {
18180
19779
  post: {
18181
19780
  req: {
18182
19781
  path: string;
@@ -18184,7 +19783,7 @@ export type $OpenApiTs = {
18184
19783
  * updated postgres trigger enable
18185
19784
  */
18186
19785
  requestBody: {
18187
- enabled: boolean;
19786
+ mode: TriggerMode;
18188
19787
  };
18189
19788
  workspace: string;
18190
19789
  };
@@ -18340,12 +19939,12 @@ export type $OpenApiTs = {
18340
19939
  };
18341
19940
  };
18342
19941
  };
18343
- '/w/{workspace}/email_triggers/setenabled/{path}': {
19942
+ '/w/{workspace}/email_triggers/setmode/{path}': {
18344
19943
  post: {
18345
19944
  req: {
18346
19945
  path: string;
18347
19946
  requestBody: {
18348
- enabled: boolean;
19947
+ mode: TriggerMode;
18349
19948
  };
18350
19949
  workspace: string;
18351
19950
  };
@@ -18651,6 +20250,34 @@ export type $OpenApiTs = {
18651
20250
  };
18652
20251
  };
18653
20252
  };
20253
+ '/w/{workspace}/groups_history/get/{name}': {
20254
+ get: {
20255
+ req: {
20256
+ name: string;
20257
+ /**
20258
+ * which page to return (start at 1, default 1)
20259
+ */
20260
+ page?: number;
20261
+ /**
20262
+ * number of items to return for a given page (default 30, max 100)
20263
+ */
20264
+ perPage?: number;
20265
+ workspace: string;
20266
+ };
20267
+ res: {
20268
+ /**
20269
+ * group permission history
20270
+ */
20271
+ 200: Array<{
20272
+ id?: number;
20273
+ changed_by?: string;
20274
+ changed_at?: string;
20275
+ change_type?: string;
20276
+ member_affected?: string | null;
20277
+ }>;
20278
+ };
20279
+ };
20280
+ };
18654
20281
  '/w/{workspace}/folders/list': {
18655
20282
  get: {
18656
20283
  req: {
@@ -18837,6 +20464,34 @@ export type $OpenApiTs = {
18837
20464
  };
18838
20465
  };
18839
20466
  };
20467
+ '/w/{workspace}/folders_history/get/{name}': {
20468
+ get: {
20469
+ req: {
20470
+ name: string;
20471
+ /**
20472
+ * which page to return (start at 1, default 1)
20473
+ */
20474
+ page?: number;
20475
+ /**
20476
+ * number of items to return for a given page (default 30, max 100)
20477
+ */
20478
+ perPage?: number;
20479
+ workspace: string;
20480
+ };
20481
+ res: {
20482
+ /**
20483
+ * folder permission history
20484
+ */
20485
+ 200: Array<{
20486
+ id?: number;
20487
+ changed_by?: string;
20488
+ changed_at?: string;
20489
+ change_type?: string;
20490
+ affected?: string | null;
20491
+ }>;
20492
+ };
20493
+ };
20494
+ };
18840
20495
  '/configs/list_worker_groups': {
18841
20496
  get: {
18842
20497
  res: {
@@ -19045,6 +20700,16 @@ export type $OpenApiTs = {
19045
20700
  };
19046
20701
  };
19047
20702
  };
20703
+ '/agent_workers/get_min_version': {
20704
+ get: {
20705
+ res: {
20706
+ /**
20707
+ * minimum worker version
20708
+ */
20709
+ 200: string;
20710
+ };
20711
+ };
20712
+ };
19048
20713
  '/w/{workspace}/acls/get/{kind}/{path}': {
19049
20714
  get: {
19050
20715
  req: {
@@ -20149,4 +21814,68 @@ export type $OpenApiTs = {
20149
21814
  };
20150
21815
  };
20151
21816
  };
21817
+ '/mcp/oauth/discover': {
21818
+ post: {
21819
+ req: {
21820
+ requestBody: {
21821
+ /**
21822
+ * URL of the MCP server to discover OAuth metadata from
21823
+ */
21824
+ mcp_server_url: string;
21825
+ };
21826
+ };
21827
+ res: {
21828
+ /**
21829
+ * OAuth metadata from MCP server
21830
+ */
21831
+ 200: {
21832
+ scopes_supported?: Array<(string)>;
21833
+ authorization_endpoint?: string;
21834
+ token_endpoint?: string;
21835
+ registration_endpoint?: string;
21836
+ supports_dynamic_registration?: boolean;
21837
+ };
21838
+ };
21839
+ };
21840
+ };
21841
+ '/mcp/oauth/start': {
21842
+ get: {
21843
+ req: {
21844
+ /**
21845
+ * URL of the MCP server to connect to
21846
+ */
21847
+ mcpServerUrl: string;
21848
+ /**
21849
+ * Comma-separated list of OAuth scopes to request
21850
+ */
21851
+ scopes?: string;
21852
+ };
21853
+ res: {
21854
+ /**
21855
+ * Redirect to OAuth provider authorization URL
21856
+ */
21857
+ 302: unknown;
21858
+ };
21859
+ };
21860
+ };
21861
+ '/mcp/oauth/callback': {
21862
+ get: {
21863
+ req: {
21864
+ /**
21865
+ * OAuth authorization code
21866
+ */
21867
+ code: string;
21868
+ /**
21869
+ * CSRF state token
21870
+ */
21871
+ state: string;
21872
+ };
21873
+ res: {
21874
+ /**
21875
+ * HTML page with JavaScript that posts tokens to opener window and closes
21876
+ */
21877
+ 200: string;
21878
+ };
21879
+ };
21880
+ };
20152
21881
  };