aspera-cli 4.27.5 → 4.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +160 -4
  4. data/CONTRIBUTING.md +4 -2
  5. data/README.md +1 -1
  6. data/bin/asession +1 -1
  7. data/docs/README.md +1086 -331
  8. data/docs/test-mcp-with-ai.md +5 -3
  9. data/lib/aspera/agent/direct.rb +15 -4
  10. data/lib/aspera/agent/factory.rb +2 -1
  11. data/lib/aspera/agent/node.rb +1 -1
  12. data/lib/aspera/api/cos_node.rb +1 -1
  13. data/lib/aspera/api/faspex.rb +1 -1
  14. data/lib/aspera/api/node.rb +6 -2
  15. data/lib/aspera/ascp/installation.rb +47 -11
  16. data/lib/aspera/ascp/management.rb +89 -43
  17. data/lib/aspera/cli/ascp_actions.rb +5 -19
  18. data/lib/aspera/cli/bootstrapper.rb +1 -2
  19. data/lib/aspera/cli/command_registry.rb +43 -3
  20. data/lib/aspera/cli/command_spec.rb +3 -0
  21. data/lib/aspera/cli/completion/ascli.bash +39 -5
  22. data/lib/aspera/cli/completion/ascli.fish +16 -8
  23. data/lib/aspera/cli/completion/ascli.ps1 +41 -0
  24. data/lib/aspera/cli/completion/ascli.zsh +20 -4
  25. data/lib/aspera/cli/completion_actions.rb +360 -0
  26. data/lib/aspera/cli/error.rb +42 -0
  27. data/lib/aspera/cli/extended_value.rb +30 -5
  28. data/lib/aspera/cli/formatter.rb +118 -56
  29. data/lib/aspera/cli/hints.rb +0 -1
  30. data/lib/aspera/cli/http.rb +6 -5
  31. data/lib/aspera/cli/info.rb +10 -4
  32. data/lib/aspera/cli/mailer.rb +1 -1
  33. data/lib/aspera/cli/mcp/http_servlet.rb +156 -0
  34. data/lib/aspera/cli/mcp/secrets.rb +143 -0
  35. data/lib/aspera/cli/mcp/tool.rb +231 -0
  36. data/lib/aspera/cli/option_value.rb +9 -1
  37. data/lib/aspera/cli/options.schema.yaml +390 -39
  38. data/lib/aspera/cli/parser.rb +14 -5
  39. data/lib/aspera/cli/plugins/aoc.rb +8 -11
  40. data/lib/aspera/cli/plugins/base.rb +36 -15
  41. data/lib/aspera/cli/plugins/config.rb +15 -44
  42. data/lib/aspera/cli/plugins/console.rb +3 -1
  43. data/lib/aspera/cli/plugins/factory.rb +1 -1
  44. data/lib/aspera/cli/plugins/faspex5.rb +9 -19
  45. data/lib/aspera/cli/plugins/faspio.rb +36 -5
  46. data/lib/aspera/cli/plugins/httpgw.rb +1 -0
  47. data/lib/aspera/cli/plugins/mcp.rb +177 -118
  48. data/lib/aspera/cli/plugins/node.rb +14 -8
  49. data/lib/aspera/cli/plugins/orchestrator.rb +351 -38
  50. data/lib/aspera/cli/plugins/server.rb +3 -1
  51. data/lib/aspera/cli/plugins/shares.rb +205 -35
  52. data/lib/aspera/cli/preset_actions.rb +15 -7
  53. data/lib/aspera/cli/preset_manager.rb +24 -2
  54. data/lib/aspera/cli/prompt.rb +3 -1
  55. data/lib/aspera/cli/result.rb +17 -4
  56. data/lib/aspera/cli/runner.rb +133 -43
  57. data/lib/aspera/cli/security.rb +134 -0
  58. data/lib/aspera/cli/table_fitter.rb +116 -0
  59. data/lib/aspera/cli/terminal_formatter.rb +23 -34
  60. data/lib/aspera/cli/transfer_agent.rb +4 -1
  61. data/lib/aspera/cli/vault_manager.rb +6 -5
  62. data/lib/aspera/cli/version.rb +1 -1
  63. data/lib/aspera/cli/web_secret.html.erb +61 -0
  64. data/lib/aspera/cli/web_secret.rb +220 -0
  65. data/lib/aspera/cli/wizard.rb +19 -9
  66. data/lib/aspera/command_line_builder.rb +26 -0
  67. data/lib/aspera/data_repository.rb +38 -24
  68. data/lib/aspera/duration.rb +42 -0
  69. data/lib/aspera/environment.rb +88 -24
  70. data/lib/aspera/exec_spec.rb +6 -5
  71. data/lib/aspera/faspex_gw.rb +98 -32
  72. data/lib/aspera/faspex_postproc.rb +187 -44
  73. data/lib/aspera/formatter_interface.rb +0 -1
  74. data/lib/aspera/id_generator.rb +2 -1
  75. data/lib/aspera/json_rpc/client.rb +51 -32
  76. data/lib/aspera/json_rpc/version.rb +1 -0
  77. data/lib/aspera/keychain/base.rb +5 -0
  78. data/lib/aspera/keychain/encrypted_hash.rb +6 -2
  79. data/lib/aspera/keychain/factory.rb +2 -3
  80. data/lib/aspera/keychain/hashicorp_vault.rb +7 -4
  81. data/lib/aspera/keychain/macos_security.rb +119 -13
  82. data/lib/aspera/keychain/one_password_api.rb +8 -3
  83. data/lib/aspera/keychain/one_password_base.rb +14 -9
  84. data/lib/aspera/keychain/one_password_cli.rb +4 -2
  85. data/lib/aspera/log.rb +3 -6
  86. data/lib/aspera/markdown.rb +152 -115
  87. data/lib/aspera/mime.rb +6 -0
  88. data/lib/aspera/nagios.rb +3 -1
  89. data/lib/aspera/node_emulator.rb +98 -101
  90. data/lib/aspera/oauth/{base.rb → client/base.rb} +5 -4
  91. data/lib/aspera/oauth/{boot.rb → client/boot.rb} +3 -2
  92. data/lib/aspera/oauth/{factory.rb → client/factory.rb} +7 -0
  93. data/lib/aspera/oauth/{generic.rb → client/generic.rb} +1 -1
  94. data/lib/aspera/oauth/{json_credentials.rb → client/json_credentials.rb} +1 -1
  95. data/lib/aspera/oauth/{jwt.rb → client/jwt.rb} +1 -1
  96. data/lib/aspera/oauth/{url_json.rb → client/url_json.rb} +1 -1
  97. data/lib/aspera/oauth/{web.rb → client/web.rb} +2 -2
  98. data/lib/aspera/oauth/server/authorize.html.erb +34 -0
  99. data/lib/aspera/oauth/server/pkce.rb +426 -0
  100. data/lib/aspera/orchestrator_workflow_checker.rb +561 -0
  101. data/lib/aspera/preview/terminal.rb +3 -2
  102. data/lib/aspera/rainbow.rb +27 -1
  103. data/lib/aspera/rest/aspera_errors.rb +51 -59
  104. data/lib/aspera/rest/client.rb +21 -14
  105. data/lib/aspera/rest/error_analyzer.rb +9 -0
  106. data/lib/aspera/rest/list.rb +6 -6
  107. data/lib/aspera/rest/util.rb +7 -1
  108. data/lib/aspera/rest.rb +0 -1
  109. data/lib/aspera/schema/IBM Aspera Faspex API-5.0-enhanced.yaml +0 -2
  110. data/lib/aspera/schema/IBM Aspera Orchestrator API-v1-enhanced.yaml +4001 -0
  111. data/lib/aspera/schema/IBM Aspera faspio Gateway API-1.0.0-enhanced.yaml +1097 -0
  112. data/lib/aspera/schema/IBM Aspera on Cloud Automation API-1.0.5-enhanced.yaml +35 -35
  113. data/lib/aspera/schema/IBM_Aspera_Shares.yaml +819 -7
  114. data/lib/aspera/schema/documentation.rb +50 -78
  115. data/lib/aspera/schema/reader.rb +39 -11
  116. data/lib/aspera/schema/registry.rb +8 -2
  117. data/lib/aspera/secret_hider.rb +94 -15
  118. data/lib/aspera/secret_strength.rb +114 -0
  119. data/lib/aspera/servlet_helpers.rb +111 -0
  120. data/lib/aspera/sync/args.schema.yaml +3 -1
  121. data/lib/aspera/sync/conf.schema.yaml +16 -6
  122. data/lib/aspera/sync/operations.rb +21 -1
  123. data/lib/aspera/temp_file_manager.rb +79 -20
  124. data/lib/aspera/transfer/parameters.rb +5 -0
  125. data/lib/aspera/transfer/spec.rb +52 -12
  126. data/lib/aspera/transfer/spec.schema.yaml +8 -5
  127. data/lib/aspera/web_auth/index.html.erb +16 -0
  128. data/lib/aspera/web_auth/server.rb +18 -10
  129. data/lib/aspera/web_page.html.erb +262 -0
  130. data/lib/aspera/web_page.rb +61 -0
  131. data/lib/aspera/web_server_simple.rb +76 -10
  132. data.tar.gz.sig +0 -0
  133. metadata +47 -32
  134. metadata.gz.sig +0 -0
  135. data/lib/aspera/cli/mcp_tool.rb +0 -189
  136. data/lib/aspera/oauth.rb +0 -9
  137. data/lib/aspera/schema/IBM Aspera Orchestrator API-v1.yaml +0 -1784
  138. data/lib/aspera/schema/IBM Aspera faspio Gateway API-1.0.0.yaml +0 -249
  139. data/lib/aspera/web_auth/index.html +0 -147
@@ -0,0 +1,4001 @@
1
+ # DO NOT EDIT THIS FILE MANUALLY
2
+ # This file is automatically downloaded from:
3
+ # https://raw.githubusercontent.com/laurent-martin/aspera-api-examples/refs/heads/main/openapi/IBM%20Aspera%20Orchestrator%20API-v1-enhanced.yaml
4
+ # Use 'rake tools:openapi' to update this file
5
+
6
+ openapi: 3.1.0
7
+ info:
8
+ title: Aspera Orchestrator API
9
+ version: v1
10
+ license:
11
+ name: (c) IBM. All rights reserved
12
+ url: https://ibm.com
13
+ description: |
14
+ API documentation for Aspera Orchestrator 4.1.6, checked against its source code (`config/routes.rb` and `ApiController`).
15
+
16
+ ## Authentication
17
+
18
+ The API supports two authentication modes:
19
+
20
+ ### JWT Authentication (Recommended)
21
+
22
+ When JWT authentication is enabled (default):
23
+
24
+ 1. Obtain a JWT token by calling POST /api/login with your credentials
25
+ 2. Include the token in subsequent requests using the Authorization header:
26
+ `Authorization: Bearer <your_token>`
27
+
28
+ ### Credentials in Each Request (When JWT is Disabled)
29
+
30
+ If JWT authentication is disabled in your Orchestrator configuration (`/api/login` then returns 403), give the credentials with every API request, either:
31
+
32
+ - as query parameters `login` and `password`, e.g. `/api/workflows_list?login=admin&password=mypassword&format=json`
33
+ - as query parameters `login` and `api_key` (the API key of the user)
34
+ - with HTTP Basic authentication
35
+
36
+ **Note:** Check your Orchestrator configuration to determine which authentication mode is active.
37
+
38
+ ## Routes
39
+
40
+ - Some endpoints have their own route, `/api/<endpoint>`, with the HTTP method given here.
41
+ - Every endpoint can also be called as `/api/<endpoint>/<id>`, with any HTTP method, where `<id>` is its main identifier.
42
+ Endpoints without their own route can only be called this way: when `id` is not used by the endpoint, any value works, for example `0`.
43
+ - Parameters can be given in the query, or in a JSON or form body.
44
+
45
+ ## Response format
46
+
47
+ Most endpoints return XML by default.
48
+ For JSON, add `format=json`, or the extension `.json` to the last segment of the path (e.g. `/api/work_order_status/123.json`).
49
+
50
+ ## Errors
51
+
52
+ Errors are returned with HTTP status 200, or 404 when the server option `strict_api_validation` is set.
53
+ The body is `<error time=... action=... id=...>message and backtrace</error>`, or in JSON `{"error": {"action": ..., "time": ..., "id": ..., "description": ...}}`.
54
+ servers:
55
+ - url: https://158.176.9.141/aspera/orchestrator
56
+ description: 'Configured host: 158.176.9.141'
57
+ - url: https://orchestrator.aspera-emea.com/aspera/orchestrator
58
+ description: 'Configured host: orchestrator.aspera-emea.com'
59
+ security:
60
+ - bearerAuth: []
61
+ - basicAuth: []
62
+ - loginQuery: []
63
+ passwordQuery: []
64
+ - loginQuery: []
65
+ apiKeyQuery: []
66
+ paths:
67
+ /api/login:
68
+ post:
69
+ operationId: login
70
+ security: []
71
+ summary: Authenticate and obtain JWT token
72
+ tags:
73
+ - Authentication
74
+ requestBody:
75
+ required: true
76
+ content:
77
+ application/json:
78
+ schema:
79
+ description: '`username`, with either `password` or `api_key` (the API key of that user)'
80
+ oneOf:
81
+ - title: Username and password
82
+ type: object
83
+ required:
84
+ - username
85
+ - password
86
+ properties:
87
+ username:
88
+ type: string
89
+ description: User login name
90
+ password:
91
+ type: string
92
+ format: password
93
+ description: User password
94
+ additionalProperties: false
95
+ - title: Username and API key
96
+ type: object
97
+ required:
98
+ - username
99
+ - api_key
100
+ properties:
101
+ username:
102
+ type: string
103
+ description: User login name
104
+ api_key:
105
+ type: string
106
+ description: API key of the user
107
+ additionalProperties: false
108
+ examples:
109
+ credentials:
110
+ summary: Username and password
111
+ value:
112
+ username: admin
113
+ password: mypassword
114
+ api_key:
115
+ summary: Username and API key
116
+ value:
117
+ username: admin
118
+ api_key: my_api_key
119
+ responses:
120
+ '200':
121
+ description: Successfully authenticated
122
+ content:
123
+ application/json:
124
+ schema:
125
+ type: object
126
+ properties:
127
+ message:
128
+ type: string
129
+ examples:
130
+ - Logged in successfully
131
+ user:
132
+ type: object
133
+ properties:
134
+ id:
135
+ type: integer
136
+ login:
137
+ type: string
138
+ email:
139
+ type: string
140
+ token:
141
+ type: string
142
+ description: JWT token for subsequent API calls
143
+ '401':
144
+ description: Invalid credentials
145
+ '403':
146
+ description: Secure API auth disabled
147
+ /api/workflows_list:
148
+ get:
149
+ operationId: workflows_list
150
+ summary: List all workflows
151
+ tags:
152
+ - Workflows
153
+ parameters:
154
+ - $ref: '#/components/parameters/Format'
155
+ responses:
156
+ '200':
157
+ description: List of workflows
158
+ content:
159
+ application/json:
160
+ schema:
161
+ type: object
162
+ properties:
163
+ workflows:
164
+ type: object
165
+ properties:
166
+ time:
167
+ type: string
168
+ description: UTC time
169
+ action:
170
+ type: string
171
+ const: list
172
+ id:
173
+ type: integer
174
+ workflow:
175
+ type: array
176
+ items:
177
+ type: object
178
+ properties:
179
+ id:
180
+ type: integer
181
+ name:
182
+ type: string
183
+ full_name:
184
+ type: string
185
+ description: Name with the folder path
186
+ folder_id:
187
+ type: [integer, 'null']
188
+ portable_id:
189
+ type: [string, 'null']
190
+ published_status:
191
+ type: string
192
+ enum:
193
+ - published
194
+ - draft
195
+ published_revision_id:
196
+ type: [integer, string]
197
+ description: '`-` when not published'
198
+ latest_revision_id:
199
+ type: [integer, string]
200
+ description: '`-` when there is no whiteboard'
201
+ last_modification:
202
+ type: string
203
+ format: date-time
204
+ comments:
205
+ type: [string, 'null']
206
+ '401':
207
+ $ref: '#/components/responses/UnauthorizedError'
208
+ default:
209
+ $ref: '#/components/responses/Error'
210
+ /api/workflows_status:
211
+ get:
212
+ operationId: workflows_status
213
+ summary: Running status of workflows
214
+ tags:
215
+ - Workflows
216
+ parameters:
217
+ - name: id
218
+ in: query
219
+ schema:
220
+ type: string
221
+ description: Workflow ID or portable ID. Not set, or `0`, for all workflows.
222
+ - $ref: '#/components/parameters/Format'
223
+ responses:
224
+ '200':
225
+ description: Workflow status information
226
+ content:
227
+ application/json:
228
+ schema:
229
+ type: object
230
+ properties:
231
+ workflows:
232
+ type: object
233
+ properties:
234
+ time:
235
+ type: string
236
+ description: UTC time
237
+ action:
238
+ type: string
239
+ const: status
240
+ id:
241
+ type: integer
242
+ workflow:
243
+ type: array
244
+ items:
245
+ type: object
246
+ properties:
247
+ id:
248
+ type: integer
249
+ name:
250
+ type: string
251
+ status:
252
+ type: string
253
+ enum:
254
+ - running
255
+ - not running
256
+ last_activity:
257
+ type: string
258
+ description: Last update of the running work orders, or `-`
259
+ '401':
260
+ $ref: '#/components/responses/UnauthorizedError'
261
+ default:
262
+ $ref: '#/components/responses/Error'
263
+ /api/workflow_details/{id}:
264
+ get:
265
+ operationId: workflow_details
266
+ summary: Number of work orders of a workflow, by status
267
+ tags:
268
+ - Workflows
269
+ parameters:
270
+ - name: id
271
+ in: path
272
+ required: true
273
+ schema:
274
+ type: integer
275
+ description: Workflow ID
276
+ - name: start_date
277
+ in: query
278
+ schema:
279
+ type: string
280
+ description: Count work orders created after this date
281
+ - name: end_date
282
+ in: query
283
+ schema:
284
+ type: string
285
+ description: Count work orders created before this date
286
+ - $ref: '#/components/parameters/Format'
287
+ responses:
288
+ '200':
289
+ description: Work order counts by status
290
+ content:
291
+ application/json:
292
+ schema:
293
+ type: object
294
+ properties:
295
+ workflows:
296
+ type: object
297
+ properties:
298
+ time:
299
+ type: string
300
+ description: UTC time
301
+ action:
302
+ type: string
303
+ const: status
304
+ id:
305
+ type: integer
306
+ workflow:
307
+ type: object
308
+ properties:
309
+ name:
310
+ type: string
311
+ id:
312
+ type: integer
313
+ statuses:
314
+ type: array
315
+ items:
316
+ type: object
317
+ properties:
318
+ count:
319
+ type: integer
320
+ last_activity:
321
+ type: string
322
+ format: date-time
323
+ workflow_name:
324
+ type: string
325
+ status:
326
+ type: string
327
+ '401':
328
+ $ref: '#/components/responses/UnauthorizedError'
329
+ default:
330
+ $ref: '#/components/responses/Error'
331
+ /api/workflow_inputs_spec/{id}:
332
+ get:
333
+ operationId: workflow_inputs_spec
334
+ summary: Runtime parameters of a workflow
335
+ tags:
336
+ - Workflows
337
+ parameters:
338
+ - name: id
339
+ in: path
340
+ required: true
341
+ schema:
342
+ type: string
343
+ description: Workflow ID or portable ID, or `0` to use `workflow_name`, or `-1` to use `portable_id`
344
+ - name: workflow_name
345
+ in: query
346
+ schema:
347
+ type: string
348
+ description: Workflow name, when `id` is `0`
349
+ - name: portable_id
350
+ in: query
351
+ schema:
352
+ type: string
353
+ description: Workflow portable ID, when `id` is `-1`
354
+ - $ref: '#/components/parameters/Format'
355
+ responses:
356
+ '200':
357
+ description: Runtime parameters
358
+ content:
359
+ application/json:
360
+ schema:
361
+ type: object
362
+ properties:
363
+ workflow_inputs_spec:
364
+ type: object
365
+ properties:
366
+ time:
367
+ type: string
368
+ description: UTC time
369
+ action:
370
+ type: string
371
+ const: inputs_spec
372
+ workflow_name:
373
+ type: string
374
+ workflow_id:
375
+ type: integer
376
+ parameter:
377
+ type: array
378
+ items:
379
+ type: object
380
+ properties:
381
+ id:
382
+ type: integer
383
+ name:
384
+ type: string
385
+ value_type:
386
+ type: string
387
+ optional:
388
+ type: [boolean, 'null']
389
+ value:
390
+ type: string
391
+ description: Default value, for an optional parameter
392
+ '401':
393
+ $ref: '#/components/responses/UnauthorizedError'
394
+ default:
395
+ $ref: '#/components/responses/Error'
396
+ /api/workflow_outputs_spec/{id}:
397
+ get:
398
+ operationId: workflow_outputs_spec
399
+ summary: Outputs of the steps of a workflow
400
+ tags:
401
+ - Workflows
402
+ parameters:
403
+ - name: id
404
+ in: path
405
+ required: true
406
+ schema:
407
+ type: string
408
+ description: Workflow ID or portable ID (also accepted as query parameter `workflow_id`)
409
+ - name: workflow_id
410
+ in: query
411
+ schema:
412
+ type: string
413
+ description: Workflow ID or portable ID, takes precedence over `id`
414
+ - $ref: '#/components/parameters/Format'
415
+ responses:
416
+ '200':
417
+ description: Outputs of the workflow
418
+ content:
419
+ application/json:
420
+ schema:
421
+ type: object
422
+ properties:
423
+ workflow_outputs_spec:
424
+ type: object
425
+ properties:
426
+ time:
427
+ type: string
428
+ description: UTC time
429
+ action:
430
+ type: string
431
+ const: outputs_spec
432
+ output:
433
+ type: array
434
+ items:
435
+ type: object
436
+ properties:
437
+ context_id:
438
+ type: integer
439
+ name:
440
+ type: string
441
+ description: '`<step name>:<output name>`'
442
+ workflow_id:
443
+ type: integer
444
+ step_name:
445
+ type: string
446
+ variable_name:
447
+ type: string
448
+ value_type:
449
+ type: string
450
+ variable_type:
451
+ type: string
452
+ '401':
453
+ $ref: '#/components/responses/UnauthorizedError'
454
+ default:
455
+ $ref: '#/components/responses/Error'
456
+ /api/import_workflow:
457
+ post:
458
+ operationId: import_workflow
459
+ summary: Import a workflow
460
+ description: Always creates a new workflow. The response is the new workflow as JSON, whatever the format.
461
+ tags:
462
+ - Workflows
463
+ requestBody:
464
+ required: true
465
+ content:
466
+ multipart/form-data:
467
+ schema:
468
+ type: object
469
+ required:
470
+ - import_file
471
+ - import_file_name
472
+ properties:
473
+ import_file:
474
+ type: string
475
+ contentMediaType: application/octet-stream
476
+ description: The workflow file to import (.wkf or .yml)
477
+ import_file_name:
478
+ type: string
479
+ pattern: (wkf|yml)$
480
+ description: File name ending with `wkf` or `yml`. The file is saved under this name in the import folder of the server.
481
+ examples:
482
+ - my_workflow.wkf
483
+ folder_id:
484
+ type: integer
485
+ description: Folder of the new workflow
486
+ link_to_subworkflows:
487
+ type: string
488
+ description: Link to existing sub-workflows instead of importing them. Any value, including `false`, is taken as true.
489
+ publish_workflow:
490
+ type: string
491
+ description: '`true` or `1` to publish the workflow after import. Default: server option `publish_api_imported_workflow`.'
492
+ format:
493
+ type: string
494
+ enum:
495
+ - xml
496
+ - json
497
+ default: xml
498
+ responses:
499
+ '200':
500
+ description: The new workflow (JSON)
501
+ content:
502
+ application/json:
503
+ schema:
504
+ $ref: '#/components/schemas/Workflow'
505
+ '401':
506
+ $ref: '#/components/responses/UnauthorizedError'
507
+ default:
508
+ $ref: '#/components/responses/Error'
509
+ '500':
510
+ description: Import failed
511
+ content:
512
+ application/json:
513
+ schema:
514
+ type: object
515
+ properties:
516
+ error:
517
+ type: string
518
+ message:
519
+ type: string
520
+ details:
521
+ type: string
522
+ description: Error message
523
+ /api/find_constraints:
524
+ get:
525
+ operationId: find_constraints
526
+ summary: Find workflow import constraints
527
+ description: 'Analyzes a workflow file present on the Orchestrator host, and returns the list expected by `import_with_constraints`, with the possible choices for each conflict with existing sub-workflows, global templates and remote nodes, and the plugins that are not enabled. The file existence is not checked: a wrong path returns the same empty lists as a file without conflict.'
528
+ tags:
529
+ - Workflows
530
+ parameters:
531
+ - name: file
532
+ in: query
533
+ required: true
534
+ schema:
535
+ type: string
536
+ description: Path of the workflow file (`.yml` or `.wkf`) on the Orchestrator host
537
+ - name: wf_id
538
+ in: query
539
+ schema:
540
+ type: integer
541
+ description: ID of an existing workflow, to import the file as a new revision of it
542
+ responses:
543
+ '200':
544
+ description: 'Array of six objects, in the order expected by `import_with_constraints`: `filename`, `add as revision`, `subwf constraints`, `action template constraints`, `remote node constraints`, and `missing plugins` with `Auto-enable missing plugins?`.'
545
+ content:
546
+ application/json:
547
+ schema:
548
+ type: array
549
+ minItems: 6
550
+ maxItems: 6
551
+ prefixItems:
552
+ - type: object
553
+ properties:
554
+ filename:
555
+ type: string
556
+ - type: object
557
+ properties:
558
+ add as revision:
559
+ type: [string, 'null']
560
+ description: The `wf_id` parameter
561
+ - type: object
562
+ properties:
563
+ subwf constraints:
564
+ type: object
565
+ description: Sub-workflow name to possible choices
566
+ additionalProperties:
567
+ type: array
568
+ items:
569
+ type: string
570
+ - type: object
571
+ properties:
572
+ action template constraints:
573
+ type: object
574
+ description: Global template name to possible choices
575
+ additionalProperties:
576
+ type: array
577
+ items:
578
+ type: string
579
+ - type: object
580
+ properties:
581
+ remote node constraints:
582
+ type: object
583
+ description: Remote node name to possible choices
584
+ additionalProperties:
585
+ type: array
586
+ items:
587
+ type: string
588
+ - type: object
589
+ properties:
590
+ missing plugins:
591
+ type: [array, 'null']
592
+ description: Plugins to enable, or `null`
593
+ Auto-enable missing plugins?:
594
+ type: [array, 'null']
595
+ description: '`[true, false]` when plugins are missing, else `null`'
596
+ items: false
597
+ '401':
598
+ $ref: '#/components/responses/UnauthorizedError'
599
+ default:
600
+ $ref: '#/components/responses/Error'
601
+ /api/import_with_constraints:
602
+ post:
603
+ operationId: import_with_constraints
604
+ summary: Import workflow with constraint resolution
605
+ description: 'Imports a workflow file present on the Orchestrator host, as a new workflow or as a new revision of an existing workflow. The workflow is not published. Orchestrator does not check what `find_constraints` reports: if plugins to enable are listed and `Auto-enable missing plugins?` is not `true`, the call fails with an internal error; a conflict without choice is imported as a copy, without error. `Auto-enable missing plugins?` must be a JSON boolean: the string `"false"` is taken as true.'
606
+ tags:
607
+ - Workflows
608
+ requestBody:
609
+ required: true
610
+ content:
611
+ application/json:
612
+ schema:
613
+ type: array
614
+ description: Array of six objects with one key each, in this order
615
+ minItems: 6
616
+ maxItems: 6
617
+ prefixItems:
618
+ - type: object
619
+ required:
620
+ - filename
621
+ properties:
622
+ filename:
623
+ type: string
624
+ description: Path of the workflow file on the Orchestrator host
625
+ additionalProperties: false
626
+ - type: object
627
+ required:
628
+ - add as revision
629
+ properties:
630
+ add as revision:
631
+ type: [integer, string, 'null']
632
+ description: ID or portable ID of the workflow to add a revision to, or `null` for a new workflow
633
+ additionalProperties: false
634
+ - type: object
635
+ required:
636
+ - subwf constraints
637
+ properties:
638
+ subwf constraints:
639
+ type: object
640
+ description: Sub-workflow name to choice
641
+ additionalProperties:
642
+ type: string
643
+ enum:
644
+ - Map to the Existing Sub-Workflow
645
+ - Create a new Sub-Workflow with a unique name
646
+ - Add a new revision to the existing Sub-Workflow
647
+ additionalProperties: false
648
+ - type: object
649
+ required:
650
+ - action template constraints
651
+ properties:
652
+ action template constraints:
653
+ type: object
654
+ description: Global template name to choice
655
+ additionalProperties:
656
+ type: string
657
+ enum:
658
+ - Map to the existing Global Template
659
+ - Create a new Global Template with a different name
660
+ - Override the existing Global Template with this new template
661
+ additionalProperties: false
662
+ - type: object
663
+ required:
664
+ - remote node constraints
665
+ properties:
666
+ remote node constraints:
667
+ type: object
668
+ description: Remote node name to choice
669
+ additionalProperties:
670
+ type: string
671
+ enum:
672
+ - Map to the existing Remote Node
673
+ - Create a new Remote Node with a different name
674
+ - Override the Existing Remote Node with this importing node
675
+ additionalProperties: false
676
+ - type: object
677
+ required:
678
+ - Auto-enable missing plugins?
679
+ properties:
680
+ Auto-enable missing plugins?:
681
+ type: boolean
682
+ additionalProperties: false
683
+ items: false
684
+ examples:
685
+ - - filename: /opt/aspera/orchestrator/var/run/orchestrator/workflows/import/my_workflow.yml
686
+ - add as revision: 239
687
+ - subwf constraints: {}
688
+ - action template constraints:
689
+ Search Files: Map to the existing Global Template
690
+ - remote node constraints:
691
+ Baton: Map to the existing Remote Node
692
+ - Auto-enable missing plugins?: true
693
+ responses:
694
+ '200':
695
+ description: The workflow that was imported (JSON)
696
+ content:
697
+ application/json:
698
+ schema:
699
+ $ref: '#/components/schemas/Workflow'
700
+ '401':
701
+ $ref: '#/components/responses/UnauthorizedError'
702
+ default:
703
+ $ref: '#/components/responses/Error'
704
+ '500':
705
+ description: Internal error, e.g. plugins to enable and not auto-enabled, or a file that cannot be read
706
+ /api/publish_workflow:
707
+ post:
708
+ operationId: publish_workflow
709
+ summary: Publish a workflow
710
+ description: Publishes the last whiteboard revision. The result is `true`, or `false` when the whiteboard has no `error_free` value.
711
+ tags:
712
+ - Workflows
713
+ parameters:
714
+ - name: id
715
+ in: query
716
+ schema:
717
+ type: string
718
+ description: Workflow ID or portable ID (also accepted in a JSON body, or in the path `/api/publish_workflow/<id>`)
719
+ example: '123'
720
+ - $ref: '#/components/parameters/Format'
721
+ requestBody:
722
+ content:
723
+ application/json:
724
+ schema:
725
+ type: object
726
+ properties:
727
+ id:
728
+ type: string
729
+ description: Workflow ID or portable ID
730
+ responses:
731
+ '200':
732
+ description: '`true` or `false` (JSON), or `<WorkflowPublish><Success>true</Success></WorkflowPublish>` (XML)'
733
+ content:
734
+ application/json:
735
+ schema:
736
+ type: boolean
737
+ '401':
738
+ $ref: '#/components/responses/UnauthorizedError'
739
+ default:
740
+ $ref: '#/components/responses/Error'
741
+ /api/export_workflow/{id}:
742
+ get:
743
+ operationId: export_workflow
744
+ summary: Export a workflow
745
+ description: Returns the workflow file (`.yml`), or a package (`.wkf`) with its sub-workflows and remote nodes.
746
+ tags:
747
+ - Workflows
748
+ parameters:
749
+ - name: id
750
+ in: path
751
+ required: true
752
+ schema:
753
+ type: string
754
+ description: Workflow ID or portable ID
755
+ - name: export_with_dependencies
756
+ in: query
757
+ schema:
758
+ type: string
759
+ description: Export a package with dependencies. Any non-empty value, including `false`, enables it.
760
+ responses:
761
+ '200':
762
+ description: The workflow file
763
+ content:
764
+ application/octet-stream:
765
+ schema:
766
+ type: string
767
+ format: binary
768
+ '401':
769
+ $ref: '#/components/responses/UnauthorizedError'
770
+ default:
771
+ $ref: '#/components/responses/Error'
772
+ /api/list_by_subworkflow/{id}:
773
+ get:
774
+ operationId: list_by_subworkflow
775
+ summary: Published workflows that use a sub-workflow
776
+ tags:
777
+ - Workflows
778
+ parameters:
779
+ - name: id
780
+ in: path
781
+ required: true
782
+ schema:
783
+ type: integer
784
+ description: Sub-workflow ID (or query parameter `sub_wf_id`, which takes precedence)
785
+ - name: sub_wf_id
786
+ in: query
787
+ schema:
788
+ type: integer
789
+ description: Sub-workflow ID
790
+ - $ref: '#/components/parameters/Format'
791
+ responses:
792
+ '200':
793
+ description: IDs of the parent workflows
794
+ content:
795
+ application/json:
796
+ schema:
797
+ type: object
798
+ properties:
799
+ parent_workflows:
800
+ type: array
801
+ items:
802
+ type: string
803
+ '401':
804
+ $ref: '#/components/responses/UnauthorizedError'
805
+ default:
806
+ $ref: '#/components/responses/Error'
807
+ /api/retrieve_steps/{id}:
808
+ get:
809
+ operationId: retrieve_steps
810
+ summary: Steps of a type in published workflows, with their work orders
811
+ tags:
812
+ - Workflows
813
+ parameters:
814
+ - $ref: '#/components/parameters/AnyId'
815
+ - name: type
816
+ in: query
817
+ required: true
818
+ schema:
819
+ type: string
820
+ description: Step type (plugin class name), e.g. `CustomRuby`
821
+ - $ref: '#/components/parameters/Format'
822
+ responses:
823
+ '200':
824
+ description: List of steps
825
+ content:
826
+ application/json:
827
+ schema:
828
+ type: array
829
+ items:
830
+ type: object
831
+ properties:
832
+ step_id:
833
+ type: string
834
+ step_name:
835
+ type: string
836
+ step_status:
837
+ type: [string, 'null']
838
+ description: Status of the first prerequisite of the step
839
+ wf_id:
840
+ type: string
841
+ wo_id:
842
+ type: integer
843
+ wo_status:
844
+ type: string
845
+ '401':
846
+ $ref: '#/components/responses/UnauthorizedError'
847
+ default:
848
+ $ref: '#/components/responses/Error'
849
+ /api/work_orders_list/{id}:
850
+ get:
851
+ operationId: work_orders_list
852
+ summary: List work orders of a workflow
853
+ tags:
854
+ - Work Orders
855
+ parameters:
856
+ - name: id
857
+ in: path
858
+ required: true
859
+ schema:
860
+ type: string
861
+ description: Workflow ID, portable ID or name, or `all` for all workflows
862
+ - name: status
863
+ in: query
864
+ schema:
865
+ type: string
866
+ description: Filter by work order status, e.g. `Failed`
867
+ - name: priority
868
+ in: query
869
+ schema:
870
+ type: string
871
+ description: Filter by priority
872
+ - name: from_date
873
+ in: query
874
+ schema:
875
+ type: string
876
+ description: Work orders updated after this date, e.g. `'06-27-2015 02:40:59'`
877
+ - name: to_date
878
+ in: query
879
+ schema:
880
+ type: string
881
+ description: Work orders updated before this date
882
+ - name: tag
883
+ in: query
884
+ style: form
885
+ explode: false
886
+ schema:
887
+ type: array
888
+ items:
889
+ type: string
890
+ description: Comma-separated list of tags, all required
891
+ - name: max_results
892
+ in: query
893
+ schema:
894
+ type: integer
895
+ description: Maximum number of work orders
896
+ - $ref: '#/components/parameters/Format'
897
+ responses:
898
+ '200':
899
+ description: List of work orders
900
+ content:
901
+ application/json:
902
+ schema:
903
+ type: object
904
+ properties:
905
+ work_orders:
906
+ type: array
907
+ items:
908
+ $ref: '#/components/schemas/WorkOrder'
909
+ '401':
910
+ $ref: '#/components/responses/UnauthorizedError'
911
+ default:
912
+ $ref: '#/components/responses/Error'
913
+ /api/work_order_status/{id}:
914
+ get:
915
+ operationId: work_order_status
916
+ summary: Get work order status
917
+ description: |
918
+ Returns the status of a work order and its work steps.
919
+
920
+ If the work order includes sub-workflows, only the sub-workflow status is displayed, not the steps within the sub-workflow.
921
+ tags:
922
+ - Work Orders
923
+ parameters:
924
+ - name: id
925
+ in: path
926
+ required: true
927
+ schema:
928
+ type: integer
929
+ description: Work order ID
930
+ - $ref: '#/components/parameters/Format'
931
+ responses:
932
+ '200':
933
+ description: Work order status
934
+ content:
935
+ application/json:
936
+ schema:
937
+ type: object
938
+ properties:
939
+ work_order:
940
+ allOf:
941
+ - $ref: '#/components/schemas/WorkOrder'
942
+ properties:
943
+ percent_complete:
944
+ type: integer
945
+ minimum: 0
946
+ maximum: 100
947
+ work_steps:
948
+ type: array
949
+ description: Steps with `step_id` greater than 0
950
+ items:
951
+ $ref: '#/components/schemas/WorkStepStatus'
952
+ '401':
953
+ $ref: '#/components/responses/UnauthorizedError'
954
+ default:
955
+ $ref: '#/components/responses/Error'
956
+ /api/work_order_output/{id}:
957
+ get:
958
+ operationId: work_order_output
959
+ summary: Outputs of a work order
960
+ description: |
961
+ All outputs, the outputs of a step (`step_name`), or the outputs of a given name (`variable_name`).
962
+ With both `step_name` and `variable_name`, JSON returns the value only.
963
+ Format `text` (or `string`) returns the values, one per line.
964
+ tags:
965
+ - Work Orders
966
+ parameters:
967
+ - name: id
968
+ in: path
969
+ required: true
970
+ schema:
971
+ type: integer
972
+ description: Work order ID (or query parameter `workorder_id`, which takes precedence)
973
+ - name: workorder_id
974
+ in: query
975
+ schema:
976
+ type: integer
977
+ description: Work order ID
978
+ - name: step_name
979
+ in: query
980
+ schema:
981
+ type: string
982
+ description: Only the outputs of this step
983
+ - name: variable_name
984
+ in: query
985
+ schema:
986
+ type: string
987
+ description: Only the outputs with this name
988
+ - name: detailed
989
+ in: query
990
+ schema:
991
+ type: string
992
+ enum:
993
+ - 'true'
994
+ - 'false'
995
+ description: 'JSON: also the variable type, value type, work order ID and status of each output'
996
+ - name: format
997
+ in: query
998
+ schema:
999
+ type: string
1000
+ enum:
1001
+ - xml
1002
+ - json
1003
+ - text
1004
+ - string
1005
+ default: xml
1006
+ description: Response format
1007
+ responses:
1008
+ '200':
1009
+ description: Outputs
1010
+ content:
1011
+ application/json:
1012
+ schema:
1013
+ description: |
1014
+ - Without both `step_name` and `variable_name`: object `{"<step name>:<output name>": <value>}`
1015
+ - With `detailed=true`: array of `{"<step name>:<output name>": <value>, "variable_type", "value_type", "<work order name>:WorkOrder_ID", "<work order name>:WorkOrder_Status"}`
1016
+ - With both `step_name` and `variable_name`: the value only
1017
+ text/plain:
1018
+ schema:
1019
+ type: string
1020
+ description: Format `text` or `string`, one value per line
1021
+ '401':
1022
+ $ref: '#/components/responses/UnauthorizedError'
1023
+ default:
1024
+ $ref: '#/components/responses/Error'
1025
+ /api/work_order_cancel/{id}:
1026
+ get:
1027
+ operationId: work_order_cancel
1028
+ summary: Cancel a work order
1029
+ tags:
1030
+ - Work Orders
1031
+ parameters:
1032
+ - name: id
1033
+ in: path
1034
+ required: true
1035
+ schema:
1036
+ type: integer
1037
+ description: Work order ID
1038
+ - name: force
1039
+ in: query
1040
+ schema:
1041
+ type: string
1042
+ description: Force the cancellation (any value except `false`)
1043
+ - $ref: '#/components/parameters/Format'
1044
+ responses:
1045
+ '200':
1046
+ description: The work order
1047
+ content:
1048
+ application/json:
1049
+ schema:
1050
+ $ref: '#/components/schemas/WorkOrder'
1051
+ '401':
1052
+ $ref: '#/components/responses/UnauthorizedError'
1053
+ default:
1054
+ $ref: '#/components/responses/Error'
1055
+ /api/work_order_reset/{id}:
1056
+ get:
1057
+ operationId: work_order_reset
1058
+ summary: Reset a work order
1059
+ tags:
1060
+ - Work Orders
1061
+ parameters:
1062
+ - name: id
1063
+ in: path
1064
+ required: true
1065
+ schema:
1066
+ type: integer
1067
+ description: Work order ID
1068
+ - $ref: '#/components/parameters/Format'
1069
+ responses:
1070
+ '200':
1071
+ description: The work order and its work steps
1072
+ content:
1073
+ application/json:
1074
+ schema:
1075
+ $ref: '#/components/schemas/WorkOrderWithSteps'
1076
+ '401':
1077
+ $ref: '#/components/responses/UnauthorizedError'
1078
+ default:
1079
+ $ref: '#/components/responses/Error'
1080
+ /api/reset/{id}.{format}:
1081
+ post:
1082
+ operationId: reset
1083
+ summary: Reset a work order (XML result)
1084
+ description: Same as `work_order_reset`, implemented by the work order pages. The response is always XML.
1085
+ tags:
1086
+ - Work Orders
1087
+ parameters:
1088
+ - name: id
1089
+ in: path
1090
+ required: true
1091
+ schema:
1092
+ type: integer
1093
+ description: Work order ID
1094
+ - name: format
1095
+ in: path
1096
+ required: true
1097
+ schema:
1098
+ type: string
1099
+ const: xml
1100
+ description: Required by the route
1101
+ responses:
1102
+ '200':
1103
+ description: The work order (XML)
1104
+ '401':
1105
+ $ref: '#/components/responses/UnauthorizedError'
1106
+ /api/work_order_destroy/{id}:
1107
+ get:
1108
+ operationId: work_order_destroy
1109
+ summary: Delete a work order and its dependents
1110
+ tags:
1111
+ - Work Orders
1112
+ parameters:
1113
+ - name: id
1114
+ in: path
1115
+ required: true
1116
+ schema:
1117
+ type: integer
1118
+ description: Work order ID
1119
+ - $ref: '#/components/parameters/Format'
1120
+ responses:
1121
+ '200':
1122
+ description: Confirmation message
1123
+ content:
1124
+ application/json:
1125
+ schema:
1126
+ type: string
1127
+ examples:
1128
+ - " Work order '123' was deleted"
1129
+ '401':
1130
+ $ref: '#/components/responses/UnauthorizedError'
1131
+ default:
1132
+ $ref: '#/components/responses/Error'
1133
+ /api/initiate:
1134
+ post:
1135
+ operationId: initiate
1136
+ summary: Initiate a new work order
1137
+ description: |
1138
+ Starts a new work order for the specified workflow.
1139
+
1140
+ Runtime input values are passed under the `external_parameters` key.
1141
+ To discover what parameters a workflow accepts, call `/api/workflow_inputs_spec/{workflow_id}` first.
1142
+ With format `json`, the keys of a JSON body are also merged into the runtime parameters.
1143
+ tags:
1144
+ - Work Orders
1145
+ parameters:
1146
+ - $ref: '#/components/parameters/Format'
1147
+ - name: synchronous
1148
+ in: query
1149
+ schema:
1150
+ type: string
1151
+ enum:
1152
+ - 'true'
1153
+ - 'false'
1154
+ description: '`true`: wait for the end of the work order'
1155
+ - name: timeout
1156
+ in: query
1157
+ schema:
1158
+ type: integer
1159
+ minimum: 0
1160
+ description: 'With `synchronous`, maximum wait in seconds (0 or not set: no limit)'
1161
+ - name: explicit_output
1162
+ in: query
1163
+ schema:
1164
+ type: string
1165
+ description: Return only this output, as `<step name>:<output name>`
1166
+ - name: explicit_output_step
1167
+ in: query
1168
+ schema:
1169
+ type: string
1170
+ description: Return only an output of this step (with `explicit_output_variable`)
1171
+ - name: explicit_output_variable
1172
+ in: query
1173
+ schema:
1174
+ type: string
1175
+ description: Name of the output to return (with `explicit_output_step`)
1176
+ - name: on_error_return_code
1177
+ in: query
1178
+ schema:
1179
+ type: integer
1180
+ description: HTTP status to return when the work order ends with status `Error`
1181
+ - name: on_failed_return_code
1182
+ in: query
1183
+ schema:
1184
+ type: integer
1185
+ description: HTTP status to return when the work order ends with status `Failed`
1186
+ - name: tags
1187
+ in: query
1188
+ style: form
1189
+ explode: false
1190
+ schema:
1191
+ type: array
1192
+ items:
1193
+ type: string
1194
+ description: Comma-separated tags of the work order
1195
+ - name: preemptive_level
1196
+ in: query
1197
+ schema:
1198
+ type: integer
1199
+ description: Priority of the work order (its opposite is used)
1200
+ - name: wo_id_only
1201
+ in: query
1202
+ schema:
1203
+ type: string
1204
+ enum:
1205
+ - 'true'
1206
+ - 'false'
1207
+ description: '`true`: return only the work order ID'
1208
+ requestBody:
1209
+ required: true
1210
+ content:
1211
+ application/json:
1212
+ schema:
1213
+ type: object
1214
+ required:
1215
+ - workflow_id
1216
+ properties:
1217
+ workflow_id:
1218
+ type: string
1219
+ description: ID, portable ID or name of the workflow to execute
1220
+ examples:
1221
+ - '123'
1222
+ external_parameters:
1223
+ type: object
1224
+ description: Runtime parameters of the workflow (name to value)
1225
+ additionalProperties: true
1226
+ responses:
1227
+ '200':
1228
+ description: Work order initiated (or the status given by `on_error_return_code`, `on_failed_return_code`)
1229
+ content:
1230
+ application/json:
1231
+ schema:
1232
+ anyOf:
1233
+ - title: Work order
1234
+ allOf:
1235
+ - $ref: '#/components/schemas/WorkOrderWithSteps'
1236
+ properties:
1237
+ parameters:
1238
+ type: object
1239
+ description: Runtime parameters of the work order
1240
+ - title: Output value
1241
+ description: With `explicit_output`, or `explicit_output_step` and `explicit_output_variable`
1242
+ '400':
1243
+ description: Workflow not found or not published, or missing required parameters
1244
+ content:
1245
+ application/json:
1246
+ schema:
1247
+ oneOf:
1248
+ - $ref: '#/components/schemas/Error'
1249
+ - title: Missing parameters
1250
+ type: object
1251
+ required:
1252
+ - work_order
1253
+ - missing_parameters
1254
+ properties:
1255
+ work_order:
1256
+ allOf:
1257
+ - $ref: '#/components/schemas/WorkOrder'
1258
+ properties:
1259
+ status:
1260
+ const: Not started
1261
+ status_details:
1262
+ const: Missing required parameters
1263
+ missing_parameters:
1264
+ type: array
1265
+ items:
1266
+ type: string
1267
+ '401':
1268
+ $ref: '#/components/responses/UnauthorizedError'
1269
+ /api/work_step_status/{id}:
1270
+ get:
1271
+ operationId: work_step_status
1272
+ summary: Status, inputs and outputs of a work step, or change its status
1273
+ description: |
1274
+ Returns the work step with its inputs and outputs,
1275
+ or only the value of an output (`output_name`), or only the status (`status_only`, as plain text).
1276
+ With `set_status` or `set_status_details`, modifies the work step and returns its new status.
1277
+ tags:
1278
+ - Work Steps
1279
+ parameters:
1280
+ - name: id
1281
+ in: path
1282
+ required: true
1283
+ schema:
1284
+ type: string
1285
+ description: Work step ID, or `work_order` to use `work_order_id` and `step_name`
1286
+ - name: work_order_id
1287
+ in: query
1288
+ schema:
1289
+ type: integer
1290
+ description: Work order ID, when `id` is `work_order`
1291
+ - name: step_name
1292
+ in: query
1293
+ schema:
1294
+ type: string
1295
+ description: Step name, when `id` is `work_order`
1296
+ - name: output_name
1297
+ in: query
1298
+ schema:
1299
+ type: string
1300
+ description: Return only the value of this output
1301
+ - name: status_only
1302
+ in: query
1303
+ schema:
1304
+ type: string
1305
+ description: Return only the status (any value except `false`)
1306
+ - name: set_status
1307
+ in: query
1308
+ schema:
1309
+ type: string
1310
+ description: New status of the work step
1311
+ - name: set_status_details
1312
+ in: query
1313
+ schema:
1314
+ type: string
1315
+ description: New status details of the work step
1316
+ - name: set_percent_complete
1317
+ in: query
1318
+ schema:
1319
+ type: integer
1320
+ minimum: 0
1321
+ maximum: 100
1322
+ description: New percentage of completion, with `set_status` or `set_status_details`
1323
+ - name: format
1324
+ in: query
1325
+ schema:
1326
+ type: string
1327
+ enum:
1328
+ - xml
1329
+ - json
1330
+ - txt
1331
+ default: xml
1332
+ description: Response format (`txt` for a value or a status as plain text)
1333
+ responses:
1334
+ '200':
1335
+ description: Work step status
1336
+ content:
1337
+ application/json:
1338
+ schema:
1339
+ anyOf:
1340
+ - title: Work step
1341
+ type: object
1342
+ properties:
1343
+ work_step:
1344
+ $ref: '#/components/schemas/WorkStep'
1345
+ outputs:
1346
+ type: array
1347
+ items:
1348
+ $ref: '#/components/schemas/StepVariable'
1349
+ inputs:
1350
+ type: array
1351
+ items:
1352
+ $ref: '#/components/schemas/StepVariable'
1353
+ carry_thrus:
1354
+ type: array
1355
+ description: Variables of other steps
1356
+ items:
1357
+ $ref: '#/components/schemas/StepVariable'
1358
+ - title: New status
1359
+ description: With `set_status` or `set_status_details`
1360
+ type: object
1361
+ properties:
1362
+ Work_step_id:
1363
+ type: integer
1364
+ Work_step_status:
1365
+ type: string
1366
+ Work_step_status_details:
1367
+ type: [string, 'null']
1368
+ Work_step_percent_complete:
1369
+ type: [integer, 'null']
1370
+ - title: Output value
1371
+ description: With `output_name`
1372
+ text/plain:
1373
+ schema:
1374
+ type: string
1375
+ description: 'Format `txt`: a value or a status. With `status_only`, the status is also plain text in format `json`.'
1376
+ '401':
1377
+ $ref: '#/components/responses/UnauthorizedError'
1378
+ default:
1379
+ $ref: '#/components/responses/Error'
1380
+ /api/work_step_cancel/{id}:
1381
+ get:
1382
+ operationId: work_step_cancel
1383
+ summary: Cancel a work step
1384
+ tags:
1385
+ - Work Steps
1386
+ parameters:
1387
+ - name: id
1388
+ in: path
1389
+ required: true
1390
+ schema:
1391
+ type: integer
1392
+ description: Work step ID
1393
+ - $ref: '#/components/parameters/Format'
1394
+ responses:
1395
+ '200':
1396
+ description: The work step
1397
+ content:
1398
+ application/json:
1399
+ schema:
1400
+ $ref: '#/components/schemas/WorkStep'
1401
+ '401':
1402
+ $ref: '#/components/responses/UnauthorizedError'
1403
+ default:
1404
+ $ref: '#/components/responses/Error'
1405
+ /api/workstep_reset/{id}:
1406
+ get:
1407
+ operationId: workstep_reset
1408
+ summary: Restart work orders from work steps
1409
+ tags:
1410
+ - Work Steps
1411
+ parameters:
1412
+ - name: id
1413
+ in: path
1414
+ required: true
1415
+ schema:
1416
+ type: array
1417
+ items:
1418
+ type: integer
1419
+ description: Work step ID, or comma-separated list of IDs
1420
+ - $ref: '#/components/parameters/Format'
1421
+ responses:
1422
+ '200':
1423
+ description: The restarted work orders
1424
+ content:
1425
+ application/json:
1426
+ schema:
1427
+ oneOf:
1428
+ - $ref: '#/components/schemas/WorkstepReset'
1429
+ - type: array
1430
+ description: For several work step IDs
1431
+ items:
1432
+ $ref: '#/components/schemas/WorkstepReset'
1433
+ '401':
1434
+ $ref: '#/components/responses/UnauthorizedError'
1435
+ default:
1436
+ $ref: '#/components/responses/Error'
1437
+ /api/queues_list:
1438
+ get:
1439
+ operationId: queues_list
1440
+ summary: List all queues
1441
+ tags:
1442
+ - Queues
1443
+ parameters:
1444
+ - $ref: '#/components/parameters/Format'
1445
+ responses:
1446
+ '200':
1447
+ description: List of queues
1448
+ content:
1449
+ application/json:
1450
+ schema:
1451
+ type: object
1452
+ properties:
1453
+ Queues:
1454
+ type: object
1455
+ properties:
1456
+ queue:
1457
+ type: array
1458
+ items:
1459
+ type: object
1460
+ properties:
1461
+ id:
1462
+ type: integer
1463
+ name:
1464
+ type: string
1465
+ displayed_name:
1466
+ type: [string, 'null']
1467
+ update_at:
1468
+ type: string
1469
+ format: date-time
1470
+ created_at:
1471
+ type: string
1472
+ format: date-time
1473
+ '401':
1474
+ $ref: '#/components/responses/UnauthorizedError'
1475
+ default:
1476
+ $ref: '#/components/responses/Error'
1477
+ /api/queued_items/{id}:
1478
+ get:
1479
+ operationId: queued_items
1480
+ summary: Items of a queue
1481
+ tags:
1482
+ - Queues
1483
+ parameters:
1484
+ - name: id
1485
+ in: path
1486
+ required: true
1487
+ schema:
1488
+ type: string
1489
+ description: Queue name
1490
+ - $ref: '#/components/parameters/Format'
1491
+ responses:
1492
+ '200':
1493
+ description: Queued items
1494
+ content:
1495
+ application/json:
1496
+ schema:
1497
+ $ref: '#/components/schemas/QueuedItems'
1498
+ '401':
1499
+ $ref: '#/components/responses/UnauthorizedError'
1500
+ default:
1501
+ $ref: '#/components/responses/Error'
1502
+ /api/queue_item/{id}:
1503
+ get:
1504
+ operationId: queue_item
1505
+ summary: Add an item to a queue
1506
+ tags:
1507
+ - Queues
1508
+ parameters:
1509
+ - name: id
1510
+ in: path
1511
+ required: true
1512
+ schema:
1513
+ type: string
1514
+ description: Queue name
1515
+ - name: queued_item
1516
+ in: query
1517
+ required: true
1518
+ schema:
1519
+ type: string
1520
+ description: Item to queue
1521
+ - name: description
1522
+ in: query
1523
+ schema:
1524
+ type: string
1525
+ description: Description of the item
1526
+ - name: priority
1527
+ in: query
1528
+ schema:
1529
+ type: integer
1530
+ description: Priority of the item
1531
+ - name: weight
1532
+ in: query
1533
+ schema:
1534
+ type: integer
1535
+ description: Weight of the item
1536
+ - name: tags
1537
+ in: query
1538
+ style: form
1539
+ explode: false
1540
+ schema:
1541
+ type: array
1542
+ items:
1543
+ type: string
1544
+ description: Comma-separated tags
1545
+ - $ref: '#/components/parameters/Format'
1546
+ responses:
1547
+ '200':
1548
+ description: The queued item
1549
+ content:
1550
+ application/json:
1551
+ schema:
1552
+ type: object
1553
+ properties:
1554
+ item:
1555
+ description: The queued item
1556
+ description:
1557
+ type: string
1558
+ rank:
1559
+ type: integer
1560
+ priority:
1561
+ type: integer
1562
+ weight:
1563
+ type: integer
1564
+ id:
1565
+ type: integer
1566
+ '401':
1567
+ $ref: '#/components/responses/UnauthorizedError'
1568
+ default:
1569
+ $ref: '#/components/responses/Error'
1570
+ /api/lookup_queued_item:
1571
+ get:
1572
+ operationId: lookup_queued_item
1573
+ summary: Find queued items
1574
+ description: By item ID, by item (optionally in a queue), or by description (optionally in a queue). Same response as `queued_items`.
1575
+ tags:
1576
+ - Queues
1577
+ parameters:
1578
+ - name: queued_item_id
1579
+ in: query
1580
+ schema:
1581
+ type: integer
1582
+ description: ID of the queued item
1583
+ - name: queued_item
1584
+ in: query
1585
+ schema:
1586
+ type: string
1587
+ description: Queued item
1588
+ - name: queue_desc
1589
+ in: query
1590
+ schema:
1591
+ type: string
1592
+ description: Description of the queued item
1593
+ - name: queue_name
1594
+ in: query
1595
+ schema:
1596
+ type: string
1597
+ description: Queue name, to restrict the search by `queued_item` or `queue_desc`
1598
+ - $ref: '#/components/parameters/Format'
1599
+ responses:
1600
+ '200':
1601
+ description: Queued items found
1602
+ content:
1603
+ application/json:
1604
+ schema:
1605
+ $ref: '#/components/schemas/QueuedItems'
1606
+ '401':
1607
+ $ref: '#/components/responses/UnauthorizedError'
1608
+ default:
1609
+ $ref: '#/components/responses/Error'
1610
+ /api/reorder_queued_item:
1611
+ get:
1612
+ operationId: reorder_queued_item
1613
+ summary: Move a queued item
1614
+ tags:
1615
+ - Queues
1616
+ parameters:
1617
+ - name: operation
1618
+ in: query
1619
+ required: true
1620
+ schema:
1621
+ type: string
1622
+ enum:
1623
+ - up
1624
+ - down
1625
+ - first
1626
+ - last
1627
+ description: Move
1628
+ - name: queued_item_id
1629
+ in: query
1630
+ schema:
1631
+ type: integer
1632
+ description: ID of the queued item
1633
+ - name: queued_item
1634
+ in: query
1635
+ schema:
1636
+ type: string
1637
+ description: Queued item, when `queued_item_id` is not given
1638
+ - name: queue_name
1639
+ in: query
1640
+ schema:
1641
+ type: string
1642
+ description: Queue name, to find `queued_item`
1643
+ - $ref: '#/components/parameters/Format'
1644
+ responses:
1645
+ '200':
1646
+ description: The moved item
1647
+ content:
1648
+ application/json:
1649
+ schema:
1650
+ $ref: '#/components/schemas/QueuedItems'
1651
+ '401':
1652
+ $ref: '#/components/responses/UnauthorizedError'
1653
+ default:
1654
+ $ref: '#/components/responses/Error'
1655
+ /api/bulk_reorder_queue:
1656
+ get:
1657
+ operationId: bulk_reorder_queue
1658
+ summary: Move several queued items
1659
+ tags:
1660
+ - Queues
1661
+ parameters:
1662
+ - name: queued_item_ids
1663
+ in: query
1664
+ style: form
1665
+ explode: false
1666
+ required: true
1667
+ schema:
1668
+ type: array
1669
+ items:
1670
+ type: integer
1671
+ description: Comma-separated IDs of queued items
1672
+ - name: operation
1673
+ in: query
1674
+ required: true
1675
+ schema:
1676
+ type: string
1677
+ enum:
1678
+ - up
1679
+ - down
1680
+ - first
1681
+ - last
1682
+ description: Move
1683
+ - $ref: '#/components/parameters/Format'
1684
+ responses:
1685
+ '200':
1686
+ description: The moved items
1687
+ content:
1688
+ application/json:
1689
+ schema:
1690
+ type: object
1691
+ properties:
1692
+ queued_items:
1693
+ type: array
1694
+ items:
1695
+ type: object
1696
+ properties:
1697
+ queued_item:
1698
+ $ref: '#/components/schemas/QueuedItem'
1699
+ queue_data:
1700
+ $ref: '#/components/schemas/QueueMetadata'
1701
+ '401':
1702
+ $ref: '#/components/responses/UnauthorizedError'
1703
+ default:
1704
+ $ref: '#/components/responses/Error'
1705
+ /api/delete_queued_item:
1706
+ get:
1707
+ operationId: delete_queued_item
1708
+ summary: Delete a queued item
1709
+ tags:
1710
+ - Queues
1711
+ parameters:
1712
+ - name: queue_name
1713
+ in: query
1714
+ required: true
1715
+ schema:
1716
+ type: string
1717
+ description: Queue name
1718
+ - name: queued_item_id
1719
+ in: query
1720
+ required: true
1721
+ schema:
1722
+ type: integer
1723
+ description: ID of the queued item
1724
+ - $ref: '#/components/parameters/Format'
1725
+ responses:
1726
+ '200':
1727
+ description: Confirmation message
1728
+ content:
1729
+ application/json:
1730
+ schema:
1731
+ type: string
1732
+ description: Plain text, not JSON-encoded, although the content type is `application/json`
1733
+ examples:
1734
+ - Item with id 21 was succesfully deleted.
1735
+ '401':
1736
+ $ref: '#/components/responses/UnauthorizedError'
1737
+ default:
1738
+ $ref: '#/components/responses/Error'
1739
+ /api/monitor_snapshot:
1740
+ get:
1741
+ operationId: monitor_snapshot
1742
+ summary: Status of the monitors
1743
+ tags:
1744
+ - Monitors
1745
+ parameters:
1746
+ - name: id
1747
+ in: query
1748
+ schema:
1749
+ type: string
1750
+ enum:
1751
+ - workflows
1752
+ - workorders
1753
+ - folders
1754
+ - nodes
1755
+ - scripts
1756
+ description: 'Only monitors of this type (also in the path `/api/monitor_snapshot/<type>`). Not set: all.'
1757
+ - $ref: '#/components/parameters/Format'
1758
+ responses:
1759
+ '200':
1760
+ description: Monitor snapshot data
1761
+ content:
1762
+ application/json:
1763
+ schema:
1764
+ type: object
1765
+ properties:
1766
+ monitor:
1767
+ type: object
1768
+ properties:
1769
+ monitor_workflows:
1770
+ type: object
1771
+ description: Empty when there is no monitor
1772
+ properties:
1773
+ monitor_workflow:
1774
+ type: array
1775
+ items:
1776
+ type: object
1777
+ properties:
1778
+ id:
1779
+ type: integer
1780
+ workflow_id:
1781
+ type: integer
1782
+ workflow_name:
1783
+ type: string
1784
+ last_activity:
1785
+ description: Only when active
1786
+ active:
1787
+ type: boolean
1788
+ status:
1789
+ type: string
1790
+ status_report:
1791
+ description: Only when active
1792
+ last_polled:
1793
+ description: Only when active
1794
+ monitor_workorders:
1795
+ type: object
1796
+ description: Empty when there is no monitor
1797
+ properties:
1798
+ monitor_workorder:
1799
+ type: array
1800
+ items:
1801
+ type: object
1802
+ properties:
1803
+ id:
1804
+ type: integer
1805
+ workflow_id:
1806
+ type: integer
1807
+ workflow_name:
1808
+ type: string
1809
+ last_activity:
1810
+ description: Only when active
1811
+ active:
1812
+ type: boolean
1813
+ status:
1814
+ type: string
1815
+ status_report:
1816
+ description: Only when active
1817
+ last_polled:
1818
+ description: Only when active
1819
+ monitor_folders:
1820
+ type: object
1821
+ description: Empty when there is no monitor
1822
+ properties:
1823
+ monitor_folder:
1824
+ type: array
1825
+ items:
1826
+ type: object
1827
+ properties:
1828
+ id:
1829
+ type: integer
1830
+ folder:
1831
+ type: string
1832
+ description: Description of the monitor
1833
+ path:
1834
+ type: string
1835
+ content:
1836
+ description: Only when active
1837
+ age_range:
1838
+ description: Only when active
1839
+ active:
1840
+ type: boolean
1841
+ status:
1842
+ type: string
1843
+ status_report:
1844
+ description: Only when active
1845
+ last_polled:
1846
+ description: Only when active
1847
+ monitor_nodes:
1848
+ type: object
1849
+ description: Empty when there is no monitor
1850
+ properties:
1851
+ monitor_node:
1852
+ type: array
1853
+ items:
1854
+ type: object
1855
+ properties:
1856
+ id:
1857
+ type: integer
1858
+ name:
1859
+ type: string
1860
+ remote_node:
1861
+ type: string
1862
+ active:
1863
+ type: boolean
1864
+ status:
1865
+ type: string
1866
+ status_report:
1867
+ description: Only when active
1868
+ last_polled:
1869
+ description: Only when active
1870
+ monitor_scripts:
1871
+ type: object
1872
+ description: Empty when there is no monitor
1873
+ properties:
1874
+ monitor_script:
1875
+ type: array
1876
+ items:
1877
+ type: object
1878
+ properties:
1879
+ id:
1880
+ type: integer
1881
+ script:
1882
+ type: string
1883
+ description: Description of the monitor
1884
+ node:
1885
+ type: string
1886
+ path:
1887
+ type: string
1888
+ active:
1889
+ type: boolean
1890
+ status:
1891
+ type: string
1892
+ status_report:
1893
+ description: Only when active
1894
+ last_polled:
1895
+ description: Only when active
1896
+ '401':
1897
+ $ref: '#/components/responses/UnauthorizedError'
1898
+ default:
1899
+ $ref: '#/components/responses/Error'
1900
+ /api/list_monitors/{id}:
1901
+ get:
1902
+ operationId: list_monitors
1903
+ summary: List the monitors of a type
1904
+ tags:
1905
+ - Monitors
1906
+ parameters:
1907
+ - $ref: '#/components/parameters/AnyId'
1908
+ - $ref: '#/components/parameters/MonitorType'
1909
+ - $ref: '#/components/parameters/Format'
1910
+ responses:
1911
+ '200':
1912
+ description: List of monitors
1913
+ content:
1914
+ application/json:
1915
+ schema:
1916
+ type: array
1917
+ description: All the attributes of the monitors. For type `workorder`, each monitor is in an object with key `monitor-workorder`. Remote node monitors give the names of the monitored remote nodes (`remote_node_name`).
1918
+ items:
1919
+ type: object
1920
+ '401':
1921
+ $ref: '#/components/responses/UnauthorizedError'
1922
+ default:
1923
+ $ref: '#/components/responses/Error'
1924
+ /api/activate_monitor/{id}:
1925
+ get:
1926
+ operationId: activate_monitor
1927
+ summary: Activate a monitor
1928
+ tags:
1929
+ - Monitors
1930
+ parameters:
1931
+ - name: id
1932
+ in: path
1933
+ required: true
1934
+ schema:
1935
+ type: string
1936
+ description: Monitor ID or portable ID
1937
+ - name: portable_id
1938
+ in: query
1939
+ schema:
1940
+ type: string
1941
+ description: Portable ID of the monitor, used when the `id` segment is empty
1942
+ - $ref: '#/components/parameters/MonitorType'
1943
+ - $ref: '#/components/parameters/Format'
1944
+ responses:
1945
+ '200':
1946
+ description: Monitor activated
1947
+ content:
1948
+ application/json:
1949
+ schema:
1950
+ $ref: '#/components/schemas/MonitorChange'
1951
+ '401':
1952
+ $ref: '#/components/responses/UnauthorizedError'
1953
+ default:
1954
+ $ref: '#/components/responses/Error'
1955
+ /api/deactivate_monitor/{id}:
1956
+ get:
1957
+ operationId: deactivate_monitor
1958
+ summary: Deactivate a monitor
1959
+ tags:
1960
+ - Monitors
1961
+ parameters:
1962
+ - name: id
1963
+ in: path
1964
+ required: true
1965
+ schema:
1966
+ type: string
1967
+ description: Monitor ID or portable ID
1968
+ - name: portable_id
1969
+ in: query
1970
+ schema:
1971
+ type: string
1972
+ description: Portable ID of the monitor, used when the `id` segment is empty
1973
+ - $ref: '#/components/parameters/MonitorType'
1974
+ - $ref: '#/components/parameters/Format'
1975
+ responses:
1976
+ '200':
1977
+ description: Monitor deactivated
1978
+ content:
1979
+ application/json:
1980
+ schema:
1981
+ $ref: '#/components/schemas/MonitorChange'
1982
+ '401':
1983
+ $ref: '#/components/responses/UnauthorizedError'
1984
+ default:
1985
+ $ref: '#/components/responses/Error'
1986
+ /api/list_tasks/{id}:
1987
+ get:
1988
+ operationId: list_tasks
1989
+ summary: Tasks (user inputs) waiting for a user
1990
+ tags:
1991
+ - Tasks
1992
+ parameters:
1993
+ - name: id
1994
+ in: path
1995
+ required: true
1996
+ schema:
1997
+ type: string
1998
+ description: User login or ID, or `self`. Only an administrator can list the tasks of another user.
1999
+ - $ref: '#/components/parameters/Format'
2000
+ responses:
2001
+ '200':
2002
+ description: List of tasks
2003
+ content:
2004
+ application/json:
2005
+ schema:
2006
+ type: object
2007
+ properties:
2008
+ user:
2009
+ type: string
2010
+ description: Login of the user
2011
+ tasks:
2012
+ type: array
2013
+ items:
2014
+ allOf:
2015
+ - $ref: '#/components/schemas/Task'
2016
+ properties:
2017
+ event:
2018
+ type: string
2019
+ group:
2020
+ type: string
2021
+ description: Group the task is assigned to
2022
+ user:
2023
+ type: string
2024
+ description: User the task is assigned to
2025
+ requested_user_inputs:
2026
+ type: array
2027
+ items:
2028
+ type: object
2029
+ properties:
2030
+ name:
2031
+ type: string
2032
+ required:
2033
+ type: boolean
2034
+ value_type:
2035
+ type: string
2036
+ '401':
2037
+ $ref: '#/components/responses/UnauthorizedError'
2038
+ default:
2039
+ $ref: '#/components/responses/Error'
2040
+ /api/task_details/{id}:
2041
+ get:
2042
+ operationId: task_details
2043
+ summary: Details of a task
2044
+ tags:
2045
+ - Tasks
2046
+ parameters:
2047
+ - name: id
2048
+ in: path
2049
+ required: true
2050
+ schema:
2051
+ type: string
2052
+ pattern: ^(WO)?[0-9]+$
2053
+ description: Task ID, or `WO<work order ID>` for the user input of a work order
2054
+ - name: step_name
2055
+ in: query
2056
+ schema:
2057
+ type: string
2058
+ description: 'With `WO<id>`, step of the user input when the work order has several. Orchestrator 4.1.6 checks that `Step_name` is set and compares `step_name`: give both.'
2059
+ - name: Step_name
2060
+ in: query
2061
+ schema:
2062
+ type: string
2063
+ description: Same value as `step_name` (see `step_name`)
2064
+ - $ref: '#/components/parameters/Format'
2065
+ responses:
2066
+ '200':
2067
+ description: Task details
2068
+ content:
2069
+ application/json:
2070
+ schema:
2071
+ type: object
2072
+ properties:
2073
+ task:
2074
+ $ref: '#/components/schemas/Task'
2075
+ task_inputs:
2076
+ type: object
2077
+ description: Parameters received by the task (name to value)
2078
+ user_inputs:
2079
+ type: array
2080
+ items:
2081
+ $ref: '#/components/schemas/UserInput'
2082
+ '401':
2083
+ $ref: '#/components/responses/UnauthorizedError'
2084
+ default:
2085
+ $ref: '#/components/responses/Error'
2086
+ /api/submit_task/{id}:
2087
+ get:
2088
+ operationId: submit_task
2089
+ summary: Complete a task with the user inputs
2090
+ tags:
2091
+ - Tasks
2092
+ parameters:
2093
+ - name: id
2094
+ in: path
2095
+ required: true
2096
+ schema:
2097
+ type: integer
2098
+ description: Task ID
2099
+ - name: outputs
2100
+ in: query
2101
+ style: deepObject
2102
+ explode: true
2103
+ schema:
2104
+ type: object
2105
+ additionalProperties: true
2106
+ description: Values of the user inputs, e.g. `outputs[Filename]=tron.avi`. All required inputs must be given.
2107
+ - name: input_provider
2108
+ in: query
2109
+ schema:
2110
+ type: string
2111
+ description: Login of the user who provides the inputs (administrator only)
2112
+ - $ref: '#/components/parameters/Format'
2113
+ responses:
2114
+ '200':
2115
+ description: The completed task
2116
+ content:
2117
+ application/json:
2118
+ schema:
2119
+ type: object
2120
+ properties:
2121
+ task:
2122
+ $ref: '#/components/schemas/Task'
2123
+ user_inputs:
2124
+ type: object
2125
+ description: Values of the user inputs (name to value)
2126
+ input_provider:
2127
+ type: string
2128
+ '401':
2129
+ $ref: '#/components/responses/UnauthorizedError'
2130
+ default:
2131
+ $ref: '#/components/responses/Error'
2132
+ /api/search_tasks/{id}:
2133
+ get:
2134
+ operationId: search_tasks
2135
+ summary: Search the tasks of the current user
2136
+ tags:
2137
+ - Tasks
2138
+ parameters:
2139
+ - $ref: '#/components/parameters/AnyId'
2140
+ - name: value
2141
+ in: query
2142
+ required: true
2143
+ schema:
2144
+ type: string
2145
+ description: Search key
2146
+ - $ref: '#/components/parameters/Format'
2147
+ responses:
2148
+ '200':
2149
+ description: Tasks found
2150
+ content:
2151
+ application/json:
2152
+ schema:
2153
+ type: array
2154
+ items:
2155
+ anyOf:
2156
+ - title: Task
2157
+ type: object
2158
+ properties:
2159
+ id:
2160
+ type: integer
2161
+ task:
2162
+ $ref: '#/components/schemas/Task'
2163
+ task_inputs:
2164
+ type: object
2165
+ description: Parameters received by the task (name to value)
2166
+ user_inputs:
2167
+ type: array
2168
+ items:
2169
+ $ref: '#/components/schemas/UserInput'
2170
+ - title: Task without access
2171
+ type: object
2172
+ properties:
2173
+ id:
2174
+ type: integer
2175
+ error:
2176
+ type: string
2177
+ '401':
2178
+ $ref: '#/components/responses/UnauthorizedError'
2179
+ default:
2180
+ $ref: '#/components/responses/Error'
2181
+ /api/plugin_version:
2182
+ get:
2183
+ operationId: plugin_version
2184
+ summary: Versions of the plugins
2185
+ tags:
2186
+ - Plugins
2187
+ parameters:
2188
+ - name: id
2189
+ in: query
2190
+ schema:
2191
+ type: string
2192
+ description: Only this plugin (action type), e.g. `ascp client` (also in the path `/api/plugin_version/<name>`)
2193
+ - $ref: '#/components/parameters/Format'
2194
+ responses:
2195
+ '200':
2196
+ description: Plugin versions
2197
+ content:
2198
+ application/json:
2199
+ schema:
2200
+ type: object
2201
+ properties:
2202
+ Plugin:
2203
+ type: array
2204
+ items:
2205
+ type: object
2206
+ properties:
2207
+ name:
2208
+ type: string
2209
+ version:
2210
+ type: string
2211
+ examples:
2212
+ - 1.2.3
2213
+ '401':
2214
+ $ref: '#/components/responses/UnauthorizedError'
2215
+ default:
2216
+ $ref: '#/components/responses/Error'
2217
+ /api/reload_plugin:
2218
+ get:
2219
+ operationId: reload_plugin
2220
+ summary: Reload a plugin, or all enabled plugins
2221
+ tags:
2222
+ - Plugins
2223
+ parameters:
2224
+ - name: action_type
2225
+ in: query
2226
+ schema:
2227
+ type: string
2228
+ description: 'Plugin class name, e.g. `Adi3Parser`. Not set: all enabled plugins.'
2229
+ - $ref: '#/components/parameters/Format'
2230
+ responses:
2231
+ '200':
2232
+ description: Reload status of each plugin
2233
+ content:
2234
+ application/json:
2235
+ schema:
2236
+ $ref: '#/components/schemas/PluginReloadStatus'
2237
+ '401':
2238
+ $ref: '#/components/responses/UnauthorizedError'
2239
+ default:
2240
+ $ref: '#/components/responses/Error'
2241
+ /api/reload_plugin_set:
2242
+ post:
2243
+ operationId: reload_plugin_set
2244
+ summary: Reload a set of plugins
2245
+ description: 'With format `json`, the body is `{"plugin_set": [...]}`; with format `xml`, `<plugin_set><action_type>...</action_type>...</plugin_set>`.'
2246
+ tags:
2247
+ - Plugins
2248
+ parameters:
2249
+ - $ref: '#/components/parameters/Format'
2250
+ requestBody:
2251
+ required: true
2252
+ content:
2253
+ application/json:
2254
+ schema:
2255
+ type: object
2256
+ required:
2257
+ - plugin_set
2258
+ properties:
2259
+ plugin_set:
2260
+ type: array
2261
+ description: Plugin class names
2262
+ items:
2263
+ type: string
2264
+ examples:
2265
+ - - Adi3Parser
2266
+ - AdiParser
2267
+ application/xml:
2268
+ schema:
2269
+ type: string
2270
+ examples:
2271
+ - <plugin_set><action_type>Adi3Parser</action_type></plugin_set>
2272
+ responses:
2273
+ '200':
2274
+ description: Reload status of each plugin
2275
+ content:
2276
+ application/json:
2277
+ schema:
2278
+ $ref: '#/components/schemas/PluginReloadStatus'
2279
+ '401':
2280
+ $ref: '#/components/responses/UnauthorizedError'
2281
+ default:
2282
+ $ref: '#/components/responses/Error'
2283
+ /api/enable_plugin/{id}:
2284
+ get:
2285
+ operationId: enable_plugin
2286
+ summary: Enable a plugin, or all plugins
2287
+ tags:
2288
+ - Plugins
2289
+ parameters:
2290
+ - $ref: '#/components/parameters/AnyId'
2291
+ - name: action_type
2292
+ in: query
2293
+ schema:
2294
+ type: string
2295
+ description: 'Plugin class name. Not set: all plugins.'
2296
+ - $ref: '#/components/parameters/Format'
2297
+ responses:
2298
+ '200':
2299
+ description: Installation ID
2300
+ content:
2301
+ application/json:
2302
+ schema:
2303
+ type: object
2304
+ properties:
2305
+ install_id:
2306
+ type: integer
2307
+ description: '`0` for all plugins'
2308
+ '401':
2309
+ $ref: '#/components/responses/UnauthorizedError'
2310
+ default:
2311
+ $ref: '#/components/responses/Error'
2312
+ /api/import_plugin/{id}:
2313
+ get:
2314
+ operationId: import_plugin
2315
+ summary: Import a plugin from a file on the Orchestrator host
2316
+ tags:
2317
+ - Plugins
2318
+ parameters:
2319
+ - $ref: '#/components/parameters/AnyId'
2320
+ - name: file
2321
+ in: query
2322
+ required: true
2323
+ schema:
2324
+ type: string
2325
+ description: Path of the plugin archive on the Orchestrator host
2326
+ - $ref: '#/components/parameters/Format'
2327
+ responses:
2328
+ '200':
2329
+ description: Class name of the imported plugin
2330
+ content:
2331
+ application/json:
2332
+ schema:
2333
+ type: object
2334
+ properties:
2335
+ action_type:
2336
+ type: string
2337
+ '401':
2338
+ $ref: '#/components/responses/UnauthorizedError'
2339
+ default:
2340
+ $ref: '#/components/responses/Error'
2341
+ /api/portlet_version:
2342
+ get:
2343
+ operationId: portlet_version
2344
+ summary: Versions of the portlets
2345
+ tags:
2346
+ - Portlets
2347
+ parameters:
2348
+ - name: id
2349
+ in: query
2350
+ schema:
2351
+ type: string
2352
+ description: Only this portlet (name), also in the path `/api/portlet_version/<name>`
2353
+ - $ref: '#/components/parameters/Format'
2354
+ responses:
2355
+ '200':
2356
+ description: Portlet versions
2357
+ content:
2358
+ application/json:
2359
+ schema:
2360
+ type: object
2361
+ properties:
2362
+ Portlet:
2363
+ type: array
2364
+ items:
2365
+ type: object
2366
+ properties:
2367
+ name:
2368
+ type: string
2369
+ version:
2370
+ type: string
2371
+ examples:
2372
+ - 1.2.3
2373
+ '401':
2374
+ $ref: '#/components/responses/UnauthorizedError'
2375
+ default:
2376
+ $ref: '#/components/responses/Error'
2377
+ /api/processes_status:
2378
+ get:
2379
+ operationId: processes_status
2380
+ summary: Status of the processes (engine, monitor, workers)
2381
+ tags:
2382
+ - System
2383
+ parameters:
2384
+ - $ref: '#/components/parameters/Format'
2385
+ responses:
2386
+ '200':
2387
+ description: Process status information
2388
+ content:
2389
+ application/json:
2390
+ schema:
2391
+ type: object
2392
+ description: Conversion of the XML, so all values are strings
2393
+ properties:
2394
+ processes:
2395
+ type: object
2396
+ properties:
2397
+ time:
2398
+ type: string
2399
+ action:
2400
+ type: string
2401
+ const: status
2402
+ engine_id:
2403
+ type: string
2404
+ node:
2405
+ description: A node, or a list when there are several
2406
+ oneOf:
2407
+ - $ref: '#/components/schemas/ProcessNode'
2408
+ - type: array
2409
+ items:
2410
+ $ref: '#/components/schemas/ProcessNode'
2411
+ '401':
2412
+ $ref: '#/components/responses/UnauthorizedError'
2413
+ default:
2414
+ $ref: '#/components/responses/Error'
2415
+ /api/control_process/{id}:
2416
+ get:
2417
+ operationId: control_process
2418
+ summary: Start, stop or kill a process
2419
+ description: Returns the status of the processes (in XML, the same as `processes_status`).
2420
+ tags:
2421
+ - System
2422
+ parameters:
2423
+ - name: id
2424
+ in: path
2425
+ required: true
2426
+ schema:
2427
+ type: string
2428
+ enum:
2429
+ - engine
2430
+ - monitor
2431
+ - worker
2432
+ description: Process type
2433
+ - name: command
2434
+ in: query
2435
+ required: true
2436
+ schema:
2437
+ type: string
2438
+ enum:
2439
+ - start
2440
+ - stop
2441
+ - kill
2442
+ - status
2443
+ description: Command (`status` does nothing but returns the status)
2444
+ - name: worker_id
2445
+ in: query
2446
+ style: form
2447
+ explode: false
2448
+ schema:
2449
+ type: array
2450
+ items:
2451
+ type: integer
2452
+ description: Comma-separated worker IDs, required for type `worker`
2453
+ - $ref: '#/components/parameters/Format'
2454
+ responses:
2455
+ '200':
2456
+ description: Status of the processes
2457
+ content:
2458
+ application/json:
2459
+ schema:
2460
+ type: object
2461
+ properties:
2462
+ processes:
2463
+ type: object
2464
+ properties:
2465
+ time:
2466
+ type: string
2467
+ action:
2468
+ type: string
2469
+ const: status
2470
+ engine_id:
2471
+ type: integer
2472
+ process:
2473
+ type: array
2474
+ items:
2475
+ type: object
2476
+ properties:
2477
+ class:
2478
+ type: string
2479
+ enum:
2480
+ - engine
2481
+ - monitor
2482
+ - node_mesh
2483
+ - worker
2484
+ id:
2485
+ type: integer
2486
+ description: Worker ID
2487
+ pid:
2488
+ type: [integer, string]
2489
+ description: '`-` when not running'
2490
+ status:
2491
+ type: string
2492
+ enum:
2493
+ - running
2494
+ - not running
2495
+ type:
2496
+ type: string
2497
+ description: Worker type
2498
+ enum:
2499
+ - normal
2500
+ - asynchronous
2501
+ - dedicated
2502
+ '401':
2503
+ $ref: '#/components/responses/UnauthorizedError'
2504
+ default:
2505
+ $ref: '#/components/responses/Error'
2506
+ /api/custom_api_call:
2507
+ get:
2508
+ operationId: custom_api_call
2509
+ summary: Store data in the shared state, for a database trigger
2510
+ description: The query parameters and the request body are stored in table `SharedState`, where a workflow can watch them with a database trigger. The response is always XML.
2511
+ tags:
2512
+ - System
2513
+ parameters:
2514
+ - name: identifier
2515
+ in: query
2516
+ schema:
2517
+ type: string
2518
+ description: 'Aggregate type of the shared state (default: `custom_api_call`)'
2519
+ - name: uniq_id
2520
+ in: query
2521
+ required: true
2522
+ schema:
2523
+ type: integer
2524
+ description: Aggregate ID of the shared state, an integer
2525
+ - name: object
2526
+ in: query
2527
+ schema:
2528
+ type: string
2529
+ description: JSON text of the object to store
2530
+ responses:
2531
+ '200':
2532
+ description: ID of the shared state (XML)
2533
+ '401':
2534
+ $ref: '#/components/responses/UnauthorizedError'
2535
+ default:
2536
+ $ref: '#/components/responses/Error'
2537
+ /api/execution_queue_stats/{id}:
2538
+ get:
2539
+ operationId: execution_queue_stats
2540
+ summary: Statistics of the execution queue of the engine
2541
+ tags:
2542
+ - System
2543
+ parameters:
2544
+ - $ref: '#/components/parameters/AnyId'
2545
+ - $ref: '#/components/parameters/Format'
2546
+ responses:
2547
+ '200':
2548
+ description: Queue statistics
2549
+ content:
2550
+ application/json:
2551
+ schema:
2552
+ type: object
2553
+ properties:
2554
+ next_polling_due:
2555
+ type: [integer, string]
2556
+ description: Seconds until the next polling, or `-`
2557
+ completed_items:
2558
+ type: integer
2559
+ unassigned_items:
2560
+ type: integer
2561
+ error_items:
2562
+ type: integer
2563
+ inprogress_synch_count:
2564
+ type: integer
2565
+ inprogress_asynch_count:
2566
+ type: integer
2567
+ created:
2568
+ type: integer
2569
+ description: Number of work orders with this status
2570
+ ready:
2571
+ type: integer
2572
+ initializing:
2573
+ type: integer
2574
+ initialized:
2575
+ type: integer
2576
+ in_progress:
2577
+ type: integer
2578
+ paused:
2579
+ type: integer
2580
+ time_executed:
2581
+ type: string
2582
+ engine_id:
2583
+ type: integer
2584
+ '401':
2585
+ $ref: '#/components/responses/UnauthorizedError'
2586
+ default:
2587
+ $ref: '#/components/responses/Error'
2588
+ /api/alerts/{id}:
2589
+ get:
2590
+ operationId: alerts
2591
+ summary: Alerts of the categories the user is subscribed to
2592
+ tags:
2593
+ - System
2594
+ parameters:
2595
+ - $ref: '#/components/parameters/AnyId'
2596
+ - name: count_only
2597
+ in: query
2598
+ schema:
2599
+ type: string
2600
+ enum:
2601
+ - 'true'
2602
+ - 'false'
2603
+ description: 'Return only the number of alerts: `{"count"}`'
2604
+ - name: category
2605
+ in: query
2606
+ schema:
2607
+ type: string
2608
+ description: Only alerts of this category, e.g. `user`
2609
+ - $ref: '#/components/parameters/Format'
2610
+ responses:
2611
+ '200':
2612
+ description: List of alerts, or their number
2613
+ content:
2614
+ application/json:
2615
+ schema:
2616
+ oneOf:
2617
+ - title: Count
2618
+ description: With `count_only=true`
2619
+ type: object
2620
+ properties:
2621
+ count:
2622
+ type: integer
2623
+ - type: array
2624
+ items:
2625
+ $ref: '#/components/schemas/AlertNotification'
2626
+ '401':
2627
+ $ref: '#/components/responses/UnauthorizedError'
2628
+ default:
2629
+ $ref: '#/components/responses/Error'
2630
+ /api/remote_node_ping:
2631
+ get:
2632
+ operationId: remote_node_ping
2633
+ summary: Version and platform of this Orchestrator
2634
+ tags:
2635
+ - Remote Nodes
2636
+ parameters:
2637
+ - $ref: '#/components/parameters/Format'
2638
+ responses:
2639
+ '200':
2640
+ description: Orchestrator information
2641
+ content:
2642
+ application/json:
2643
+ schema:
2644
+ type: object
2645
+ properties:
2646
+ remote_orchestrator_info:
2647
+ type: object
2648
+ properties:
2649
+ orchestrator-version:
2650
+ type: string
2651
+ platform:
2652
+ type: string
2653
+ engine_id:
2654
+ type: integer
2655
+ '401':
2656
+ $ref: '#/components/responses/UnauthorizedError'
2657
+ default:
2658
+ $ref: '#/components/responses/Error'
2659
+ /api/test_step/{id}:
2660
+ get:
2661
+ operationId: test_step
2662
+ summary: Launch test cases for a workflow step
2663
+ description: |
2664
+ Launches test cases against a workflow and returns a **Test_run_id** UUID.
2665
+ Pass that UUID to `/api/test_step_status` to poll for results.
2666
+ tags:
2667
+ - Testing
2668
+ parameters:
2669
+ - name: id
2670
+ in: path
2671
+ required: true
2672
+ schema:
2673
+ type: string
2674
+ description: Workflow ID or portable ID to test
2675
+ example: my_workflow
2676
+ - name: step
2677
+ in: query
2678
+ style: form
2679
+ explode: false
2680
+ schema:
2681
+ type: array
2682
+ items:
2683
+ type: string
2684
+ description: Comma-separated step name(s) to test. Omit to test all steps.
2685
+ example:
2686
+ - Get file size
2687
+ - name: case
2688
+ in: query
2689
+ schema:
2690
+ type: string
2691
+ description: Test case name to run. Omit to run all cases for the step.
2692
+ example: File doesnt exist
2693
+ - name: synchronous
2694
+ in: query
2695
+ schema:
2696
+ type: string
2697
+ enum:
2698
+ - 'true'
2699
+ - 'false'
2700
+ description: '`true`: wait for all test cases to complete before returning'
2701
+ - $ref: '#/components/parameters/Format'
2702
+ responses:
2703
+ '200':
2704
+ description: Test run launched. Response contains `Test_run_id` UUID to use with `/api/test_step_status`.
2705
+ content:
2706
+ application/json:
2707
+ schema:
2708
+ $ref: '#/components/schemas/TestRun'
2709
+ '401':
2710
+ $ref: '#/components/responses/UnauthorizedError'
2711
+ default:
2712
+ $ref: '#/components/responses/Error'
2713
+ '404':
2714
+ description: Workflow not found
2715
+ /api/test_step_status/{id}:
2716
+ get:
2717
+ operationId: test_step_status
2718
+ summary: Get test step status
2719
+ description: |
2720
+ Poll the status of a test run previously launched by `/api/test_step`.
2721
+ The `id` parameter must be the **Test_run_id UUID** returned by that call, not a numeric workflow or step ID.
2722
+ tags:
2723
+ - Testing
2724
+ parameters:
2725
+ - name: id
2726
+ in: path
2727
+ required: true
2728
+ schema:
2729
+ type: string
2730
+ format: uuid
2731
+ description: Test run UUID returned by /api/test_step (e.g. 935e0080-97f5-0135-26f8-34363bc6aedc)
2732
+ example: 935e0080-97f5-0135-26f8-34363bc6aedc
2733
+ - $ref: '#/components/parameters/Format'
2734
+ responses:
2735
+ '200':
2736
+ description: Test status
2737
+ content:
2738
+ application/json:
2739
+ schema:
2740
+ $ref: '#/components/schemas/TestRun'
2741
+ '401':
2742
+ $ref: '#/components/responses/UnauthorizedError'
2743
+ default:
2744
+ $ref: '#/components/responses/Error'
2745
+ /api/work_order_stats/{id}:
2746
+ get:
2747
+ operationId: work_order_stats
2748
+ summary: Work order statistics, monthly or for a day
2749
+ description: Returns the text `No Statistics found. Change the filter and try again.` when there is none.
2750
+ tags:
2751
+ - Statistics
2752
+ parameters:
2753
+ - $ref: '#/components/parameters/AnyId'
2754
+ - name: workflow_id
2755
+ in: query
2756
+ schema:
2757
+ type: integer
2758
+ description: Only this workflow
2759
+ - name: label
2760
+ in: query
2761
+ schema:
2762
+ type: string
2763
+ description: Only work orders with this label
2764
+ - name: date
2765
+ in: query
2766
+ schema:
2767
+ type: string
2768
+ format: date
2769
+ description: 'Statistics of this day, e.g. `2017-04-04`. Not set: monthly statistics.'
2770
+ - $ref: '#/components/parameters/Format'
2771
+ responses:
2772
+ '200':
2773
+ description: Work order statistics
2774
+ content:
2775
+ application/json:
2776
+ schema:
2777
+ type: array
2778
+ description: By day (monthly statistics of the last 30 days), or by hour (statistics of a day). The sums are decimal strings.
2779
+ items:
2780
+ type: object
2781
+ properties:
2782
+ Date:
2783
+ type: string
2784
+ Last_hour:
2785
+ type: string
2786
+ format: date-time
2787
+ Complete_Work_Orders:
2788
+ type: [string, integer]
2789
+ Failed_Work_Orders:
2790
+ type: [string, integer]
2791
+ Errored_Work_Orders:
2792
+ type: [string, integer]
2793
+ Canceled_Work_Orders:
2794
+ type: [string, integer]
2795
+ Rolled_Back_Work_Orders:
2796
+ type: [string, integer]
2797
+ Destroyed_Work_Orders:
2798
+ type: [string, integer]
2799
+ Cleared_Work_Orders:
2800
+ type: [string, integer]
2801
+ Flagged_Work_Orders:
2802
+ type: [string, integer]
2803
+ Initializing_Work_Orders:
2804
+ type: [string, integer]
2805
+ Initialized_Work_Orders:
2806
+ type: [string, integer]
2807
+ Created_Work_Orders:
2808
+ type: [string, integer]
2809
+ Ready_Work_Orders:
2810
+ type: [string, integer]
2811
+ In_Progress_Work_Orders:
2812
+ type: [string, integer]
2813
+ Unknown_Work_Orders:
2814
+ type: [string, integer]
2815
+ text/plain:
2816
+ schema:
2817
+ type: string
2818
+ const: No Statistics found. Change the filter and try again.
2819
+ '401':
2820
+ $ref: '#/components/responses/UnauthorizedError'
2821
+ default:
2822
+ $ref: '#/components/responses/Error'
2823
+ /api/work_step_stats/{id}:
2824
+ get:
2825
+ operationId: work_step_stats
2826
+ summary: Work step statistics, monthly or for a day
2827
+ description: 'Returns the text `No Statistics found. Change the filter and try again.` when there is none. The filters are inserted as is in an SQL condition (`workflow_id in (...)`): give comma-separated numbers or quoted values.'
2828
+ tags:
2829
+ - Statistics
2830
+ parameters:
2831
+ - $ref: '#/components/parameters/AnyId'
2832
+ - name: workflow_id
2833
+ in: query
2834
+ style: form
2835
+ explode: false
2836
+ schema:
2837
+ type: array
2838
+ items:
2839
+ type: integer
2840
+ description: Comma-separated workflow IDs
2841
+ - name: step_id
2842
+ in: query
2843
+ style: form
2844
+ explode: false
2845
+ schema:
2846
+ type: array
2847
+ items:
2848
+ type: integer
2849
+ description: Comma-separated step IDs
2850
+ - name: step_type
2851
+ in: query
2852
+ style: form
2853
+ explode: false
2854
+ schema:
2855
+ type: array
2856
+ items:
2857
+ type: string
2858
+ description: Comma-separated step types, quoted (e.g. `'CustomRuby'`)
2859
+ - name: date
2860
+ in: query
2861
+ schema:
2862
+ type: string
2863
+ format: date
2864
+ description: 'Statistics of this day, e.g. `2017-04-04`. Not set: monthly statistics.'
2865
+ - $ref: '#/components/parameters/Format'
2866
+ responses:
2867
+ '200':
2868
+ description: Work step statistics
2869
+ content:
2870
+ application/json:
2871
+ schema:
2872
+ type: array
2873
+ description: By day (monthly statistics of the last 30 days), or by hour (statistics of a day). The sums are decimal strings.
2874
+ items:
2875
+ type: object
2876
+ properties:
2877
+ Date:
2878
+ type: string
2879
+ Last_hour:
2880
+ type: string
2881
+ format: date-time
2882
+ Completed_Steps:
2883
+ type: [string, integer]
2884
+ Failed_Steps:
2885
+ type: [string, integer]
2886
+ Errored_steps:
2887
+ type: [string, integer]
2888
+ Obsolete_Steps:
2889
+ type: [string, integer]
2890
+ Activating_Steps:
2891
+ type: [string, integer]
2892
+ In_Progress_Steps:
2893
+ type: [string, integer]
2894
+ Paused_Steps:
2895
+ type: [string, integer]
2896
+ Pausing_Steps:
2897
+ type: [string, integer]
2898
+ Canceling_Steps:
2899
+ type: [string, integer]
2900
+ Resuming_Steps:
2901
+ type: [string, integer]
2902
+ Rolling_Back_Steps:
2903
+ type: [string, integer]
2904
+ Undefined_Steps:
2905
+ type: [string, integer]
2906
+ text/plain:
2907
+ schema:
2908
+ type: string
2909
+ const: No Statistics found. Change the filter and try again.
2910
+ '401':
2911
+ $ref: '#/components/responses/UnauthorizedError'
2912
+ default:
2913
+ $ref: '#/components/responses/Error'
2914
+ /api/journal_files/{id}:
2915
+ get:
2916
+ operationId: journal_files
2917
+ summary: Files recorded in a journal book
2918
+ tags:
2919
+ - Journals
2920
+ parameters:
2921
+ - name: id
2922
+ in: path
2923
+ required: true
2924
+ schema:
2925
+ type: string
2926
+ description: Journal book name or ID
2927
+ - name: details
2928
+ in: query
2929
+ schema:
2930
+ type: string
2931
+ enum:
2932
+ - 'true'
2933
+ - 'false'
2934
+ description: '`false`: without the states (steps) of each file'
2935
+ - name: status
2936
+ in: query
2937
+ style: form
2938
+ explode: false
2939
+ schema:
2940
+ type: array
2941
+ items:
2942
+ type: string
2943
+ description: Comma-separated statuses, e.g. `In Progress,Processing complete`
2944
+ - name: file
2945
+ in: query
2946
+ style: form
2947
+ explode: false
2948
+ schema:
2949
+ type: array
2950
+ items:
2951
+ type: string
2952
+ description: Comma-separated file paths
2953
+ - name: package
2954
+ in: query
2955
+ style: form
2956
+ explode: false
2957
+ schema:
2958
+ type: array
2959
+ items:
2960
+ type: string
2961
+ description: Comma-separated package names (not with `package_id`)
2962
+ - name: package_id
2963
+ in: query
2964
+ style: form
2965
+ explode: false
2966
+ schema:
2967
+ type: array
2968
+ items:
2969
+ type: integer
2970
+ description: Comma-separated package IDs (not with `package`)
2971
+ - $ref: '#/components/parameters/Format'
2972
+ responses:
2973
+ '200':
2974
+ description: Journal entries
2975
+ content:
2976
+ application/json:
2977
+ schema:
2978
+ type: object
2979
+ properties:
2980
+ Journal:
2981
+ type: object
2982
+ properties:
2983
+ name:
2984
+ type: string
2985
+ id:
2986
+ type: integer
2987
+ description:
2988
+ type: [string, 'null']
2989
+ active:
2990
+ type: [boolean, 'null']
2991
+ Packages:
2992
+ type: array
2993
+ description: Only when the journal has packages
2994
+ items:
2995
+ type: object
2996
+ properties:
2997
+ name:
2998
+ type: string
2999
+ id:
3000
+ type: integer
3001
+ files:
3002
+ type: array
3003
+ items:
3004
+ $ref: '#/components/schemas/JournalFile'
3005
+ Files:
3006
+ type: array
3007
+ description: Files without package
3008
+ items:
3009
+ $ref: '#/components/schemas/JournalFile'
3010
+ '401':
3011
+ $ref: '#/components/responses/UnauthorizedError'
3012
+ default:
3013
+ $ref: '#/components/responses/Error'
3014
+ /api/add_resource/{id}:
3015
+ get:
3016
+ operationId: add_resource
3017
+ summary: Add a resource to a resource pool
3018
+ tags:
3019
+ - Resources
3020
+ parameters:
3021
+ - $ref: '#/components/parameters/AnyId'
3022
+ - $ref: '#/components/parameters/PoolName'
3023
+ - $ref: '#/components/parameters/ResourceName'
3024
+ - name: capacity
3025
+ in: query
3026
+ schema:
3027
+ type: integer
3028
+ default: 1
3029
+ description: Capacity of the resource
3030
+ - name: tags
3031
+ in: query
3032
+ style: form
3033
+ explode: false
3034
+ schema:
3035
+ type: array
3036
+ items:
3037
+ type: string
3038
+ description: Comma-separated tags
3039
+ - $ref: '#/components/parameters/Format'
3040
+ responses:
3041
+ '200':
3042
+ description: The new resource
3043
+ content:
3044
+ application/json:
3045
+ schema:
3046
+ type: object
3047
+ properties:
3048
+ ManagedResource:
3049
+ $ref: '#/components/schemas/ManagedResource'
3050
+ '401':
3051
+ $ref: '#/components/responses/UnauthorizedError'
3052
+ default:
3053
+ $ref: '#/components/responses/Error'
3054
+ /api/edit_resource_capacity/{id}:
3055
+ get:
3056
+ operationId: edit_resource_capacity
3057
+ summary: Change the capacity of a resource
3058
+ tags:
3059
+ - Resources
3060
+ parameters:
3061
+ - name: id
3062
+ in: path
3063
+ required: true
3064
+ schema:
3065
+ type: integer
3066
+ minimum: 1
3067
+ description: New capacity, a positive integer
3068
+ - $ref: '#/components/parameters/PoolName'
3069
+ - $ref: '#/components/parameters/ResourceName'
3070
+ - $ref: '#/components/parameters/Format'
3071
+ responses:
3072
+ '200':
3073
+ description: The resource
3074
+ content:
3075
+ application/json:
3076
+ schema:
3077
+ type: object
3078
+ properties:
3079
+ ManagedResource:
3080
+ $ref: '#/components/schemas/ManagedResource'
3081
+ '401':
3082
+ $ref: '#/components/responses/UnauthorizedError'
3083
+ default:
3084
+ $ref: '#/components/responses/Error'
3085
+ /api/edit_pool_capacity/{id}:
3086
+ get:
3087
+ operationId: edit_pool_capacity
3088
+ summary: Change the capacity of a resource pool
3089
+ tags:
3090
+ - Resources
3091
+ parameters:
3092
+ - name: id
3093
+ in: path
3094
+ required: true
3095
+ schema:
3096
+ type: integer
3097
+ minimum: 1
3098
+ description: New capacity, a positive integer
3099
+ - $ref: '#/components/parameters/PoolName'
3100
+ - $ref: '#/components/parameters/Format'
3101
+ responses:
3102
+ '200':
3103
+ description: The resources of the pool
3104
+ content:
3105
+ application/json:
3106
+ schema:
3107
+ type: object
3108
+ properties:
3109
+ ManagedResource:
3110
+ type: array
3111
+ items:
3112
+ $ref: '#/components/schemas/ManagedResource'
3113
+ '401':
3114
+ $ref: '#/components/responses/UnauthorizedError'
3115
+ default:
3116
+ $ref: '#/components/responses/Error'
3117
+ /api/resource_online/{id}:
3118
+ get:
3119
+ operationId: resource_online
3120
+ summary: Take a resource online
3121
+ tags:
3122
+ - Resources
3123
+ parameters:
3124
+ - $ref: '#/components/parameters/AnyId'
3125
+ - $ref: '#/components/parameters/PoolName'
3126
+ - $ref: '#/components/parameters/ResourceName'
3127
+ - $ref: '#/components/parameters/Format'
3128
+ responses:
3129
+ '200':
3130
+ description: The resource is online
3131
+ content:
3132
+ application/json:
3133
+ schema:
3134
+ type: object
3135
+ properties:
3136
+ ManagedResource:
3137
+ type: object
3138
+ description: Resource ID (with `>` replaced by `-`) to new status
3139
+ additionalProperties:
3140
+ const: Online
3141
+ '401':
3142
+ $ref: '#/components/responses/UnauthorizedError'
3143
+ default:
3144
+ $ref: '#/components/responses/Error'
3145
+ /api/resource_offline/{id}:
3146
+ get:
3147
+ operationId: resource_offline
3148
+ summary: Take a resource offline
3149
+ tags:
3150
+ - Resources
3151
+ parameters:
3152
+ - $ref: '#/components/parameters/AnyId'
3153
+ - $ref: '#/components/parameters/PoolName'
3154
+ - $ref: '#/components/parameters/ResourceName'
3155
+ - $ref: '#/components/parameters/Format'
3156
+ responses:
3157
+ '200':
3158
+ description: The resource is offline
3159
+ content:
3160
+ application/json:
3161
+ schema:
3162
+ type: object
3163
+ properties:
3164
+ ManagedResource:
3165
+ type: object
3166
+ description: Resource ID (with `>` replaced by `-`) to new status
3167
+ additionalProperties:
3168
+ const: Offline
3169
+ '401':
3170
+ $ref: '#/components/responses/UnauthorizedError'
3171
+ default:
3172
+ $ref: '#/components/responses/Error'
3173
+ /api/pool_status/{id}:
3174
+ get:
3175
+ operationId: pool_status
3176
+ summary: Resources of a resource pool and their status
3177
+ tags:
3178
+ - Resources
3179
+ parameters:
3180
+ - $ref: '#/components/parameters/AnyId'
3181
+ - name: name
3182
+ in: query
3183
+ required: true
3184
+ schema:
3185
+ type: string
3186
+ description: Name of the resource pool (with or without the suffix `__a` of the database)
3187
+ - $ref: '#/components/parameters/Format'
3188
+ responses:
3189
+ '200':
3190
+ description: Pool status
3191
+ content:
3192
+ application/json:
3193
+ schema:
3194
+ type: object
3195
+ properties:
3196
+ ManagedResource:
3197
+ type: array
3198
+ items:
3199
+ type: object
3200
+ properties:
3201
+ id:
3202
+ type: string
3203
+ description: Resource name
3204
+ taken:
3205
+ type: integer
3206
+ capacity:
3207
+ type: integer
3208
+ status:
3209
+ type: string
3210
+ '401':
3211
+ $ref: '#/components/responses/UnauthorizedError'
3212
+ default:
3213
+ $ref: '#/components/responses/Error'
3214
+ /api/create_user/{id}:
3215
+ post:
3216
+ operationId: create_user
3217
+ summary: Create a user
3218
+ description: The response is JSON unless format is `xml`.
3219
+ tags:
3220
+ - Users
3221
+ parameters:
3222
+ - $ref: '#/components/parameters/AnyId'
3223
+ - $ref: '#/components/parameters/Format'
3224
+ requestBody:
3225
+ required: true
3226
+ content:
3227
+ application/json:
3228
+ schema:
3229
+ type: object
3230
+ required:
3231
+ - login
3232
+ - password
3233
+ - email
3234
+ properties:
3235
+ login:
3236
+ type: string
3237
+ description: Login of the user
3238
+ password:
3239
+ type: string
3240
+ format: password
3241
+ first_name:
3242
+ type: string
3243
+ last_name:
3244
+ type: string
3245
+ email:
3246
+ type: string
3247
+ format: email
3248
+ description: Email of the user, unique
3249
+ phone:
3250
+ type: string
3251
+ SMS:
3252
+ type: string
3253
+ is_active:
3254
+ type: boolean
3255
+ default: false
3256
+ require_password_change_on_login:
3257
+ type: boolean
3258
+ default: false
3259
+ alternate_emails:
3260
+ type: array
3261
+ items:
3262
+ type: string
3263
+ format: email
3264
+ groups:
3265
+ type: array
3266
+ description: Names of existing groups
3267
+ items:
3268
+ type: string
3269
+ responses:
3270
+ '200':
3271
+ description: Confirmation message
3272
+ content:
3273
+ application/json:
3274
+ schema:
3275
+ type: object
3276
+ properties:
3277
+ create_user:
3278
+ type: object
3279
+ properties:
3280
+ success:
3281
+ type: string
3282
+ examples:
3283
+ - User 'jdoe' was successfully created.
3284
+ '401':
3285
+ $ref: '#/components/responses/UnauthorizedError'
3286
+ default:
3287
+ $ref: '#/components/responses/Error'
3288
+ components:
3289
+ securitySchemes:
3290
+ bearerAuth:
3291
+ type: http
3292
+ scheme: bearer
3293
+ bearerFormat: JWT
3294
+ description: JWT token obtained from /api/login endpoint
3295
+ basicAuth:
3296
+ type: http
3297
+ scheme: basic
3298
+ description: Login and password, when JWT authentication is disabled
3299
+ loginQuery:
3300
+ type: apiKey
3301
+ in: query
3302
+ name: login
3303
+ description: User login, with `password` or `api_key`, when JWT authentication is disabled
3304
+ passwordQuery:
3305
+ type: apiKey
3306
+ in: query
3307
+ name: password
3308
+ description: User password, when JWT authentication is disabled
3309
+ apiKeyQuery:
3310
+ type: apiKey
3311
+ in: query
3312
+ name: api_key
3313
+ description: API key of the user, when JWT authentication is disabled
3314
+ parameters:
3315
+ Format:
3316
+ name: format
3317
+ in: query
3318
+ schema:
3319
+ type: string
3320
+ enum:
3321
+ - xml
3322
+ - json
3323
+ default: xml
3324
+ description: Response format (also given by the extension `.json` or `.xml` of the path)
3325
+ AnyId:
3326
+ name: id
3327
+ in: path
3328
+ required: true
3329
+ schema:
3330
+ type: string
3331
+ default: '0'
3332
+ description: Not used by the endpoint, but required by the route (any value, e.g. `0`)
3333
+ MonitorType:
3334
+ name: monitor_type
3335
+ in: query
3336
+ required: true
3337
+ schema:
3338
+ type: string
3339
+ enum:
3340
+ - workflow
3341
+ - workorder
3342
+ - folder
3343
+ - node
3344
+ - script
3345
+ description: Type of monitor (also accepted `work_order`, `remotenode`, `remote_node`, `remotescript`, `remote_script`)
3346
+ PoolName:
3347
+ name: pool_name
3348
+ in: query
3349
+ required: true
3350
+ schema:
3351
+ type: string
3352
+ description: Name of the resource pool
3353
+ ResourceName:
3354
+ name: resource_name
3355
+ in: query
3356
+ required: true
3357
+ schema:
3358
+ type: string
3359
+ description: Name of the resource, e.g. an IP address
3360
+ schemas:
3361
+ Error:
3362
+ type: object
3363
+ description: 'Error of an API call in format `json`. In format `xml`: `<error time="..." action="..." id="...">message</error>`.'
3364
+ required:
3365
+ - error
3366
+ properties:
3367
+ error:
3368
+ type: object
3369
+ required:
3370
+ - action
3371
+ - time
3372
+ - id
3373
+ - description
3374
+ properties:
3375
+ action:
3376
+ type: string
3377
+ description: Called endpoint
3378
+ time:
3379
+ type: string
3380
+ description: UTC time
3381
+ examples:
3382
+ - '2026-10-21 08:30:00'
3383
+ id:
3384
+ type: string
3385
+ description: The `id` of the call, or `0`
3386
+ description:
3387
+ type: string
3388
+ description: Error message and backtrace
3389
+ Workflow:
3390
+ type: object
3391
+ description: Workflow (database record)
3392
+ properties:
3393
+ id:
3394
+ type: integer
3395
+ name:
3396
+ type: string
3397
+ portable_id:
3398
+ type: [string, 'null']
3399
+ created_by:
3400
+ type: [integer, 'null']
3401
+ description: User ID
3402
+ folder_id:
3403
+ type: [integer, 'null']
3404
+ generated_from:
3405
+ type: [integer, 'null']
3406
+ description: Published whiteboard, `null` for a draft
3407
+ revision_id:
3408
+ type: [integer, 'null']
3409
+ description: Published revision
3410
+ label:
3411
+ type: [string, 'null']
3412
+ run_as:
3413
+ type: [string, 'null']
3414
+ source_revision:
3415
+ type: [string, 'null']
3416
+ comments:
3417
+ type: [string, 'null']
3418
+ description:
3419
+ type: [string, 'null']
3420
+ tags:
3421
+ type: [string, 'null']
3422
+ templates:
3423
+ type: [string, 'null']
3424
+ max_running:
3425
+ type: [integer, 'null']
3426
+ cleanup_after_days:
3427
+ type: [integer, 'null']
3428
+ purge_after_days:
3429
+ type: [integer, 'null']
3430
+ user_lock:
3431
+ type: [boolean, 'null']
3432
+ locked_by:
3433
+ type: [integer, 'null']
3434
+ created_at:
3435
+ type: string
3436
+ format: date-time
3437
+ updated_at:
3438
+ type: string
3439
+ format: date-time
3440
+ WorkOrder:
3441
+ type: object
3442
+ description: Work order (database record)
3443
+ properties:
3444
+ id:
3445
+ type: integer
3446
+ name:
3447
+ type: [string, 'null']
3448
+ monitor_id:
3449
+ type: [integer, 'null']
3450
+ workflow_id:
3451
+ type: [integer, 'null']
3452
+ workflow_revision_id:
3453
+ type: [integer, 'null']
3454
+ workflow_name:
3455
+ type: [string, 'null']
3456
+ branched_from_order:
3457
+ type: [integer, 'null']
3458
+ description: Parent work order, for a sub-workflow
3459
+ branched_from:
3460
+ type: [integer, 'null']
3461
+ description: Parent work step, for a sub-workflow
3462
+ forked_at:
3463
+ type: [integer, 'null']
3464
+ derived_from:
3465
+ type: [integer, 'null']
3466
+ master_id:
3467
+ type: [integer, 'null']
3468
+ launched_by:
3469
+ type: [integer, 'null']
3470
+ description: User ID
3471
+ initiated_by:
3472
+ type: [integer, 'null']
3473
+ description: User ID
3474
+ running_as:
3475
+ type: [integer, 'null']
3476
+ priority:
3477
+ type: [integer, 'null']
3478
+ exec_priority:
3479
+ type: [number, 'null']
3480
+ higher_priority:
3481
+ type: [boolean, 'null']
3482
+ label:
3483
+ type: [string, 'null']
3484
+ status:
3485
+ type: [string, 'null']
3486
+ examples:
3487
+ - In Progress
3488
+ status_details:
3489
+ type: [string, 'null']
3490
+ comments:
3491
+ type: [string, 'null']
3492
+ tags:
3493
+ type: [string, 'null']
3494
+ description: Tags separated by `|`, e.g. `|tag1|tag2|`
3495
+ initiate_date:
3496
+ type: [string, 'null']
3497
+ format: date-time
3498
+ completion_date:
3499
+ type: [string, 'null']
3500
+ format: date-time
3501
+ max_running:
3502
+ type: [integer, 'null']
3503
+ cleanup_after_days:
3504
+ type: [integer, 'null']
3505
+ purge_after_days:
3506
+ type: [integer, 'null']
3507
+ created_at:
3508
+ type: string
3509
+ format: date-time
3510
+ updated_at:
3511
+ type: string
3512
+ format: date-time
3513
+ WorkStepBase:
3514
+ type: object
3515
+ description: Work step (database record), common columns
3516
+ properties:
3517
+ id:
3518
+ type: integer
3519
+ action_id:
3520
+ type: [integer, 'null']
3521
+ step_id:
3522
+ type: [integer, 'null']
3523
+ step_type:
3524
+ type: [string, 'null']
3525
+ description: Plugin class name, e.g. `CustomRuby`
3526
+ step_name:
3527
+ type: [string, 'null']
3528
+ work_step_name:
3529
+ type: [string, 'null']
3530
+ attempt:
3531
+ type: [integer, 'null']
3532
+ execution_timeout:
3533
+ type: [integer, 'null']
3534
+ group:
3535
+ type: [integer, 'null']
3536
+ percent_complete:
3537
+ type: [integer, 'null']
3538
+ rank:
3539
+ type: [integer, 'null']
3540
+ running_as:
3541
+ type: [integer, 'null']
3542
+ synch_filter:
3543
+ type: [integer, 'null']
3544
+ timeout:
3545
+ type: [integer, 'null']
3546
+ weight:
3547
+ type: [integer, 'null']
3548
+ activation_time:
3549
+ type: [number, 'null']
3550
+ on_timeout:
3551
+ type: [string, 'null']
3552
+ status:
3553
+ type: [string, 'null']
3554
+ status_details:
3555
+ type: [string, 'null']
3556
+ prerequisites:
3557
+ type: [string, 'null']
3558
+ episteps:
3559
+ type: [string, 'null']
3560
+ journaling:
3561
+ type: [string, 'null']
3562
+ work_inputs:
3563
+ type: [string, 'null']
3564
+ work_outputs:
3565
+ type: [string, 'null']
3566
+ activable_date:
3567
+ type: [string, 'null']
3568
+ format: date-time
3569
+ activation_date:
3570
+ type: [string, 'null']
3571
+ format: date-time
3572
+ original_activation_date:
3573
+ type: [string, 'null']
3574
+ format: date-time
3575
+ completion_date:
3576
+ type: [string, 'null']
3577
+ format: date-time
3578
+ created_at:
3579
+ type: string
3580
+ format: date-time
3581
+ updated_at:
3582
+ type: string
3583
+ format: date-time
3584
+ WorkStep:
3585
+ description: Work step (database record)
3586
+ allOf:
3587
+ - $ref: '#/components/schemas/WorkStepBase'
3588
+ properties:
3589
+ work_order_id:
3590
+ type: [integer, 'null']
3591
+ workflow_id:
3592
+ type: [integer, 'null']
3593
+ pre_processing:
3594
+ type: [string, 'null']
3595
+ post_processing:
3596
+ type: [string, 'null']
3597
+ WorkStepStatus:
3598
+ description: Work step in `work_order_status`, without `workflow_id`, `pre_processing` and `post_processing`
3599
+ allOf:
3600
+ - $ref: '#/components/schemas/WorkStepBase'
3601
+ properties:
3602
+ percent_complete:
3603
+ type: integer
3604
+ description: 0 for a running step, 100 for a finished step, when not set
3605
+ category:
3606
+ type: string
3607
+ description: Category of the plugin, e.g. `Basic/Ruby`, or `-`
3608
+ work_order_id:
3609
+ type: [integer, string]
3610
+ description: 'Only for steps of type `SubWorkflow`, `WorkflowLauncher` and `FederatedWorkflow`: the launched work order, or `-`'
3611
+ node_id:
3612
+ type: string
3613
+ description: 'Only for `FederatedWorkflow`: execution node, or `-`'
3614
+ address:
3615
+ type: string
3616
+ description: 'Only for `FederatedWorkflow`: execution address, or `-`'
3617
+ WorkOrderWithSteps:
3618
+ type: object
3619
+ properties:
3620
+ work_order:
3621
+ $ref: '#/components/schemas/WorkOrder'
3622
+ work_steps:
3623
+ type: array
3624
+ items:
3625
+ $ref: '#/components/schemas/WorkStep'
3626
+ WorkstepReset:
3627
+ allOf:
3628
+ - $ref: '#/components/schemas/WorkOrderWithSteps'
3629
+ properties:
3630
+ workstep_reset:
3631
+ const: true
3632
+ StepVariable:
3633
+ type: object
3634
+ description: Input or output of a work step
3635
+ properties:
3636
+ value:
3637
+ description: Value, of any type
3638
+ name:
3639
+ type: string
3640
+ id:
3641
+ type: integer
3642
+ type:
3643
+ type: string
3644
+ description: Value type
3645
+ QueuedItem:
3646
+ type: object
3647
+ description: Item of a queue (database record, without the columns of the queue)
3648
+ properties:
3649
+ id:
3650
+ type: integer
3651
+ queued_item:
3652
+ description: The queued item
3653
+ item_description:
3654
+ type: [string, 'null']
3655
+ priority:
3656
+ type: [integer, 'null']
3657
+ weight:
3658
+ type: [integer, 'null']
3659
+ position:
3660
+ type: [integer, 'null']
3661
+ rank:
3662
+ type: [integer, 'null']
3663
+ description: Position in the queue, from 0
3664
+ originator_type:
3665
+ type: [string, 'null']
3666
+ originator_id:
3667
+ type: [integer, 'null']
3668
+ tags:
3669
+ type: [string, 'null']
3670
+ created_at:
3671
+ type: string
3672
+ format: date-time
3673
+ updated_at:
3674
+ type: string
3675
+ format: date-time
3676
+ QueueMetadata:
3677
+ type: object
3678
+ properties:
3679
+ id:
3680
+ type: string
3681
+ description: Queue name given in the call (`queued_items` only)
3682
+ name:
3683
+ type: string
3684
+ description: Displayed name of the queue
3685
+ comments:
3686
+ type: [string, 'null']
3687
+ administrators:
3688
+ type: object
3689
+ properties:
3690
+ groups:
3691
+ type: array
3692
+ items:
3693
+ type: integer
3694
+ users:
3695
+ type: array
3696
+ items:
3697
+ type: integer
3698
+ paused:
3699
+ type: [boolean, 'null']
3700
+ QueuedItems:
3701
+ type: object
3702
+ properties:
3703
+ queued_items:
3704
+ type: array
3705
+ items:
3706
+ $ref: '#/components/schemas/QueuedItem'
3707
+ queue_metadata:
3708
+ $ref: '#/components/schemas/QueueMetadata'
3709
+ Task:
3710
+ type: object
3711
+ description: Task, i.e. a user input waiting for a user (database record)
3712
+ properties:
3713
+ id:
3714
+ type: integer
3715
+ state_id:
3716
+ type: [integer, 'null']
3717
+ description: Work step ID
3718
+ user_input_id:
3719
+ type: [integer, 'null']
3720
+ role_id:
3721
+ type: [integer, 'null']
3722
+ description: Group ID
3723
+ user_id:
3724
+ type: [integer, 'null']
3725
+ status:
3726
+ type: [string, 'null']
3727
+ completed_by:
3728
+ type: [integer, 'null']
3729
+ description: User ID
3730
+ created_at:
3731
+ type: string
3732
+ format: date-time
3733
+ updated_at:
3734
+ type: string
3735
+ format: date-time
3736
+ UserInput:
3737
+ type: object
3738
+ properties:
3739
+ name:
3740
+ type: string
3741
+ type:
3742
+ type: string
3743
+ description: Value type
3744
+ value:
3745
+ description: Current value
3746
+ required:
3747
+ type: boolean
3748
+ MonitorChange:
3749
+ type: object
3750
+ properties:
3751
+ action:
3752
+ type: string
3753
+ enum:
3754
+ - activate_monitor
3755
+ - deactivate_monitor
3756
+ time:
3757
+ type: string
3758
+ description: Local time
3759
+ id:
3760
+ type: string
3761
+ description: Monitor ID
3762
+ description:
3763
+ type: string
3764
+ enum:
3765
+ - activated
3766
+ - deactivated
3767
+ PluginReloadStatus:
3768
+ type: object
3769
+ description: 'Plugin class name, or `All Plugins`, to `true`, `false` or an error message'
3770
+ additionalProperties:
3771
+ type: [boolean, string]
3772
+ ProcessNode:
3773
+ type: object
3774
+ properties:
3775
+ id:
3776
+ type: string
3777
+ name:
3778
+ type: string
3779
+ current:
3780
+ type: string
3781
+ enum:
3782
+ - 'true'
3783
+ - 'false'
3784
+ process:
3785
+ type: array
3786
+ items:
3787
+ type: object
3788
+ properties:
3789
+ class:
3790
+ type: string
3791
+ enum:
3792
+ - engine
3793
+ - monitor
3794
+ - process_manager
3795
+ - node_mesh
3796
+ - worker
3797
+ id:
3798
+ type: string
3799
+ description: Worker ID
3800
+ pid:
3801
+ type: string
3802
+ description: '`-` when not running'
3803
+ status:
3804
+ type: string
3805
+ type:
3806
+ type: string
3807
+ description: Worker type
3808
+ enum:
3809
+ - normal
3810
+ - asynchronous
3811
+ - dedicated
3812
+ AlertNotification:
3813
+ type: object
3814
+ properties:
3815
+ id:
3816
+ type: integer
3817
+ category_id:
3818
+ type: [integer, 'null']
3819
+ alert_header:
3820
+ type: [string, 'null']
3821
+ alert_description:
3822
+ type: [string, 'null']
3823
+ created_at:
3824
+ type: string
3825
+ format: date-time
3826
+ updated_at:
3827
+ type: string
3828
+ format: date-time
3829
+ TestRun:
3830
+ type: object
3831
+ properties:
3832
+ Test_run_id:
3833
+ type: string
3834
+ format: uuid
3835
+ Workflow_id:
3836
+ type: [integer, 'null']
3837
+ Test_cases_launched:
3838
+ type: integer
3839
+ Steps:
3840
+ type: array
3841
+ description: Only when synchronous, and in `test_step_status`
3842
+ items:
3843
+ type: object
3844
+ properties:
3845
+ Step_name:
3846
+ type: string
3847
+ Result:
3848
+ type: boolean
3849
+ Test_cases:
3850
+ type: array
3851
+ items:
3852
+ type: object
3853
+ properties:
3854
+ Id:
3855
+ type: integer
3856
+ Name:
3857
+ type: string
3858
+ status:
3859
+ type: string
3860
+ Status_details:
3861
+ type: [string, 'null']
3862
+ Result_message:
3863
+ type: [string, 'null']
3864
+ Last_update:
3865
+ type: string
3866
+ format: date-time
3867
+ Inputs:
3868
+ description: Inputs of the test case
3869
+ Outputs:
3870
+ description: Outputs of the test case
3871
+ Result:
3872
+ type: [boolean, 'null']
3873
+ Result:
3874
+ type: boolean
3875
+ description: Only when synchronous, and in `test_step_status`
3876
+ JournalFile:
3877
+ type: object
3878
+ properties:
3879
+ file_id:
3880
+ type: integer
3881
+ file:
3882
+ type: string
3883
+ status:
3884
+ type: [string, 'null']
3885
+ status_details:
3886
+ type: [string, 'null']
3887
+ created_at:
3888
+ type: string
3889
+ format: date-time
3890
+ updated_at:
3891
+ type: string
3892
+ format: date-time
3893
+ states:
3894
+ type: array
3895
+ description: Steps that processed the file, unless `details=false`
3896
+ items:
3897
+ type: object
3898
+ properties:
3899
+ path:
3900
+ type: [string, 'null']
3901
+ status:
3902
+ type: [string, 'null']
3903
+ status_details:
3904
+ type: [string, 'null']
3905
+ progress:
3906
+ type: [integer, 'null']
3907
+ work_step_id:
3908
+ type: [integer, 'null']
3909
+ work_order_id:
3910
+ type: [integer, 'null']
3911
+ step_name:
3912
+ type: [string, 'null']
3913
+ workflow_id:
3914
+ type: [integer, 'null']
3915
+ workflow_name:
3916
+ type: [string, 'null']
3917
+ created_at:
3918
+ type: string
3919
+ format: date-time
3920
+ ManagedResource:
3921
+ type: object
3922
+ description: Resource of a resource pool (database record)
3923
+ properties:
3924
+ id:
3925
+ type: integer
3926
+ resource_id:
3927
+ type: string
3928
+ resource_name:
3929
+ type: string
3930
+ description: Pool name, with the suffix `__a`
3931
+ status:
3932
+ type: [string, 'null']
3933
+ max:
3934
+ type: [integer, 'null']
3935
+ description: Capacity
3936
+ reserved:
3937
+ type: [integer, 'null']
3938
+ properties:
3939
+ type: [string, 'null']
3940
+ tags:
3941
+ type: [string, 'null']
3942
+ created_at:
3943
+ type: string
3944
+ format: date-time
3945
+ updated_at:
3946
+ type: string
3947
+ format: date-time
3948
+ responses:
3949
+ UnauthorizedError:
3950
+ description: Authentication required or token invalid
3951
+ content:
3952
+ application/json:
3953
+ schema:
3954
+ anyOf:
3955
+ - title: JWT authentication
3956
+ type: object
3957
+ properties:
3958
+ error:
3959
+ type: string
3960
+ examples:
3961
+ - Unauthorized
3962
+ - $ref: '#/components/schemas/Error'
3963
+ Error:
3964
+ description: 'Error: status 403 when access is denied, else 404 when the server option `strict_api_validation` is set, else 200 (see Errors in the introduction)'
3965
+ content:
3966
+ application/json:
3967
+ schema:
3968
+ $ref: '#/components/schemas/Error'
3969
+ tags:
3970
+ - name: Authentication
3971
+ description: Obtain JWT tokens for API access. All other endpoints require authentication.
3972
+ - name: Workflows
3973
+ description: Import, export, publish and inspect workflow definitions.
3974
+ - name: Work Orders
3975
+ description: Initiate and track workflow executions. Each work order is one execution of a workflow.
3976
+ - name: Work Steps
3977
+ description: Status and control of the steps of a work order.
3978
+ - name: Queues
3979
+ description: Managed queues (plugin Queue stager) and their items.
3980
+ - name: Monitors
3981
+ description: Monitors of workflows, work orders, folders, remote nodes and scripts.
3982
+ - name: Tasks
3983
+ description: User inputs (tasks) waiting for an operator.
3984
+ - name: Plugins
3985
+ description: Versions, import, enabling and reloading of action plugins.
3986
+ - name: Portlets
3987
+ description: Versions of the portlets of the web interface.
3988
+ - name: System
3989
+ description: Processes, execution queue, alerts, and shared state for external applications.
3990
+ - name: Remote Nodes
3991
+ description: Information on this Orchestrator, used by remote Orchestrator nodes.
3992
+ - name: Testing
3993
+ description: Test cases of workflow steps.
3994
+ - name: Statistics
3995
+ description: Statistics of work orders and work steps.
3996
+ - name: Journals
3997
+ description: Journal books and the files recorded in them.
3998
+ - name: Resources
3999
+ description: Resource pools (plugin Load manager) and their resources.
4000
+ - name: Users
4001
+ description: User accounts.