@usestatemachines/sdk 0.3.0 → 0.5.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 (69) hide show
  1. package/README.md +122 -19
  2. package/agents/SKILL.md +10 -7
  3. package/agents/index.js +6 -6
  4. package/agents/llms.txt +19 -11
  5. package/agents/prompt.md +1 -1
  6. package/esm/extensions/client.d.ts +24 -2
  7. package/esm/extensions/client.js +26 -3
  8. package/esm/extensions/index.d.ts +2 -2
  9. package/esm/extensions/running-environment.d.ts +18 -4
  10. package/esm/extensions/running-environment.js +24 -2
  11. package/esm/extensions/wait.d.ts +3 -1
  12. package/esm/extensions/wait.js +17 -2
  13. package/esm/funcs/environments-get-request-payload.d.ts +11 -0
  14. package/esm/funcs/environments-get-request-payload.js +100 -0
  15. package/esm/funcs/environments-get-request-stats.d.ts +11 -0
  16. package/esm/funcs/environments-get-request-stats.js +103 -0
  17. package/esm/funcs/environments-get-request.d.ts +11 -0
  18. package/esm/funcs/environments-get-request.js +96 -0
  19. package/esm/funcs/environments-list-requests.d.ts +11 -0
  20. package/esm/funcs/environments-list-requests.js +105 -0
  21. package/esm/funcs/environments-resume.d.ts +11 -0
  22. package/esm/funcs/environments-resume.js +93 -0
  23. package/esm/funcs/environments-stop.js +1 -0
  24. package/esm/funcs/environments-suspend.d.ts +11 -0
  25. package/esm/funcs/environments-suspend.js +93 -0
  26. package/esm/lib/config.d.ts +2 -2
  27. package/esm/lib/config.js +2 -2
  28. package/esm/models/environment-app.d.ts +2 -0
  29. package/esm/models/environment-app.js +2 -0
  30. package/esm/models/environment-request-detail.d.ts +40 -0
  31. package/esm/models/environment-request-detail.js +39 -0
  32. package/esm/models/environment-request-stats.d.ts +26 -0
  33. package/esm/models/environment-request-stats.js +31 -0
  34. package/esm/models/environment-request.d.ts +31 -0
  35. package/esm/models/environment-request.js +34 -0
  36. package/esm/models/environment-snapshot.d.ts +3 -2
  37. package/esm/models/environment-snapshot.js +3 -2
  38. package/esm/models/environment.d.ts +4 -0
  39. package/esm/models/environment.js +4 -0
  40. package/esm/models/error-response.d.ts +7 -0
  41. package/esm/models/error-response.js +7 -0
  42. package/esm/models/index.d.ts +4 -0
  43. package/esm/models/index.js +4 -0
  44. package/esm/models/operations/create-environment-definition.d.ts +10 -0
  45. package/esm/models/operations/create-environment-definition.js +3 -0
  46. package/esm/models/operations/get-environment-request-payload.d.ts +23 -0
  47. package/esm/models/operations/get-environment-request-payload.js +19 -0
  48. package/esm/models/operations/get-environment-request-stats.d.ts +70 -0
  49. package/esm/models/operations/get-environment-request-stats.js +55 -0
  50. package/esm/models/operations/get-environment-request.d.ts +25 -0
  51. package/esm/models/operations/get-environment-request.js +21 -0
  52. package/esm/models/operations/index.d.ts +6 -0
  53. package/esm/models/operations/index.js +6 -0
  54. package/esm/models/operations/list-environment-requests.d.ts +75 -0
  55. package/esm/models/operations/list-environment-requests.js +59 -0
  56. package/esm/models/operations/resume-environment.d.ts +25 -0
  57. package/esm/models/operations/resume-environment.js +26 -0
  58. package/esm/models/operations/stop-environment.d.ts +3 -1
  59. package/esm/models/operations/stop-environment.js +8 -2
  60. package/esm/models/operations/suspend-environment.d.ts +25 -0
  61. package/esm/models/operations/suspend-environment.js +26 -0
  62. package/esm/models/release.d.ts +11 -0
  63. package/esm/models/release.js +10 -0
  64. package/esm/models/request-payload-preview.d.ts +31 -0
  65. package/esm/models/request-payload-preview.js +33 -0
  66. package/esm/sdk/environments.d.ts +6 -0
  67. package/esm/sdk/environments.js +24 -0
  68. package/openapi.json +1380 -29
  69. package/package.json +4 -3
package/openapi.json CHANGED
@@ -482,6 +482,11 @@
482
482
  "name": {
483
483
  "type": ["string", "null"]
484
484
  },
485
+ "sourceEnvironmentId": {
486
+ "default": null,
487
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
488
+ "type": ["string", "null"]
489
+ },
485
490
  "sourceEnvironmentSnapshotId": {
486
491
  "default": null,
487
492
  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
@@ -496,6 +501,8 @@
496
501
  "queued",
497
502
  "starting",
498
503
  "running",
504
+ "suspending",
505
+ "suspended",
499
506
  "stopping",
500
507
  "stopped",
501
508
  "failed"
@@ -510,6 +517,10 @@
510
517
  "format": "date-time",
511
518
  "type": ["string", "null"]
512
519
  },
520
+ "suspendedAt": {
521
+ "format": "date-time",
522
+ "type": ["string", "null"]
523
+ },
513
524
  "version": {
514
525
  "type": "integer"
515
526
  },
@@ -530,6 +541,7 @@
530
541
  "createdBy",
531
542
  "createdAt",
532
543
  "startedAt",
544
+ "suspendedAt",
533
545
  "stoppedAt",
534
546
  "expiresAt",
535
547
  "apps"
@@ -589,6 +601,8 @@
589
601
  "pending",
590
602
  "starting",
591
603
  "ready",
604
+ "recovering",
605
+ "suspended",
592
606
  "stopping",
593
607
  "stopped",
594
608
  "failed"
@@ -629,6 +643,187 @@
629
643
  "required": ["defaultMinutes", "maximumMinutes"],
630
644
  "type": "object"
631
645
  },
646
+ "EnvironmentRequest": {
647
+ "properties": {
648
+ "appInstanceId": {
649
+ "type": ["string", "null"]
650
+ },
651
+ "appKey": {
652
+ "type": "string"
653
+ },
654
+ "completedAt": {
655
+ "format": "date-time",
656
+ "type": "string"
657
+ },
658
+ "durationMs": {
659
+ "minimum": 0,
660
+ "type": "integer"
661
+ },
662
+ "environmentId": {
663
+ "type": "string"
664
+ },
665
+ "errorCode": {
666
+ "type": ["string", "null"]
667
+ },
668
+ "id": {
669
+ "format": "uuid",
670
+ "type": "string"
671
+ },
672
+ "method": {
673
+ "type": "string"
674
+ },
675
+ "outcome": {
676
+ "enum": ["replica_response", "gateway_error"],
677
+ "type": "string"
678
+ },
679
+ "path": {
680
+ "type": "string"
681
+ },
682
+ "query": {
683
+ "type": "string"
684
+ },
685
+ "receivedAt": {
686
+ "format": "date-time",
687
+ "type": "string"
688
+ },
689
+ "requestBytes": {
690
+ "type": ["integer", "null"]
691
+ },
692
+ "responseBytes": {
693
+ "type": ["integer", "null"]
694
+ },
695
+ "status": {
696
+ "type": "integer"
697
+ }
698
+ },
699
+ "required": [
700
+ "id",
701
+ "environmentId",
702
+ "appKey",
703
+ "appInstanceId",
704
+ "method",
705
+ "path",
706
+ "query",
707
+ "receivedAt",
708
+ "completedAt",
709
+ "durationMs",
710
+ "status",
711
+ "outcome",
712
+ "errorCode",
713
+ "requestBytes",
714
+ "responseBytes"
715
+ ],
716
+ "type": "object"
717
+ },
718
+ "EnvironmentRequestDetail": {
719
+ "allOf": [
720
+ {
721
+ "$ref": "#/components/schemas/EnvironmentRequest"
722
+ },
723
+ {
724
+ "properties": {
725
+ "requestBody": {
726
+ "$ref": "#/components/schemas/RequestPayloadPreview"
727
+ },
728
+ "requestHeaders": {
729
+ "additionalProperties": {
730
+ "type": "string"
731
+ },
732
+ "type": "object"
733
+ },
734
+ "responseBody": {
735
+ "$ref": "#/components/schemas/RequestPayloadPreview"
736
+ },
737
+ "responseHeaders": {
738
+ "additionalProperties": {
739
+ "type": "string"
740
+ },
741
+ "type": "object"
742
+ }
743
+ },
744
+ "required": [
745
+ "requestHeaders",
746
+ "responseHeaders",
747
+ "requestBody",
748
+ "responseBody"
749
+ ],
750
+ "type": "object"
751
+ }
752
+ ]
753
+ },
754
+ "EnvironmentRequestStats": {
755
+ "properties": {
756
+ "buckets": {
757
+ "items": {
758
+ "properties": {
759
+ "clientError": {
760
+ "minimum": 0,
761
+ "type": "integer"
762
+ },
763
+ "from": {
764
+ "format": "date-time",
765
+ "type": "string"
766
+ },
767
+ "serverError": {
768
+ "minimum": 0,
769
+ "type": "integer"
770
+ },
771
+ "success": {
772
+ "minimum": 0,
773
+ "type": "integer"
774
+ }
775
+ },
776
+ "required": ["from", "success", "clientError", "serverError"],
777
+ "type": "object"
778
+ },
779
+ "type": "array"
780
+ },
781
+ "clientErrorCount": {
782
+ "minimum": 0,
783
+ "type": "integer"
784
+ },
785
+ "count": {
786
+ "minimum": 0,
787
+ "type": "integer"
788
+ },
789
+ "from": {
790
+ "format": "date-time",
791
+ "type": "string"
792
+ },
793
+ "p50Ms": {
794
+ "minimum": 0,
795
+ "type": ["number", "null"]
796
+ },
797
+ "p95Ms": {
798
+ "minimum": 0,
799
+ "type": ["number", "null"]
800
+ },
801
+ "serverErrorCount": {
802
+ "minimum": 0,
803
+ "type": "integer"
804
+ },
805
+ "successCount": {
806
+ "minimum": 0,
807
+ "type": "integer"
808
+ },
809
+ "to": {
810
+ "format": "date-time",
811
+ "type": "string"
812
+ }
813
+ },
814
+ "required": [
815
+ "from",
816
+ "to",
817
+ "count",
818
+ "successCount",
819
+ "clientErrorCount",
820
+ "serverErrorCount",
821
+ "p50Ms",
822
+ "p95Ms",
823
+ "buckets"
824
+ ],
825
+ "type": "object"
826
+ },
632
827
  "EnvironmentSnapshot": {
633
828
  "properties": {
634
829
  "appInstanceSnapshots": {
@@ -638,8 +833,8 @@
638
833
  "type": "array"
639
834
  },
640
835
  "consistency": {
641
- "enum": ["per-app-instance"],
642
- "type": "string"
836
+ "enum": ["environment", "app_instance", null],
837
+ "type": ["string", "null"]
643
838
  },
644
839
  "createdAt": {
645
840
  "format": "date-time",
@@ -710,6 +905,7 @@
710
905
  "code": {
711
906
  "enum": [
712
907
  "body-too-large",
908
+ "capture-in-progress",
713
909
  "connection-not-authorized",
714
910
  "connection-unavailable",
715
911
  "environment-limit",
@@ -729,12 +925,18 @@
729
925
  "lifetime-too-long",
730
926
  "not-found",
731
927
  "not-ready",
928
+ "not-snapshottable",
929
+ "not-suspended",
732
930
  "organization-required",
931
+ "release-gone",
932
+ "release-lifecycle",
733
933
  "release-unavailable",
734
934
  "request-capacity-reached",
735
935
  "request-timeout",
736
936
  "service-unavailable",
737
937
  "snapshot-limit",
938
+ "snapshots-unavailable",
939
+ "suspend-in-progress",
738
940
  "unauthorized",
739
941
  "version-conflict",
740
942
  "workspace-archived",
@@ -861,6 +1063,10 @@
861
1063
  "format": "date-time",
862
1064
  "type": ["string", "null"]
863
1065
  },
1066
+ "status": {
1067
+ "enum": ["candidate", "default", "available", "retired", "gone"],
1068
+ "type": "string"
1069
+ },
864
1070
  "version": {
865
1071
  "type": "string"
866
1072
  }
@@ -870,6 +1076,7 @@
870
1076
  "appId",
871
1077
  "version",
872
1078
  "qualification",
1079
+ "status",
873
1080
  "apis",
874
1081
  "actors",
875
1082
  "createdAt",
@@ -893,6 +1100,43 @@
893
1100
  "required": ["id", "name", "summary"],
894
1101
  "type": "object"
895
1102
  },
1103
+ "RequestPayloadPreview": {
1104
+ "properties": {
1105
+ "bytes": {
1106
+ "type": ["integer", "null"]
1107
+ },
1108
+ "contentType": {
1109
+ "type": ["string", "null"]
1110
+ },
1111
+ "coverage": {
1112
+ "enum": ["captured", "redacted", "omitted"],
1113
+ "type": "string"
1114
+ },
1115
+ "encoding": {
1116
+ "enum": ["utf8", "binary"],
1117
+ "type": "string"
1118
+ },
1119
+ "preview": {
1120
+ "type": ["string", "null"]
1121
+ },
1122
+ "previewTruncated": {
1123
+ "type": "boolean"
1124
+ },
1125
+ "reason": {
1126
+ "type": ["string", "null"]
1127
+ }
1128
+ },
1129
+ "required": [
1130
+ "coverage",
1131
+ "reason",
1132
+ "contentType",
1133
+ "bytes",
1134
+ "encoding",
1135
+ "preview",
1136
+ "previewTruncated"
1137
+ ],
1138
+ "type": "object"
1139
+ },
896
1140
  "Workspace": {
897
1141
  "properties": {
898
1142
  "archivedAt": {
@@ -2143,9 +2387,9 @@
2143
2387
  "x-state-credentials": ["user", "api_key"]
2144
2388
  }
2145
2389
  },
2146
- "/v1/environments/{environmentId}/stop": {
2147
- "post": {
2148
- "operationId": "stopEnvironment",
2390
+ "/v1/environments/{environmentId}/requests": {
2391
+ "get": {
2392
+ "operationId": "listEnvironmentRequests",
2149
2393
  "parameters": [
2150
2394
  {
2151
2395
  "in": "path",
@@ -2155,6 +2399,110 @@
2155
2399
  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
2156
2400
  "type": "string"
2157
2401
  }
2402
+ },
2403
+ {
2404
+ "in": "query",
2405
+ "name": "limit",
2406
+ "required": false,
2407
+ "schema": {
2408
+ "default": 50,
2409
+ "maximum": 100,
2410
+ "minimum": 1,
2411
+ "type": "integer"
2412
+ }
2413
+ },
2414
+ {
2415
+ "in": "query",
2416
+ "name": "cursor",
2417
+ "required": false,
2418
+ "schema": {
2419
+ "maxLength": 2048,
2420
+ "type": "string"
2421
+ }
2422
+ },
2423
+ {
2424
+ "in": "query",
2425
+ "name": "appKey",
2426
+ "required": false,
2427
+ "schema": {
2428
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
2429
+ "type": "string"
2430
+ }
2431
+ },
2432
+ {
2433
+ "in": "query",
2434
+ "name": "status",
2435
+ "required": false,
2436
+ "schema": {
2437
+ "maximum": 599,
2438
+ "minimum": 100,
2439
+ "type": "integer"
2440
+ }
2441
+ },
2442
+ {
2443
+ "in": "query",
2444
+ "name": "statusClass",
2445
+ "required": false,
2446
+ "schema": {
2447
+ "enum": ["2xx", "3xx", "4xx", "5xx"],
2448
+ "type": "string"
2449
+ }
2450
+ },
2451
+ {
2452
+ "in": "query",
2453
+ "name": "method",
2454
+ "required": false,
2455
+ "schema": {
2456
+ "enum": [
2457
+ "GET",
2458
+ "HEAD",
2459
+ "POST",
2460
+ "PUT",
2461
+ "PATCH",
2462
+ "DELETE",
2463
+ "OPTIONS",
2464
+ "CONNECT",
2465
+ "TRACE"
2466
+ ],
2467
+ "type": "string"
2468
+ }
2469
+ },
2470
+ {
2471
+ "in": "query",
2472
+ "name": "search",
2473
+ "required": false,
2474
+ "schema": {
2475
+ "maxLength": 200,
2476
+ "pattern": "^[^\\0]*$",
2477
+ "type": "string"
2478
+ }
2479
+ },
2480
+ {
2481
+ "in": "query",
2482
+ "name": "writesOnly",
2483
+ "required": false,
2484
+ "schema": {
2485
+ "enum": ["true", "false"],
2486
+ "type": "string"
2487
+ }
2488
+ },
2489
+ {
2490
+ "in": "query",
2491
+ "name": "from",
2492
+ "required": false,
2493
+ "schema": {
2494
+ "format": "date-time",
2495
+ "type": "string"
2496
+ }
2497
+ },
2498
+ {
2499
+ "in": "query",
2500
+ "name": "to",
2501
+ "required": false,
2502
+ "schema": {
2503
+ "format": "date-time",
2504
+ "type": "string"
2505
+ }
2158
2506
  }
2159
2507
  ],
2160
2508
  "responses": {
@@ -2164,15 +2512,21 @@
2164
2512
  "schema": {
2165
2513
  "properties": {
2166
2514
  "data": {
2167
- "$ref": "#/components/schemas/Environment"
2515
+ "items": {
2516
+ "$ref": "#/components/schemas/EnvironmentRequest"
2517
+ },
2518
+ "type": "array"
2519
+ },
2520
+ "nextCursor": {
2521
+ "type": ["string", "null"]
2168
2522
  }
2169
2523
  },
2170
- "required": ["data"],
2524
+ "required": ["data", "nextCursor"],
2171
2525
  "type": "object"
2172
2526
  }
2173
2527
  }
2174
2528
  },
2175
- "description": "Environment stopped or stopping"
2529
+ "description": "Best-effort recorded replica requests, newest first"
2176
2530
  },
2177
2531
  "400": {
2178
2532
  "content": {
@@ -2283,35 +2637,1014 @@
2283
2637
  "x-state-credentials": ["user", "api_key"]
2284
2638
  }
2285
2639
  },
2286
- "/v1/snapshots/{snapshotId}": {
2287
- "delete": {
2288
- "operationId": "deleteSnapshot",
2640
+ "/v1/environments/{environmentId}/requests/stats": {
2641
+ "get": {
2642
+ "operationId": "getEnvironmentRequestStats",
2289
2643
  "parameters": [
2290
2644
  {
2291
2645
  "in": "path",
2292
- "name": "snapshotId",
2646
+ "name": "environmentId",
2293
2647
  "required": true,
2294
2648
  "schema": {
2295
2649
  "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
2296
2650
  "type": "string"
2297
2651
  }
2298
- }
2299
- ],
2300
- "responses": {
2301
- "200": {
2302
- "content": {
2303
- "application/json": {
2304
- "schema": {
2305
- "properties": {
2306
- "data": {
2307
- "$ref": "#/components/schemas/EnvironmentSnapshot"
2308
- }
2309
- },
2310
- "required": ["data"],
2311
- "type": "object"
2312
- }
2313
- }
2314
- },
2652
+ },
2653
+ {
2654
+ "in": "query",
2655
+ "name": "appKey",
2656
+ "required": false,
2657
+ "schema": {
2658
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
2659
+ "type": "string"
2660
+ }
2661
+ },
2662
+ {
2663
+ "in": "query",
2664
+ "name": "status",
2665
+ "required": false,
2666
+ "schema": {
2667
+ "maximum": 599,
2668
+ "minimum": 100,
2669
+ "type": "integer"
2670
+ }
2671
+ },
2672
+ {
2673
+ "in": "query",
2674
+ "name": "statusClass",
2675
+ "required": false,
2676
+ "schema": {
2677
+ "enum": ["2xx", "3xx", "4xx", "5xx"],
2678
+ "type": "string"
2679
+ }
2680
+ },
2681
+ {
2682
+ "in": "query",
2683
+ "name": "method",
2684
+ "required": false,
2685
+ "schema": {
2686
+ "enum": [
2687
+ "GET",
2688
+ "HEAD",
2689
+ "POST",
2690
+ "PUT",
2691
+ "PATCH",
2692
+ "DELETE",
2693
+ "OPTIONS",
2694
+ "CONNECT",
2695
+ "TRACE"
2696
+ ],
2697
+ "type": "string"
2698
+ }
2699
+ },
2700
+ {
2701
+ "in": "query",
2702
+ "name": "search",
2703
+ "required": false,
2704
+ "schema": {
2705
+ "maxLength": 200,
2706
+ "pattern": "^[^\\0]*$",
2707
+ "type": "string"
2708
+ }
2709
+ },
2710
+ {
2711
+ "in": "query",
2712
+ "name": "writesOnly",
2713
+ "required": false,
2714
+ "schema": {
2715
+ "enum": ["true", "false"],
2716
+ "type": "string"
2717
+ }
2718
+ },
2719
+ {
2720
+ "in": "query",
2721
+ "name": "from",
2722
+ "required": true,
2723
+ "schema": {
2724
+ "format": "date-time",
2725
+ "type": "string"
2726
+ }
2727
+ },
2728
+ {
2729
+ "in": "query",
2730
+ "name": "to",
2731
+ "required": true,
2732
+ "schema": {
2733
+ "format": "date-time",
2734
+ "type": "string"
2735
+ }
2736
+ }
2737
+ ],
2738
+ "responses": {
2739
+ "200": {
2740
+ "content": {
2741
+ "application/json": {
2742
+ "schema": {
2743
+ "properties": {
2744
+ "data": {
2745
+ "$ref": "#/components/schemas/EnvironmentRequestStats"
2746
+ }
2747
+ },
2748
+ "required": ["data"],
2749
+ "type": "object"
2750
+ }
2751
+ }
2752
+ },
2753
+ "description": "Recorded request statistics across the selected time window"
2754
+ },
2755
+ "400": {
2756
+ "content": {
2757
+ "application/json": {
2758
+ "schema": {
2759
+ "$ref": "#/components/schemas/ErrorResponse"
2760
+ }
2761
+ }
2762
+ },
2763
+ "description": "Invalid request"
2764
+ },
2765
+ "401": {
2766
+ "content": {
2767
+ "application/json": {
2768
+ "schema": {
2769
+ "$ref": "#/components/schemas/ErrorResponse"
2770
+ }
2771
+ }
2772
+ },
2773
+ "description": "Authentication required"
2774
+ },
2775
+ "403": {
2776
+ "content": {
2777
+ "application/json": {
2778
+ "schema": {
2779
+ "$ref": "#/components/schemas/ErrorResponse"
2780
+ }
2781
+ }
2782
+ },
2783
+ "description": "Permission denied"
2784
+ },
2785
+ "404": {
2786
+ "content": {
2787
+ "application/json": {
2788
+ "schema": {
2789
+ "$ref": "#/components/schemas/ErrorResponse"
2790
+ }
2791
+ }
2792
+ },
2793
+ "description": "Resource not found"
2794
+ },
2795
+ "409": {
2796
+ "content": {
2797
+ "application/json": {
2798
+ "schema": {
2799
+ "$ref": "#/components/schemas/ErrorResponse"
2800
+ }
2801
+ }
2802
+ },
2803
+ "description": "Conflicting request or version"
2804
+ },
2805
+ "413": {
2806
+ "content": {
2807
+ "application/json": {
2808
+ "schema": {
2809
+ "$ref": "#/components/schemas/ErrorResponse"
2810
+ }
2811
+ }
2812
+ },
2813
+ "description": "Request body too large"
2814
+ },
2815
+ "422": {
2816
+ "content": {
2817
+ "application/json": {
2818
+ "schema": {
2819
+ "$ref": "#/components/schemas/ErrorResponse"
2820
+ }
2821
+ }
2822
+ },
2823
+ "description": "Unsupported configuration"
2824
+ },
2825
+ "429": {
2826
+ "content": {
2827
+ "application/json": {
2828
+ "schema": {
2829
+ "$ref": "#/components/schemas/ErrorResponse"
2830
+ }
2831
+ }
2832
+ },
2833
+ "description": "Admission limit reached"
2834
+ },
2835
+ "500": {
2836
+ "content": {
2837
+ "application/json": {
2838
+ "schema": {
2839
+ "$ref": "#/components/schemas/ErrorResponse"
2840
+ }
2841
+ }
2842
+ },
2843
+ "description": "Unexpected failure"
2844
+ },
2845
+ "503": {
2846
+ "content": {
2847
+ "application/json": {
2848
+ "schema": {
2849
+ "$ref": "#/components/schemas/ErrorResponse"
2850
+ }
2851
+ }
2852
+ },
2853
+ "description": "Dependency unavailable"
2854
+ }
2855
+ },
2856
+ "security": [
2857
+ {
2858
+ "bearerAuth": []
2859
+ }
2860
+ ],
2861
+ "x-state-credentials": ["user", "api_key"]
2862
+ }
2863
+ },
2864
+ "/v1/environments/{environmentId}/requests/{requestId}": {
2865
+ "get": {
2866
+ "operationId": "getEnvironmentRequest",
2867
+ "parameters": [
2868
+ {
2869
+ "in": "path",
2870
+ "name": "environmentId",
2871
+ "required": true,
2872
+ "schema": {
2873
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
2874
+ "type": "string"
2875
+ }
2876
+ },
2877
+ {
2878
+ "in": "path",
2879
+ "name": "requestId",
2880
+ "required": true,
2881
+ "schema": {
2882
+ "format": "uuid",
2883
+ "type": "string"
2884
+ }
2885
+ }
2886
+ ],
2887
+ "responses": {
2888
+ "200": {
2889
+ "content": {
2890
+ "application/json": {
2891
+ "schema": {
2892
+ "properties": {
2893
+ "data": {
2894
+ "$ref": "#/components/schemas/EnvironmentRequestDetail"
2895
+ }
2896
+ },
2897
+ "required": ["data"],
2898
+ "type": "object"
2899
+ }
2900
+ }
2901
+ },
2902
+ "description": "Recorded request with bounded payload previews"
2903
+ },
2904
+ "400": {
2905
+ "content": {
2906
+ "application/json": {
2907
+ "schema": {
2908
+ "$ref": "#/components/schemas/ErrorResponse"
2909
+ }
2910
+ }
2911
+ },
2912
+ "description": "Invalid request"
2913
+ },
2914
+ "401": {
2915
+ "content": {
2916
+ "application/json": {
2917
+ "schema": {
2918
+ "$ref": "#/components/schemas/ErrorResponse"
2919
+ }
2920
+ }
2921
+ },
2922
+ "description": "Authentication required"
2923
+ },
2924
+ "403": {
2925
+ "content": {
2926
+ "application/json": {
2927
+ "schema": {
2928
+ "$ref": "#/components/schemas/ErrorResponse"
2929
+ }
2930
+ }
2931
+ },
2932
+ "description": "Permission denied"
2933
+ },
2934
+ "404": {
2935
+ "content": {
2936
+ "application/json": {
2937
+ "schema": {
2938
+ "$ref": "#/components/schemas/ErrorResponse"
2939
+ }
2940
+ }
2941
+ },
2942
+ "description": "Resource not found"
2943
+ },
2944
+ "409": {
2945
+ "content": {
2946
+ "application/json": {
2947
+ "schema": {
2948
+ "$ref": "#/components/schemas/ErrorResponse"
2949
+ }
2950
+ }
2951
+ },
2952
+ "description": "Conflicting request or version"
2953
+ },
2954
+ "413": {
2955
+ "content": {
2956
+ "application/json": {
2957
+ "schema": {
2958
+ "$ref": "#/components/schemas/ErrorResponse"
2959
+ }
2960
+ }
2961
+ },
2962
+ "description": "Request body too large"
2963
+ },
2964
+ "422": {
2965
+ "content": {
2966
+ "application/json": {
2967
+ "schema": {
2968
+ "$ref": "#/components/schemas/ErrorResponse"
2969
+ }
2970
+ }
2971
+ },
2972
+ "description": "Unsupported configuration"
2973
+ },
2974
+ "429": {
2975
+ "content": {
2976
+ "application/json": {
2977
+ "schema": {
2978
+ "$ref": "#/components/schemas/ErrorResponse"
2979
+ }
2980
+ }
2981
+ },
2982
+ "description": "Admission limit reached"
2983
+ },
2984
+ "500": {
2985
+ "content": {
2986
+ "application/json": {
2987
+ "schema": {
2988
+ "$ref": "#/components/schemas/ErrorResponse"
2989
+ }
2990
+ }
2991
+ },
2992
+ "description": "Unexpected failure"
2993
+ },
2994
+ "503": {
2995
+ "content": {
2996
+ "application/json": {
2997
+ "schema": {
2998
+ "$ref": "#/components/schemas/ErrorResponse"
2999
+ }
3000
+ }
3001
+ },
3002
+ "description": "Dependency unavailable"
3003
+ }
3004
+ },
3005
+ "security": [
3006
+ {
3007
+ "bearerAuth": []
3008
+ }
3009
+ ],
3010
+ "x-state-credentials": ["user", "api_key"]
3011
+ }
3012
+ },
3013
+ "/v1/environments/{environmentId}/requests/{requestId}/payload/{direction}": {
3014
+ "get": {
3015
+ "operationId": "getEnvironmentRequestPayload",
3016
+ "parameters": [
3017
+ {
3018
+ "in": "path",
3019
+ "name": "environmentId",
3020
+ "required": true,
3021
+ "schema": {
3022
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
3023
+ "type": "string"
3024
+ }
3025
+ },
3026
+ {
3027
+ "in": "path",
3028
+ "name": "requestId",
3029
+ "required": true,
3030
+ "schema": {
3031
+ "format": "uuid",
3032
+ "type": "string"
3033
+ }
3034
+ },
3035
+ {
3036
+ "in": "path",
3037
+ "name": "direction",
3038
+ "required": true,
3039
+ "schema": {
3040
+ "enum": ["request", "response"],
3041
+ "type": "string"
3042
+ }
3043
+ }
3044
+ ],
3045
+ "responses": {
3046
+ "200": {
3047
+ "content": {
3048
+ "application/octet-stream": {
3049
+ "schema": {
3050
+ "format": "binary",
3051
+ "type": "string"
3052
+ }
3053
+ }
3054
+ },
3055
+ "description": "Recorded payload as a safe attachment"
3056
+ },
3057
+ "400": {
3058
+ "content": {
3059
+ "application/json": {
3060
+ "schema": {
3061
+ "$ref": "#/components/schemas/ErrorResponse"
3062
+ }
3063
+ }
3064
+ },
3065
+ "description": "Invalid request"
3066
+ },
3067
+ "401": {
3068
+ "content": {
3069
+ "application/json": {
3070
+ "schema": {
3071
+ "$ref": "#/components/schemas/ErrorResponse"
3072
+ }
3073
+ }
3074
+ },
3075
+ "description": "Authentication required"
3076
+ },
3077
+ "403": {
3078
+ "content": {
3079
+ "application/json": {
3080
+ "schema": {
3081
+ "$ref": "#/components/schemas/ErrorResponse"
3082
+ }
3083
+ }
3084
+ },
3085
+ "description": "Permission denied"
3086
+ },
3087
+ "404": {
3088
+ "content": {
3089
+ "application/json": {
3090
+ "schema": {
3091
+ "$ref": "#/components/schemas/ErrorResponse"
3092
+ }
3093
+ }
3094
+ },
3095
+ "description": "Resource not found"
3096
+ },
3097
+ "409": {
3098
+ "content": {
3099
+ "application/json": {
3100
+ "schema": {
3101
+ "$ref": "#/components/schemas/ErrorResponse"
3102
+ }
3103
+ }
3104
+ },
3105
+ "description": "Conflicting request or version"
3106
+ },
3107
+ "413": {
3108
+ "content": {
3109
+ "application/json": {
3110
+ "schema": {
3111
+ "$ref": "#/components/schemas/ErrorResponse"
3112
+ }
3113
+ }
3114
+ },
3115
+ "description": "Request body too large"
3116
+ },
3117
+ "422": {
3118
+ "content": {
3119
+ "application/json": {
3120
+ "schema": {
3121
+ "$ref": "#/components/schemas/ErrorResponse"
3122
+ }
3123
+ }
3124
+ },
3125
+ "description": "Unsupported configuration"
3126
+ },
3127
+ "429": {
3128
+ "content": {
3129
+ "application/json": {
3130
+ "schema": {
3131
+ "$ref": "#/components/schemas/ErrorResponse"
3132
+ }
3133
+ }
3134
+ },
3135
+ "description": "Admission limit reached"
3136
+ },
3137
+ "500": {
3138
+ "content": {
3139
+ "application/json": {
3140
+ "schema": {
3141
+ "$ref": "#/components/schemas/ErrorResponse"
3142
+ }
3143
+ }
3144
+ },
3145
+ "description": "Unexpected failure"
3146
+ },
3147
+ "503": {
3148
+ "content": {
3149
+ "application/json": {
3150
+ "schema": {
3151
+ "$ref": "#/components/schemas/ErrorResponse"
3152
+ }
3153
+ }
3154
+ },
3155
+ "description": "Dependency unavailable"
3156
+ }
3157
+ },
3158
+ "security": [
3159
+ {
3160
+ "bearerAuth": []
3161
+ }
3162
+ ],
3163
+ "x-state-credentials": ["user", "api_key"]
3164
+ }
3165
+ },
3166
+ "/v1/environments/{environmentId}/resume": {
3167
+ "post": {
3168
+ "operationId": "resumeEnvironment",
3169
+ "parameters": [
3170
+ {
3171
+ "in": "path",
3172
+ "name": "environmentId",
3173
+ "required": true,
3174
+ "schema": {
3175
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
3176
+ "type": "string"
3177
+ }
3178
+ },
3179
+ {
3180
+ "in": "header",
3181
+ "name": "idempotency-key",
3182
+ "required": false,
3183
+ "schema": {
3184
+ "maxLength": 128,
3185
+ "minLength": 8,
3186
+ "pattern": "^[A-Za-z0-9._:-]+$",
3187
+ "type": "string"
3188
+ }
3189
+ }
3190
+ ],
3191
+ "responses": {
3192
+ "200": {
3193
+ "content": {
3194
+ "application/json": {
3195
+ "schema": {
3196
+ "properties": {
3197
+ "data": {
3198
+ "$ref": "#/components/schemas/Environment"
3199
+ }
3200
+ },
3201
+ "required": ["data"],
3202
+ "type": "object"
3203
+ }
3204
+ }
3205
+ },
3206
+ "description": "Environment queued to run again on the data it was suspended with"
3207
+ },
3208
+ "400": {
3209
+ "content": {
3210
+ "application/json": {
3211
+ "schema": {
3212
+ "$ref": "#/components/schemas/ErrorResponse"
3213
+ }
3214
+ }
3215
+ },
3216
+ "description": "Invalid request"
3217
+ },
3218
+ "401": {
3219
+ "content": {
3220
+ "application/json": {
3221
+ "schema": {
3222
+ "$ref": "#/components/schemas/ErrorResponse"
3223
+ }
3224
+ }
3225
+ },
3226
+ "description": "Authentication required"
3227
+ },
3228
+ "403": {
3229
+ "content": {
3230
+ "application/json": {
3231
+ "schema": {
3232
+ "$ref": "#/components/schemas/ErrorResponse"
3233
+ }
3234
+ }
3235
+ },
3236
+ "description": "Permission denied"
3237
+ },
3238
+ "404": {
3239
+ "content": {
3240
+ "application/json": {
3241
+ "schema": {
3242
+ "$ref": "#/components/schemas/ErrorResponse"
3243
+ }
3244
+ }
3245
+ },
3246
+ "description": "Resource not found"
3247
+ },
3248
+ "409": {
3249
+ "content": {
3250
+ "application/json": {
3251
+ "schema": {
3252
+ "$ref": "#/components/schemas/ErrorResponse"
3253
+ }
3254
+ }
3255
+ },
3256
+ "description": "Conflicting request or version"
3257
+ },
3258
+ "413": {
3259
+ "content": {
3260
+ "application/json": {
3261
+ "schema": {
3262
+ "$ref": "#/components/schemas/ErrorResponse"
3263
+ }
3264
+ }
3265
+ },
3266
+ "description": "Request body too large"
3267
+ },
3268
+ "422": {
3269
+ "content": {
3270
+ "application/json": {
3271
+ "schema": {
3272
+ "$ref": "#/components/schemas/ErrorResponse"
3273
+ }
3274
+ }
3275
+ },
3276
+ "description": "Unsupported configuration"
3277
+ },
3278
+ "429": {
3279
+ "content": {
3280
+ "application/json": {
3281
+ "schema": {
3282
+ "$ref": "#/components/schemas/ErrorResponse"
3283
+ }
3284
+ }
3285
+ },
3286
+ "description": "Admission limit reached"
3287
+ },
3288
+ "500": {
3289
+ "content": {
3290
+ "application/json": {
3291
+ "schema": {
3292
+ "$ref": "#/components/schemas/ErrorResponse"
3293
+ }
3294
+ }
3295
+ },
3296
+ "description": "Unexpected failure"
3297
+ },
3298
+ "503": {
3299
+ "content": {
3300
+ "application/json": {
3301
+ "schema": {
3302
+ "$ref": "#/components/schemas/ErrorResponse"
3303
+ }
3304
+ }
3305
+ },
3306
+ "description": "Dependency unavailable"
3307
+ }
3308
+ },
3309
+ "security": [
3310
+ {
3311
+ "bearerAuth": []
3312
+ }
3313
+ ],
3314
+ "x-state-credentials": ["user", "api_key"]
3315
+ }
3316
+ },
3317
+ "/v1/environments/{environmentId}/stop": {
3318
+ "post": {
3319
+ "operationId": "stopEnvironment",
3320
+ "parameters": [
3321
+ {
3322
+ "in": "path",
3323
+ "name": "environmentId",
3324
+ "required": true,
3325
+ "schema": {
3326
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
3327
+ "type": "string"
3328
+ }
3329
+ },
3330
+ {
3331
+ "in": "header",
3332
+ "name": "idempotency-key",
3333
+ "required": false,
3334
+ "schema": {
3335
+ "maxLength": 128,
3336
+ "minLength": 8,
3337
+ "pattern": "^[A-Za-z0-9._:-]+$",
3338
+ "type": "string"
3339
+ }
3340
+ }
3341
+ ],
3342
+ "responses": {
3343
+ "200": {
3344
+ "content": {
3345
+ "application/json": {
3346
+ "schema": {
3347
+ "properties": {
3348
+ "data": {
3349
+ "$ref": "#/components/schemas/Environment"
3350
+ }
3351
+ },
3352
+ "required": ["data"],
3353
+ "type": "object"
3354
+ }
3355
+ }
3356
+ },
3357
+ "description": "Environment stopping or stopped; its data is discarded"
3358
+ },
3359
+ "400": {
3360
+ "content": {
3361
+ "application/json": {
3362
+ "schema": {
3363
+ "$ref": "#/components/schemas/ErrorResponse"
3364
+ }
3365
+ }
3366
+ },
3367
+ "description": "Invalid request"
3368
+ },
3369
+ "401": {
3370
+ "content": {
3371
+ "application/json": {
3372
+ "schema": {
3373
+ "$ref": "#/components/schemas/ErrorResponse"
3374
+ }
3375
+ }
3376
+ },
3377
+ "description": "Authentication required"
3378
+ },
3379
+ "403": {
3380
+ "content": {
3381
+ "application/json": {
3382
+ "schema": {
3383
+ "$ref": "#/components/schemas/ErrorResponse"
3384
+ }
3385
+ }
3386
+ },
3387
+ "description": "Permission denied"
3388
+ },
3389
+ "404": {
3390
+ "content": {
3391
+ "application/json": {
3392
+ "schema": {
3393
+ "$ref": "#/components/schemas/ErrorResponse"
3394
+ }
3395
+ }
3396
+ },
3397
+ "description": "Resource not found"
3398
+ },
3399
+ "409": {
3400
+ "content": {
3401
+ "application/json": {
3402
+ "schema": {
3403
+ "$ref": "#/components/schemas/ErrorResponse"
3404
+ }
3405
+ }
3406
+ },
3407
+ "description": "Conflicting request or version"
3408
+ },
3409
+ "413": {
3410
+ "content": {
3411
+ "application/json": {
3412
+ "schema": {
3413
+ "$ref": "#/components/schemas/ErrorResponse"
3414
+ }
3415
+ }
3416
+ },
3417
+ "description": "Request body too large"
3418
+ },
3419
+ "422": {
3420
+ "content": {
3421
+ "application/json": {
3422
+ "schema": {
3423
+ "$ref": "#/components/schemas/ErrorResponse"
3424
+ }
3425
+ }
3426
+ },
3427
+ "description": "Unsupported configuration"
3428
+ },
3429
+ "429": {
3430
+ "content": {
3431
+ "application/json": {
3432
+ "schema": {
3433
+ "$ref": "#/components/schemas/ErrorResponse"
3434
+ }
3435
+ }
3436
+ },
3437
+ "description": "Admission limit reached"
3438
+ },
3439
+ "500": {
3440
+ "content": {
3441
+ "application/json": {
3442
+ "schema": {
3443
+ "$ref": "#/components/schemas/ErrorResponse"
3444
+ }
3445
+ }
3446
+ },
3447
+ "description": "Unexpected failure"
3448
+ },
3449
+ "503": {
3450
+ "content": {
3451
+ "application/json": {
3452
+ "schema": {
3453
+ "$ref": "#/components/schemas/ErrorResponse"
3454
+ }
3455
+ }
3456
+ },
3457
+ "description": "Dependency unavailable"
3458
+ }
3459
+ },
3460
+ "security": [
3461
+ {
3462
+ "bearerAuth": []
3463
+ }
3464
+ ],
3465
+ "x-state-credentials": ["user", "api_key"]
3466
+ }
3467
+ },
3468
+ "/v1/environments/{environmentId}/suspend": {
3469
+ "post": {
3470
+ "operationId": "suspendEnvironment",
3471
+ "parameters": [
3472
+ {
3473
+ "in": "path",
3474
+ "name": "environmentId",
3475
+ "required": true,
3476
+ "schema": {
3477
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
3478
+ "type": "string"
3479
+ }
3480
+ },
3481
+ {
3482
+ "in": "header",
3483
+ "name": "idempotency-key",
3484
+ "required": false,
3485
+ "schema": {
3486
+ "maxLength": 128,
3487
+ "minLength": 8,
3488
+ "pattern": "^[A-Za-z0-9._:-]+$",
3489
+ "type": "string"
3490
+ }
3491
+ }
3492
+ ],
3493
+ "responses": {
3494
+ "200": {
3495
+ "content": {
3496
+ "application/json": {
3497
+ "schema": {
3498
+ "properties": {
3499
+ "data": {
3500
+ "$ref": "#/components/schemas/Environment"
3501
+ }
3502
+ },
3503
+ "required": ["data"],
3504
+ "type": "object"
3505
+ }
3506
+ }
3507
+ },
3508
+ "description": "Environment suspending or suspended: its sandboxes go, its data stays for a resume"
3509
+ },
3510
+ "400": {
3511
+ "content": {
3512
+ "application/json": {
3513
+ "schema": {
3514
+ "$ref": "#/components/schemas/ErrorResponse"
3515
+ }
3516
+ }
3517
+ },
3518
+ "description": "Invalid request"
3519
+ },
3520
+ "401": {
3521
+ "content": {
3522
+ "application/json": {
3523
+ "schema": {
3524
+ "$ref": "#/components/schemas/ErrorResponse"
3525
+ }
3526
+ }
3527
+ },
3528
+ "description": "Authentication required"
3529
+ },
3530
+ "403": {
3531
+ "content": {
3532
+ "application/json": {
3533
+ "schema": {
3534
+ "$ref": "#/components/schemas/ErrorResponse"
3535
+ }
3536
+ }
3537
+ },
3538
+ "description": "Permission denied"
3539
+ },
3540
+ "404": {
3541
+ "content": {
3542
+ "application/json": {
3543
+ "schema": {
3544
+ "$ref": "#/components/schemas/ErrorResponse"
3545
+ }
3546
+ }
3547
+ },
3548
+ "description": "Resource not found"
3549
+ },
3550
+ "409": {
3551
+ "content": {
3552
+ "application/json": {
3553
+ "schema": {
3554
+ "$ref": "#/components/schemas/ErrorResponse"
3555
+ }
3556
+ }
3557
+ },
3558
+ "description": "Conflicting request or version"
3559
+ },
3560
+ "413": {
3561
+ "content": {
3562
+ "application/json": {
3563
+ "schema": {
3564
+ "$ref": "#/components/schemas/ErrorResponse"
3565
+ }
3566
+ }
3567
+ },
3568
+ "description": "Request body too large"
3569
+ },
3570
+ "422": {
3571
+ "content": {
3572
+ "application/json": {
3573
+ "schema": {
3574
+ "$ref": "#/components/schemas/ErrorResponse"
3575
+ }
3576
+ }
3577
+ },
3578
+ "description": "Unsupported configuration"
3579
+ },
3580
+ "429": {
3581
+ "content": {
3582
+ "application/json": {
3583
+ "schema": {
3584
+ "$ref": "#/components/schemas/ErrorResponse"
3585
+ }
3586
+ }
3587
+ },
3588
+ "description": "Admission limit reached"
3589
+ },
3590
+ "500": {
3591
+ "content": {
3592
+ "application/json": {
3593
+ "schema": {
3594
+ "$ref": "#/components/schemas/ErrorResponse"
3595
+ }
3596
+ }
3597
+ },
3598
+ "description": "Unexpected failure"
3599
+ },
3600
+ "503": {
3601
+ "content": {
3602
+ "application/json": {
3603
+ "schema": {
3604
+ "$ref": "#/components/schemas/ErrorResponse"
3605
+ }
3606
+ }
3607
+ },
3608
+ "description": "Dependency unavailable"
3609
+ }
3610
+ },
3611
+ "security": [
3612
+ {
3613
+ "bearerAuth": []
3614
+ }
3615
+ ],
3616
+ "x-state-credentials": ["user", "api_key"]
3617
+ }
3618
+ },
3619
+ "/v1/snapshots/{snapshotId}": {
3620
+ "delete": {
3621
+ "operationId": "deleteSnapshot",
3622
+ "parameters": [
3623
+ {
3624
+ "in": "path",
3625
+ "name": "snapshotId",
3626
+ "required": true,
3627
+ "schema": {
3628
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
3629
+ "type": "string"
3630
+ }
3631
+ }
3632
+ ],
3633
+ "responses": {
3634
+ "200": {
3635
+ "content": {
3636
+ "application/json": {
3637
+ "schema": {
3638
+ "properties": {
3639
+ "data": {
3640
+ "$ref": "#/components/schemas/EnvironmentSnapshot"
3641
+ }
3642
+ },
3643
+ "required": ["data"],
3644
+ "type": "object"
3645
+ }
3646
+ }
3647
+ },
2315
3648
  "description": "Environment snapshot removed from the library"
2316
3649
  },
2317
3650
  "400": {
@@ -3142,6 +4475,24 @@
3142
4475
  "required": ["snapshot"],
3143
4476
  "type": "object"
3144
4477
  },
4478
+ "labels": {
4479
+ "additionalProperties": {
4480
+ "maxLength": 256,
4481
+ "type": "string"
4482
+ },
4483
+ "default": {},
4484
+ "type": "object"
4485
+ },
4486
+ "lifetimeMinutes": {
4487
+ "maximum": 1440,
4488
+ "minimum": 1,
4489
+ "type": "integer"
4490
+ },
4491
+ "name": {
4492
+ "maxLength": 120,
4493
+ "minLength": 1,
4494
+ "type": "string"
4495
+ },
3145
4496
  "version": {
3146
4497
  "default": 1,
3147
4498
  "enum": [1],