@galaxy-tool-util/gxwf-web 0.0.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app.d.ts +27 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +37 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/bin/gxwf-web.d.ts +3 -0
  7. package/dist/bin/gxwf-web.d.ts.map +1 -0
  8. package/dist/bin/gxwf-web.js +93 -0
  9. package/dist/bin/gxwf-web.js.map +1 -0
  10. package/dist/contents.d.ts +29 -0
  11. package/dist/contents.d.ts.map +1 -0
  12. package/dist/contents.js +408 -0
  13. package/dist/contents.js.map +1 -0
  14. package/dist/generated/api-types.d.ts +1512 -0
  15. package/dist/generated/api-types.d.ts.map +1 -0
  16. package/dist/generated/api-types.js +6 -0
  17. package/dist/generated/api-types.js.map +1 -0
  18. package/dist/index.d.ts +24 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +20 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/models.d.ts +26 -0
  23. package/dist/models.d.ts.map +1 -0
  24. package/dist/models.js +3 -0
  25. package/dist/models.js.map +1 -0
  26. package/dist/router.d.ts +20 -0
  27. package/dist/router.d.ts.map +1 -0
  28. package/dist/router.js +398 -0
  29. package/dist/router.js.map +1 -0
  30. package/dist/workflows.d.ts +126 -0
  31. package/dist/workflows.d.ts.map +1 -0
  32. package/dist/workflows.js +462 -0
  33. package/dist/workflows.js.map +1 -0
  34. package/openapi.json +2575 -0
  35. package/package.json +54 -0
  36. package/public/assets/atkinson-hyperlegible-latin-400-italic-D-qjh7ci.woff2 +0 -0
  37. package/public/assets/atkinson-hyperlegible-latin-400-italic-OoEIrRJc.woff +0 -0
  38. package/public/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff +0 -0
  39. package/public/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2 +0 -0
  40. package/public/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff +0 -0
  41. package/public/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2 +0 -0
  42. package/public/assets/atkinson-hyperlegible-latin-ext-400-italic-3fJ3SmOv.woff2 +0 -0
  43. package/public/assets/atkinson-hyperlegible-latin-ext-400-italic-B-Yabllp.woff +0 -0
  44. package/public/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff +0 -0
  45. package/public/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2 +0 -0
  46. package/public/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2 +0 -0
  47. package/public/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff +0 -0
  48. package/public/assets/index-DgcQmTAM.css +1 -0
  49. package/public/assets/index-DsYOTNI9.js +3595 -0
  50. package/public/assets/primeicons-C6QP2o4f.woff2 +0 -0
  51. package/public/assets/primeicons-DMOk5skT.eot +0 -0
  52. package/public/assets/primeicons-Dr5RGzOO.svg +345 -0
  53. package/public/assets/primeicons-MpK4pl85.ttf +0 -0
  54. package/public/assets/primeicons-WjwUDZjB.woff +0 -0
  55. package/public/index.html +13 -0
package/openapi.json ADDED
@@ -0,0 +1,2575 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "Galaxy Workflow Development API",
5
+ "description": "Validate, lint, clean, and convert Galaxy workflows against tool definitions",
6
+ "version": "0.1.0"
7
+ },
8
+ "paths": {
9
+ "/workflows": {
10
+ "get": {
11
+ "summary": "List Workflows",
12
+ "description": "List all discovered workflows in the configured directory.",
13
+ "operationId": "list_workflows_workflows_get",
14
+ "responses": {
15
+ "200": {
16
+ "description": "Successful Response",
17
+ "content": {
18
+ "application/json": {
19
+ "schema": {
20
+ "$ref": "#/components/schemas/WorkflowIndex"
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
27
+ },
28
+ "/workflows/refresh": {
29
+ "post": {
30
+ "summary": "Refresh Workflows",
31
+ "description": "Re-discover workflows from the configured directory.",
32
+ "operationId": "refresh_workflows_workflows_refresh_post",
33
+ "responses": {
34
+ "200": {
35
+ "description": "Successful Response",
36
+ "content": {
37
+ "application/json": {
38
+ "schema": {
39
+ "$ref": "#/components/schemas/WorkflowIndex"
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ },
47
+ "/workflows/{workflow_path}/validate": {
48
+ "post": {
49
+ "summary": "Validate Workflow",
50
+ "description": "Validate a workflow's tool state against tool definitions.",
51
+ "operationId": "validate_workflow_workflows__workflow_path__validate_post",
52
+ "parameters": [
53
+ {
54
+ "name": "workflow_path",
55
+ "in": "path",
56
+ "required": true,
57
+ "schema": {
58
+ "type": "string",
59
+ "title": "Workflow Path"
60
+ }
61
+ },
62
+ {
63
+ "name": "strict_structure",
64
+ "in": "query",
65
+ "required": false,
66
+ "schema": {
67
+ "type": "boolean",
68
+ "default": false,
69
+ "title": "Strict Structure"
70
+ }
71
+ },
72
+ {
73
+ "name": "strict_encoding",
74
+ "in": "query",
75
+ "required": false,
76
+ "schema": {
77
+ "type": "boolean",
78
+ "default": false,
79
+ "title": "Strict Encoding"
80
+ }
81
+ },
82
+ {
83
+ "name": "connections",
84
+ "in": "query",
85
+ "required": false,
86
+ "schema": {
87
+ "type": "boolean",
88
+ "default": false,
89
+ "title": "Connections"
90
+ }
91
+ },
92
+ {
93
+ "name": "mode",
94
+ "in": "query",
95
+ "required": false,
96
+ "schema": {
97
+ "type": "string",
98
+ "default": "pydantic",
99
+ "title": "Mode"
100
+ }
101
+ },
102
+ {
103
+ "name": "clean_first",
104
+ "in": "query",
105
+ "required": false,
106
+ "schema": {
107
+ "type": "boolean",
108
+ "default": false,
109
+ "title": "Clean First"
110
+ }
111
+ },
112
+ {
113
+ "name": "allow",
114
+ "in": "query",
115
+ "required": false,
116
+ "schema": {
117
+ "type": "array",
118
+ "items": {
119
+ "type": "string"
120
+ },
121
+ "default": [],
122
+ "title": "Allow"
123
+ }
124
+ },
125
+ {
126
+ "name": "deny",
127
+ "in": "query",
128
+ "required": false,
129
+ "schema": {
130
+ "type": "array",
131
+ "items": {
132
+ "type": "string"
133
+ },
134
+ "default": [],
135
+ "title": "Deny"
136
+ }
137
+ }
138
+ ],
139
+ "responses": {
140
+ "200": {
141
+ "description": "Successful Response",
142
+ "content": {
143
+ "application/json": {
144
+ "schema": {
145
+ "$ref": "#/components/schemas/SingleValidationReport"
146
+ }
147
+ }
148
+ }
149
+ },
150
+ "422": {
151
+ "description": "Validation Error",
152
+ "content": {
153
+ "application/json": {
154
+ "schema": {
155
+ "$ref": "#/components/schemas/HTTPValidationError"
156
+ }
157
+ }
158
+ }
159
+ }
160
+ }
161
+ }
162
+ },
163
+ "/workflows/{workflow_path}/clean": {
164
+ "post": {
165
+ "summary": "Clean Workflow",
166
+ "description": "Clean stale tool state keys in a workflow. Writes back by default; use dry_run=true to preview.",
167
+ "operationId": "clean_workflow_workflows__workflow_path__clean_post",
168
+ "parameters": [
169
+ {
170
+ "name": "workflow_path",
171
+ "in": "path",
172
+ "required": true,
173
+ "schema": {
174
+ "type": "string",
175
+ "title": "Workflow Path"
176
+ }
177
+ },
178
+ {
179
+ "name": "preserve",
180
+ "in": "query",
181
+ "required": false,
182
+ "schema": {
183
+ "type": "array",
184
+ "items": {
185
+ "type": "string"
186
+ },
187
+ "default": [],
188
+ "title": "Preserve"
189
+ }
190
+ },
191
+ {
192
+ "name": "strip",
193
+ "in": "query",
194
+ "required": false,
195
+ "schema": {
196
+ "type": "array",
197
+ "items": {
198
+ "type": "string"
199
+ },
200
+ "default": [],
201
+ "title": "Strip"
202
+ }
203
+ },
204
+ {
205
+ "name": "dry_run",
206
+ "in": "query",
207
+ "required": false,
208
+ "schema": {
209
+ "type": "boolean",
210
+ "default": false,
211
+ "title": "Dry Run"
212
+ }
213
+ }
214
+ ],
215
+ "responses": {
216
+ "200": {
217
+ "description": "Successful Response",
218
+ "content": {
219
+ "application/json": {
220
+ "schema": {
221
+ "$ref": "#/components/schemas/SingleCleanReport"
222
+ }
223
+ }
224
+ }
225
+ },
226
+ "422": {
227
+ "description": "Validation Error",
228
+ "content": {
229
+ "application/json": {
230
+ "schema": {
231
+ "$ref": "#/components/schemas/HTTPValidationError"
232
+ }
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }
238
+ },
239
+ "/workflows/{workflow_path}/export": {
240
+ "post": {
241
+ "summary": "Export Workflow",
242
+ "description": "Convert a workflow to the other format, writing the result alongside the original.",
243
+ "operationId": "export_workflow_workflows__workflow_path__export_post",
244
+ "parameters": [
245
+ {
246
+ "name": "workflow_path",
247
+ "in": "path",
248
+ "required": true,
249
+ "schema": {
250
+ "type": "string",
251
+ "title": "Workflow Path"
252
+ }
253
+ },
254
+ {
255
+ "name": "dry_run",
256
+ "in": "query",
257
+ "required": false,
258
+ "schema": {
259
+ "type": "boolean",
260
+ "default": false,
261
+ "title": "Dry Run"
262
+ }
263
+ }
264
+ ],
265
+ "responses": {
266
+ "200": {
267
+ "description": "Successful Response",
268
+ "content": {
269
+ "application/json": {
270
+ "schema": {
271
+ "$ref": "#/components/schemas/ExportResult"
272
+ }
273
+ }
274
+ }
275
+ },
276
+ "422": {
277
+ "description": "Validation Error",
278
+ "content": {
279
+ "application/json": {
280
+ "schema": {
281
+ "$ref": "#/components/schemas/HTTPValidationError"
282
+ }
283
+ }
284
+ }
285
+ }
286
+ }
287
+ }
288
+ },
289
+ "/workflows/{workflow_path}/convert": {
290
+ "post": {
291
+ "summary": "Convert Workflow",
292
+ "description": "Convert a workflow to the other format, removing the original.",
293
+ "operationId": "convert_workflow_workflows__workflow_path__convert_post",
294
+ "parameters": [
295
+ {
296
+ "name": "workflow_path",
297
+ "in": "path",
298
+ "required": true,
299
+ "schema": {
300
+ "type": "string",
301
+ "title": "Workflow Path"
302
+ }
303
+ },
304
+ {
305
+ "name": "dry_run",
306
+ "in": "query",
307
+ "required": false,
308
+ "schema": {
309
+ "type": "boolean",
310
+ "default": false,
311
+ "title": "Dry Run"
312
+ }
313
+ }
314
+ ],
315
+ "responses": {
316
+ "200": {
317
+ "description": "Successful Response",
318
+ "content": {
319
+ "application/json": {
320
+ "schema": {
321
+ "$ref": "#/components/schemas/ConvertResult"
322
+ }
323
+ }
324
+ }
325
+ },
326
+ "422": {
327
+ "description": "Validation Error",
328
+ "content": {
329
+ "application/json": {
330
+ "schema": {
331
+ "$ref": "#/components/schemas/HTTPValidationError"
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ }
338
+ },
339
+ "/workflows/{workflow_path}/roundtrip": {
340
+ "post": {
341
+ "summary": "Roundtrip Workflow",
342
+ "description": "Run round-trip validation (native -> format2 -> native).",
343
+ "operationId": "roundtrip_workflow_workflows__workflow_path__roundtrip_post",
344
+ "parameters": [
345
+ {
346
+ "name": "workflow_path",
347
+ "in": "path",
348
+ "required": true,
349
+ "schema": {
350
+ "type": "string",
351
+ "title": "Workflow Path"
352
+ }
353
+ },
354
+ {
355
+ "name": "strict_structure",
356
+ "in": "query",
357
+ "required": false,
358
+ "schema": {
359
+ "type": "boolean",
360
+ "default": false,
361
+ "title": "Strict Structure"
362
+ }
363
+ },
364
+ {
365
+ "name": "strict_encoding",
366
+ "in": "query",
367
+ "required": false,
368
+ "schema": {
369
+ "type": "boolean",
370
+ "default": false,
371
+ "title": "Strict Encoding"
372
+ }
373
+ },
374
+ {
375
+ "name": "strict_state",
376
+ "in": "query",
377
+ "required": false,
378
+ "schema": {
379
+ "type": "boolean",
380
+ "default": false,
381
+ "title": "Strict State"
382
+ }
383
+ },
384
+ {
385
+ "name": "include_content",
386
+ "in": "query",
387
+ "required": false,
388
+ "schema": {
389
+ "type": "boolean",
390
+ "default": false,
391
+ "title": "Include Content"
392
+ }
393
+ }
394
+ ],
395
+ "responses": {
396
+ "200": {
397
+ "description": "Successful Response",
398
+ "content": {
399
+ "application/json": {
400
+ "schema": {
401
+ "$ref": "#/components/schemas/SingleRoundTripReport"
402
+ }
403
+ }
404
+ }
405
+ },
406
+ "422": {
407
+ "description": "Validation Error",
408
+ "content": {
409
+ "application/json": {
410
+ "schema": {
411
+ "$ref": "#/components/schemas/HTTPValidationError"
412
+ }
413
+ }
414
+ }
415
+ }
416
+ }
417
+ }
418
+ },
419
+ "/api/contents": {
420
+ "get": {
421
+ "summary": "Read Root Contents",
422
+ "description": "Read configured directory root (Jupyter Contents API).",
423
+ "operationId": "read_root_contents_api_contents_get",
424
+ "parameters": [
425
+ {
426
+ "name": "content",
427
+ "in": "query",
428
+ "required": false,
429
+ "schema": {
430
+ "type": "integer",
431
+ "default": 1,
432
+ "title": "Content"
433
+ }
434
+ },
435
+ {
436
+ "name": "format",
437
+ "in": "query",
438
+ "required": false,
439
+ "schema": {
440
+ "anyOf": [
441
+ {
442
+ "type": "string"
443
+ },
444
+ {
445
+ "type": "null"
446
+ }
447
+ ],
448
+ "title": "Format"
449
+ }
450
+ }
451
+ ],
452
+ "responses": {
453
+ "200": {
454
+ "description": "Successful Response",
455
+ "content": {
456
+ "application/json": {
457
+ "schema": {
458
+ "$ref": "#/components/schemas/ContentsModel-Output"
459
+ }
460
+ }
461
+ }
462
+ },
463
+ "422": {
464
+ "description": "Validation Error",
465
+ "content": {
466
+ "application/json": {
467
+ "schema": {
468
+ "$ref": "#/components/schemas/HTTPValidationError"
469
+ }
470
+ }
471
+ }
472
+ }
473
+ }
474
+ },
475
+ "post": {
476
+ "summary": "Create Root Untitled",
477
+ "description": "Create an untitled file or directory in the configured root.",
478
+ "operationId": "create_root_untitled_api_contents_post",
479
+ "requestBody": {
480
+ "required": true,
481
+ "content": {
482
+ "application/json": {
483
+ "schema": {
484
+ "$ref": "#/components/schemas/CreateRequest"
485
+ }
486
+ }
487
+ }
488
+ },
489
+ "responses": {
490
+ "200": {
491
+ "description": "Successful Response",
492
+ "content": {
493
+ "application/json": {
494
+ "schema": {
495
+ "$ref": "#/components/schemas/ContentsModel-Output"
496
+ }
497
+ }
498
+ }
499
+ },
500
+ "422": {
501
+ "description": "Validation Error",
502
+ "content": {
503
+ "application/json": {
504
+ "schema": {
505
+ "$ref": "#/components/schemas/HTTPValidationError"
506
+ }
507
+ }
508
+ }
509
+ }
510
+ }
511
+ }
512
+ },
513
+ "/api/contents/{path}/checkpoints": {
514
+ "get": {
515
+ "summary": "List File Checkpoints",
516
+ "description": "List checkpoints for a file (Jupyter Contents API).",
517
+ "operationId": "list_file_checkpoints_api_contents__path__checkpoints_get",
518
+ "parameters": [
519
+ {
520
+ "name": "path",
521
+ "in": "path",
522
+ "required": true,
523
+ "schema": {
524
+ "type": "string",
525
+ "title": "Path"
526
+ }
527
+ }
528
+ ],
529
+ "responses": {
530
+ "200": {
531
+ "description": "Successful Response",
532
+ "content": {
533
+ "application/json": {
534
+ "schema": {
535
+ "type": "array",
536
+ "items": {
537
+ "$ref": "#/components/schemas/CheckpointModel"
538
+ },
539
+ "title": "Response List File Checkpoints Api Contents Path Checkpoints Get"
540
+ }
541
+ }
542
+ }
543
+ },
544
+ "422": {
545
+ "description": "Validation Error",
546
+ "content": {
547
+ "application/json": {
548
+ "schema": {
549
+ "$ref": "#/components/schemas/HTTPValidationError"
550
+ }
551
+ }
552
+ }
553
+ }
554
+ }
555
+ },
556
+ "post": {
557
+ "summary": "Create File Checkpoint",
558
+ "description": "Create a checkpoint snapshot of a file.",
559
+ "operationId": "create_file_checkpoint_api_contents__path__checkpoints_post",
560
+ "parameters": [
561
+ {
562
+ "name": "path",
563
+ "in": "path",
564
+ "required": true,
565
+ "schema": {
566
+ "type": "string",
567
+ "title": "Path"
568
+ }
569
+ }
570
+ ],
571
+ "responses": {
572
+ "201": {
573
+ "description": "Successful Response",
574
+ "content": {
575
+ "application/json": {
576
+ "schema": {
577
+ "$ref": "#/components/schemas/CheckpointModel"
578
+ }
579
+ }
580
+ }
581
+ },
582
+ "422": {
583
+ "description": "Validation Error",
584
+ "content": {
585
+ "application/json": {
586
+ "schema": {
587
+ "$ref": "#/components/schemas/HTTPValidationError"
588
+ }
589
+ }
590
+ }
591
+ }
592
+ }
593
+ }
594
+ },
595
+ "/api/contents/{path}/checkpoints/{checkpoint_id}": {
596
+ "post": {
597
+ "summary": "Restore File Checkpoint",
598
+ "description": "Restore a file from a stored checkpoint.",
599
+ "operationId": "restore_file_checkpoint_api_contents__path__checkpoints__checkpoint_id__post",
600
+ "parameters": [
601
+ {
602
+ "name": "path",
603
+ "in": "path",
604
+ "required": true,
605
+ "schema": {
606
+ "type": "string",
607
+ "title": "Path"
608
+ }
609
+ },
610
+ {
611
+ "name": "checkpoint_id",
612
+ "in": "path",
613
+ "required": true,
614
+ "schema": {
615
+ "type": "string",
616
+ "title": "Checkpoint Id"
617
+ }
618
+ }
619
+ ],
620
+ "responses": {
621
+ "204": {
622
+ "description": "Successful Response"
623
+ },
624
+ "422": {
625
+ "description": "Validation Error",
626
+ "content": {
627
+ "application/json": {
628
+ "schema": {
629
+ "$ref": "#/components/schemas/HTTPValidationError"
630
+ }
631
+ }
632
+ }
633
+ }
634
+ }
635
+ },
636
+ "delete": {
637
+ "summary": "Delete File Checkpoint",
638
+ "description": "Delete a stored checkpoint.",
639
+ "operationId": "delete_file_checkpoint_api_contents__path__checkpoints__checkpoint_id__delete",
640
+ "parameters": [
641
+ {
642
+ "name": "path",
643
+ "in": "path",
644
+ "required": true,
645
+ "schema": {
646
+ "type": "string",
647
+ "title": "Path"
648
+ }
649
+ },
650
+ {
651
+ "name": "checkpoint_id",
652
+ "in": "path",
653
+ "required": true,
654
+ "schema": {
655
+ "type": "string",
656
+ "title": "Checkpoint Id"
657
+ }
658
+ }
659
+ ],
660
+ "responses": {
661
+ "204": {
662
+ "description": "Successful Response"
663
+ },
664
+ "422": {
665
+ "description": "Validation Error",
666
+ "content": {
667
+ "application/json": {
668
+ "schema": {
669
+ "$ref": "#/components/schemas/HTTPValidationError"
670
+ }
671
+ }
672
+ }
673
+ }
674
+ }
675
+ }
676
+ },
677
+ "/api/contents/{path}": {
678
+ "get": {
679
+ "summary": "Read Path Contents",
680
+ "description": "Read a file or directory by relative path.",
681
+ "operationId": "read_path_contents_api_contents__path__get",
682
+ "parameters": [
683
+ {
684
+ "name": "path",
685
+ "in": "path",
686
+ "required": true,
687
+ "schema": {
688
+ "type": "string",
689
+ "title": "Path"
690
+ }
691
+ },
692
+ {
693
+ "name": "content",
694
+ "in": "query",
695
+ "required": false,
696
+ "schema": {
697
+ "type": "integer",
698
+ "default": 1,
699
+ "title": "Content"
700
+ }
701
+ },
702
+ {
703
+ "name": "format",
704
+ "in": "query",
705
+ "required": false,
706
+ "schema": {
707
+ "anyOf": [
708
+ {
709
+ "type": "string"
710
+ },
711
+ {
712
+ "type": "null"
713
+ }
714
+ ],
715
+ "title": "Format"
716
+ }
717
+ }
718
+ ],
719
+ "responses": {
720
+ "200": {
721
+ "description": "Successful Response",
722
+ "content": {
723
+ "application/json": {
724
+ "schema": {
725
+ "$ref": "#/components/schemas/ContentsModel-Output"
726
+ }
727
+ }
728
+ }
729
+ },
730
+ "422": {
731
+ "description": "Validation Error",
732
+ "content": {
733
+ "application/json": {
734
+ "schema": {
735
+ "$ref": "#/components/schemas/HTTPValidationError"
736
+ }
737
+ }
738
+ }
739
+ }
740
+ }
741
+ },
742
+ "post": {
743
+ "summary": "Create Path Untitled",
744
+ "description": "Create an untitled file or directory inside {path}.",
745
+ "operationId": "create_path_untitled_api_contents__path__post",
746
+ "parameters": [
747
+ {
748
+ "name": "path",
749
+ "in": "path",
750
+ "required": true,
751
+ "schema": {
752
+ "type": "string",
753
+ "title": "Path"
754
+ }
755
+ }
756
+ ],
757
+ "requestBody": {
758
+ "required": true,
759
+ "content": {
760
+ "application/json": {
761
+ "schema": {
762
+ "$ref": "#/components/schemas/CreateRequest"
763
+ }
764
+ }
765
+ }
766
+ },
767
+ "responses": {
768
+ "200": {
769
+ "description": "Successful Response",
770
+ "content": {
771
+ "application/json": {
772
+ "schema": {
773
+ "$ref": "#/components/schemas/ContentsModel-Output"
774
+ }
775
+ }
776
+ }
777
+ },
778
+ "422": {
779
+ "description": "Validation Error",
780
+ "content": {
781
+ "application/json": {
782
+ "schema": {
783
+ "$ref": "#/components/schemas/HTTPValidationError"
784
+ }
785
+ }
786
+ }
787
+ }
788
+ }
789
+ },
790
+ "put": {
791
+ "summary": "Write Path Contents",
792
+ "description": "Save (create-or-replace) a file or create a directory.\n\nOptional ``If-Unmodified-Since`` header (RFC 7232, HTTP-date) enables conflict\ndetection: if the file's on-disk mtime is newer than the supplied date, the\nserver returns 409 instead of overwriting.",
793
+ "operationId": "write_path_contents_api_contents__path__put",
794
+ "parameters": [
795
+ {
796
+ "name": "path",
797
+ "in": "path",
798
+ "required": true,
799
+ "schema": {
800
+ "type": "string",
801
+ "title": "Path"
802
+ }
803
+ },
804
+ {
805
+ "name": "If-Unmodified-Since",
806
+ "in": "header",
807
+ "required": false,
808
+ "schema": {
809
+ "anyOf": [
810
+ {
811
+ "type": "string"
812
+ },
813
+ {
814
+ "type": "null"
815
+ }
816
+ ],
817
+ "title": "If-Unmodified-Since"
818
+ }
819
+ }
820
+ ],
821
+ "requestBody": {
822
+ "required": true,
823
+ "content": {
824
+ "application/json": {
825
+ "schema": {
826
+ "$ref": "#/components/schemas/ContentsModel-Input"
827
+ }
828
+ }
829
+ }
830
+ },
831
+ "responses": {
832
+ "200": {
833
+ "description": "Successful Response",
834
+ "content": {
835
+ "application/json": {
836
+ "schema": {
837
+ "$ref": "#/components/schemas/ContentsModel-Output"
838
+ }
839
+ }
840
+ }
841
+ },
842
+ "422": {
843
+ "description": "Validation Error",
844
+ "content": {
845
+ "application/json": {
846
+ "schema": {
847
+ "$ref": "#/components/schemas/HTTPValidationError"
848
+ }
849
+ }
850
+ }
851
+ }
852
+ }
853
+ },
854
+ "delete": {
855
+ "summary": "Delete Path Contents",
856
+ "description": "Delete a file or directory (recursive).",
857
+ "operationId": "delete_path_contents_api_contents__path__delete",
858
+ "parameters": [
859
+ {
860
+ "name": "path",
861
+ "in": "path",
862
+ "required": true,
863
+ "schema": {
864
+ "type": "string",
865
+ "title": "Path"
866
+ }
867
+ }
868
+ ],
869
+ "responses": {
870
+ "204": {
871
+ "description": "Successful Response"
872
+ },
873
+ "422": {
874
+ "description": "Validation Error",
875
+ "content": {
876
+ "application/json": {
877
+ "schema": {
878
+ "$ref": "#/components/schemas/HTTPValidationError"
879
+ }
880
+ }
881
+ }
882
+ }
883
+ }
884
+ },
885
+ "patch": {
886
+ "summary": "Rename Path Contents",
887
+ "description": "Rename/move a file or directory.",
888
+ "operationId": "rename_path_contents_api_contents__path__patch",
889
+ "parameters": [
890
+ {
891
+ "name": "path",
892
+ "in": "path",
893
+ "required": true,
894
+ "schema": {
895
+ "type": "string",
896
+ "title": "Path"
897
+ }
898
+ }
899
+ ],
900
+ "requestBody": {
901
+ "required": true,
902
+ "content": {
903
+ "application/json": {
904
+ "schema": {
905
+ "$ref": "#/components/schemas/RenameRequest"
906
+ }
907
+ }
908
+ }
909
+ },
910
+ "responses": {
911
+ "200": {
912
+ "description": "Successful Response",
913
+ "content": {
914
+ "application/json": {
915
+ "schema": {
916
+ "$ref": "#/components/schemas/ContentsModel-Output"
917
+ }
918
+ }
919
+ }
920
+ },
921
+ "422": {
922
+ "description": "Validation Error",
923
+ "content": {
924
+ "application/json": {
925
+ "schema": {
926
+ "$ref": "#/components/schemas/HTTPValidationError"
927
+ }
928
+ }
929
+ }
930
+ }
931
+ }
932
+ }
933
+ },
934
+ "/workflows/{workflow_path}/lint": {
935
+ "post": {
936
+ "summary": "Lint Workflow",
937
+ "description": "Lint a workflow (structural + tool state validation).",
938
+ "operationId": "lint_workflow_workflows__workflow_path__lint_post",
939
+ "parameters": [
940
+ {
941
+ "name": "workflow_path",
942
+ "in": "path",
943
+ "required": true,
944
+ "schema": {
945
+ "type": "string",
946
+ "title": "Workflow Path"
947
+ }
948
+ },
949
+ {
950
+ "name": "strict_structure",
951
+ "in": "query",
952
+ "required": false,
953
+ "schema": {
954
+ "type": "boolean",
955
+ "default": false,
956
+ "title": "Strict Structure"
957
+ }
958
+ },
959
+ {
960
+ "name": "strict_encoding",
961
+ "in": "query",
962
+ "required": false,
963
+ "schema": {
964
+ "type": "boolean",
965
+ "default": false,
966
+ "title": "Strict Encoding"
967
+ }
968
+ },
969
+ {
970
+ "name": "allow",
971
+ "in": "query",
972
+ "required": false,
973
+ "schema": {
974
+ "type": "array",
975
+ "items": {
976
+ "type": "string"
977
+ },
978
+ "default": [],
979
+ "title": "Allow"
980
+ }
981
+ },
982
+ {
983
+ "name": "deny",
984
+ "in": "query",
985
+ "required": false,
986
+ "schema": {
987
+ "type": "array",
988
+ "items": {
989
+ "type": "string"
990
+ },
991
+ "default": [],
992
+ "title": "Deny"
993
+ }
994
+ }
995
+ ],
996
+ "responses": {
997
+ "200": {
998
+ "description": "Successful Response",
999
+ "content": {
1000
+ "application/json": {
1001
+ "schema": {
1002
+ "$ref": "#/components/schemas/SingleLintReport"
1003
+ }
1004
+ }
1005
+ }
1006
+ },
1007
+ "422": {
1008
+ "description": "Validation Error",
1009
+ "content": {
1010
+ "application/json": {
1011
+ "schema": {
1012
+ "$ref": "#/components/schemas/HTTPValidationError"
1013
+ }
1014
+ }
1015
+ }
1016
+ }
1017
+ }
1018
+ }
1019
+ }
1020
+ },
1021
+ "components": {
1022
+ "schemas": {
1023
+ "BenignArtifact": {
1024
+ "properties": {
1025
+ "reason": {
1026
+ "type": "string",
1027
+ "title": "Reason"
1028
+ },
1029
+ "proven_by": {
1030
+ "items": {
1031
+ "type": "string"
1032
+ },
1033
+ "type": "array",
1034
+ "title": "Proven By"
1035
+ }
1036
+ },
1037
+ "type": "object",
1038
+ "required": [
1039
+ "reason"
1040
+ ],
1041
+ "title": "BenignArtifact"
1042
+ },
1043
+ "CheckpointModel": {
1044
+ "properties": {
1045
+ "id": {
1046
+ "type": "string",
1047
+ "title": "Id"
1048
+ },
1049
+ "last_modified": {
1050
+ "type": "string",
1051
+ "format": "date-time",
1052
+ "title": "Last Modified"
1053
+ }
1054
+ },
1055
+ "type": "object",
1056
+ "required": [
1057
+ "id",
1058
+ "last_modified"
1059
+ ],
1060
+ "title": "CheckpointModel",
1061
+ "description": "Checkpoint metadata (Jupyter Contents API shape)."
1062
+ },
1063
+ "CleanStepResult": {
1064
+ "properties": {
1065
+ "step": {
1066
+ "type": "string",
1067
+ "title": "Step"
1068
+ },
1069
+ "tool_id": {
1070
+ "anyOf": [
1071
+ {
1072
+ "type": "string"
1073
+ },
1074
+ {
1075
+ "type": "null"
1076
+ }
1077
+ ],
1078
+ "title": "Tool Id"
1079
+ },
1080
+ "version": {
1081
+ "anyOf": [
1082
+ {
1083
+ "type": "string"
1084
+ },
1085
+ {
1086
+ "type": "null"
1087
+ }
1088
+ ],
1089
+ "title": "Version"
1090
+ },
1091
+ "removed_state_keys": {
1092
+ "items": {
1093
+ "type": "string"
1094
+ },
1095
+ "type": "array",
1096
+ "title": "Removed State Keys",
1097
+ "default": []
1098
+ },
1099
+ "removed_step_keys": {
1100
+ "items": {
1101
+ "type": "string"
1102
+ },
1103
+ "type": "array",
1104
+ "title": "Removed Step Keys",
1105
+ "default": []
1106
+ },
1107
+ "skipped": {
1108
+ "type": "boolean",
1109
+ "title": "Skipped",
1110
+ "default": false
1111
+ },
1112
+ "skip_reason": {
1113
+ "type": "string",
1114
+ "title": "Skip Reason",
1115
+ "default": ""
1116
+ },
1117
+ "display_label": {
1118
+ "type": "string",
1119
+ "title": "Display Label",
1120
+ "readOnly": true
1121
+ }
1122
+ },
1123
+ "type": "object",
1124
+ "required": [
1125
+ "step",
1126
+ "display_label"
1127
+ ],
1128
+ "title": "CleanStepResult"
1129
+ },
1130
+ "ConnectionResult": {
1131
+ "properties": {
1132
+ "source_step": {
1133
+ "type": "string",
1134
+ "title": "Source Step"
1135
+ },
1136
+ "source_output": {
1137
+ "type": "string",
1138
+ "title": "Source Output"
1139
+ },
1140
+ "target_step": {
1141
+ "type": "string",
1142
+ "title": "Target Step"
1143
+ },
1144
+ "target_input": {
1145
+ "type": "string",
1146
+ "title": "Target Input"
1147
+ },
1148
+ "status": {
1149
+ "type": "string",
1150
+ "enum": [
1151
+ "ok",
1152
+ "invalid",
1153
+ "skip"
1154
+ ],
1155
+ "title": "Status"
1156
+ },
1157
+ "mapping": {
1158
+ "anyOf": [
1159
+ {
1160
+ "type": "string"
1161
+ },
1162
+ {
1163
+ "type": "null"
1164
+ }
1165
+ ],
1166
+ "title": "Mapping"
1167
+ },
1168
+ "errors": {
1169
+ "items": {
1170
+ "type": "string"
1171
+ },
1172
+ "type": "array",
1173
+ "title": "Errors",
1174
+ "default": []
1175
+ }
1176
+ },
1177
+ "type": "object",
1178
+ "required": [
1179
+ "source_step",
1180
+ "source_output",
1181
+ "target_step",
1182
+ "target_input",
1183
+ "status"
1184
+ ],
1185
+ "title": "ConnectionResult",
1186
+ "description": "Single connection between two steps.\n\nstatus and mapping are orthogonal:\n- status: whether the connection is valid (ok/invalid/skip)\n- mapping: what collection type is being mapped over (None = direct match)"
1187
+ },
1188
+ "ConnectionStepResult": {
1189
+ "properties": {
1190
+ "step": {
1191
+ "type": "string",
1192
+ "title": "Step"
1193
+ },
1194
+ "tool_id": {
1195
+ "anyOf": [
1196
+ {
1197
+ "type": "string"
1198
+ },
1199
+ {
1200
+ "type": "null"
1201
+ }
1202
+ ],
1203
+ "title": "Tool Id"
1204
+ },
1205
+ "version": {
1206
+ "anyOf": [
1207
+ {
1208
+ "type": "string"
1209
+ },
1210
+ {
1211
+ "type": "null"
1212
+ }
1213
+ ],
1214
+ "title": "Version"
1215
+ },
1216
+ "step_type": {
1217
+ "type": "string",
1218
+ "title": "Step Type",
1219
+ "default": "tool"
1220
+ },
1221
+ "map_over": {
1222
+ "anyOf": [
1223
+ {
1224
+ "type": "string"
1225
+ },
1226
+ {
1227
+ "type": "null"
1228
+ }
1229
+ ],
1230
+ "title": "Map Over"
1231
+ },
1232
+ "connections": {
1233
+ "items": {
1234
+ "$ref": "#/components/schemas/ConnectionResult"
1235
+ },
1236
+ "type": "array",
1237
+ "title": "Connections",
1238
+ "default": []
1239
+ },
1240
+ "resolved_outputs": {
1241
+ "items": {
1242
+ "$ref": "#/components/schemas/ResolvedOutputType"
1243
+ },
1244
+ "type": "array",
1245
+ "title": "Resolved Outputs",
1246
+ "default": []
1247
+ },
1248
+ "errors": {
1249
+ "items": {
1250
+ "type": "string"
1251
+ },
1252
+ "type": "array",
1253
+ "title": "Errors",
1254
+ "default": []
1255
+ }
1256
+ },
1257
+ "type": "object",
1258
+ "required": [
1259
+ "step"
1260
+ ],
1261
+ "title": "ConnectionStepResult",
1262
+ "description": "Connection validation result for one step."
1263
+ },
1264
+ "ConnectionValidationReport": {
1265
+ "properties": {
1266
+ "valid": {
1267
+ "type": "boolean",
1268
+ "title": "Valid"
1269
+ },
1270
+ "step_results": {
1271
+ "items": {
1272
+ "$ref": "#/components/schemas/ConnectionStepResult"
1273
+ },
1274
+ "type": "array",
1275
+ "title": "Step Results",
1276
+ "default": []
1277
+ },
1278
+ "summary": {
1279
+ "additionalProperties": {
1280
+ "type": "integer"
1281
+ },
1282
+ "type": "object",
1283
+ "title": "Summary",
1284
+ "default": {}
1285
+ },
1286
+ "has_details": {
1287
+ "type": "boolean",
1288
+ "title": "Has Details",
1289
+ "description": "True iff any step has connection data or step-level errors.\n\nPrecomputed here so templates don't need a mutable accumulator loop\n(Jinja2 namespaces aren't in the Jinja2/Nunjucks shared subset).",
1290
+ "readOnly": true
1291
+ }
1292
+ },
1293
+ "type": "object",
1294
+ "required": [
1295
+ "valid",
1296
+ "has_details"
1297
+ ],
1298
+ "title": "ConnectionValidationReport",
1299
+ "description": "Connection validation results for one workflow."
1300
+ },
1301
+ "ContentsModel-Input": {
1302
+ "properties": {
1303
+ "name": {
1304
+ "type": "string",
1305
+ "title": "Name"
1306
+ },
1307
+ "path": {
1308
+ "type": "string",
1309
+ "title": "Path"
1310
+ },
1311
+ "type": {
1312
+ "type": "string",
1313
+ "enum": [
1314
+ "file",
1315
+ "directory"
1316
+ ],
1317
+ "title": "Type"
1318
+ },
1319
+ "writable": {
1320
+ "type": "boolean",
1321
+ "title": "Writable"
1322
+ },
1323
+ "created": {
1324
+ "type": "string",
1325
+ "format": "date-time",
1326
+ "title": "Created"
1327
+ },
1328
+ "last_modified": {
1329
+ "type": "string",
1330
+ "format": "date-time",
1331
+ "title": "Last Modified"
1332
+ },
1333
+ "size": {
1334
+ "anyOf": [
1335
+ {
1336
+ "type": "integer"
1337
+ },
1338
+ {
1339
+ "type": "null"
1340
+ }
1341
+ ],
1342
+ "title": "Size"
1343
+ },
1344
+ "mimetype": {
1345
+ "anyOf": [
1346
+ {
1347
+ "type": "string"
1348
+ },
1349
+ {
1350
+ "type": "null"
1351
+ }
1352
+ ],
1353
+ "title": "Mimetype"
1354
+ },
1355
+ "format": {
1356
+ "anyOf": [
1357
+ {
1358
+ "type": "string",
1359
+ "enum": [
1360
+ "text",
1361
+ "base64"
1362
+ ]
1363
+ },
1364
+ {
1365
+ "type": "null"
1366
+ }
1367
+ ],
1368
+ "title": "Format"
1369
+ },
1370
+ "content": {
1371
+ "anyOf": [
1372
+ {
1373
+ "type": "string"
1374
+ },
1375
+ {
1376
+ "items": {
1377
+ "$ref": "#/components/schemas/ContentsModel-Input"
1378
+ },
1379
+ "type": "array"
1380
+ },
1381
+ {
1382
+ "type": "null"
1383
+ }
1384
+ ],
1385
+ "title": "Content"
1386
+ }
1387
+ },
1388
+ "type": "object",
1389
+ "required": [
1390
+ "name",
1391
+ "path",
1392
+ "type",
1393
+ "writable",
1394
+ "created",
1395
+ "last_modified"
1396
+ ],
1397
+ "title": "ContentsModel",
1398
+ "description": "Jupyter Contents API-shaped model for files and directories."
1399
+ },
1400
+ "ContentsModel-Output": {
1401
+ "properties": {
1402
+ "name": {
1403
+ "type": "string",
1404
+ "title": "Name"
1405
+ },
1406
+ "path": {
1407
+ "type": "string",
1408
+ "title": "Path"
1409
+ },
1410
+ "type": {
1411
+ "type": "string",
1412
+ "enum": [
1413
+ "file",
1414
+ "directory"
1415
+ ],
1416
+ "title": "Type"
1417
+ },
1418
+ "writable": {
1419
+ "type": "boolean",
1420
+ "title": "Writable"
1421
+ },
1422
+ "created": {
1423
+ "type": "string",
1424
+ "format": "date-time",
1425
+ "title": "Created"
1426
+ },
1427
+ "last_modified": {
1428
+ "type": "string",
1429
+ "format": "date-time",
1430
+ "title": "Last Modified"
1431
+ },
1432
+ "size": {
1433
+ "anyOf": [
1434
+ {
1435
+ "type": "integer"
1436
+ },
1437
+ {
1438
+ "type": "null"
1439
+ }
1440
+ ],
1441
+ "title": "Size"
1442
+ },
1443
+ "mimetype": {
1444
+ "anyOf": [
1445
+ {
1446
+ "type": "string"
1447
+ },
1448
+ {
1449
+ "type": "null"
1450
+ }
1451
+ ],
1452
+ "title": "Mimetype"
1453
+ },
1454
+ "format": {
1455
+ "anyOf": [
1456
+ {
1457
+ "type": "string",
1458
+ "enum": [
1459
+ "text",
1460
+ "base64"
1461
+ ]
1462
+ },
1463
+ {
1464
+ "type": "null"
1465
+ }
1466
+ ],
1467
+ "title": "Format"
1468
+ },
1469
+ "content": {
1470
+ "anyOf": [
1471
+ {
1472
+ "type": "string"
1473
+ },
1474
+ {
1475
+ "items": {
1476
+ "$ref": "#/components/schemas/ContentsModel-Output"
1477
+ },
1478
+ "type": "array"
1479
+ },
1480
+ {
1481
+ "type": "null"
1482
+ }
1483
+ ],
1484
+ "title": "Content"
1485
+ }
1486
+ },
1487
+ "type": "object",
1488
+ "required": [
1489
+ "name",
1490
+ "path",
1491
+ "type",
1492
+ "writable",
1493
+ "created",
1494
+ "last_modified"
1495
+ ],
1496
+ "title": "ContentsModel",
1497
+ "description": "Jupyter Contents API-shaped model for files and directories."
1498
+ },
1499
+ "ConvertResult": {
1500
+ "properties": {
1501
+ "source_path": {
1502
+ "type": "string",
1503
+ "title": "Source Path"
1504
+ },
1505
+ "output_path": {
1506
+ "type": "string",
1507
+ "title": "Output Path"
1508
+ },
1509
+ "removed_path": {
1510
+ "type": "string",
1511
+ "title": "Removed Path"
1512
+ },
1513
+ "source_format": {
1514
+ "type": "string",
1515
+ "title": "Source Format"
1516
+ },
1517
+ "target_format": {
1518
+ "type": "string",
1519
+ "title": "Target Format"
1520
+ },
1521
+ "report": {
1522
+ "anyOf": [
1523
+ {
1524
+ "$ref": "#/components/schemas/SingleExportReport"
1525
+ },
1526
+ {
1527
+ "$ref": "#/components/schemas/ToNativeResult"
1528
+ }
1529
+ ],
1530
+ "title": "Report"
1531
+ },
1532
+ "dry_run": {
1533
+ "type": "boolean",
1534
+ "title": "Dry Run"
1535
+ },
1536
+ "content": {
1537
+ "anyOf": [
1538
+ {
1539
+ "type": "string"
1540
+ },
1541
+ {
1542
+ "type": "null"
1543
+ }
1544
+ ],
1545
+ "title": "Content"
1546
+ }
1547
+ },
1548
+ "type": "object",
1549
+ "required": [
1550
+ "source_path",
1551
+ "output_path",
1552
+ "removed_path",
1553
+ "source_format",
1554
+ "target_format",
1555
+ "report",
1556
+ "dry_run"
1557
+ ],
1558
+ "title": "ConvertResult",
1559
+ "description": "Result of a convert operation (export + remove original)."
1560
+ },
1561
+ "CreateRequest": {
1562
+ "properties": {
1563
+ "type": {
1564
+ "type": "string",
1565
+ "enum": [
1566
+ "file",
1567
+ "directory"
1568
+ ],
1569
+ "title": "Type",
1570
+ "default": "file"
1571
+ },
1572
+ "ext": {
1573
+ "anyOf": [
1574
+ {
1575
+ "type": "string"
1576
+ },
1577
+ {
1578
+ "type": "null"
1579
+ }
1580
+ ],
1581
+ "title": "Ext"
1582
+ }
1583
+ },
1584
+ "type": "object",
1585
+ "title": "CreateRequest",
1586
+ "description": "Body for POST /api/contents/{path} \u2014 create untitled file or directory under {path}."
1587
+ },
1588
+ "DiffSeverity": {
1589
+ "type": "string",
1590
+ "enum": [
1591
+ "error",
1592
+ "benign"
1593
+ ],
1594
+ "title": "DiffSeverity"
1595
+ },
1596
+ "DiffType": {
1597
+ "type": "string",
1598
+ "enum": [
1599
+ "value_mismatch",
1600
+ "missing_in_roundtrip",
1601
+ "missing_in_original",
1602
+ "connection_mismatch",
1603
+ "position_mismatch",
1604
+ "label_mismatch",
1605
+ "annotation_mismatch",
1606
+ "comment_mismatch",
1607
+ "step_missing"
1608
+ ],
1609
+ "title": "DiffType"
1610
+ },
1611
+ "ExportResult": {
1612
+ "properties": {
1613
+ "source_path": {
1614
+ "type": "string",
1615
+ "title": "Source Path"
1616
+ },
1617
+ "output_path": {
1618
+ "type": "string",
1619
+ "title": "Output Path"
1620
+ },
1621
+ "source_format": {
1622
+ "type": "string",
1623
+ "title": "Source Format"
1624
+ },
1625
+ "target_format": {
1626
+ "type": "string",
1627
+ "title": "Target Format"
1628
+ },
1629
+ "report": {
1630
+ "anyOf": [
1631
+ {
1632
+ "$ref": "#/components/schemas/SingleExportReport"
1633
+ },
1634
+ {
1635
+ "$ref": "#/components/schemas/ToNativeResult"
1636
+ }
1637
+ ],
1638
+ "title": "Report"
1639
+ },
1640
+ "dry_run": {
1641
+ "type": "boolean",
1642
+ "title": "Dry Run"
1643
+ },
1644
+ "content": {
1645
+ "anyOf": [
1646
+ {
1647
+ "type": "string"
1648
+ },
1649
+ {
1650
+ "type": "null"
1651
+ }
1652
+ ],
1653
+ "title": "Content"
1654
+ }
1655
+ },
1656
+ "type": "object",
1657
+ "required": [
1658
+ "source_path",
1659
+ "output_path",
1660
+ "source_format",
1661
+ "target_format",
1662
+ "report",
1663
+ "dry_run"
1664
+ ],
1665
+ "title": "ExportResult",
1666
+ "description": "Result of an export (format conversion) operation."
1667
+ },
1668
+ "FailureClass": {
1669
+ "type": "string",
1670
+ "enum": [
1671
+ "tool_not_found",
1672
+ "native_validation",
1673
+ "conversion_error",
1674
+ "type_not_handled",
1675
+ "format2_validation",
1676
+ "reimport_error",
1677
+ "roundtrip_mismatch",
1678
+ "subworkflow",
1679
+ "parse_error",
1680
+ "other"
1681
+ ],
1682
+ "title": "FailureClass"
1683
+ },
1684
+ "HTTPValidationError": {
1685
+ "properties": {
1686
+ "detail": {
1687
+ "items": {
1688
+ "$ref": "#/components/schemas/ValidationError"
1689
+ },
1690
+ "type": "array",
1691
+ "title": "Detail"
1692
+ }
1693
+ },
1694
+ "type": "object",
1695
+ "title": "HTTPValidationError"
1696
+ },
1697
+ "RenameRequest": {
1698
+ "properties": {
1699
+ "path": {
1700
+ "type": "string",
1701
+ "title": "Path"
1702
+ }
1703
+ },
1704
+ "type": "object",
1705
+ "required": [
1706
+ "path"
1707
+ ],
1708
+ "title": "RenameRequest",
1709
+ "description": "Body for PATCH /api/contents/{path} \u2014 rename/move."
1710
+ },
1711
+ "ResolvedOutputType": {
1712
+ "properties": {
1713
+ "name": {
1714
+ "type": "string",
1715
+ "title": "Name"
1716
+ },
1717
+ "collection_type": {
1718
+ "anyOf": [
1719
+ {
1720
+ "type": "string"
1721
+ },
1722
+ {
1723
+ "type": "null"
1724
+ }
1725
+ ],
1726
+ "title": "Collection Type"
1727
+ }
1728
+ },
1729
+ "type": "object",
1730
+ "required": [
1731
+ "name"
1732
+ ],
1733
+ "title": "ResolvedOutputType",
1734
+ "description": "Resolved collection type for a step output."
1735
+ },
1736
+ "RoundTripResult": {
1737
+ "properties": {
1738
+ "workflow_name": {
1739
+ "type": "string",
1740
+ "title": "Workflow Name"
1741
+ },
1742
+ "direction": {
1743
+ "type": "string",
1744
+ "title": "Direction"
1745
+ },
1746
+ "step_results": {
1747
+ "items": {
1748
+ "$ref": "#/components/schemas/StepResult"
1749
+ },
1750
+ "type": "array",
1751
+ "title": "Step Results"
1752
+ }
1753
+ },
1754
+ "type": "object",
1755
+ "required": [
1756
+ "workflow_name",
1757
+ "direction"
1758
+ ],
1759
+ "title": "RoundTripResult"
1760
+ },
1761
+ "RoundTripValidationResult": {
1762
+ "properties": {
1763
+ "workflow_path": {
1764
+ "type": "string",
1765
+ "title": "Workflow Path"
1766
+ },
1767
+ "category": {
1768
+ "type": "string",
1769
+ "title": "Category",
1770
+ "default": ""
1771
+ },
1772
+ "conversion_result": {
1773
+ "anyOf": [
1774
+ {
1775
+ "$ref": "#/components/schemas/RoundTripResult"
1776
+ },
1777
+ {
1778
+ "type": "null"
1779
+ }
1780
+ ]
1781
+ },
1782
+ "diffs": {
1783
+ "anyOf": [
1784
+ {
1785
+ "items": {
1786
+ "$ref": "#/components/schemas/StepDiff"
1787
+ },
1788
+ "type": "array"
1789
+ },
1790
+ {
1791
+ "type": "null"
1792
+ }
1793
+ ],
1794
+ "title": "Diffs"
1795
+ },
1796
+ "step_id_mapping": {
1797
+ "anyOf": [
1798
+ {
1799
+ "$ref": "#/components/schemas/StepIdMappingResult"
1800
+ },
1801
+ {
1802
+ "type": "null"
1803
+ }
1804
+ ]
1805
+ },
1806
+ "stale_clean_results": {
1807
+ "anyOf": [
1808
+ {
1809
+ "items": {
1810
+ "$ref": "#/components/schemas/CleanStepResult"
1811
+ },
1812
+ "type": "array"
1813
+ },
1814
+ {
1815
+ "type": "null"
1816
+ }
1817
+ ],
1818
+ "title": "Stale Clean Results"
1819
+ },
1820
+ "error": {
1821
+ "anyOf": [
1822
+ {
1823
+ "type": "string"
1824
+ },
1825
+ {
1826
+ "type": "null"
1827
+ }
1828
+ ],
1829
+ "title": "Error"
1830
+ },
1831
+ "skipped_reason": {
1832
+ "anyOf": [
1833
+ {
1834
+ "$ref": "#/components/schemas/SkipWorkflowReason"
1835
+ },
1836
+ {
1837
+ "type": "null"
1838
+ }
1839
+ ]
1840
+ },
1841
+ "structure_errors": {
1842
+ "items": {
1843
+ "type": "string"
1844
+ },
1845
+ "type": "array",
1846
+ "title": "Structure Errors"
1847
+ },
1848
+ "encoding_errors": {
1849
+ "items": {
1850
+ "type": "string"
1851
+ },
1852
+ "type": "array",
1853
+ "title": "Encoding Errors"
1854
+ },
1855
+ "error_diffs": {
1856
+ "items": {
1857
+ "$ref": "#/components/schemas/StepDiff"
1858
+ },
1859
+ "type": "array",
1860
+ "title": "Error Diffs",
1861
+ "readOnly": true
1862
+ },
1863
+ "benign_diffs": {
1864
+ "items": {
1865
+ "$ref": "#/components/schemas/StepDiff"
1866
+ },
1867
+ "type": "array",
1868
+ "title": "Benign Diffs",
1869
+ "readOnly": true
1870
+ },
1871
+ "ok": {
1872
+ "type": "boolean",
1873
+ "title": "Ok",
1874
+ "readOnly": true
1875
+ },
1876
+ "status": {
1877
+ "type": "string",
1878
+ "title": "Status",
1879
+ "readOnly": true
1880
+ },
1881
+ "conversion_failure_lines": {
1882
+ "items": {
1883
+ "type": "string"
1884
+ },
1885
+ "type": "array",
1886
+ "title": "Conversion Failure Lines",
1887
+ "description": "Pre-formatted per-step conversion failures.\n\nKept identical to the strings ``_format_conversion_failures`` emits so\ntemplates stay inside the Jinja2/Nunjucks shared subset (no method calls).",
1888
+ "readOnly": true
1889
+ },
1890
+ "summary_line": {
1891
+ "type": "string",
1892
+ "title": "Summary Line",
1893
+ "readOnly": true
1894
+ }
1895
+ },
1896
+ "type": "object",
1897
+ "required": [
1898
+ "workflow_path",
1899
+ "error_diffs",
1900
+ "benign_diffs",
1901
+ "ok",
1902
+ "status",
1903
+ "conversion_failure_lines",
1904
+ "summary_line"
1905
+ ],
1906
+ "title": "RoundTripValidationResult",
1907
+ "description": "Result of validating a workflow's native\u2192format2\u2192native round-trip."
1908
+ },
1909
+ "SingleCleanReport": {
1910
+ "properties": {
1911
+ "workflow": {
1912
+ "type": "string",
1913
+ "title": "Workflow"
1914
+ },
1915
+ "results": {
1916
+ "items": {
1917
+ "$ref": "#/components/schemas/CleanStepResult"
1918
+ },
1919
+ "type": "array",
1920
+ "title": "Results"
1921
+ },
1922
+ "before_content": {
1923
+ "anyOf": [
1924
+ {
1925
+ "type": "string"
1926
+ },
1927
+ {
1928
+ "type": "null"
1929
+ }
1930
+ ],
1931
+ "title": "Before Content"
1932
+ },
1933
+ "after_content": {
1934
+ "anyOf": [
1935
+ {
1936
+ "type": "string"
1937
+ },
1938
+ {
1939
+ "type": "null"
1940
+ }
1941
+ ],
1942
+ "title": "After Content"
1943
+ },
1944
+ "total_removed": {
1945
+ "type": "integer",
1946
+ "title": "Total Removed",
1947
+ "readOnly": true
1948
+ },
1949
+ "steps_with_removals": {
1950
+ "type": "integer",
1951
+ "title": "Steps With Removals",
1952
+ "readOnly": true
1953
+ }
1954
+ },
1955
+ "type": "object",
1956
+ "required": [
1957
+ "workflow",
1958
+ "results",
1959
+ "total_removed",
1960
+ "steps_with_removals"
1961
+ ],
1962
+ "title": "SingleCleanReport",
1963
+ "description": "JSON shape for single-file cleaning."
1964
+ },
1965
+ "SingleExportReport": {
1966
+ "properties": {
1967
+ "workflow": {
1968
+ "type": "string",
1969
+ "title": "Workflow"
1970
+ },
1971
+ "ok": {
1972
+ "type": "boolean",
1973
+ "title": "Ok",
1974
+ "default": false
1975
+ },
1976
+ "steps_converted": {
1977
+ "type": "integer",
1978
+ "title": "Steps Converted",
1979
+ "default": 0
1980
+ },
1981
+ "steps_fallback": {
1982
+ "type": "integer",
1983
+ "title": "Steps Fallback",
1984
+ "default": 0
1985
+ },
1986
+ "summary": {
1987
+ "additionalProperties": {
1988
+ "type": "integer"
1989
+ },
1990
+ "type": "object",
1991
+ "title": "Summary",
1992
+ "readOnly": true
1993
+ }
1994
+ },
1995
+ "type": "object",
1996
+ "required": [
1997
+ "workflow",
1998
+ "summary"
1999
+ ],
2000
+ "title": "SingleExportReport",
2001
+ "description": "JSON shape for single-file export."
2002
+ },
2003
+ "SingleLintReport": {
2004
+ "properties": {
2005
+ "workflow": {
2006
+ "type": "string",
2007
+ "title": "Workflow"
2008
+ },
2009
+ "lint_errors": {
2010
+ "type": "integer",
2011
+ "title": "Lint Errors",
2012
+ "default": 0
2013
+ },
2014
+ "lint_warnings": {
2015
+ "type": "integer",
2016
+ "title": "Lint Warnings",
2017
+ "default": 0
2018
+ },
2019
+ "results": {
2020
+ "items": {
2021
+ "$ref": "#/components/schemas/ValidationStepResult"
2022
+ },
2023
+ "type": "array",
2024
+ "title": "Results",
2025
+ "default": []
2026
+ },
2027
+ "structure_errors": {
2028
+ "items": {
2029
+ "type": "string"
2030
+ },
2031
+ "type": "array",
2032
+ "title": "Structure Errors"
2033
+ },
2034
+ "encoding_errors": {
2035
+ "items": {
2036
+ "type": "string"
2037
+ },
2038
+ "type": "array",
2039
+ "title": "Encoding Errors"
2040
+ },
2041
+ "summary": {
2042
+ "additionalProperties": {
2043
+ "type": "integer"
2044
+ },
2045
+ "type": "object",
2046
+ "title": "Summary",
2047
+ "readOnly": true
2048
+ }
2049
+ },
2050
+ "type": "object",
2051
+ "required": [
2052
+ "workflow",
2053
+ "summary"
2054
+ ],
2055
+ "title": "SingleLintReport",
2056
+ "description": "JSON shape for single-file lint."
2057
+ },
2058
+ "SingleRoundTripReport": {
2059
+ "properties": {
2060
+ "workflow": {
2061
+ "type": "string",
2062
+ "title": "Workflow"
2063
+ },
2064
+ "result": {
2065
+ "$ref": "#/components/schemas/RoundTripValidationResult"
2066
+ },
2067
+ "before_content": {
2068
+ "anyOf": [
2069
+ {
2070
+ "type": "string"
2071
+ },
2072
+ {
2073
+ "type": "null"
2074
+ }
2075
+ ],
2076
+ "title": "Before Content"
2077
+ },
2078
+ "after_content": {
2079
+ "anyOf": [
2080
+ {
2081
+ "type": "string"
2082
+ },
2083
+ {
2084
+ "type": "null"
2085
+ }
2086
+ ],
2087
+ "title": "After Content"
2088
+ }
2089
+ },
2090
+ "type": "object",
2091
+ "required": [
2092
+ "workflow",
2093
+ "result"
2094
+ ],
2095
+ "title": "SingleRoundTripReport",
2096
+ "description": "JSON shape for single-file roundtrip validation."
2097
+ },
2098
+ "SingleValidationReport": {
2099
+ "properties": {
2100
+ "workflow": {
2101
+ "type": "string",
2102
+ "title": "Workflow"
2103
+ },
2104
+ "results": {
2105
+ "items": {
2106
+ "$ref": "#/components/schemas/ValidationStepResult"
2107
+ },
2108
+ "type": "array",
2109
+ "title": "Results"
2110
+ },
2111
+ "connection_report": {
2112
+ "anyOf": [
2113
+ {
2114
+ "$ref": "#/components/schemas/ConnectionValidationReport"
2115
+ },
2116
+ {
2117
+ "type": "null"
2118
+ }
2119
+ ]
2120
+ },
2121
+ "skipped_reason": {
2122
+ "anyOf": [
2123
+ {
2124
+ "type": "string"
2125
+ },
2126
+ {
2127
+ "type": "null"
2128
+ }
2129
+ ],
2130
+ "title": "Skipped Reason"
2131
+ },
2132
+ "structure_errors": {
2133
+ "items": {
2134
+ "type": "string"
2135
+ },
2136
+ "type": "array",
2137
+ "title": "Structure Errors"
2138
+ },
2139
+ "encoding_errors": {
2140
+ "items": {
2141
+ "type": "string"
2142
+ },
2143
+ "type": "array",
2144
+ "title": "Encoding Errors"
2145
+ },
2146
+ "clean_report": {
2147
+ "anyOf": [
2148
+ {
2149
+ "$ref": "#/components/schemas/SingleCleanReport"
2150
+ },
2151
+ {
2152
+ "type": "null"
2153
+ }
2154
+ ]
2155
+ },
2156
+ "summary": {
2157
+ "additionalProperties": {
2158
+ "type": "integer"
2159
+ },
2160
+ "type": "object",
2161
+ "title": "Summary",
2162
+ "readOnly": true
2163
+ }
2164
+ },
2165
+ "type": "object",
2166
+ "required": [
2167
+ "workflow",
2168
+ "results",
2169
+ "summary"
2170
+ ],
2171
+ "title": "SingleValidationReport",
2172
+ "description": "JSON shape for single-file validation."
2173
+ },
2174
+ "SkipWorkflowReason": {
2175
+ "type": "string",
2176
+ "enum": [
2177
+ "legacy_encoding"
2178
+ ],
2179
+ "title": "SkipWorkflowReason"
2180
+ },
2181
+ "StepDiff": {
2182
+ "properties": {
2183
+ "step_path": {
2184
+ "type": "string",
2185
+ "title": "Step Path"
2186
+ },
2187
+ "key_path": {
2188
+ "type": "string",
2189
+ "title": "Key Path"
2190
+ },
2191
+ "diff_type": {
2192
+ "$ref": "#/components/schemas/DiffType"
2193
+ },
2194
+ "severity": {
2195
+ "$ref": "#/components/schemas/DiffSeverity"
2196
+ },
2197
+ "description": {
2198
+ "type": "string",
2199
+ "title": "Description"
2200
+ },
2201
+ "original_value": {
2202
+ "anyOf": [
2203
+ {},
2204
+ {
2205
+ "type": "null"
2206
+ }
2207
+ ],
2208
+ "title": "Original Value"
2209
+ },
2210
+ "roundtrip_value": {
2211
+ "anyOf": [
2212
+ {},
2213
+ {
2214
+ "type": "null"
2215
+ }
2216
+ ],
2217
+ "title": "Roundtrip Value"
2218
+ },
2219
+ "benign_artifact": {
2220
+ "anyOf": [
2221
+ {
2222
+ "$ref": "#/components/schemas/BenignArtifact"
2223
+ },
2224
+ {
2225
+ "type": "null"
2226
+ }
2227
+ ]
2228
+ }
2229
+ },
2230
+ "type": "object",
2231
+ "required": [
2232
+ "step_path",
2233
+ "key_path",
2234
+ "diff_type",
2235
+ "severity",
2236
+ "description"
2237
+ ],
2238
+ "title": "StepDiff"
2239
+ },
2240
+ "StepEncodeStatus": {
2241
+ "properties": {
2242
+ "step_id": {
2243
+ "type": "string",
2244
+ "title": "Step Id"
2245
+ },
2246
+ "step_label": {
2247
+ "anyOf": [
2248
+ {
2249
+ "type": "string"
2250
+ },
2251
+ {
2252
+ "type": "null"
2253
+ }
2254
+ ],
2255
+ "title": "Step Label"
2256
+ },
2257
+ "tool_id": {
2258
+ "anyOf": [
2259
+ {
2260
+ "type": "string"
2261
+ },
2262
+ {
2263
+ "type": "null"
2264
+ }
2265
+ ],
2266
+ "title": "Tool Id"
2267
+ },
2268
+ "encoded": {
2269
+ "type": "boolean",
2270
+ "title": "Encoded",
2271
+ "default": false
2272
+ },
2273
+ "error": {
2274
+ "anyOf": [
2275
+ {
2276
+ "type": "string"
2277
+ },
2278
+ {
2279
+ "type": "null"
2280
+ }
2281
+ ],
2282
+ "title": "Error"
2283
+ }
2284
+ },
2285
+ "type": "object",
2286
+ "required": [
2287
+ "step_id"
2288
+ ],
2289
+ "title": "StepEncodeStatus"
2290
+ },
2291
+ "StepIdMappingResult": {
2292
+ "properties": {
2293
+ "mapping": {
2294
+ "additionalProperties": {
2295
+ "anyOf": [
2296
+ {
2297
+ "type": "string"
2298
+ },
2299
+ {
2300
+ "type": "null"
2301
+ }
2302
+ ]
2303
+ },
2304
+ "type": "object",
2305
+ "title": "Mapping"
2306
+ },
2307
+ "match_methods": {
2308
+ "additionalProperties": {
2309
+ "type": "string"
2310
+ },
2311
+ "type": "object",
2312
+ "title": "Match Methods"
2313
+ }
2314
+ },
2315
+ "type": "object",
2316
+ "title": "StepIdMappingResult",
2317
+ "description": "Result of step ID matching between original and roundtripped workflows."
2318
+ },
2319
+ "StepResult": {
2320
+ "properties": {
2321
+ "step_id": {
2322
+ "type": "string",
2323
+ "title": "Step Id"
2324
+ },
2325
+ "tool_id": {
2326
+ "anyOf": [
2327
+ {
2328
+ "type": "string"
2329
+ },
2330
+ {
2331
+ "type": "null"
2332
+ }
2333
+ ],
2334
+ "title": "Tool Id"
2335
+ },
2336
+ "success": {
2337
+ "type": "boolean",
2338
+ "title": "Success"
2339
+ },
2340
+ "failure_class": {
2341
+ "anyOf": [
2342
+ {
2343
+ "$ref": "#/components/schemas/FailureClass"
2344
+ },
2345
+ {
2346
+ "type": "null"
2347
+ }
2348
+ ]
2349
+ },
2350
+ "error": {
2351
+ "anyOf": [
2352
+ {
2353
+ "type": "string"
2354
+ },
2355
+ {
2356
+ "type": "null"
2357
+ }
2358
+ ],
2359
+ "title": "Error"
2360
+ },
2361
+ "diffs": {
2362
+ "items": {
2363
+ "$ref": "#/components/schemas/StepDiff"
2364
+ },
2365
+ "type": "array",
2366
+ "title": "Diffs"
2367
+ },
2368
+ "format2_state": {
2369
+ "anyOf": [
2370
+ {
2371
+ "additionalProperties": true,
2372
+ "type": "object"
2373
+ },
2374
+ {
2375
+ "type": "null"
2376
+ }
2377
+ ],
2378
+ "title": "Format2 State"
2379
+ },
2380
+ "format2_connections": {
2381
+ "anyOf": [
2382
+ {
2383
+ "additionalProperties": true,
2384
+ "type": "object"
2385
+ },
2386
+ {
2387
+ "type": "null"
2388
+ }
2389
+ ],
2390
+ "title": "Format2 Connections"
2391
+ }
2392
+ },
2393
+ "type": "object",
2394
+ "required": [
2395
+ "step_id",
2396
+ "success"
2397
+ ],
2398
+ "title": "StepResult"
2399
+ },
2400
+ "ToNativeResult": {
2401
+ "properties": {
2402
+ "native_dict": {
2403
+ "additionalProperties": true,
2404
+ "type": "object",
2405
+ "title": "Native Dict"
2406
+ },
2407
+ "steps": {
2408
+ "items": {
2409
+ "$ref": "#/components/schemas/StepEncodeStatus"
2410
+ },
2411
+ "type": "array",
2412
+ "title": "Steps"
2413
+ },
2414
+ "all_encoded": {
2415
+ "type": "boolean",
2416
+ "title": "All Encoded",
2417
+ "readOnly": true
2418
+ },
2419
+ "summary": {
2420
+ "type": "string",
2421
+ "title": "Summary",
2422
+ "readOnly": true
2423
+ }
2424
+ },
2425
+ "type": "object",
2426
+ "required": [
2427
+ "native_dict",
2428
+ "all_encoded",
2429
+ "summary"
2430
+ ],
2431
+ "title": "ToNativeResult"
2432
+ },
2433
+ "ValidationError": {
2434
+ "properties": {
2435
+ "loc": {
2436
+ "items": {
2437
+ "anyOf": [
2438
+ {
2439
+ "type": "string"
2440
+ },
2441
+ {
2442
+ "type": "integer"
2443
+ }
2444
+ ]
2445
+ },
2446
+ "type": "array",
2447
+ "title": "Location"
2448
+ },
2449
+ "msg": {
2450
+ "type": "string",
2451
+ "title": "Message"
2452
+ },
2453
+ "type": {
2454
+ "type": "string",
2455
+ "title": "Error Type"
2456
+ },
2457
+ "input": {
2458
+ "title": "Input"
2459
+ },
2460
+ "ctx": {
2461
+ "type": "object",
2462
+ "title": "Context"
2463
+ }
2464
+ },
2465
+ "type": "object",
2466
+ "required": [
2467
+ "loc",
2468
+ "msg",
2469
+ "type"
2470
+ ],
2471
+ "title": "ValidationError"
2472
+ },
2473
+ "ValidationStepResult": {
2474
+ "properties": {
2475
+ "step": {
2476
+ "type": "string",
2477
+ "title": "Step"
2478
+ },
2479
+ "tool_id": {
2480
+ "anyOf": [
2481
+ {
2482
+ "type": "string"
2483
+ },
2484
+ {
2485
+ "type": "null"
2486
+ }
2487
+ ],
2488
+ "title": "Tool Id"
2489
+ },
2490
+ "version": {
2491
+ "anyOf": [
2492
+ {
2493
+ "type": "string"
2494
+ },
2495
+ {
2496
+ "type": "null"
2497
+ }
2498
+ ],
2499
+ "title": "Version"
2500
+ },
2501
+ "status": {
2502
+ "type": "string",
2503
+ "enum": [
2504
+ "ok",
2505
+ "fail",
2506
+ "skip_tool_not_found",
2507
+ "skip_replacement_params"
2508
+ ],
2509
+ "title": "Status"
2510
+ },
2511
+ "errors": {
2512
+ "items": {
2513
+ "type": "string"
2514
+ },
2515
+ "type": "array",
2516
+ "title": "Errors",
2517
+ "default": []
2518
+ }
2519
+ },
2520
+ "type": "object",
2521
+ "required": [
2522
+ "step",
2523
+ "status"
2524
+ ],
2525
+ "title": "ValidationStepResult"
2526
+ },
2527
+ "WorkflowEntry": {
2528
+ "properties": {
2529
+ "relative_path": {
2530
+ "type": "string",
2531
+ "title": "Relative Path"
2532
+ },
2533
+ "format": {
2534
+ "type": "string",
2535
+ "title": "Format"
2536
+ },
2537
+ "category": {
2538
+ "type": "string",
2539
+ "title": "Category"
2540
+ }
2541
+ },
2542
+ "type": "object",
2543
+ "required": [
2544
+ "relative_path",
2545
+ "format",
2546
+ "category"
2547
+ ],
2548
+ "title": "WorkflowEntry",
2549
+ "description": "A discovered workflow file."
2550
+ },
2551
+ "WorkflowIndex": {
2552
+ "properties": {
2553
+ "directory": {
2554
+ "type": "string",
2555
+ "title": "Directory"
2556
+ },
2557
+ "workflows": {
2558
+ "items": {
2559
+ "$ref": "#/components/schemas/WorkflowEntry"
2560
+ },
2561
+ "type": "array",
2562
+ "title": "Workflows"
2563
+ }
2564
+ },
2565
+ "type": "object",
2566
+ "required": [
2567
+ "directory",
2568
+ "workflows"
2569
+ ],
2570
+ "title": "WorkflowIndex",
2571
+ "description": "Index of all workflows in the target directory."
2572
+ }
2573
+ }
2574
+ }
2575
+ }