@usestatemachines/sdk 0.8.1 → 0.9.1

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 (48) hide show
  1. package/README.md +19 -2
  2. package/agents/SKILL.md +46 -30
  3. package/agents/index.js +6 -6
  4. package/agents/llms.txt +11 -4
  5. package/agents/prompt.md +1 -1
  6. package/esm/extensions/ui.d.ts +59 -0
  7. package/esm/extensions/ui.js +153 -0
  8. package/esm/funcs/launch-ui-session.d.ts +15 -0
  9. package/esm/funcs/launch-ui-session.js +101 -0
  10. package/esm/funcs/list-snapshot-creators.d.ts +11 -0
  11. package/esm/funcs/list-snapshot-creators.js +90 -0
  12. package/esm/funcs/revoke-ui-session.d.ts +15 -0
  13. package/esm/funcs/revoke-ui-session.js +104 -0
  14. package/esm/funcs/snapshots-list.js +3 -0
  15. package/esm/lib/config.d.ts +2 -2
  16. package/esm/lib/config.js +2 -2
  17. package/esm/models/browser-capability.d.ts +12 -0
  18. package/esm/models/browser-capability.js +16 -0
  19. package/esm/models/environment.d.ts +8 -0
  20. package/esm/models/environment.js +9 -0
  21. package/esm/models/error.d.ts +1 -0
  22. package/esm/models/error.js +1 -0
  23. package/esm/models/index.d.ts +5 -0
  24. package/esm/models/index.js +5 -0
  25. package/esm/models/launch-ui-session.d.ts +26 -0
  26. package/esm/models/launch-ui-session.js +16 -0
  27. package/esm/models/operations/index.d.ts +3 -0
  28. package/esm/models/operations/index.js +3 -0
  29. package/esm/models/operations/launch-ui-session.d.ts +16 -0
  30. package/esm/models/operations/launch-ui-session.js +14 -0
  31. package/esm/models/operations/list-snapshot-creators.d.ts +23 -0
  32. package/esm/models/operations/list-snapshot-creators.js +20 -0
  33. package/esm/models/operations/list-snapshots.d.ts +6 -0
  34. package/esm/models/operations/list-snapshots.js +3 -0
  35. package/esm/models/operations/revoke-ui-session.d.ts +15 -0
  36. package/esm/models/operations/revoke-ui-session.js +13 -0
  37. package/esm/models/service.d.ts +2 -0
  38. package/esm/models/service.js +2 -0
  39. package/esm/models/ui-session-launch.d.ts +21 -0
  40. package/esm/models/ui-session-launch.js +25 -0
  41. package/esm/models/ui-session-mode.d.ts +11 -0
  42. package/esm/models/ui-session-mode.js +12 -0
  43. package/esm/models/ui-session-revocation.d.ts +12 -0
  44. package/esm/models/ui-session-revocation.js +16 -0
  45. package/esm/sdk/sdk.d.ts +10 -0
  46. package/esm/sdk/sdk.js +18 -0
  47. package/openapi.json +738 -78
  48. package/package.json +6 -2
package/openapi.json CHANGED
@@ -153,6 +153,39 @@
153
153
  ],
154
154
  "type": "object"
155
155
  },
156
+ "BrowserCapability": {
157
+ "properties": {
158
+ "acceptsClients": {
159
+ "prefixItems": [
160
+ {
161
+ "pattern": "^[a-z0-9][a-z0-9.-]{0,63}$",
162
+ "type": "string"
163
+ }
164
+ ],
165
+ "type": "array"
166
+ },
167
+ "contract": {
168
+ "pattern": "^[a-z0-9][a-z0-9.-]{0,63}$",
169
+ "type": "string"
170
+ },
171
+ "documents": {
172
+ "prefixItems": [
173
+ {
174
+ "maxLength": 500,
175
+ "type": "string"
176
+ }
177
+ ],
178
+ "type": "array"
179
+ },
180
+ "entry": {
181
+ "maxLength": 500,
182
+ "minLength": 1,
183
+ "type": "string"
184
+ }
185
+ },
186
+ "required": ["contract", "acceptsClients", "documents", "entry"],
187
+ "type": "object"
188
+ },
156
189
  "CreateEnvironment": {
157
190
  "properties": {
158
191
  "apps": {
@@ -427,6 +460,25 @@
427
460
  "appId": {
428
461
  "type": "string"
429
462
  },
463
+ "browserServices": {
464
+ "items": {
465
+ "properties": {
466
+ "documents": {
467
+ "items": {
468
+ "type": "string"
469
+ },
470
+ "type": "array"
471
+ },
472
+ "id": {
473
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
474
+ "type": "string"
475
+ }
476
+ },
477
+ "required": ["id", "documents"],
478
+ "type": "object"
479
+ },
480
+ "type": "array"
481
+ },
430
482
  "name": {
431
483
  "pattern": "^[a-z][a-z0-9-]{0,39}$",
432
484
  "type": "string"
@@ -584,6 +636,7 @@
584
636
  "last_workspace",
585
637
  "workspace_archived",
586
638
  "version_in_use",
639
+ "ui_disabled",
587
640
  "body_too_large",
588
641
  "version_unavailable",
589
642
  "environment_limit_reached",
@@ -619,6 +672,41 @@
619
672
  "required": ["error"],
620
673
  "type": "object"
621
674
  },
675
+ "LaunchUiSession": {
676
+ "additionalProperties": false,
677
+ "properties": {
678
+ "actorId": {
679
+ "maxLength": 255,
680
+ "minLength": 1,
681
+ "type": "string"
682
+ },
683
+ "entryPath": {
684
+ "description": "The path the session opens first, with an optional query. It must match one of the service's document routes.",
685
+ "maxLength": 2048,
686
+ "type": "string"
687
+ },
688
+ "launcherOrigin": {
689
+ "description": "The exact origin of the page that posts the grant. The exchange refuses any other Origin, and an embedded session allows only this origin to frame it.",
690
+ "maxLength": 2048,
691
+ "type": "string"
692
+ },
693
+ "mode": {
694
+ "$ref": "#/components/schemas/UiSessionMode"
695
+ },
696
+ "serviceId": {
697
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
698
+ "type": "string"
699
+ }
700
+ },
701
+ "required": [
702
+ "serviceId",
703
+ "actorId",
704
+ "mode",
705
+ "launcherOrigin",
706
+ "entryPath"
707
+ ],
708
+ "type": "object"
709
+ },
622
710
  "McpServer": {
623
711
  "properties": {
624
712
  "name": {
@@ -1018,6 +1106,9 @@
1018
1106
  },
1019
1107
  "Service": {
1020
1108
  "properties": {
1109
+ "browser": {
1110
+ "$ref": "#/components/schemas/BrowserCapability"
1111
+ },
1021
1112
  "description": {
1022
1113
  "type": "string"
1023
1114
  },
@@ -1186,6 +1277,93 @@
1186
1277
  "enum": ["saving", "ready", "failed", "deleted"],
1187
1278
  "type": "string"
1188
1279
  },
1280
+ "UiSessionLaunch": {
1281
+ "properties": {
1282
+ "actorId": {
1283
+ "type": "string"
1284
+ },
1285
+ "appName": {
1286
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
1287
+ "type": "string"
1288
+ },
1289
+ "entryPath": {
1290
+ "type": "string"
1291
+ },
1292
+ "environmentId": {
1293
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
1294
+ "type": "string"
1295
+ },
1296
+ "exchangeUrl": {
1297
+ "type": "string"
1298
+ },
1299
+ "expiresAt": {
1300
+ "format": "date-time",
1301
+ "type": "string"
1302
+ },
1303
+ "grant": {
1304
+ "type": "string"
1305
+ },
1306
+ "grantExpiresAt": {
1307
+ "format": "date-time",
1308
+ "type": "string"
1309
+ },
1310
+ "mode": {
1311
+ "$ref": "#/components/schemas/UiSessionMode"
1312
+ },
1313
+ "origin": {
1314
+ "type": "string"
1315
+ },
1316
+ "serviceId": {
1317
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
1318
+ "type": "string"
1319
+ },
1320
+ "sessionId": {
1321
+ "pattern": "^uis_[0-9a-z]{26}$",
1322
+ "type": "string"
1323
+ }
1324
+ },
1325
+ "required": [
1326
+ "sessionId",
1327
+ "environmentId",
1328
+ "appName",
1329
+ "serviceId",
1330
+ "actorId",
1331
+ "mode",
1332
+ "origin",
1333
+ "exchangeUrl",
1334
+ "grant",
1335
+ "grantExpiresAt",
1336
+ "expiresAt",
1337
+ "entryPath"
1338
+ ],
1339
+ "type": "object"
1340
+ },
1341
+ "UiSessionMode": {
1342
+ "enum": ["embedded", "page"],
1343
+ "type": "string"
1344
+ },
1345
+ "UiSessionRevocation": {
1346
+ "properties": {
1347
+ "appName": {
1348
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
1349
+ "type": "string"
1350
+ },
1351
+ "environmentId": {
1352
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
1353
+ "type": "string"
1354
+ },
1355
+ "revokedAt": {
1356
+ "format": "date-time",
1357
+ "type": "string"
1358
+ },
1359
+ "sessionId": {
1360
+ "pattern": "^uis_[0-9a-z]{26}$",
1361
+ "type": "string"
1362
+ }
1363
+ },
1364
+ "required": ["sessionId", "environmentId", "appName", "revokedAt"],
1365
+ "type": "object"
1366
+ },
1189
1367
  "Version": {
1190
1368
  "properties": {
1191
1369
  "actors": {
@@ -2900,19 +3078,50 @@
2900
3078
  ]
2901
3079
  }
2902
3080
  },
2903
- "/v1/me": {
2904
- "get": {
2905
- "operationId": "getMe",
3081
+ "/v1/environments/{environmentId}/apps/{appName}/ui-sessions": {
3082
+ "post": {
3083
+ "description": "Launches a browser session of one actor in an app's UI. The answer holds a one-use grant and no reusable credential. Return it only to the browser of the user it is for, which posts the grant to `exchangeUrl` from `launcherOrigin`.",
3084
+ "operationId": "launchUiSession",
3085
+ "parameters": [
3086
+ {
3087
+ "in": "path",
3088
+ "name": "environmentId",
3089
+ "required": true,
3090
+ "schema": {
3091
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
3092
+ "type": "string"
3093
+ }
3094
+ },
3095
+ {
3096
+ "in": "path",
3097
+ "name": "appName",
3098
+ "required": true,
3099
+ "schema": {
3100
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
3101
+ "type": "string"
3102
+ }
3103
+ }
3104
+ ],
3105
+ "requestBody": {
3106
+ "content": {
3107
+ "application/json": {
3108
+ "schema": {
3109
+ "$ref": "#/components/schemas/LaunchUiSession"
3110
+ }
3111
+ }
3112
+ },
3113
+ "required": true
3114
+ },
2906
3115
  "responses": {
2907
- "200": {
3116
+ "201": {
2908
3117
  "content": {
2909
3118
  "application/json": {
2910
3119
  "schema": {
2911
- "$ref": "#/components/schemas/Me"
3120
+ "$ref": "#/components/schemas/UiSessionLaunch"
2912
3121
  }
2913
3122
  }
2914
3123
  },
2915
- "description": "The caller, its organization, permissions and limits"
3124
+ "description": "A pending session and its one-use grant"
2916
3125
  },
2917
3126
  "400": {
2918
3127
  "content": {
@@ -3022,32 +3231,13 @@
3022
3231
  ]
3023
3232
  }
3024
3233
  },
3025
- "/v1/requests": {
3026
- "get": {
3027
- "operationId": "listRequests",
3234
+ "/v1/environments/{environmentId}/apps/{appName}/ui-sessions/{sessionId}": {
3235
+ "delete": {
3236
+ "description": "Revokes a browser session that the caller's own credential launched. Revoking again answers the same result. Another credential's session is not found.",
3237
+ "operationId": "revokeUiSession",
3028
3238
  "parameters": [
3029
3239
  {
3030
- "in": "query",
3031
- "name": "limit",
3032
- "required": false,
3033
- "schema": {
3034
- "default": 50,
3035
- "maximum": 100,
3036
- "minimum": 1,
3037
- "type": "integer"
3038
- }
3039
- },
3040
- {
3041
- "in": "query",
3042
- "name": "cursor",
3043
- "required": false,
3044
- "schema": {
3045
- "maxLength": 2048,
3046
- "type": "string"
3047
- }
3048
- },
3049
- {
3050
- "in": "query",
3240
+ "in": "path",
3051
3241
  "name": "environmentId",
3052
3242
  "required": true,
3053
3243
  "schema": {
@@ -3056,67 +3246,360 @@
3056
3246
  }
3057
3247
  },
3058
3248
  {
3059
- "in": "query",
3249
+ "in": "path",
3060
3250
  "name": "appName",
3061
- "required": false,
3251
+ "required": true,
3062
3252
  "schema": {
3063
3253
  "pattern": "^[a-z][a-z0-9-]{0,39}$",
3064
3254
  "type": "string"
3065
3255
  }
3066
3256
  },
3067
3257
  {
3068
- "in": "query",
3069
- "name": "method",
3070
- "required": false,
3258
+ "in": "path",
3259
+ "name": "sessionId",
3260
+ "required": true,
3071
3261
  "schema": {
3072
- "enum": [
3073
- "GET",
3074
- "HEAD",
3075
- "POST",
3076
- "PUT",
3077
- "PATCH",
3078
- "DELETE",
3079
- "OPTIONS",
3080
- "CONNECT",
3081
- "TRACE"
3082
- ],
3262
+ "pattern": "^uis_[0-9a-z]{26}$",
3083
3263
  "type": "string"
3084
3264
  }
3265
+ }
3266
+ ],
3267
+ "responses": {
3268
+ "200": {
3269
+ "content": {
3270
+ "application/json": {
3271
+ "schema": {
3272
+ "$ref": "#/components/schemas/UiSessionRevocation"
3273
+ }
3274
+ }
3275
+ },
3276
+ "description": "The session is revoked"
3085
3277
  },
3086
- {
3087
- "in": "query",
3088
- "name": "responseStatus",
3089
- "required": false,
3090
- "schema": {
3091
- "maximum": 599,
3092
- "minimum": 100,
3093
- "type": "integer"
3094
- }
3095
- },
3096
- {
3097
- "in": "query",
3098
- "name": "statusClass",
3099
- "required": false,
3100
- "schema": {
3101
- "enum": ["2xx", "3xx", "4xx", "5xx"],
3102
- "type": "string"
3103
- }
3278
+ "400": {
3279
+ "content": {
3280
+ "application/json": {
3281
+ "schema": {
3282
+ "$ref": "#/components/schemas/Error"
3283
+ }
3284
+ }
3285
+ },
3286
+ "description": "Invalid request"
3104
3287
  },
3105
- {
3106
- "in": "query",
3107
- "name": "writesOnly",
3108
- "required": false,
3109
- "schema": {
3110
- "type": "boolean"
3111
- }
3288
+ "401": {
3289
+ "content": {
3290
+ "application/json": {
3291
+ "schema": {
3292
+ "$ref": "#/components/schemas/Error"
3293
+ }
3294
+ }
3295
+ },
3296
+ "description": "Authentication required"
3112
3297
  },
3113
- {
3114
- "in": "query",
3115
- "name": "service",
3116
- "required": false,
3117
- "schema": {
3118
- "pattern": "^[a-z][a-z0-9-]{0,39}$",
3119
- "type": "string"
3298
+ "403": {
3299
+ "content": {
3300
+ "application/json": {
3301
+ "schema": {
3302
+ "$ref": "#/components/schemas/Error"
3303
+ }
3304
+ }
3305
+ },
3306
+ "description": "Permission denied"
3307
+ },
3308
+ "404": {
3309
+ "content": {
3310
+ "application/json": {
3311
+ "schema": {
3312
+ "$ref": "#/components/schemas/Error"
3313
+ }
3314
+ }
3315
+ },
3316
+ "description": "Resource not found"
3317
+ },
3318
+ "409": {
3319
+ "content": {
3320
+ "application/json": {
3321
+ "schema": {
3322
+ "$ref": "#/components/schemas/Error"
3323
+ }
3324
+ }
3325
+ },
3326
+ "description": "Conflicting request"
3327
+ },
3328
+ "413": {
3329
+ "content": {
3330
+ "application/json": {
3331
+ "schema": {
3332
+ "$ref": "#/components/schemas/Error"
3333
+ }
3334
+ }
3335
+ },
3336
+ "description": "Request body too large"
3337
+ },
3338
+ "422": {
3339
+ "content": {
3340
+ "application/json": {
3341
+ "schema": {
3342
+ "$ref": "#/components/schemas/Error"
3343
+ }
3344
+ }
3345
+ },
3346
+ "description": "Version unavailable"
3347
+ },
3348
+ "429": {
3349
+ "content": {
3350
+ "application/json": {
3351
+ "schema": {
3352
+ "$ref": "#/components/schemas/Error"
3353
+ }
3354
+ }
3355
+ },
3356
+ "description": "Limit reached"
3357
+ },
3358
+ "500": {
3359
+ "content": {
3360
+ "application/json": {
3361
+ "schema": {
3362
+ "$ref": "#/components/schemas/Error"
3363
+ }
3364
+ }
3365
+ },
3366
+ "description": "Unexpected failure"
3367
+ },
3368
+ "503": {
3369
+ "content": {
3370
+ "application/json": {
3371
+ "schema": {
3372
+ "$ref": "#/components/schemas/Error"
3373
+ }
3374
+ }
3375
+ },
3376
+ "description": "Dependency unavailable"
3377
+ }
3378
+ },
3379
+ "security": [
3380
+ {
3381
+ "bearerAuth": []
3382
+ }
3383
+ ]
3384
+ }
3385
+ },
3386
+ "/v1/me": {
3387
+ "get": {
3388
+ "operationId": "getMe",
3389
+ "responses": {
3390
+ "200": {
3391
+ "content": {
3392
+ "application/json": {
3393
+ "schema": {
3394
+ "$ref": "#/components/schemas/Me"
3395
+ }
3396
+ }
3397
+ },
3398
+ "description": "The caller, its organization, permissions and limits"
3399
+ },
3400
+ "400": {
3401
+ "content": {
3402
+ "application/json": {
3403
+ "schema": {
3404
+ "$ref": "#/components/schemas/Error"
3405
+ }
3406
+ }
3407
+ },
3408
+ "description": "Invalid request"
3409
+ },
3410
+ "401": {
3411
+ "content": {
3412
+ "application/json": {
3413
+ "schema": {
3414
+ "$ref": "#/components/schemas/Error"
3415
+ }
3416
+ }
3417
+ },
3418
+ "description": "Authentication required"
3419
+ },
3420
+ "403": {
3421
+ "content": {
3422
+ "application/json": {
3423
+ "schema": {
3424
+ "$ref": "#/components/schemas/Error"
3425
+ }
3426
+ }
3427
+ },
3428
+ "description": "Permission denied"
3429
+ },
3430
+ "404": {
3431
+ "content": {
3432
+ "application/json": {
3433
+ "schema": {
3434
+ "$ref": "#/components/schemas/Error"
3435
+ }
3436
+ }
3437
+ },
3438
+ "description": "Resource not found"
3439
+ },
3440
+ "409": {
3441
+ "content": {
3442
+ "application/json": {
3443
+ "schema": {
3444
+ "$ref": "#/components/schemas/Error"
3445
+ }
3446
+ }
3447
+ },
3448
+ "description": "Conflicting request"
3449
+ },
3450
+ "413": {
3451
+ "content": {
3452
+ "application/json": {
3453
+ "schema": {
3454
+ "$ref": "#/components/schemas/Error"
3455
+ }
3456
+ }
3457
+ },
3458
+ "description": "Request body too large"
3459
+ },
3460
+ "422": {
3461
+ "content": {
3462
+ "application/json": {
3463
+ "schema": {
3464
+ "$ref": "#/components/schemas/Error"
3465
+ }
3466
+ }
3467
+ },
3468
+ "description": "Version unavailable"
3469
+ },
3470
+ "429": {
3471
+ "content": {
3472
+ "application/json": {
3473
+ "schema": {
3474
+ "$ref": "#/components/schemas/Error"
3475
+ }
3476
+ }
3477
+ },
3478
+ "description": "Limit reached"
3479
+ },
3480
+ "500": {
3481
+ "content": {
3482
+ "application/json": {
3483
+ "schema": {
3484
+ "$ref": "#/components/schemas/Error"
3485
+ }
3486
+ }
3487
+ },
3488
+ "description": "Unexpected failure"
3489
+ },
3490
+ "503": {
3491
+ "content": {
3492
+ "application/json": {
3493
+ "schema": {
3494
+ "$ref": "#/components/schemas/Error"
3495
+ }
3496
+ }
3497
+ },
3498
+ "description": "Dependency unavailable"
3499
+ }
3500
+ },
3501
+ "security": [
3502
+ {
3503
+ "bearerAuth": []
3504
+ }
3505
+ ]
3506
+ }
3507
+ },
3508
+ "/v1/requests": {
3509
+ "get": {
3510
+ "operationId": "listRequests",
3511
+ "parameters": [
3512
+ {
3513
+ "in": "query",
3514
+ "name": "limit",
3515
+ "required": false,
3516
+ "schema": {
3517
+ "default": 50,
3518
+ "maximum": 100,
3519
+ "minimum": 1,
3520
+ "type": "integer"
3521
+ }
3522
+ },
3523
+ {
3524
+ "in": "query",
3525
+ "name": "cursor",
3526
+ "required": false,
3527
+ "schema": {
3528
+ "maxLength": 2048,
3529
+ "type": "string"
3530
+ }
3531
+ },
3532
+ {
3533
+ "in": "query",
3534
+ "name": "environmentId",
3535
+ "required": true,
3536
+ "schema": {
3537
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
3538
+ "type": "string"
3539
+ }
3540
+ },
3541
+ {
3542
+ "in": "query",
3543
+ "name": "appName",
3544
+ "required": false,
3545
+ "schema": {
3546
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
3547
+ "type": "string"
3548
+ }
3549
+ },
3550
+ {
3551
+ "in": "query",
3552
+ "name": "method",
3553
+ "required": false,
3554
+ "schema": {
3555
+ "enum": [
3556
+ "GET",
3557
+ "HEAD",
3558
+ "POST",
3559
+ "PUT",
3560
+ "PATCH",
3561
+ "DELETE",
3562
+ "OPTIONS",
3563
+ "CONNECT",
3564
+ "TRACE"
3565
+ ],
3566
+ "type": "string"
3567
+ }
3568
+ },
3569
+ {
3570
+ "in": "query",
3571
+ "name": "responseStatus",
3572
+ "required": false,
3573
+ "schema": {
3574
+ "maximum": 599,
3575
+ "minimum": 100,
3576
+ "type": "integer"
3577
+ }
3578
+ },
3579
+ {
3580
+ "in": "query",
3581
+ "name": "statusClass",
3582
+ "required": false,
3583
+ "schema": {
3584
+ "enum": ["2xx", "3xx", "4xx", "5xx"],
3585
+ "type": "string"
3586
+ }
3587
+ },
3588
+ {
3589
+ "in": "query",
3590
+ "name": "writesOnly",
3591
+ "required": false,
3592
+ "schema": {
3593
+ "type": "boolean"
3594
+ }
3595
+ },
3596
+ {
3597
+ "in": "query",
3598
+ "name": "service",
3599
+ "required": false,
3600
+ "schema": {
3601
+ "pattern": "^[a-z][a-z0-9-]{0,39}$",
3602
+ "type": "string"
3120
3603
  }
3121
3604
  },
3122
3605
  {
@@ -3887,6 +4370,41 @@
3887
4370
  "maxItems": 4,
3888
4371
  "type": "array"
3889
4372
  }
4373
+ },
4374
+ {
4375
+ "in": "query",
4376
+ "name": "appId",
4377
+ "required": false,
4378
+ "schema": {
4379
+ "items": {
4380
+ "pattern": "^[a-z][a-z0-9-]{1,39}$",
4381
+ "type": "string"
4382
+ },
4383
+ "maxItems": 20,
4384
+ "type": "array"
4385
+ }
4386
+ },
4387
+ {
4388
+ "in": "query",
4389
+ "name": "createdBy",
4390
+ "required": false,
4391
+ "schema": {
4392
+ "items": {
4393
+ "pattern": "^(user_[0-9A-Za-z]+|key_[0-9a-z]{16})$",
4394
+ "type": "string"
4395
+ },
4396
+ "maxItems": 50,
4397
+ "type": "array"
4398
+ }
4399
+ },
4400
+ {
4401
+ "in": "query",
4402
+ "name": "search",
4403
+ "required": false,
4404
+ "schema": {
4405
+ "maxLength": 120,
4406
+ "type": "string"
4407
+ }
3890
4408
  }
3891
4409
  ],
3892
4410
  "responses": {
@@ -4185,6 +4703,148 @@
4185
4703
  ]
4186
4704
  }
4187
4705
  },
4706
+ "/v1/snapshots/creators": {
4707
+ "get": {
4708
+ "operationId": "listSnapshotCreators",
4709
+ "parameters": [
4710
+ {
4711
+ "in": "query",
4712
+ "name": "workspaceId",
4713
+ "required": false,
4714
+ "schema": {
4715
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
4716
+ "type": "string"
4717
+ }
4718
+ }
4719
+ ],
4720
+ "responses": {
4721
+ "200": {
4722
+ "content": {
4723
+ "application/json": {
4724
+ "schema": {
4725
+ "properties": {
4726
+ "data": {
4727
+ "items": {
4728
+ "$ref": "#/components/schemas/Principal"
4729
+ },
4730
+ "type": "array"
4731
+ }
4732
+ },
4733
+ "required": ["data"],
4734
+ "type": "object"
4735
+ }
4736
+ }
4737
+ },
4738
+ "description": "Each principal that created a snapshot in the workspace, by name"
4739
+ },
4740
+ "400": {
4741
+ "content": {
4742
+ "application/json": {
4743
+ "schema": {
4744
+ "$ref": "#/components/schemas/Error"
4745
+ }
4746
+ }
4747
+ },
4748
+ "description": "Invalid request"
4749
+ },
4750
+ "401": {
4751
+ "content": {
4752
+ "application/json": {
4753
+ "schema": {
4754
+ "$ref": "#/components/schemas/Error"
4755
+ }
4756
+ }
4757
+ },
4758
+ "description": "Authentication required"
4759
+ },
4760
+ "403": {
4761
+ "content": {
4762
+ "application/json": {
4763
+ "schema": {
4764
+ "$ref": "#/components/schemas/Error"
4765
+ }
4766
+ }
4767
+ },
4768
+ "description": "Permission denied"
4769
+ },
4770
+ "404": {
4771
+ "content": {
4772
+ "application/json": {
4773
+ "schema": {
4774
+ "$ref": "#/components/schemas/Error"
4775
+ }
4776
+ }
4777
+ },
4778
+ "description": "Resource not found"
4779
+ },
4780
+ "409": {
4781
+ "content": {
4782
+ "application/json": {
4783
+ "schema": {
4784
+ "$ref": "#/components/schemas/Error"
4785
+ }
4786
+ }
4787
+ },
4788
+ "description": "Conflicting request"
4789
+ },
4790
+ "413": {
4791
+ "content": {
4792
+ "application/json": {
4793
+ "schema": {
4794
+ "$ref": "#/components/schemas/Error"
4795
+ }
4796
+ }
4797
+ },
4798
+ "description": "Request body too large"
4799
+ },
4800
+ "422": {
4801
+ "content": {
4802
+ "application/json": {
4803
+ "schema": {
4804
+ "$ref": "#/components/schemas/Error"
4805
+ }
4806
+ }
4807
+ },
4808
+ "description": "Version unavailable"
4809
+ },
4810
+ "429": {
4811
+ "content": {
4812
+ "application/json": {
4813
+ "schema": {
4814
+ "$ref": "#/components/schemas/Error"
4815
+ }
4816
+ }
4817
+ },
4818
+ "description": "Limit reached"
4819
+ },
4820
+ "500": {
4821
+ "content": {
4822
+ "application/json": {
4823
+ "schema": {
4824
+ "$ref": "#/components/schemas/Error"
4825
+ }
4826
+ }
4827
+ },
4828
+ "description": "Unexpected failure"
4829
+ },
4830
+ "503": {
4831
+ "content": {
4832
+ "application/json": {
4833
+ "schema": {
4834
+ "$ref": "#/components/schemas/Error"
4835
+ }
4836
+ }
4837
+ },
4838
+ "description": "Dependency unavailable"
4839
+ }
4840
+ },
4841
+ "security": [
4842
+ {
4843
+ "bearerAuth": []
4844
+ }
4845
+ ]
4846
+ }
4847
+ },
4188
4848
  "/v1/snapshots/{snapshotId}": {
4189
4849
  "delete": {
4190
4850
  "operationId": "deleteSnapshot",