@shardflux/sdk 0.13.1 → 0.14.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.
- package/CHANGELOG.md +92 -0
- package/README.md +106 -7
- package/dist/account.d.ts +41 -2
- package/dist/account.js +36 -2
- package/dist/cell.d.ts +14 -0
- package/dist/cell.js +2 -0
- package/dist/client.d.ts +86 -2
- package/dist/client.js +148 -0
- package/dist/codex-proof.d.ts +53 -0
- package/dist/codex-proof.js +200 -0
- package/dist/errors.d.ts +1 -1
- package/dist/generated/app-api.d.ts +2137 -412
- package/dist/generated/cell-api.d.ts +6 -0
- package/dist/http.d.ts +1 -1
- package/dist/http.js +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.js +3 -1
- package/dist/ports.d.ts +117 -0
- package/dist/ports.js +62 -0
- package/dist/progress.d.ts +11 -7
- package/dist/progress.js +2 -0
- package/dist/tools.d.ts +8 -0
- package/dist/tools.js +20 -0
- package/dist/workspace.d.ts +26 -1
- package/dist/workspace.js +35 -0
- package/package.json +1 -1
|
@@ -125,8 +125,8 @@ export interface paths {
|
|
|
125
125
|
cookie?: never;
|
|
126
126
|
};
|
|
127
127
|
/**
|
|
128
|
-
* Public keys (JWKS) for verifying ES256 workspace tool tokens
|
|
129
|
-
* @description Consumed by the cell gateway. Tokens carry `kid
|
|
128
|
+
* Public keys (JWKS) for verifying ES256 workspace tool tokens and port tokens
|
|
129
|
+
* @description Consumed by the cell gateway. Tokens carry `kid`. Tool tokens live at most 15 min; port tokens (`sfp_` + JWS, aud shardflux-ports, contracts §39.3) at most 1 day (bearer) or 7 days (link): keep a rotated-out key in TOOL_TOKEN_KMS_VERIFY_KEYS for 7 days.
|
|
130
130
|
*/
|
|
131
131
|
get: operations["getV1WellKnownToolTokenKeys"];
|
|
132
132
|
put?: never;
|
|
@@ -602,6 +602,46 @@ export interface paths {
|
|
|
602
602
|
patch?: never;
|
|
603
603
|
trace?: never;
|
|
604
604
|
};
|
|
605
|
+
"/v1/auth/signup": {
|
|
606
|
+
parameters: {
|
|
607
|
+
query?: never;
|
|
608
|
+
header?: never;
|
|
609
|
+
path?: never;
|
|
610
|
+
cookie?: never;
|
|
611
|
+
};
|
|
612
|
+
get?: never;
|
|
613
|
+
put?: never;
|
|
614
|
+
/**
|
|
615
|
+
* Sign up from an agent, without a browser or an email round-trip
|
|
616
|
+
* @description Returns a CLI session at once. With `codex_id_token` (a Codex CLI login, contracts §44.2) the email is verified and the request signs in to the account of that ChatGPT identity or email, creating it when there is none (201 when created, 200 when it signed in; `mfa_required` when the account has TOTP). With `email` only, a new unverified account is created (201) with `access: provisional` (resource routes on the default plan before verification) or `verification_required`; an address that already has an account is 409 conflict, details.reason `email_registered`. Verify later with POST /v1/auth/verify-email/code.
|
|
617
|
+
*/
|
|
618
|
+
post: operations["postV1AuthSignup"];
|
|
619
|
+
delete?: never;
|
|
620
|
+
options?: never;
|
|
621
|
+
head?: never;
|
|
622
|
+
patch?: never;
|
|
623
|
+
trace?: never;
|
|
624
|
+
};
|
|
625
|
+
"/v1/auth/verify-email/code": {
|
|
626
|
+
parameters: {
|
|
627
|
+
query?: never;
|
|
628
|
+
header?: never;
|
|
629
|
+
path?: never;
|
|
630
|
+
cookie?: never;
|
|
631
|
+
};
|
|
632
|
+
get?: never;
|
|
633
|
+
put?: never;
|
|
634
|
+
/**
|
|
635
|
+
* Verify the email with a 6-digit code
|
|
636
|
+
* @description Without `code`: emails a 6-digit code to the account address (202; valid 15 minutes, once; a new one ends the previous). With `code`: verifies the address (200). The code proves that whoever holds this session reads the inbox, so nothing is signed out; the signup trial is granted when it applies. 5 wrong attempts end a code: 400 token_invalid.
|
|
637
|
+
*/
|
|
638
|
+
post: operations["postV1AuthVerifyEmailCode"];
|
|
639
|
+
delete?: never;
|
|
640
|
+
options?: never;
|
|
641
|
+
head?: never;
|
|
642
|
+
patch?: never;
|
|
643
|
+
trace?: never;
|
|
644
|
+
};
|
|
605
645
|
"/v1/auth/login": {
|
|
606
646
|
parameters: {
|
|
607
647
|
query?: never;
|
|
@@ -724,7 +764,7 @@ export interface paths {
|
|
|
724
764
|
put?: never;
|
|
725
765
|
/**
|
|
726
766
|
* Re-authenticate for sensitive actions
|
|
727
|
-
* @description Password, plus a TOTP or recovery code when MFA is enabled. Rotates the session; valid for STEP_UP_WINDOW_SECONDS.
|
|
767
|
+
* @description Password, or a Codex identity proof (`codex_id_token`) of a Codex login linked to the account (contracts §44.2), plus a TOTP or recovery code when MFA is enabled. Rotates the session; valid for STEP_UP_WINDOW_SECONDS.
|
|
728
768
|
*/
|
|
729
769
|
post: operations["postV1AuthStepUp"];
|
|
730
770
|
delete?: never;
|
|
@@ -1553,6 +1593,26 @@ export interface paths {
|
|
|
1553
1593
|
patch?: never;
|
|
1554
1594
|
trace?: never;
|
|
1555
1595
|
};
|
|
1596
|
+
"/v1/workspaces/{workspace_id}/caps": {
|
|
1597
|
+
parameters: {
|
|
1598
|
+
query?: never;
|
|
1599
|
+
header?: never;
|
|
1600
|
+
path?: never;
|
|
1601
|
+
cookie?: never;
|
|
1602
|
+
};
|
|
1603
|
+
get?: never;
|
|
1604
|
+
put?: never;
|
|
1605
|
+
post?: never;
|
|
1606
|
+
delete?: never;
|
|
1607
|
+
options?: never;
|
|
1608
|
+
head?: never;
|
|
1609
|
+
/**
|
|
1610
|
+
* Resize a workspace: memory, its allocation mode, CPU and disk, running or suspended
|
|
1611
|
+
* @description Changes the caps of any workspace, fixed or elastic, running or suspended, without restarting or forking it. Each given field replaces the stored one (omitted fields keep theirs); every later start uses the new caps. Each value is bounded like caps at open: by the plan’s per-workspace maximum and the template’s limit (`limit_reason` plan or template). A running workspace changes live where it can (memory plugged or unplugged, CPU within its boot vCPUs, disk grown online); a suspended one gets the change right after its next resume, before the first call; what cannot apply now says `applies_at: next_start` and applies at the next start. The request is held until the resize finishes, up to `Prefer: wait=<seconds>` (default 20, at most 55): 200 ResizeResult (per resource: `applies_at` now | resume | next_start, requested, target, previous and applied values, `limit_reason`, `reason`) with the workspace caps; otherwise 202 with the `resize` operation, whose `result` carries the same per-resource fields when it succeeds. A resize that fails answers with its error. Errors (nothing changes): 409 conflict reason resize_not_available (not enabled for the organization), workspace_deleted, operation_in_progress (another lifecycle operation is active; details.active_operation_id, retryable); 422 validation_failed reason not_supported_for_mode (file-first workspace), shrink_not_supported (disk_gib below the current disk; details.current_disk_gib), requires_elastic (memory_mib_held without an elastic mode), exceeds_memory_mib (memory_mib_held above the maximum), allocation_mode_not_available (elastic memory is not available to the organization); 402 as for a start (no plan, new starts on hold). Owners, admins and members, and API keys with a tool permission. Supports Idempotency-Key.
|
|
1612
|
+
*/
|
|
1613
|
+
patch: operations["patchV1WorkspacesWorkspaceIdCaps"];
|
|
1614
|
+
trace?: never;
|
|
1615
|
+
};
|
|
1556
1616
|
"/v1/workspaces/{workspace_id}/suspend-when-idle": {
|
|
1557
1617
|
parameters: {
|
|
1558
1618
|
query?: never;
|
|
@@ -1946,6 +2006,26 @@ export interface paths {
|
|
|
1946
2006
|
patch?: never;
|
|
1947
2007
|
trace?: never;
|
|
1948
2008
|
};
|
|
2009
|
+
"/api/v1/workspaces/{workspace_id}/caps": {
|
|
2010
|
+
parameters: {
|
|
2011
|
+
query?: never;
|
|
2012
|
+
header?: never;
|
|
2013
|
+
path?: never;
|
|
2014
|
+
cookie?: never;
|
|
2015
|
+
};
|
|
2016
|
+
get?: never;
|
|
2017
|
+
put?: never;
|
|
2018
|
+
post?: never;
|
|
2019
|
+
delete?: never;
|
|
2020
|
+
options?: never;
|
|
2021
|
+
head?: never;
|
|
2022
|
+
/**
|
|
2023
|
+
* Resize a workspace: memory, its allocation mode, CPU and disk, running or suspended
|
|
2024
|
+
* @description Changes the caps of any workspace, fixed or elastic, running or suspended, without restarting or forking it. Each given field replaces the stored one (omitted fields keep theirs); every later start uses the new caps. Each value is bounded like caps at open: by the plan’s per-workspace maximum and the template’s limit (`limit_reason` plan or template). A running workspace changes live where it can (memory plugged or unplugged, CPU within its boot vCPUs, disk grown online); a suspended one gets the change right after its next resume, before the first call; what cannot apply now says `applies_at: next_start` and applies at the next start. The request is held until the resize finishes, up to `Prefer: wait=<seconds>` (default 20, at most 55): 200 ResizeResult (per resource: `applies_at` now | resume | next_start, requested, target, previous and applied values, `limit_reason`, `reason`) with the workspace caps; otherwise 202 with the `resize` operation, whose `result` carries the same per-resource fields when it succeeds. A resize that fails answers with its error. Errors (nothing changes): 409 conflict reason resize_not_available (not enabled for the organization), workspace_deleted, operation_in_progress (another lifecycle operation is active; details.active_operation_id, retryable); 422 validation_failed reason not_supported_for_mode (file-first workspace), shrink_not_supported (disk_gib below the current disk; details.current_disk_gib), requires_elastic (memory_mib_held without an elastic mode), exceeds_memory_mib (memory_mib_held above the maximum), allocation_mode_not_available (elastic memory is not available to the organization); 402 as for a start (no plan, new starts on hold). Owners, admins and members, and API keys with a tool permission. Supports Idempotency-Key.
|
|
2025
|
+
*/
|
|
2026
|
+
patch: operations["patchApiV1WorkspacesWorkspaceIdCaps"];
|
|
2027
|
+
trace?: never;
|
|
2028
|
+
};
|
|
1949
2029
|
"/api/v1/workspaces/{workspace_id}/suspend-when-idle": {
|
|
1950
2030
|
parameters: {
|
|
1951
2031
|
query?: never;
|
|
@@ -2161,6 +2241,242 @@ export interface paths {
|
|
|
2161
2241
|
patch?: never;
|
|
2162
2242
|
trace?: never;
|
|
2163
2243
|
};
|
|
2244
|
+
"/v1/workspaces/{workspace_id}/ports/{port}": {
|
|
2245
|
+
parameters: {
|
|
2246
|
+
query?: never;
|
|
2247
|
+
header?: never;
|
|
2248
|
+
path?: never;
|
|
2249
|
+
cookie?: never;
|
|
2250
|
+
};
|
|
2251
|
+
get?: never;
|
|
2252
|
+
/**
|
|
2253
|
+
* Expose a port of the workspace at its own HTTPS URL
|
|
2254
|
+
* @description Serves TCP `port` inside the workspace at `https://<port>-<handle>.<ingress domain>` (contracts §39.3). The port is private: every request needs a port token (POST …/tokens), a signed link (POST …/links) or the port’s callback URL (POST …/callback). A request to a suspended workspace resumes it and is held until it runs; a parked one wakes inside the request. 201 when exposed now, 200 when it already was (unchanged: its tokens, links and callback URL stay valid). The handle is the workspace’s for good (kept when ports are closed and exposed again, across suspend, resume and reset; a fork gets none). At most 10 exposed ports: 409 conflict details.reason port_limit (details.limit 10). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2255
|
+
*/
|
|
2256
|
+
put: operations["putV1WorkspacesWorkspaceIdPortsPort"];
|
|
2257
|
+
post?: never;
|
|
2258
|
+
/**
|
|
2259
|
+
* Close an exposed port
|
|
2260
|
+
* @description 204, also when the port was not exposed. Its tokens, links and callback URL stop working at once (the gateway caches for at most 5 s), and stay revoked if the port is exposed again. The workspace keeps its URL handle. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2261
|
+
*/
|
|
2262
|
+
delete: operations["deleteV1WorkspacesWorkspaceIdPortsPort"];
|
|
2263
|
+
options?: never;
|
|
2264
|
+
head?: never;
|
|
2265
|
+
patch?: never;
|
|
2266
|
+
trace?: never;
|
|
2267
|
+
};
|
|
2268
|
+
"/v1/workspaces/{workspace_id}/ports": {
|
|
2269
|
+
parameters: {
|
|
2270
|
+
query?: never;
|
|
2271
|
+
header?: never;
|
|
2272
|
+
path?: never;
|
|
2273
|
+
cookie?: never;
|
|
2274
|
+
};
|
|
2275
|
+
/**
|
|
2276
|
+
* List the workspace’s exposed ports
|
|
2277
|
+
* @description Ordered by port. `callback` is set when the port has a callback URL (its secret is never shown again). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2278
|
+
*/
|
|
2279
|
+
get: operations["getV1WorkspacesWorkspaceIdPorts"];
|
|
2280
|
+
put?: never;
|
|
2281
|
+
post?: never;
|
|
2282
|
+
delete?: never;
|
|
2283
|
+
options?: never;
|
|
2284
|
+
head?: never;
|
|
2285
|
+
patch?: never;
|
|
2286
|
+
trace?: never;
|
|
2287
|
+
};
|
|
2288
|
+
"/v1/workspaces/{workspace_id}/ports/{port}/tokens": {
|
|
2289
|
+
parameters: {
|
|
2290
|
+
query?: never;
|
|
2291
|
+
header?: never;
|
|
2292
|
+
path?: never;
|
|
2293
|
+
cookie?: never;
|
|
2294
|
+
};
|
|
2295
|
+
get?: never;
|
|
2296
|
+
put?: never;
|
|
2297
|
+
/**
|
|
2298
|
+
* Mint a port token for an exposed port
|
|
2299
|
+
* @description A bearer token for requests to the port’s URL: `Authorization: Bearer <token>` (or `X-Shardflux-Token: <token>` when the app uses Authorization itself). `sfp_` + an ES256 JWS (claims iss, aud `shardflux-ports`, sub, pty, org, prj, ws, port, pxid, use `bearer`, iat, exp, jti; keys at GET /v1/.well-known/tool-token-keys). Revoked by closing the port, deleting the workspace, revoking the API key that minted it, or the minting member’s removal or role change. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2300
|
+
*/
|
|
2301
|
+
post: operations["postV1WorkspacesWorkspaceIdPortsPortTokens"];
|
|
2302
|
+
delete?: never;
|
|
2303
|
+
options?: never;
|
|
2304
|
+
head?: never;
|
|
2305
|
+
patch?: never;
|
|
2306
|
+
trace?: never;
|
|
2307
|
+
};
|
|
2308
|
+
"/v1/workspaces/{workspace_id}/ports/{port}/links": {
|
|
2309
|
+
parameters: {
|
|
2310
|
+
query?: never;
|
|
2311
|
+
header?: never;
|
|
2312
|
+
path?: never;
|
|
2313
|
+
cookie?: never;
|
|
2314
|
+
};
|
|
2315
|
+
get?: never;
|
|
2316
|
+
put?: never;
|
|
2317
|
+
/**
|
|
2318
|
+
* Create a signed link that opens an exposed port in a browser
|
|
2319
|
+
* @description Opening the link sets a session cookie for the port’s host (HttpOnly, Secure, until `expires_at`) and redirects to `path`, so a person can use the app in a browser without a header. Share it like a password: anyone with the link can open the port until it expires. Revoked like a port token (closing the port, deleting the workspace, revoking the minting API key). 422 validation_failed details.field path for a path that does not start with one `/` or has characters other than printable ASCII. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2320
|
+
*/
|
|
2321
|
+
post: operations["postV1WorkspacesWorkspaceIdPortsPortLinks"];
|
|
2322
|
+
delete?: never;
|
|
2323
|
+
options?: never;
|
|
2324
|
+
head?: never;
|
|
2325
|
+
patch?: never;
|
|
2326
|
+
trace?: never;
|
|
2327
|
+
};
|
|
2328
|
+
"/v1/workspaces/{workspace_id}/ports/{port}/callback": {
|
|
2329
|
+
parameters: {
|
|
2330
|
+
query?: never;
|
|
2331
|
+
header?: never;
|
|
2332
|
+
path?: never;
|
|
2333
|
+
cookie?: never;
|
|
2334
|
+
};
|
|
2335
|
+
get?: never;
|
|
2336
|
+
put?: never;
|
|
2337
|
+
/**
|
|
2338
|
+
* Create or replace the port’s callback URL (webhooks, OAuth redirects)
|
|
2339
|
+
* @description A URL with a secret in its path that reaches the port without a token header: register `<url><your path>` with GitHub, Slack, Stripe or an OAuth provider; a request to `/__shardflux/callback/<secret>/<rest>` reaches `/<rest>` (query kept) and wakes the workspace like any request. Creating it again replaces it (the previous URL stops working). The secret is shown only in this response (stored as a SHA-256 hash). Revoke it with DELETE, by closing the port, or by deleting the workspace; it also stops waking the workspace when its creator can no longer manage the workspace. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2340
|
+
*/
|
|
2341
|
+
post: operations["postV1WorkspacesWorkspaceIdPortsPortCallback"];
|
|
2342
|
+
/**
|
|
2343
|
+
* Revoke the port’s callback URL
|
|
2344
|
+
* @description 204, also when the port has no callback URL. The URL stops working at once (the gateway caches for at most 5 s). 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2345
|
+
*/
|
|
2346
|
+
delete: operations["deleteV1WorkspacesWorkspaceIdPortsPortCallback"];
|
|
2347
|
+
options?: never;
|
|
2348
|
+
head?: never;
|
|
2349
|
+
patch?: never;
|
|
2350
|
+
trace?: never;
|
|
2351
|
+
};
|
|
2352
|
+
"/api/v1/workspaces/{workspace_id}/ports/{port}": {
|
|
2353
|
+
parameters: {
|
|
2354
|
+
query?: never;
|
|
2355
|
+
header?: never;
|
|
2356
|
+
path?: never;
|
|
2357
|
+
cookie?: never;
|
|
2358
|
+
};
|
|
2359
|
+
get?: never;
|
|
2360
|
+
/**
|
|
2361
|
+
* Expose a port of the workspace at its own HTTPS URL
|
|
2362
|
+
* @description Serves TCP `port` inside the workspace at `https://<port>-<handle>.<ingress domain>` (contracts §39.3). The port is private: every request needs a port token (POST …/tokens), a signed link (POST …/links) or the port’s callback URL (POST …/callback). A request to a suspended workspace resumes it and is held until it runs; a parked one wakes inside the request. 201 when exposed now, 200 when it already was (unchanged: its tokens, links and callback URL stay valid). The handle is the workspace’s for good (kept when ports are closed and exposed again, across suspend, resume and reset; a fork gets none). At most 10 exposed ports: 409 conflict details.reason port_limit (details.limit 10). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2363
|
+
*/
|
|
2364
|
+
put: operations["putApiV1WorkspacesWorkspaceIdPortsPort"];
|
|
2365
|
+
post?: never;
|
|
2366
|
+
/**
|
|
2367
|
+
* Close an exposed port
|
|
2368
|
+
* @description 204, also when the port was not exposed. Its tokens, links and callback URL stop working at once (the gateway caches for at most 5 s), and stay revoked if the port is exposed again. The workspace keeps its URL handle. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2369
|
+
*/
|
|
2370
|
+
delete: operations["deleteApiV1WorkspacesWorkspaceIdPortsPort"];
|
|
2371
|
+
options?: never;
|
|
2372
|
+
head?: never;
|
|
2373
|
+
patch?: never;
|
|
2374
|
+
trace?: never;
|
|
2375
|
+
};
|
|
2376
|
+
"/api/v1/workspaces/{workspace_id}/ports": {
|
|
2377
|
+
parameters: {
|
|
2378
|
+
query?: never;
|
|
2379
|
+
header?: never;
|
|
2380
|
+
path?: never;
|
|
2381
|
+
cookie?: never;
|
|
2382
|
+
};
|
|
2383
|
+
/**
|
|
2384
|
+
* List the workspace’s exposed ports
|
|
2385
|
+
* @description Ordered by port. `callback` is set when the port has a callback URL (its secret is never shown again). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2386
|
+
*/
|
|
2387
|
+
get: operations["getApiV1WorkspacesWorkspaceIdPorts"];
|
|
2388
|
+
put?: never;
|
|
2389
|
+
post?: never;
|
|
2390
|
+
delete?: never;
|
|
2391
|
+
options?: never;
|
|
2392
|
+
head?: never;
|
|
2393
|
+
patch?: never;
|
|
2394
|
+
trace?: never;
|
|
2395
|
+
};
|
|
2396
|
+
"/api/v1/workspaces/{workspace_id}/ports/{port}/tokens": {
|
|
2397
|
+
parameters: {
|
|
2398
|
+
query?: never;
|
|
2399
|
+
header?: never;
|
|
2400
|
+
path?: never;
|
|
2401
|
+
cookie?: never;
|
|
2402
|
+
};
|
|
2403
|
+
get?: never;
|
|
2404
|
+
put?: never;
|
|
2405
|
+
/**
|
|
2406
|
+
* Mint a port token for an exposed port
|
|
2407
|
+
* @description A bearer token for requests to the port’s URL: `Authorization: Bearer <token>` (or `X-Shardflux-Token: <token>` when the app uses Authorization itself). `sfp_` + an ES256 JWS (claims iss, aud `shardflux-ports`, sub, pty, org, prj, ws, port, pxid, use `bearer`, iat, exp, jti; keys at GET /v1/.well-known/tool-token-keys). Revoked by closing the port, deleting the workspace, revoking the API key that minted it, or the minting member’s removal or role change. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2408
|
+
*/
|
|
2409
|
+
post: operations["postApiV1WorkspacesWorkspaceIdPortsPortTokens"];
|
|
2410
|
+
delete?: never;
|
|
2411
|
+
options?: never;
|
|
2412
|
+
head?: never;
|
|
2413
|
+
patch?: never;
|
|
2414
|
+
trace?: never;
|
|
2415
|
+
};
|
|
2416
|
+
"/api/v1/workspaces/{workspace_id}/ports/{port}/links": {
|
|
2417
|
+
parameters: {
|
|
2418
|
+
query?: never;
|
|
2419
|
+
header?: never;
|
|
2420
|
+
path?: never;
|
|
2421
|
+
cookie?: never;
|
|
2422
|
+
};
|
|
2423
|
+
get?: never;
|
|
2424
|
+
put?: never;
|
|
2425
|
+
/**
|
|
2426
|
+
* Create a signed link that opens an exposed port in a browser
|
|
2427
|
+
* @description Opening the link sets a session cookie for the port’s host (HttpOnly, Secure, until `expires_at`) and redirects to `path`, so a person can use the app in a browser without a header. Share it like a password: anyone with the link can open the port until it expires. Revoked like a port token (closing the port, deleting the workspace, revoking the minting API key). 422 validation_failed details.field path for a path that does not start with one `/` or has characters other than printable ASCII. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2428
|
+
*/
|
|
2429
|
+
post: operations["postApiV1WorkspacesWorkspaceIdPortsPortLinks"];
|
|
2430
|
+
delete?: never;
|
|
2431
|
+
options?: never;
|
|
2432
|
+
head?: never;
|
|
2433
|
+
patch?: never;
|
|
2434
|
+
trace?: never;
|
|
2435
|
+
};
|
|
2436
|
+
"/api/v1/workspaces/{workspace_id}/ports/{port}/callback": {
|
|
2437
|
+
parameters: {
|
|
2438
|
+
query?: never;
|
|
2439
|
+
header?: never;
|
|
2440
|
+
path?: never;
|
|
2441
|
+
cookie?: never;
|
|
2442
|
+
};
|
|
2443
|
+
get?: never;
|
|
2444
|
+
put?: never;
|
|
2445
|
+
/**
|
|
2446
|
+
* Create or replace the port’s callback URL (webhooks, OAuth redirects)
|
|
2447
|
+
* @description A URL with a secret in its path that reaches the port without a token header: register `<url><your path>` with GitHub, Slack, Stripe or an OAuth provider; a request to `/__shardflux/callback/<secret>/<rest>` reaches `/<rest>` (query kept) and wakes the workspace like any request. Creating it again replaces it (the previous URL stops working). The secret is shown only in this response (stored as a SHA-256 hash). Revoke it with DELETE, by closing the port, or by deleting the workspace; it also stops waking the workspace when its creator can no longer manage the workspace. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2448
|
+
*/
|
|
2449
|
+
post: operations["postApiV1WorkspacesWorkspaceIdPortsPortCallback"];
|
|
2450
|
+
/**
|
|
2451
|
+
* Revoke the port’s callback URL
|
|
2452
|
+
* @description 204, also when the port has no callback URL. The URL stops working at once (the gateway caches for at most 5 s). 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
|
|
2453
|
+
*/
|
|
2454
|
+
delete: operations["deleteApiV1WorkspacesWorkspaceIdPortsPortCallback"];
|
|
2455
|
+
options?: never;
|
|
2456
|
+
head?: never;
|
|
2457
|
+
patch?: never;
|
|
2458
|
+
trace?: never;
|
|
2459
|
+
};
|
|
2460
|
+
"/v1/internal/port-wakes": {
|
|
2461
|
+
parameters: {
|
|
2462
|
+
query?: never;
|
|
2463
|
+
header?: never;
|
|
2464
|
+
path?: never;
|
|
2465
|
+
cookie?: never;
|
|
2466
|
+
};
|
|
2467
|
+
get?: never;
|
|
2468
|
+
put?: never;
|
|
2469
|
+
/**
|
|
2470
|
+
* Wake a workspace for an inbound port request (called by the cell gateway)
|
|
2471
|
+
* @description Contracts §39.3. The credential is the ingress request’s port token, forwarded unchanged as `Authorization: Bearer sfp_…` (`use` bearer or link), or the callback URL’s secret in `callback_secret`. The API verifies it as the gateway does: ES256 with its own keys, iss, aud shardflux-ports, iat/exp, workspace and port of the token (403 port_token_scope), the port exposed (404 port_not_exposed) under the token’s exposure (`pxid`), the revocation watermarks of the minting principal and the workspace and the minting API key (401 port_token_revoked), or the callback secret’s SHA-256 and its creator’s lifecycle permission (401 callback_invalid); then the organization’s `policy.inbound_ports` (403 inbound_ports_not_enabled). A deleted workspace is 404 unknown_host. It then resumes the workspace as that principal exactly like POST /v1/workspaces/{id}/resume (joins an active resume/open, recovers a failed workspace with an open, refuses with its admission errors, which the gateway passes through), audited workspace.resume with details.via inbound_port. With `Prefer: wait=<seconds>` (at most 20) it holds like a held resume: 200 {workspace, operation} once the operation succeeded, 202 with the operation otherwise (also without the preference). A running workspace answers 200 at once with operation null. 401 port_auth_required (no credential), port_token_invalid; 429 rate_limited per workspace. `Cache-Control: no-store`.
|
|
2472
|
+
*/
|
|
2473
|
+
post: operations["postV1InternalPortWakes"];
|
|
2474
|
+
delete?: never;
|
|
2475
|
+
options?: never;
|
|
2476
|
+
head?: never;
|
|
2477
|
+
patch?: never;
|
|
2478
|
+
trace?: never;
|
|
2479
|
+
};
|
|
2164
2480
|
"/v1/projects/{project_id}/volumes": {
|
|
2165
2481
|
parameters: {
|
|
2166
2482
|
query?: never;
|
|
@@ -5524,6 +5840,30 @@ export interface paths {
|
|
|
5524
5840
|
patch?: never;
|
|
5525
5841
|
trace?: never;
|
|
5526
5842
|
};
|
|
5843
|
+
"/api/v1/oauth/authorization": {
|
|
5844
|
+
parameters: {
|
|
5845
|
+
query?: never;
|
|
5846
|
+
header?: never;
|
|
5847
|
+
path?: never;
|
|
5848
|
+
cookie?: never;
|
|
5849
|
+
};
|
|
5850
|
+
/**
|
|
5851
|
+
* Describe a hosted MCP connection request (consent page)
|
|
5852
|
+
* @description Validates an authorization request for the hosted MCP endpoint and returns the client, where the browser goes afterwards and the projects the user may connect. 422 `validation_failed` (details.oauth_error) when the client or its redirect_uri cannot be trusted; otherwise a request with another problem still describes the client, and the POST answers it with the OAuth error.
|
|
5853
|
+
*/
|
|
5854
|
+
get: operations["getApiV1OauthAuthorization"];
|
|
5855
|
+
put?: never;
|
|
5856
|
+
/**
|
|
5857
|
+
* Approve or decline a hosted MCP connection request
|
|
5858
|
+
* @description approve (with project_id, a project where the user is owner or admin) creates the connection: a project API key named "<client> (MCP connector)" with every tool permission, held by Shardflux for the client, and a single-use authorization code (5 minutes). deny sends access_denied. Either way the answer is redirect_to, where the browser goes next.
|
|
5859
|
+
*/
|
|
5860
|
+
post: operations["postApiV1OauthAuthorization"];
|
|
5861
|
+
delete?: never;
|
|
5862
|
+
options?: never;
|
|
5863
|
+
head?: never;
|
|
5864
|
+
patch?: never;
|
|
5865
|
+
trace?: never;
|
|
5866
|
+
};
|
|
5527
5867
|
}
|
|
5528
5868
|
export type webhooks = Record<string, never>;
|
|
5529
5869
|
export interface components {
|
|
@@ -6750,6 +7090,102 @@ export interface components {
|
|
|
6750
7090
|
*/
|
|
6751
7091
|
not_before: string;
|
|
6752
7092
|
};
|
|
7093
|
+
/** @description At least one field. Each given value replaces the stored one; omitted fields keep theirs. */
|
|
7094
|
+
ResizeWorkspaceBody: {
|
|
7095
|
+
/** @description Memory (MiB): the size of a fixed workspace, the maximum of an elastic one. Bounded by the plan and the template (`limit_reason`). */
|
|
7096
|
+
memory_mib?: number;
|
|
7097
|
+
/** @description Elastic only: the memory held while idle (MiB), at most the maximum. */
|
|
7098
|
+
memory_mib_held?: number;
|
|
7099
|
+
/**
|
|
7100
|
+
* @description fixed: memory_mib is plugged and held; elastic: the workspace holds memory_mib_held and grows to memory_mib when a command needs it.
|
|
7101
|
+
* @enum {string}
|
|
7102
|
+
*/
|
|
7103
|
+
allocation_mode?: "fixed" | "elastic";
|
|
7104
|
+
/** @description CPU (millicores). Bounded by the plan and the template. */
|
|
7105
|
+
cpu_millis?: number;
|
|
7106
|
+
/** @description Disk (GiB). Grow only. Bounded by the plan and the template. */
|
|
7107
|
+
disk_gib?: number;
|
|
7108
|
+
};
|
|
7109
|
+
/** @description Per resource the request named (allocation_mode and memory_mib_held report under memory): what applied now and what applies later. caps: the workspace caps every later start uses. */
|
|
7110
|
+
ResizeResult: {
|
|
7111
|
+
/**
|
|
7112
|
+
* Format: uuid
|
|
7113
|
+
* @description UUIDv7, lowercase canonical form.
|
|
7114
|
+
*/
|
|
7115
|
+
workspace_id: string;
|
|
7116
|
+
/**
|
|
7117
|
+
* Format: uuid
|
|
7118
|
+
* @description UUIDv7, lowercase canonical form.
|
|
7119
|
+
*/
|
|
7120
|
+
operation_id: string;
|
|
7121
|
+
/** @description The workspace state the resize found (running, suspended, ...). */
|
|
7122
|
+
state: string;
|
|
7123
|
+
memory?: {
|
|
7124
|
+
/**
|
|
7125
|
+
* @description now: live; resume: right after the next resume, before its first call; next_start: at the next start that boots the workspace.
|
|
7126
|
+
* @enum {string}
|
|
7127
|
+
*/
|
|
7128
|
+
applies_at: "now" | "resume" | "next_start";
|
|
7129
|
+
/**
|
|
7130
|
+
* @description The memory layout after the resize.
|
|
7131
|
+
* @enum {string}
|
|
7132
|
+
*/
|
|
7133
|
+
allocation_mode: "fixed" | "elastic";
|
|
7134
|
+
requested_mib: number | null;
|
|
7135
|
+
target_mib: number | null;
|
|
7136
|
+
previous_mib: number | null;
|
|
7137
|
+
applied_mib: number | null;
|
|
7138
|
+
held_mib: number | null;
|
|
7139
|
+
converged: boolean | null;
|
|
7140
|
+
/** @description Why the target or the applied value is below what was requested: plan or template (bounded like caps at open), host_capacity (the rest did not fit on the host at once), shrink_stalled (the guest kept the memory its processes use). */
|
|
7141
|
+
limit_reason: ("plan" | "template" | "host_capacity" | "shrink_stalled") | null;
|
|
7142
|
+
/** @description Why it does not apply now (null when it does). */
|
|
7143
|
+
reason: ("region" | "below_base" | "legacy_layout" | "boot_vcpus" | "suspended" | "stopped") | null;
|
|
7144
|
+
};
|
|
7145
|
+
cpu?: {
|
|
7146
|
+
/**
|
|
7147
|
+
* @description now: live; resume: right after the next resume, before its first call; next_start: at the next start that boots the workspace.
|
|
7148
|
+
* @enum {string}
|
|
7149
|
+
*/
|
|
7150
|
+
applies_at: "now" | "resume" | "next_start";
|
|
7151
|
+
requested_millis: number | null;
|
|
7152
|
+
target_millis: number | null;
|
|
7153
|
+
previous_millis: number | null;
|
|
7154
|
+
applied_millis: number | null;
|
|
7155
|
+
/** @description Why the target or the applied value is below what was requested: plan or template (bounded like caps at open), host_capacity (the rest did not fit on the host at once), shrink_stalled (the guest kept the memory its processes use). */
|
|
7156
|
+
limit_reason: ("plan" | "template" | "host_capacity" | "shrink_stalled") | null;
|
|
7157
|
+
/** @description Why it does not apply now (null when it does). */
|
|
7158
|
+
reason: ("region" | "below_base" | "legacy_layout" | "boot_vcpus" | "suspended" | "stopped") | null;
|
|
7159
|
+
};
|
|
7160
|
+
disk?: {
|
|
7161
|
+
/**
|
|
7162
|
+
* @description now: live; resume: right after the next resume, before its first call; next_start: at the next start that boots the workspace.
|
|
7163
|
+
* @enum {string}
|
|
7164
|
+
*/
|
|
7165
|
+
applies_at: "now" | "resume" | "next_start";
|
|
7166
|
+
requested_gib: number | null;
|
|
7167
|
+
target_gib: number | null;
|
|
7168
|
+
previous_gib: number | null;
|
|
7169
|
+
applied_gib: number | null;
|
|
7170
|
+
/** @description Why the target or the applied value is below what was requested: plan or template (bounded like caps at open), host_capacity (the rest did not fit on the host at once), shrink_stalled (the guest kept the memory its processes use). */
|
|
7171
|
+
limit_reason: ("plan" | "template" | "host_capacity" | "shrink_stalled") | null;
|
|
7172
|
+
/** @description Why it does not apply now (null when it does). */
|
|
7173
|
+
reason: ("region" | "below_base" | "legacy_layout" | "boot_vcpus" | "suspended" | "stopped") | null;
|
|
7174
|
+
};
|
|
7175
|
+
/** @description User caps for this workspace (null = no user restriction) and its memory allocation mode. */
|
|
7176
|
+
caps: {
|
|
7177
|
+
cpu_millis: number | null;
|
|
7178
|
+
memory_mib: number | null;
|
|
7179
|
+
disk_gib: number | null;
|
|
7180
|
+
/**
|
|
7181
|
+
* @description Memory allocation (contracts §32): fixed (default) boots memory_mib and holds it; elastic holds memory_mib_held while idle and is grown up to memory_mib (the promise) when a command needs it. The mode the next VM start uses: an elastic request whose promise does not exceed the held floor by at least 512 MiB is fixed at the promise.
|
|
7182
|
+
* @enum {string}
|
|
7183
|
+
*/
|
|
7184
|
+
allocation_mode: "fixed" | "elastic";
|
|
7185
|
+
/** @description Elastic only: the memory held while idle (MiB). */
|
|
7186
|
+
memory_mib_held?: number;
|
|
7187
|
+
};
|
|
7188
|
+
};
|
|
6753
7189
|
Workspace: {
|
|
6754
7190
|
/**
|
|
6755
7191
|
* Format: uuid
|
|
@@ -6953,6 +7389,25 @@ export interface components {
|
|
|
6953
7389
|
tools: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
|
|
6954
7390
|
cell_endpoint: string;
|
|
6955
7391
|
};
|
|
7392
|
+
/** @description An exposed port of a workspace (contracts §39.3). Private: every request needs a credential. */
|
|
7393
|
+
Port: {
|
|
7394
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
7395
|
+
port: number;
|
|
7396
|
+
/** @description https://<port>-<handle>.<ingress domain>: requests need a port token (Authorization: Bearer sfp_…), a signed link’s cookie, or the callback URL. */
|
|
7397
|
+
url: string;
|
|
7398
|
+
/**
|
|
7399
|
+
* Format: date-time
|
|
7400
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
7401
|
+
*/
|
|
7402
|
+
created_at: string;
|
|
7403
|
+
callback: {
|
|
7404
|
+
/**
|
|
7405
|
+
* Format: date-time
|
|
7406
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
7407
|
+
*/
|
|
7408
|
+
created_at: string;
|
|
7409
|
+
} | null;
|
|
7410
|
+
};
|
|
6956
7411
|
Volume: {
|
|
6957
7412
|
/**
|
|
6958
7413
|
* Format: uuid
|
|
@@ -7131,6 +7586,39 @@ export interface components {
|
|
|
7131
7586
|
/** @description When the charges reach the effective cap at the average burn of this period so far. Null when not accruing or when it would fall after resets_at. */
|
|
7132
7587
|
projected_reached_at: string | null;
|
|
7133
7588
|
};
|
|
7589
|
+
OAuthConsentView: {
|
|
7590
|
+
client: {
|
|
7591
|
+
client_id: string;
|
|
7592
|
+
/** @description client_name from its registration or metadata document. Self-declared: show it with redirect_host. */
|
|
7593
|
+
name: string;
|
|
7594
|
+
uri: string | null;
|
|
7595
|
+
logo_uri: string | null;
|
|
7596
|
+
/** @description `metadata_document`: client_id is an https URL its owner serves (the host is verified by that); `registered`: dynamic client registration. */
|
|
7597
|
+
kind: "registered" | "metadata_document";
|
|
7598
|
+
client_id_host: string | null;
|
|
7599
|
+
};
|
|
7600
|
+
/** @description Where the browser goes after the decision (host, or scheme://host for a native app). */
|
|
7601
|
+
redirect_host: string;
|
|
7602
|
+
scope: string;
|
|
7603
|
+
/** @description The MCP endpoint the client will be able to use. */
|
|
7604
|
+
resource: string;
|
|
7605
|
+
/** @description Projects the user may connect (owner or admin of the organization), by organization then project name; at most 200. */
|
|
7606
|
+
projects: {
|
|
7607
|
+
/**
|
|
7608
|
+
* Format: uuid
|
|
7609
|
+
* @description UUIDv7, lowercase canonical form.
|
|
7610
|
+
*/
|
|
7611
|
+
organization_id: string;
|
|
7612
|
+
organization_name: string;
|
|
7613
|
+
/**
|
|
7614
|
+
* Format: uuid
|
|
7615
|
+
* @description UUIDv7, lowercase canonical form.
|
|
7616
|
+
*/
|
|
7617
|
+
project_id: string;
|
|
7618
|
+
project_name: string;
|
|
7619
|
+
role: "owner" | "admin";
|
|
7620
|
+
}[];
|
|
7621
|
+
};
|
|
7134
7622
|
};
|
|
7135
7623
|
responses: never;
|
|
7136
7624
|
parameters: never;
|
|
@@ -8678,7 +9166,7 @@ export interface operations {
|
|
|
8678
9166
|
};
|
|
8679
9167
|
};
|
|
8680
9168
|
};
|
|
8681
|
-
|
|
9169
|
+
postV1AuthSignup: {
|
|
8682
9170
|
parameters: {
|
|
8683
9171
|
query?: never;
|
|
8684
9172
|
header?: never;
|
|
@@ -8689,9 +9177,10 @@ export interface operations {
|
|
|
8689
9177
|
content: {
|
|
8690
9178
|
"application/json": {
|
|
8691
9179
|
/** @description Email address. */
|
|
8692
|
-
email
|
|
8693
|
-
|
|
8694
|
-
|
|
9180
|
+
email?: string;
|
|
9181
|
+
display_name?: string;
|
|
9182
|
+
/** @description The OpenAI ID token of a Codex CLI login (`tokens.id_token` in `~/.codex/auth.json`, refreshed by Codex within CODEX_PROOF_MAX_AGE_SECONDS). Proves a verified email; it is not a credential to OpenAI. */
|
|
9183
|
+
codex_id_token?: string;
|
|
8695
9184
|
};
|
|
8696
9185
|
};
|
|
8697
9186
|
};
|
|
@@ -8704,6 +9193,43 @@ export interface operations {
|
|
|
8704
9193
|
content: {
|
|
8705
9194
|
"application/json": {
|
|
8706
9195
|
status: "authenticated" | "mfa_required";
|
|
9196
|
+
/** @description True when this request created the account; false: it signed in to an existing one (a Codex proof only). */
|
|
9197
|
+
created: boolean;
|
|
9198
|
+
/** @description verified: the email is verified (a Codex proof, or verified before). provisional: unverified, and the account may use resource routes on its default plan now; the signup trial comes when the email is verified. verification_required: unverified, and resource routes answer 403 email_unverified until POST /v1/auth/verify-email/code. */
|
|
9199
|
+
access: "verified" | "provisional" | "verification_required";
|
|
9200
|
+
user: {
|
|
9201
|
+
/**
|
|
9202
|
+
* Format: uuid
|
|
9203
|
+
* @description UUIDv7, lowercase canonical form.
|
|
9204
|
+
*/
|
|
9205
|
+
id: string;
|
|
9206
|
+
email: string;
|
|
9207
|
+
email_verified: boolean;
|
|
9208
|
+
display_name: string | null;
|
|
9209
|
+
mfa_enabled: boolean;
|
|
9210
|
+
} | null;
|
|
9211
|
+
/** @description The session: send `Authorization: Bearer <session_token>` from now on (a previous token of this session is revoked). */
|
|
9212
|
+
session_token: string;
|
|
9213
|
+
/**
|
|
9214
|
+
* Format: date-time
|
|
9215
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
9216
|
+
*/
|
|
9217
|
+
session_expires_at: string;
|
|
9218
|
+
};
|
|
9219
|
+
};
|
|
9220
|
+
};
|
|
9221
|
+
/** @description Default Response */
|
|
9222
|
+
201: {
|
|
9223
|
+
headers: {
|
|
9224
|
+
[name: string]: unknown;
|
|
9225
|
+
};
|
|
9226
|
+
content: {
|
|
9227
|
+
"application/json": {
|
|
9228
|
+
status: "authenticated" | "mfa_required";
|
|
9229
|
+
/** @description True when this request created the account; false: it signed in to an existing one (a Codex proof only). */
|
|
9230
|
+
created: boolean;
|
|
9231
|
+
/** @description verified: the email is verified (a Codex proof, or verified before). provisional: unverified, and the account may use resource routes on its default plan now; the signup trial comes when the email is verified. verification_required: unverified, and resource routes answer 403 email_unverified until POST /v1/auth/verify-email/code. */
|
|
9232
|
+
access: "verified" | "provisional" | "verification_required";
|
|
8707
9233
|
user: {
|
|
8708
9234
|
/**
|
|
8709
9235
|
* Format: uuid
|
|
@@ -8745,7 +9271,7 @@ export interface operations {
|
|
|
8745
9271
|
};
|
|
8746
9272
|
};
|
|
8747
9273
|
};
|
|
8748
|
-
|
|
9274
|
+
postV1AuthVerifyEmailCode: {
|
|
8749
9275
|
parameters: {
|
|
8750
9276
|
query?: never;
|
|
8751
9277
|
header?: never;
|
|
@@ -8755,10 +9281,8 @@ export interface operations {
|
|
|
8755
9281
|
requestBody: {
|
|
8756
9282
|
content: {
|
|
8757
9283
|
"application/json": {
|
|
8758
|
-
/** @description
|
|
9284
|
+
/** @description The 6-digit code from the email. */
|
|
8759
9285
|
code?: string;
|
|
8760
|
-
/** @description One-time recovery code. */
|
|
8761
|
-
recovery_code?: string;
|
|
8762
9286
|
};
|
|
8763
9287
|
};
|
|
8764
9288
|
};
|
|
@@ -8770,25 +9294,20 @@ export interface operations {
|
|
|
8770
9294
|
};
|
|
8771
9295
|
content: {
|
|
8772
9296
|
"application/json": {
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
|
|
8785
|
-
/** @
|
|
8786
|
-
|
|
8787
|
-
/**
|
|
8788
|
-
* Format: date-time
|
|
8789
|
-
* @description RFC 3339 UTC timestamp with Z.
|
|
8790
|
-
*/
|
|
8791
|
-
session_expires_at: string;
|
|
9297
|
+
/** @enum {string} */
|
|
9298
|
+
status: "verified";
|
|
9299
|
+
};
|
|
9300
|
+
};
|
|
9301
|
+
};
|
|
9302
|
+
/** @description Default Response */
|
|
9303
|
+
202: {
|
|
9304
|
+
headers: {
|
|
9305
|
+
[name: string]: unknown;
|
|
9306
|
+
};
|
|
9307
|
+
content: {
|
|
9308
|
+
"application/json": {
|
|
9309
|
+
/** @enum {string} */
|
|
9310
|
+
status: "accepted";
|
|
8792
9311
|
};
|
|
8793
9312
|
};
|
|
8794
9313
|
};
|
|
@@ -8812,21 +9331,52 @@ export interface operations {
|
|
|
8812
9331
|
};
|
|
8813
9332
|
};
|
|
8814
9333
|
};
|
|
8815
|
-
|
|
9334
|
+
postV1AuthLogin: {
|
|
8816
9335
|
parameters: {
|
|
8817
9336
|
query?: never;
|
|
8818
9337
|
header?: never;
|
|
8819
9338
|
path?: never;
|
|
8820
9339
|
cookie?: never;
|
|
8821
9340
|
};
|
|
8822
|
-
requestBody
|
|
9341
|
+
requestBody: {
|
|
9342
|
+
content: {
|
|
9343
|
+
"application/json": {
|
|
9344
|
+
/** @description Email address. */
|
|
9345
|
+
email: string;
|
|
9346
|
+
/** @description Password (12-256 characters). */
|
|
9347
|
+
password: string;
|
|
9348
|
+
};
|
|
9349
|
+
};
|
|
9350
|
+
};
|
|
8823
9351
|
responses: {
|
|
8824
|
-
/** @description
|
|
8825
|
-
|
|
9352
|
+
/** @description Default Response */
|
|
9353
|
+
200: {
|
|
8826
9354
|
headers: {
|
|
8827
9355
|
[name: string]: unknown;
|
|
8828
9356
|
};
|
|
8829
|
-
content
|
|
9357
|
+
content: {
|
|
9358
|
+
"application/json": {
|
|
9359
|
+
status: "authenticated" | "mfa_required";
|
|
9360
|
+
user: {
|
|
9361
|
+
/**
|
|
9362
|
+
* Format: uuid
|
|
9363
|
+
* @description UUIDv7, lowercase canonical form.
|
|
9364
|
+
*/
|
|
9365
|
+
id: string;
|
|
9366
|
+
email: string;
|
|
9367
|
+
email_verified: boolean;
|
|
9368
|
+
display_name: string | null;
|
|
9369
|
+
mfa_enabled: boolean;
|
|
9370
|
+
} | null;
|
|
9371
|
+
/** @description The session: send `Authorization: Bearer <session_token>` from now on (a previous token of this session is revoked). */
|
|
9372
|
+
session_token: string;
|
|
9373
|
+
/**
|
|
9374
|
+
* Format: date-time
|
|
9375
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
9376
|
+
*/
|
|
9377
|
+
session_expires_at: string;
|
|
9378
|
+
};
|
|
9379
|
+
};
|
|
8830
9380
|
};
|
|
8831
9381
|
/** @description Default Response */
|
|
8832
9382
|
"4XX": {
|
|
@@ -8848,21 +9398,52 @@ export interface operations {
|
|
|
8848
9398
|
};
|
|
8849
9399
|
};
|
|
8850
9400
|
};
|
|
8851
|
-
|
|
9401
|
+
postV1AuthMfaChallenge: {
|
|
8852
9402
|
parameters: {
|
|
8853
9403
|
query?: never;
|
|
8854
9404
|
header?: never;
|
|
8855
9405
|
path?: never;
|
|
8856
9406
|
cookie?: never;
|
|
8857
9407
|
};
|
|
8858
|
-
requestBody
|
|
9408
|
+
requestBody: {
|
|
9409
|
+
content: {
|
|
9410
|
+
"application/json": {
|
|
9411
|
+
/** @description Current 6-digit TOTP code. */
|
|
9412
|
+
code?: string;
|
|
9413
|
+
/** @description One-time recovery code. */
|
|
9414
|
+
recovery_code?: string;
|
|
9415
|
+
};
|
|
9416
|
+
};
|
|
9417
|
+
};
|
|
8859
9418
|
responses: {
|
|
8860
|
-
/** @description
|
|
8861
|
-
|
|
9419
|
+
/** @description Default Response */
|
|
9420
|
+
200: {
|
|
8862
9421
|
headers: {
|
|
8863
9422
|
[name: string]: unknown;
|
|
8864
9423
|
};
|
|
8865
|
-
content
|
|
9424
|
+
content: {
|
|
9425
|
+
"application/json": {
|
|
9426
|
+
status: "authenticated" | "mfa_required";
|
|
9427
|
+
user: {
|
|
9428
|
+
/**
|
|
9429
|
+
* Format: uuid
|
|
9430
|
+
* @description UUIDv7, lowercase canonical form.
|
|
9431
|
+
*/
|
|
9432
|
+
id: string;
|
|
9433
|
+
email: string;
|
|
9434
|
+
email_verified: boolean;
|
|
9435
|
+
display_name: string | null;
|
|
9436
|
+
mfa_enabled: boolean;
|
|
9437
|
+
} | null;
|
|
9438
|
+
/** @description The session: send `Authorization: Bearer <session_token>` from now on (a previous token of this session is revoked). */
|
|
9439
|
+
session_token: string;
|
|
9440
|
+
/**
|
|
9441
|
+
* Format: date-time
|
|
9442
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
9443
|
+
*/
|
|
9444
|
+
session_expires_at: string;
|
|
9445
|
+
};
|
|
9446
|
+
};
|
|
8866
9447
|
};
|
|
8867
9448
|
/** @description Default Response */
|
|
8868
9449
|
"4XX": {
|
|
@@ -8884,7 +9465,7 @@ export interface operations {
|
|
|
8884
9465
|
};
|
|
8885
9466
|
};
|
|
8886
9467
|
};
|
|
8887
|
-
|
|
9468
|
+
postV1AuthLogout: {
|
|
8888
9469
|
parameters: {
|
|
8889
9470
|
query?: never;
|
|
8890
9471
|
header?: never;
|
|
@@ -8893,44 +9474,116 @@ export interface operations {
|
|
|
8893
9474
|
};
|
|
8894
9475
|
requestBody?: never;
|
|
8895
9476
|
responses: {
|
|
8896
|
-
/** @description
|
|
8897
|
-
|
|
9477
|
+
/** @description No content. */
|
|
9478
|
+
204: {
|
|
8898
9479
|
headers: {
|
|
8899
9480
|
[name: string]: unknown;
|
|
8900
9481
|
};
|
|
8901
|
-
content
|
|
8902
|
-
|
|
8903
|
-
|
|
8904
|
-
|
|
8905
|
-
|
|
8906
|
-
|
|
8907
|
-
|
|
8908
|
-
|
|
8909
|
-
|
|
8910
|
-
|
|
8911
|
-
|
|
8912
|
-
|
|
8913
|
-
|
|
8914
|
-
|
|
8915
|
-
|
|
8916
|
-
|
|
8917
|
-
|
|
8918
|
-
|
|
8919
|
-
|
|
8920
|
-
|
|
8921
|
-
|
|
8922
|
-
|
|
8923
|
-
|
|
8924
|
-
|
|
8925
|
-
|
|
8926
|
-
|
|
8927
|
-
|
|
8928
|
-
|
|
8929
|
-
|
|
8930
|
-
|
|
8931
|
-
|
|
8932
|
-
|
|
8933
|
-
|
|
9482
|
+
content?: never;
|
|
9483
|
+
};
|
|
9484
|
+
/** @description Default Response */
|
|
9485
|
+
"4XX": {
|
|
9486
|
+
headers: {
|
|
9487
|
+
[name: string]: unknown;
|
|
9488
|
+
};
|
|
9489
|
+
content: {
|
|
9490
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
9491
|
+
};
|
|
9492
|
+
};
|
|
9493
|
+
/** @description Default Response */
|
|
9494
|
+
"5XX": {
|
|
9495
|
+
headers: {
|
|
9496
|
+
[name: string]: unknown;
|
|
9497
|
+
};
|
|
9498
|
+
content: {
|
|
9499
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
9500
|
+
};
|
|
9501
|
+
};
|
|
9502
|
+
};
|
|
9503
|
+
};
|
|
9504
|
+
postV1AuthLogoutAll: {
|
|
9505
|
+
parameters: {
|
|
9506
|
+
query?: never;
|
|
9507
|
+
header?: never;
|
|
9508
|
+
path?: never;
|
|
9509
|
+
cookie?: never;
|
|
9510
|
+
};
|
|
9511
|
+
requestBody?: never;
|
|
9512
|
+
responses: {
|
|
9513
|
+
/** @description No content. */
|
|
9514
|
+
204: {
|
|
9515
|
+
headers: {
|
|
9516
|
+
[name: string]: unknown;
|
|
9517
|
+
};
|
|
9518
|
+
content?: never;
|
|
9519
|
+
};
|
|
9520
|
+
/** @description Default Response */
|
|
9521
|
+
"4XX": {
|
|
9522
|
+
headers: {
|
|
9523
|
+
[name: string]: unknown;
|
|
9524
|
+
};
|
|
9525
|
+
content: {
|
|
9526
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
9527
|
+
};
|
|
9528
|
+
};
|
|
9529
|
+
/** @description Default Response */
|
|
9530
|
+
"5XX": {
|
|
9531
|
+
headers: {
|
|
9532
|
+
[name: string]: unknown;
|
|
9533
|
+
};
|
|
9534
|
+
content: {
|
|
9535
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
9536
|
+
};
|
|
9537
|
+
};
|
|
9538
|
+
};
|
|
9539
|
+
};
|
|
9540
|
+
getV1AuthSessions: {
|
|
9541
|
+
parameters: {
|
|
9542
|
+
query?: never;
|
|
9543
|
+
header?: never;
|
|
9544
|
+
path?: never;
|
|
9545
|
+
cookie?: never;
|
|
9546
|
+
};
|
|
9547
|
+
requestBody?: never;
|
|
9548
|
+
responses: {
|
|
9549
|
+
/** @description Default Response */
|
|
9550
|
+
200: {
|
|
9551
|
+
headers: {
|
|
9552
|
+
[name: string]: unknown;
|
|
9553
|
+
};
|
|
9554
|
+
content: {
|
|
9555
|
+
"application/json": {
|
|
9556
|
+
data: {
|
|
9557
|
+
/**
|
|
9558
|
+
* Format: uuid
|
|
9559
|
+
* @description UUIDv7, lowercase canonical form.
|
|
9560
|
+
*/
|
|
9561
|
+
id: string;
|
|
9562
|
+
current: boolean;
|
|
9563
|
+
aal: number;
|
|
9564
|
+
/**
|
|
9565
|
+
* Format: date-time
|
|
9566
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
9567
|
+
*/
|
|
9568
|
+
created_at: string;
|
|
9569
|
+
/**
|
|
9570
|
+
* Format: date-time
|
|
9571
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
9572
|
+
*/
|
|
9573
|
+
last_seen_at: string;
|
|
9574
|
+
/**
|
|
9575
|
+
* Format: date-time
|
|
9576
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
9577
|
+
*/
|
|
9578
|
+
absolute_expires_at: string;
|
|
9579
|
+
client_ip: string | null;
|
|
9580
|
+
user_agent: string | null;
|
|
9581
|
+
/** @description browser: a web app sign-in; cli: `shard auth login` or an SDK account client (contracts §30.1). */
|
|
9582
|
+
client: "browser" | "cli";
|
|
9583
|
+
}[];
|
|
9584
|
+
next_cursor: null;
|
|
9585
|
+
};
|
|
9586
|
+
};
|
|
8934
9587
|
};
|
|
8935
9588
|
/** @description Default Response */
|
|
8936
9589
|
"4XX": {
|
|
@@ -9002,7 +9655,9 @@ export interface operations {
|
|
|
9002
9655
|
content: {
|
|
9003
9656
|
"application/json": {
|
|
9004
9657
|
/** @description Password (12-256 characters). */
|
|
9005
|
-
password
|
|
9658
|
+
password?: string;
|
|
9659
|
+
/** @description The OpenAI ID token of a Codex CLI login (`tokens.id_token` in `~/.codex/auth.json`, refreshed by Codex within CODEX_PROOF_MAX_AGE_SECONDS). Proves a verified email; it is not a credential to OpenAI. */
|
|
9660
|
+
codex_id_token?: string;
|
|
9006
9661
|
/** @description Current 6-digit TOTP code. */
|
|
9007
9662
|
code?: string;
|
|
9008
9663
|
/** @description One-time recovery code. */
|
|
@@ -11626,14 +12281,13 @@ export interface operations {
|
|
|
11626
12281
|
};
|
|
11627
12282
|
/** @description Template slug; new workspaces use its latest published version. */
|
|
11628
12283
|
template: string;
|
|
11629
|
-
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction
|
|
12284
|
+
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction. Given caps replace the stored ones (a reopen keeps an elastic workspace’s mode when elastic is the organization’s default and allocation_mode is omitted). */
|
|
11630
12285
|
caps?: {
|
|
11631
12286
|
cpu_millis?: number;
|
|
11632
12287
|
memory_mib?: number;
|
|
11633
12288
|
disk_gib?: number;
|
|
11634
12289
|
/**
|
|
11635
|
-
* @description Memory allocation (contracts §32): fixed
|
|
11636
|
-
* @default fixed
|
|
12290
|
+
* @description Memory allocation (contracts §32): fixed boots memory_mib and holds it; elastic makes memory_mib a promise: the VM holds memory_mib_held while idle and is grown towards the promise when a command needs it. Needs the elastic memory entitlement (422 details.reason allocation_mode_not_available). A promise that does not exceed the held floor by at least 512 MiB is fixed at the promise (the response caps say which). Omitted: fixed, or elastic where that is the organization’s default (a reopen then keeps the stored mode). Takes effect at the next VM start.
|
|
11637
12291
|
* @enum {string}
|
|
11638
12292
|
*/
|
|
11639
12293
|
allocation_mode?: "fixed" | "elastic";
|
|
@@ -12216,103 +12870,11 @@ export interface operations {
|
|
|
12216
12870
|
};
|
|
12217
12871
|
};
|
|
12218
12872
|
};
|
|
12219
|
-
|
|
12220
|
-
parameters: {
|
|
12221
|
-
query?: never;
|
|
12222
|
-
header?: never;
|
|
12223
|
-
path: {
|
|
12224
|
-
/** @description UUIDv7, lowercase canonical form. */
|
|
12225
|
-
workspace_id: string;
|
|
12226
|
-
};
|
|
12227
|
-
cookie?: never;
|
|
12228
|
-
};
|
|
12229
|
-
requestBody: {
|
|
12230
|
-
content: {
|
|
12231
|
-
"application/json": {
|
|
12232
|
-
/** @description Seconds from now the workspace must stay idle before it is suspended (0..3600; 0 = as soon as it is idle). */
|
|
12233
|
-
after_seconds: number;
|
|
12234
|
-
};
|
|
12235
|
-
};
|
|
12236
|
-
};
|
|
12237
|
-
responses: {
|
|
12238
|
-
/** @description suspend_request: the recorded request. operation: set (and suspend_request null) only when a suspend was already in progress. */
|
|
12239
|
-
202: {
|
|
12240
|
-
headers: {
|
|
12241
|
-
[name: string]: unknown;
|
|
12242
|
-
};
|
|
12243
|
-
content: {
|
|
12244
|
-
"application/json": {
|
|
12245
|
-
workspace: components["schemas"]["Workspace"];
|
|
12246
|
-
operation: components["schemas"]["Operation"] | null;
|
|
12247
|
-
suspend_request: components["schemas"]["SuspendRequest"] | null;
|
|
12248
|
-
};
|
|
12249
|
-
};
|
|
12250
|
-
};
|
|
12251
|
-
/** @description Default Response */
|
|
12252
|
-
"4XX": {
|
|
12253
|
-
headers: {
|
|
12254
|
-
[name: string]: unknown;
|
|
12255
|
-
};
|
|
12256
|
-
content: {
|
|
12257
|
-
"application/json": components["schemas"]["ErrorBody"];
|
|
12258
|
-
};
|
|
12259
|
-
};
|
|
12260
|
-
/** @description Default Response */
|
|
12261
|
-
"5XX": {
|
|
12262
|
-
headers: {
|
|
12263
|
-
[name: string]: unknown;
|
|
12264
|
-
};
|
|
12265
|
-
content: {
|
|
12266
|
-
"application/json": components["schemas"]["ErrorBody"];
|
|
12267
|
-
};
|
|
12268
|
-
};
|
|
12269
|
-
};
|
|
12270
|
-
};
|
|
12271
|
-
deleteV1WorkspacesWorkspaceIdSuspendWhenIdle: {
|
|
12272
|
-
parameters: {
|
|
12273
|
-
query?: never;
|
|
12274
|
-
header?: never;
|
|
12275
|
-
path: {
|
|
12276
|
-
/** @description UUIDv7, lowercase canonical form. */
|
|
12277
|
-
workspace_id: string;
|
|
12278
|
-
};
|
|
12279
|
-
cookie?: never;
|
|
12280
|
-
};
|
|
12281
|
-
requestBody?: never;
|
|
12282
|
-
responses: {
|
|
12283
|
-
/** @description Default Response */
|
|
12284
|
-
200: {
|
|
12285
|
-
headers: {
|
|
12286
|
-
[name: string]: unknown;
|
|
12287
|
-
};
|
|
12288
|
-
content: {
|
|
12289
|
-
"application/json": components["schemas"]["Workspace"];
|
|
12290
|
-
};
|
|
12291
|
-
};
|
|
12292
|
-
/** @description Default Response */
|
|
12293
|
-
"4XX": {
|
|
12294
|
-
headers: {
|
|
12295
|
-
[name: string]: unknown;
|
|
12296
|
-
};
|
|
12297
|
-
content: {
|
|
12298
|
-
"application/json": components["schemas"]["ErrorBody"];
|
|
12299
|
-
};
|
|
12300
|
-
};
|
|
12301
|
-
/** @description Default Response */
|
|
12302
|
-
"5XX": {
|
|
12303
|
-
headers: {
|
|
12304
|
-
[name: string]: unknown;
|
|
12305
|
-
};
|
|
12306
|
-
content: {
|
|
12307
|
-
"application/json": components["schemas"]["ErrorBody"];
|
|
12308
|
-
};
|
|
12309
|
-
};
|
|
12310
|
-
};
|
|
12311
|
-
};
|
|
12312
|
-
postV1WorkspacesWorkspaceIdFork: {
|
|
12873
|
+
patchV1WorkspacesWorkspaceIdCaps: {
|
|
12313
12874
|
parameters: {
|
|
12314
12875
|
query?: never;
|
|
12315
12876
|
header?: {
|
|
12877
|
+
/** @description RFC 7240 preference, e.g. `wait=30` (at most 55; default 20). */
|
|
12316
12878
|
prefer?: string;
|
|
12317
12879
|
};
|
|
12318
12880
|
path: {
|
|
@@ -12323,48 +12885,17 @@ export interface operations {
|
|
|
12323
12885
|
};
|
|
12324
12886
|
requestBody: {
|
|
12325
12887
|
content: {
|
|
12326
|
-
"application/json":
|
|
12327
|
-
/** @description Stable workspace key, unique per organization (e.g. `${customerId}/${projectId}`). */
|
|
12328
|
-
key: string;
|
|
12329
|
-
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction (allocation_mode: fixed). Given caps replace the stored ones. */
|
|
12330
|
-
caps?: {
|
|
12331
|
-
cpu_millis?: number;
|
|
12332
|
-
memory_mib?: number;
|
|
12333
|
-
disk_gib?: number;
|
|
12334
|
-
/**
|
|
12335
|
-
* @description Memory allocation (contracts §32): fixed (default) boots memory_mib and holds it; elastic makes memory_mib a promise: the VM holds memory_mib_held while idle and is grown towards the promise when a command needs it. Needs the elastic memory entitlement (422 details.reason allocation_mode_not_available). A promise that does not exceed the held floor by at least 512 MiB is fixed at the promise (the response caps say which). Takes effect at the next VM start.
|
|
12336
|
-
* @default fixed
|
|
12337
|
-
* @enum {string}
|
|
12338
|
-
*/
|
|
12339
|
-
allocation_mode?: "fixed" | "elastic";
|
|
12340
|
-
/** @description Elastic only: memory held while idle (MiB, default 1024, at most memory_mib). */
|
|
12341
|
-
memory_mib_held?: number;
|
|
12342
|
-
};
|
|
12343
|
-
lifetime?: components["schemas"]["WorkspaceLifetime"];
|
|
12344
|
-
/** @description Attribution label; one agent session per (workspace, principal, label). */
|
|
12345
|
-
agent_label?: string;
|
|
12346
|
-
tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
|
|
12347
|
-
};
|
|
12888
|
+
"application/json": components["schemas"]["ResizeWorkspaceBody"];
|
|
12348
12889
|
};
|
|
12349
12890
|
};
|
|
12350
12891
|
responses: {
|
|
12351
|
-
/** @description
|
|
12892
|
+
/** @description Per resource the request named (allocation_mode and memory_mib_held report under memory): what applied now and what applies later. caps: the workspace caps every later start uses. */
|
|
12352
12893
|
200: {
|
|
12353
12894
|
headers: {
|
|
12354
12895
|
[name: string]: unknown;
|
|
12355
12896
|
};
|
|
12356
12897
|
content: {
|
|
12357
|
-
"application/json":
|
|
12358
|
-
operation: components["schemas"]["Operation"];
|
|
12359
|
-
workspace: components["schemas"]["Workspace"];
|
|
12360
|
-
/**
|
|
12361
|
-
* Format: uuid
|
|
12362
|
-
* @description UUIDv7, lowercase canonical form.
|
|
12363
|
-
*/
|
|
12364
|
-
source_workspace_id: string;
|
|
12365
|
-
cell_endpoint: string | null;
|
|
12366
|
-
tool_token: components["schemas"]["ToolToken"] | null;
|
|
12367
|
-
};
|
|
12898
|
+
"application/json": components["schemas"]["ResizeResult"];
|
|
12368
12899
|
};
|
|
12369
12900
|
};
|
|
12370
12901
|
/** @description Default Response */
|
|
@@ -12376,11 +12907,6 @@ export interface operations {
|
|
|
12376
12907
|
"application/json": {
|
|
12377
12908
|
operation: components["schemas"]["Operation"];
|
|
12378
12909
|
workspace: components["schemas"]["Workspace"];
|
|
12379
|
-
/**
|
|
12380
|
-
* Format: uuid
|
|
12381
|
-
* @description UUIDv7, lowercase canonical form.
|
|
12382
|
-
*/
|
|
12383
|
-
source_workspace_id: string;
|
|
12384
12910
|
};
|
|
12385
12911
|
};
|
|
12386
12912
|
};
|
|
@@ -12404,7 +12930,7 @@ export interface operations {
|
|
|
12404
12930
|
};
|
|
12405
12931
|
};
|
|
12406
12932
|
};
|
|
12407
|
-
|
|
12933
|
+
postV1WorkspacesWorkspaceIdSuspendWhenIdle: {
|
|
12408
12934
|
parameters: {
|
|
12409
12935
|
query?: never;
|
|
12410
12936
|
header?: never;
|
|
@@ -12414,17 +12940,25 @@ export interface operations {
|
|
|
12414
12940
|
};
|
|
12415
12941
|
cookie?: never;
|
|
12416
12942
|
};
|
|
12417
|
-
requestBody
|
|
12943
|
+
requestBody: {
|
|
12944
|
+
content: {
|
|
12945
|
+
"application/json": {
|
|
12946
|
+
/** @description Seconds from now the workspace must stay idle before it is suspended (0..3600; 0 = as soon as it is idle). */
|
|
12947
|
+
after_seconds: number;
|
|
12948
|
+
};
|
|
12949
|
+
};
|
|
12950
|
+
};
|
|
12418
12951
|
responses: {
|
|
12419
|
-
/** @description
|
|
12952
|
+
/** @description suspend_request: the recorded request. operation: set (and suspend_request null) only when a suspend was already in progress. */
|
|
12420
12953
|
202: {
|
|
12421
12954
|
headers: {
|
|
12422
12955
|
[name: string]: unknown;
|
|
12423
12956
|
};
|
|
12424
12957
|
content: {
|
|
12425
12958
|
"application/json": {
|
|
12426
|
-
operation: components["schemas"]["Operation"];
|
|
12427
12959
|
workspace: components["schemas"]["Workspace"];
|
|
12960
|
+
operation: components["schemas"]["Operation"] | null;
|
|
12961
|
+
suspend_request: components["schemas"]["SuspendRequest"] | null;
|
|
12428
12962
|
};
|
|
12429
12963
|
};
|
|
12430
12964
|
};
|
|
@@ -12448,7 +12982,7 @@ export interface operations {
|
|
|
12448
12982
|
};
|
|
12449
12983
|
};
|
|
12450
12984
|
};
|
|
12451
|
-
|
|
12985
|
+
deleteV1WorkspacesWorkspaceIdSuspendWhenIdle: {
|
|
12452
12986
|
parameters: {
|
|
12453
12987
|
query?: never;
|
|
12454
12988
|
header?: never;
|
|
@@ -12458,22 +12992,201 @@ export interface operations {
|
|
|
12458
12992
|
};
|
|
12459
12993
|
cookie?: never;
|
|
12460
12994
|
};
|
|
12461
|
-
requestBody
|
|
12462
|
-
content: {
|
|
12463
|
-
"application/json": components["schemas"]["ResetWorkspaceBody"];
|
|
12464
|
-
};
|
|
12465
|
-
};
|
|
12995
|
+
requestBody?: never;
|
|
12466
12996
|
responses: {
|
|
12467
12997
|
/** @description Default Response */
|
|
12468
|
-
|
|
12998
|
+
200: {
|
|
12469
12999
|
headers: {
|
|
12470
13000
|
[name: string]: unknown;
|
|
12471
13001
|
};
|
|
12472
13002
|
content: {
|
|
12473
|
-
"application/json":
|
|
12474
|
-
|
|
12475
|
-
|
|
12476
|
-
|
|
13003
|
+
"application/json": components["schemas"]["Workspace"];
|
|
13004
|
+
};
|
|
13005
|
+
};
|
|
13006
|
+
/** @description Default Response */
|
|
13007
|
+
"4XX": {
|
|
13008
|
+
headers: {
|
|
13009
|
+
[name: string]: unknown;
|
|
13010
|
+
};
|
|
13011
|
+
content: {
|
|
13012
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
13013
|
+
};
|
|
13014
|
+
};
|
|
13015
|
+
/** @description Default Response */
|
|
13016
|
+
"5XX": {
|
|
13017
|
+
headers: {
|
|
13018
|
+
[name: string]: unknown;
|
|
13019
|
+
};
|
|
13020
|
+
content: {
|
|
13021
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
13022
|
+
};
|
|
13023
|
+
};
|
|
13024
|
+
};
|
|
13025
|
+
};
|
|
13026
|
+
postV1WorkspacesWorkspaceIdFork: {
|
|
13027
|
+
parameters: {
|
|
13028
|
+
query?: never;
|
|
13029
|
+
header?: {
|
|
13030
|
+
prefer?: string;
|
|
13031
|
+
};
|
|
13032
|
+
path: {
|
|
13033
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
13034
|
+
workspace_id: string;
|
|
13035
|
+
};
|
|
13036
|
+
cookie?: never;
|
|
13037
|
+
};
|
|
13038
|
+
requestBody: {
|
|
13039
|
+
content: {
|
|
13040
|
+
"application/json": {
|
|
13041
|
+
/** @description Stable workspace key, unique per organization (e.g. `${customerId}/${projectId}`). */
|
|
13042
|
+
key: string;
|
|
13043
|
+
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction. Given caps replace the stored ones (a reopen keeps an elastic workspace’s mode when elastic is the organization’s default and allocation_mode is omitted). */
|
|
13044
|
+
caps?: {
|
|
13045
|
+
cpu_millis?: number;
|
|
13046
|
+
memory_mib?: number;
|
|
13047
|
+
disk_gib?: number;
|
|
13048
|
+
/**
|
|
13049
|
+
* @description Memory allocation (contracts §32): fixed boots memory_mib and holds it; elastic makes memory_mib a promise: the VM holds memory_mib_held while idle and is grown towards the promise when a command needs it. Needs the elastic memory entitlement (422 details.reason allocation_mode_not_available). A promise that does not exceed the held floor by at least 512 MiB is fixed at the promise (the response caps say which). Omitted: fixed, or elastic where that is the organization’s default (a reopen then keeps the stored mode). Takes effect at the next VM start.
|
|
13050
|
+
* @enum {string}
|
|
13051
|
+
*/
|
|
13052
|
+
allocation_mode?: "fixed" | "elastic";
|
|
13053
|
+
/** @description Elastic only: memory held while idle (MiB, default 1024, at most memory_mib). */
|
|
13054
|
+
memory_mib_held?: number;
|
|
13055
|
+
};
|
|
13056
|
+
lifetime?: components["schemas"]["WorkspaceLifetime"];
|
|
13057
|
+
/** @description Attribution label; one agent session per (workspace, principal, label). */
|
|
13058
|
+
agent_label?: string;
|
|
13059
|
+
tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
|
|
13060
|
+
};
|
|
13061
|
+
};
|
|
13062
|
+
};
|
|
13063
|
+
responses: {
|
|
13064
|
+
/** @description Default Response */
|
|
13065
|
+
200: {
|
|
13066
|
+
headers: {
|
|
13067
|
+
[name: string]: unknown;
|
|
13068
|
+
};
|
|
13069
|
+
content: {
|
|
13070
|
+
"application/json": {
|
|
13071
|
+
operation: components["schemas"]["Operation"];
|
|
13072
|
+
workspace: components["schemas"]["Workspace"];
|
|
13073
|
+
/**
|
|
13074
|
+
* Format: uuid
|
|
13075
|
+
* @description UUIDv7, lowercase canonical form.
|
|
13076
|
+
*/
|
|
13077
|
+
source_workspace_id: string;
|
|
13078
|
+
cell_endpoint: string | null;
|
|
13079
|
+
tool_token: components["schemas"]["ToolToken"] | null;
|
|
13080
|
+
};
|
|
13081
|
+
};
|
|
13082
|
+
};
|
|
13083
|
+
/** @description Default Response */
|
|
13084
|
+
202: {
|
|
13085
|
+
headers: {
|
|
13086
|
+
[name: string]: unknown;
|
|
13087
|
+
};
|
|
13088
|
+
content: {
|
|
13089
|
+
"application/json": {
|
|
13090
|
+
operation: components["schemas"]["Operation"];
|
|
13091
|
+
workspace: components["schemas"]["Workspace"];
|
|
13092
|
+
/**
|
|
13093
|
+
* Format: uuid
|
|
13094
|
+
* @description UUIDv7, lowercase canonical form.
|
|
13095
|
+
*/
|
|
13096
|
+
source_workspace_id: string;
|
|
13097
|
+
};
|
|
13098
|
+
};
|
|
13099
|
+
};
|
|
13100
|
+
/** @description Default Response */
|
|
13101
|
+
"4XX": {
|
|
13102
|
+
headers: {
|
|
13103
|
+
[name: string]: unknown;
|
|
13104
|
+
};
|
|
13105
|
+
content: {
|
|
13106
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
13107
|
+
};
|
|
13108
|
+
};
|
|
13109
|
+
/** @description Default Response */
|
|
13110
|
+
"5XX": {
|
|
13111
|
+
headers: {
|
|
13112
|
+
[name: string]: unknown;
|
|
13113
|
+
};
|
|
13114
|
+
content: {
|
|
13115
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
13116
|
+
};
|
|
13117
|
+
};
|
|
13118
|
+
};
|
|
13119
|
+
};
|
|
13120
|
+
postV1WorkspacesWorkspaceIdClose: {
|
|
13121
|
+
parameters: {
|
|
13122
|
+
query?: never;
|
|
13123
|
+
header?: never;
|
|
13124
|
+
path: {
|
|
13125
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
13126
|
+
workspace_id: string;
|
|
13127
|
+
};
|
|
13128
|
+
cookie?: never;
|
|
13129
|
+
};
|
|
13130
|
+
requestBody?: never;
|
|
13131
|
+
responses: {
|
|
13132
|
+
/** @description Default Response */
|
|
13133
|
+
202: {
|
|
13134
|
+
headers: {
|
|
13135
|
+
[name: string]: unknown;
|
|
13136
|
+
};
|
|
13137
|
+
content: {
|
|
13138
|
+
"application/json": {
|
|
13139
|
+
operation: components["schemas"]["Operation"];
|
|
13140
|
+
workspace: components["schemas"]["Workspace"];
|
|
13141
|
+
};
|
|
13142
|
+
};
|
|
13143
|
+
};
|
|
13144
|
+
/** @description Default Response */
|
|
13145
|
+
"4XX": {
|
|
13146
|
+
headers: {
|
|
13147
|
+
[name: string]: unknown;
|
|
13148
|
+
};
|
|
13149
|
+
content: {
|
|
13150
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
13151
|
+
};
|
|
13152
|
+
};
|
|
13153
|
+
/** @description Default Response */
|
|
13154
|
+
"5XX": {
|
|
13155
|
+
headers: {
|
|
13156
|
+
[name: string]: unknown;
|
|
13157
|
+
};
|
|
13158
|
+
content: {
|
|
13159
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
13160
|
+
};
|
|
13161
|
+
};
|
|
13162
|
+
};
|
|
13163
|
+
};
|
|
13164
|
+
postV1WorkspacesWorkspaceIdReset: {
|
|
13165
|
+
parameters: {
|
|
13166
|
+
query?: never;
|
|
13167
|
+
header?: never;
|
|
13168
|
+
path: {
|
|
13169
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
13170
|
+
workspace_id: string;
|
|
13171
|
+
};
|
|
13172
|
+
cookie?: never;
|
|
13173
|
+
};
|
|
13174
|
+
requestBody: {
|
|
13175
|
+
content: {
|
|
13176
|
+
"application/json": components["schemas"]["ResetWorkspaceBody"];
|
|
13177
|
+
};
|
|
13178
|
+
};
|
|
13179
|
+
responses: {
|
|
13180
|
+
/** @description Default Response */
|
|
13181
|
+
202: {
|
|
13182
|
+
headers: {
|
|
13183
|
+
[name: string]: unknown;
|
|
13184
|
+
};
|
|
13185
|
+
content: {
|
|
13186
|
+
"application/json": {
|
|
13187
|
+
operation: components["schemas"]["Operation"];
|
|
13188
|
+
workspace: components["schemas"]["Workspace"];
|
|
13189
|
+
};
|
|
12477
13190
|
};
|
|
12478
13191
|
};
|
|
12479
13192
|
/** @description Default Response */
|
|
@@ -12852,14 +13565,13 @@ export interface operations {
|
|
|
12852
13565
|
};
|
|
12853
13566
|
/** @description Template slug; new workspaces use its latest published version. */
|
|
12854
13567
|
template: string;
|
|
12855
|
-
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction
|
|
13568
|
+
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction. Given caps replace the stored ones (a reopen keeps an elastic workspace’s mode when elastic is the organization’s default and allocation_mode is omitted). */
|
|
12856
13569
|
caps?: {
|
|
12857
13570
|
cpu_millis?: number;
|
|
12858
13571
|
memory_mib?: number;
|
|
12859
13572
|
disk_gib?: number;
|
|
12860
13573
|
/**
|
|
12861
|
-
* @description Memory allocation (contracts §32): fixed
|
|
12862
|
-
* @default fixed
|
|
13574
|
+
* @description Memory allocation (contracts §32): fixed boots memory_mib and holds it; elastic makes memory_mib a promise: the VM holds memory_mib_held while idle and is grown towards the promise when a command needs it. Needs the elastic memory entitlement (422 details.reason allocation_mode_not_available). A promise that does not exceed the held floor by at least 512 MiB is fixed at the promise (the response caps say which). Omitted: fixed, or elastic where that is the organization’s default (a reopen then keeps the stored mode). Takes effect at the next VM start.
|
|
12863
13575
|
* @enum {string}
|
|
12864
13576
|
*/
|
|
12865
13577
|
allocation_mode?: "fixed" | "elastic";
|
|
@@ -13442,10 +14154,13 @@ export interface operations {
|
|
|
13442
14154
|
};
|
|
13443
14155
|
};
|
|
13444
14156
|
};
|
|
13445
|
-
|
|
14157
|
+
patchApiV1WorkspacesWorkspaceIdCaps: {
|
|
13446
14158
|
parameters: {
|
|
13447
14159
|
query?: never;
|
|
13448
|
-
header?:
|
|
14160
|
+
header?: {
|
|
14161
|
+
/** @description RFC 7240 preference, e.g. `wait=30` (at most 55; default 20). */
|
|
14162
|
+
prefer?: string;
|
|
14163
|
+
};
|
|
13449
14164
|
path: {
|
|
13450
14165
|
/** @description UUIDv7, lowercase canonical form. */
|
|
13451
14166
|
workspace_id: string;
|
|
@@ -13454,23 +14169,28 @@ export interface operations {
|
|
|
13454
14169
|
};
|
|
13455
14170
|
requestBody: {
|
|
13456
14171
|
content: {
|
|
13457
|
-
"application/json":
|
|
13458
|
-
/** @description Seconds from now the workspace must stay idle before it is suspended (0..3600; 0 = as soon as it is idle). */
|
|
13459
|
-
after_seconds: number;
|
|
13460
|
-
};
|
|
14172
|
+
"application/json": components["schemas"]["ResizeWorkspaceBody"];
|
|
13461
14173
|
};
|
|
13462
14174
|
};
|
|
13463
14175
|
responses: {
|
|
13464
|
-
/** @description
|
|
14176
|
+
/** @description Per resource the request named (allocation_mode and memory_mib_held report under memory): what applied now and what applies later. caps: the workspace caps every later start uses. */
|
|
14177
|
+
200: {
|
|
14178
|
+
headers: {
|
|
14179
|
+
[name: string]: unknown;
|
|
14180
|
+
};
|
|
14181
|
+
content: {
|
|
14182
|
+
"application/json": components["schemas"]["ResizeResult"];
|
|
14183
|
+
};
|
|
14184
|
+
};
|
|
14185
|
+
/** @description Default Response */
|
|
13465
14186
|
202: {
|
|
13466
14187
|
headers: {
|
|
13467
14188
|
[name: string]: unknown;
|
|
13468
14189
|
};
|
|
13469
14190
|
content: {
|
|
13470
14191
|
"application/json": {
|
|
14192
|
+
operation: components["schemas"]["Operation"];
|
|
13471
14193
|
workspace: components["schemas"]["Workspace"];
|
|
13472
|
-
operation: components["schemas"]["Operation"] | null;
|
|
13473
|
-
suspend_request: components["schemas"]["SuspendRequest"] | null;
|
|
13474
14194
|
};
|
|
13475
14195
|
};
|
|
13476
14196
|
};
|
|
@@ -13494,7 +14214,7 @@ export interface operations {
|
|
|
13494
14214
|
};
|
|
13495
14215
|
};
|
|
13496
14216
|
};
|
|
13497
|
-
|
|
14217
|
+
postApiV1WorkspacesWorkspaceIdSuspendWhenIdle: {
|
|
13498
14218
|
parameters: {
|
|
13499
14219
|
query?: never;
|
|
13500
14220
|
header?: never;
|
|
@@ -13504,15 +14224,26 @@ export interface operations {
|
|
|
13504
14224
|
};
|
|
13505
14225
|
cookie?: never;
|
|
13506
14226
|
};
|
|
13507
|
-
requestBody
|
|
14227
|
+
requestBody: {
|
|
14228
|
+
content: {
|
|
14229
|
+
"application/json": {
|
|
14230
|
+
/** @description Seconds from now the workspace must stay idle before it is suspended (0..3600; 0 = as soon as it is idle). */
|
|
14231
|
+
after_seconds: number;
|
|
14232
|
+
};
|
|
14233
|
+
};
|
|
14234
|
+
};
|
|
13508
14235
|
responses: {
|
|
13509
|
-
/** @description
|
|
13510
|
-
|
|
14236
|
+
/** @description suspend_request: the recorded request. operation: set (and suspend_request null) only when a suspend was already in progress. */
|
|
14237
|
+
202: {
|
|
13511
14238
|
headers: {
|
|
13512
14239
|
[name: string]: unknown;
|
|
13513
14240
|
};
|
|
13514
14241
|
content: {
|
|
13515
|
-
"application/json":
|
|
14242
|
+
"application/json": {
|
|
14243
|
+
workspace: components["schemas"]["Workspace"];
|
|
14244
|
+
operation: components["schemas"]["Operation"] | null;
|
|
14245
|
+
suspend_request: components["schemas"]["SuspendRequest"] | null;
|
|
14246
|
+
};
|
|
13516
14247
|
};
|
|
13517
14248
|
};
|
|
13518
14249
|
/** @description Default Response */
|
|
@@ -13535,44 +14266,17 @@ export interface operations {
|
|
|
13535
14266
|
};
|
|
13536
14267
|
};
|
|
13537
14268
|
};
|
|
13538
|
-
|
|
14269
|
+
deleteApiV1WorkspacesWorkspaceIdSuspendWhenIdle: {
|
|
13539
14270
|
parameters: {
|
|
13540
14271
|
query?: never;
|
|
13541
|
-
header?:
|
|
13542
|
-
prefer?: string;
|
|
13543
|
-
};
|
|
14272
|
+
header?: never;
|
|
13544
14273
|
path: {
|
|
13545
14274
|
/** @description UUIDv7, lowercase canonical form. */
|
|
13546
14275
|
workspace_id: string;
|
|
13547
14276
|
};
|
|
13548
14277
|
cookie?: never;
|
|
13549
14278
|
};
|
|
13550
|
-
requestBody
|
|
13551
|
-
content: {
|
|
13552
|
-
"application/json": {
|
|
13553
|
-
/** @description Stable workspace key, unique per organization (e.g. `${customerId}/${projectId}`). */
|
|
13554
|
-
key: string;
|
|
13555
|
-
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction (allocation_mode: fixed). Given caps replace the stored ones. */
|
|
13556
|
-
caps?: {
|
|
13557
|
-
cpu_millis?: number;
|
|
13558
|
-
memory_mib?: number;
|
|
13559
|
-
disk_gib?: number;
|
|
13560
|
-
/**
|
|
13561
|
-
* @description Memory allocation (contracts §32): fixed (default) boots memory_mib and holds it; elastic makes memory_mib a promise: the VM holds memory_mib_held while idle and is grown towards the promise when a command needs it. Needs the elastic memory entitlement (422 details.reason allocation_mode_not_available). A promise that does not exceed the held floor by at least 512 MiB is fixed at the promise (the response caps say which). Takes effect at the next VM start.
|
|
13562
|
-
* @default fixed
|
|
13563
|
-
* @enum {string}
|
|
13564
|
-
*/
|
|
13565
|
-
allocation_mode?: "fixed" | "elastic";
|
|
13566
|
-
/** @description Elastic only: memory held while idle (MiB, default 1024, at most memory_mib). */
|
|
13567
|
-
memory_mib_held?: number;
|
|
13568
|
-
};
|
|
13569
|
-
lifetime?: components["schemas"]["WorkspaceLifetime"];
|
|
13570
|
-
/** @description Attribution label; one agent session per (workspace, principal, label). */
|
|
13571
|
-
agent_label?: string;
|
|
13572
|
-
tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
|
|
13573
|
-
};
|
|
13574
|
-
};
|
|
13575
|
-
};
|
|
14279
|
+
requestBody?: never;
|
|
13576
14280
|
responses: {
|
|
13577
14281
|
/** @description Default Response */
|
|
13578
14282
|
200: {
|
|
@@ -13580,34 +14284,101 @@ export interface operations {
|
|
|
13580
14284
|
[name: string]: unknown;
|
|
13581
14285
|
};
|
|
13582
14286
|
content: {
|
|
13583
|
-
"application/json":
|
|
13584
|
-
|
|
13585
|
-
|
|
13586
|
-
|
|
13587
|
-
|
|
13588
|
-
|
|
13589
|
-
|
|
13590
|
-
|
|
13591
|
-
|
|
13592
|
-
|
|
13593
|
-
|
|
13594
|
-
|
|
13595
|
-
|
|
13596
|
-
|
|
13597
|
-
|
|
13598
|
-
|
|
13599
|
-
|
|
13600
|
-
|
|
13601
|
-
|
|
13602
|
-
|
|
13603
|
-
|
|
13604
|
-
|
|
13605
|
-
|
|
13606
|
-
|
|
13607
|
-
|
|
13608
|
-
|
|
13609
|
-
|
|
13610
|
-
|
|
14287
|
+
"application/json": components["schemas"]["Workspace"];
|
|
14288
|
+
};
|
|
14289
|
+
};
|
|
14290
|
+
/** @description Default Response */
|
|
14291
|
+
"4XX": {
|
|
14292
|
+
headers: {
|
|
14293
|
+
[name: string]: unknown;
|
|
14294
|
+
};
|
|
14295
|
+
content: {
|
|
14296
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14297
|
+
};
|
|
14298
|
+
};
|
|
14299
|
+
/** @description Default Response */
|
|
14300
|
+
"5XX": {
|
|
14301
|
+
headers: {
|
|
14302
|
+
[name: string]: unknown;
|
|
14303
|
+
};
|
|
14304
|
+
content: {
|
|
14305
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14306
|
+
};
|
|
14307
|
+
};
|
|
14308
|
+
};
|
|
14309
|
+
};
|
|
14310
|
+
postApiV1WorkspacesWorkspaceIdFork: {
|
|
14311
|
+
parameters: {
|
|
14312
|
+
query?: never;
|
|
14313
|
+
header?: {
|
|
14314
|
+
prefer?: string;
|
|
14315
|
+
};
|
|
14316
|
+
path: {
|
|
14317
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
14318
|
+
workspace_id: string;
|
|
14319
|
+
};
|
|
14320
|
+
cookie?: never;
|
|
14321
|
+
};
|
|
14322
|
+
requestBody: {
|
|
14323
|
+
content: {
|
|
14324
|
+
"application/json": {
|
|
14325
|
+
/** @description Stable workspace key, unique per organization (e.g. `${customerId}/${projectId}`). */
|
|
14326
|
+
key: string;
|
|
14327
|
+
/** @description Optional user caps; the ceiling is min(template, cap, plan). Absent fields add no restriction. Given caps replace the stored ones (a reopen keeps an elastic workspace’s mode when elastic is the organization’s default and allocation_mode is omitted). */
|
|
14328
|
+
caps?: {
|
|
14329
|
+
cpu_millis?: number;
|
|
14330
|
+
memory_mib?: number;
|
|
14331
|
+
disk_gib?: number;
|
|
14332
|
+
/**
|
|
14333
|
+
* @description Memory allocation (contracts §32): fixed boots memory_mib and holds it; elastic makes memory_mib a promise: the VM holds memory_mib_held while idle and is grown towards the promise when a command needs it. Needs the elastic memory entitlement (422 details.reason allocation_mode_not_available). A promise that does not exceed the held floor by at least 512 MiB is fixed at the promise (the response caps say which). Omitted: fixed, or elastic where that is the organization’s default (a reopen then keeps the stored mode). Takes effect at the next VM start.
|
|
14334
|
+
* @enum {string}
|
|
14335
|
+
*/
|
|
14336
|
+
allocation_mode?: "fixed" | "elastic";
|
|
14337
|
+
/** @description Elastic only: memory held while idle (MiB, default 1024, at most memory_mib). */
|
|
14338
|
+
memory_mib_held?: number;
|
|
14339
|
+
};
|
|
14340
|
+
lifetime?: components["schemas"]["WorkspaceLifetime"];
|
|
14341
|
+
/** @description Attribution label; one agent session per (workspace, principal, label). */
|
|
14342
|
+
agent_label?: string;
|
|
14343
|
+
tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
|
|
14344
|
+
};
|
|
14345
|
+
};
|
|
14346
|
+
};
|
|
14347
|
+
responses: {
|
|
14348
|
+
/** @description Default Response */
|
|
14349
|
+
200: {
|
|
14350
|
+
headers: {
|
|
14351
|
+
[name: string]: unknown;
|
|
14352
|
+
};
|
|
14353
|
+
content: {
|
|
14354
|
+
"application/json": {
|
|
14355
|
+
operation: components["schemas"]["Operation"];
|
|
14356
|
+
workspace: components["schemas"]["Workspace"];
|
|
14357
|
+
/**
|
|
14358
|
+
* Format: uuid
|
|
14359
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14360
|
+
*/
|
|
14361
|
+
source_workspace_id: string;
|
|
14362
|
+
cell_endpoint: string | null;
|
|
14363
|
+
tool_token: components["schemas"]["ToolToken"] | null;
|
|
14364
|
+
};
|
|
14365
|
+
};
|
|
14366
|
+
};
|
|
14367
|
+
/** @description Default Response */
|
|
14368
|
+
202: {
|
|
14369
|
+
headers: {
|
|
14370
|
+
[name: string]: unknown;
|
|
14371
|
+
};
|
|
14372
|
+
content: {
|
|
14373
|
+
"application/json": {
|
|
14374
|
+
operation: components["schemas"]["Operation"];
|
|
14375
|
+
workspace: components["schemas"]["Workspace"];
|
|
14376
|
+
/**
|
|
14377
|
+
* Format: uuid
|
|
14378
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14379
|
+
*/
|
|
14380
|
+
source_workspace_id: string;
|
|
14381
|
+
};
|
|
13611
14382
|
};
|
|
13612
14383
|
};
|
|
13613
14384
|
/** @description Default Response */
|
|
@@ -13911,56 +14682,869 @@ export interface operations {
|
|
|
13911
14682
|
};
|
|
13912
14683
|
};
|
|
13913
14684
|
};
|
|
13914
|
-
getApiV1WorkspacesWorkspaceIdAgentSessions: {
|
|
14685
|
+
getApiV1WorkspacesWorkspaceIdAgentSessions: {
|
|
14686
|
+
parameters: {
|
|
14687
|
+
query?: {
|
|
14688
|
+
limit?: number;
|
|
14689
|
+
cursor?: string;
|
|
14690
|
+
};
|
|
14691
|
+
header?: never;
|
|
14692
|
+
path: {
|
|
14693
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
14694
|
+
workspace_id: string;
|
|
14695
|
+
};
|
|
14696
|
+
cookie?: never;
|
|
14697
|
+
};
|
|
14698
|
+
requestBody?: never;
|
|
14699
|
+
responses: {
|
|
14700
|
+
/** @description Default Response */
|
|
14701
|
+
200: {
|
|
14702
|
+
headers: {
|
|
14703
|
+
[name: string]: unknown;
|
|
14704
|
+
};
|
|
14705
|
+
content: {
|
|
14706
|
+
"application/json": {
|
|
14707
|
+
data: {
|
|
14708
|
+
/**
|
|
14709
|
+
* Format: uuid
|
|
14710
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14711
|
+
*/
|
|
14712
|
+
id: string;
|
|
14713
|
+
/**
|
|
14714
|
+
* Format: uuid
|
|
14715
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14716
|
+
*/
|
|
14717
|
+
workspace_id: string;
|
|
14718
|
+
agent_label: string;
|
|
14719
|
+
principal_type: "user" | "api_key";
|
|
14720
|
+
/**
|
|
14721
|
+
* Format: uuid
|
|
14722
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14723
|
+
*/
|
|
14724
|
+
principal_id: string;
|
|
14725
|
+
/**
|
|
14726
|
+
* Format: date-time
|
|
14727
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
14728
|
+
*/
|
|
14729
|
+
created_at: string;
|
|
14730
|
+
last_token_issued_at: string | null;
|
|
14731
|
+
tokens_issued: number;
|
|
14732
|
+
revoked_at: string | null;
|
|
14733
|
+
}[];
|
|
14734
|
+
next_cursor: string | null;
|
|
14735
|
+
};
|
|
14736
|
+
};
|
|
14737
|
+
};
|
|
14738
|
+
/** @description Default Response */
|
|
14739
|
+
"4XX": {
|
|
14740
|
+
headers: {
|
|
14741
|
+
[name: string]: unknown;
|
|
14742
|
+
};
|
|
14743
|
+
content: {
|
|
14744
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14745
|
+
};
|
|
14746
|
+
};
|
|
14747
|
+
/** @description Default Response */
|
|
14748
|
+
"5XX": {
|
|
14749
|
+
headers: {
|
|
14750
|
+
[name: string]: unknown;
|
|
14751
|
+
};
|
|
14752
|
+
content: {
|
|
14753
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14754
|
+
};
|
|
14755
|
+
};
|
|
14756
|
+
};
|
|
14757
|
+
};
|
|
14758
|
+
postApiV1WorkspacesWorkspaceIdStreamTickets: {
|
|
14759
|
+
parameters: {
|
|
14760
|
+
query?: never;
|
|
14761
|
+
header?: never;
|
|
14762
|
+
path: {
|
|
14763
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
14764
|
+
workspace_id: string;
|
|
14765
|
+
};
|
|
14766
|
+
cookie?: never;
|
|
14767
|
+
};
|
|
14768
|
+
requestBody: {
|
|
14769
|
+
content: {
|
|
14770
|
+
"application/json": {
|
|
14771
|
+
/** @enum {string} */
|
|
14772
|
+
tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
|
|
14773
|
+
/** @description Attribution label; one agent session per (workspace, principal, label). */
|
|
14774
|
+
agent_label?: string;
|
|
14775
|
+
};
|
|
14776
|
+
};
|
|
14777
|
+
};
|
|
14778
|
+
responses: {
|
|
14779
|
+
/** @description Default Response */
|
|
14780
|
+
201: {
|
|
14781
|
+
headers: {
|
|
14782
|
+
[name: string]: unknown;
|
|
14783
|
+
};
|
|
14784
|
+
content: {
|
|
14785
|
+
"application/json": {
|
|
14786
|
+
/** @description Single use, valid 30 s; pass as `?ticket=` on the cell WebSocket upgrade from the same Origin. */
|
|
14787
|
+
ticket: string;
|
|
14788
|
+
/**
|
|
14789
|
+
* Format: date-time
|
|
14790
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
14791
|
+
*/
|
|
14792
|
+
expires_at: string;
|
|
14793
|
+
/**
|
|
14794
|
+
* Format: uuid
|
|
14795
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14796
|
+
*/
|
|
14797
|
+
workspace_id: string;
|
|
14798
|
+
/** @enum {string} */
|
|
14799
|
+
tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
|
|
14800
|
+
/**
|
|
14801
|
+
* Format: uuid
|
|
14802
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14803
|
+
*/
|
|
14804
|
+
agent_session_id: string;
|
|
14805
|
+
origin: string;
|
|
14806
|
+
ownership_epoch: number;
|
|
14807
|
+
cell_endpoint: string;
|
|
14808
|
+
};
|
|
14809
|
+
};
|
|
14810
|
+
};
|
|
14811
|
+
/** @description Default Response */
|
|
14812
|
+
"4XX": {
|
|
14813
|
+
headers: {
|
|
14814
|
+
[name: string]: unknown;
|
|
14815
|
+
};
|
|
14816
|
+
content: {
|
|
14817
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14818
|
+
};
|
|
14819
|
+
};
|
|
14820
|
+
/** @description Default Response */
|
|
14821
|
+
"5XX": {
|
|
14822
|
+
headers: {
|
|
14823
|
+
[name: string]: unknown;
|
|
14824
|
+
};
|
|
14825
|
+
content: {
|
|
14826
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14827
|
+
};
|
|
14828
|
+
};
|
|
14829
|
+
};
|
|
14830
|
+
};
|
|
14831
|
+
getApiV1OrganizationsOrganizationIdEntitlements: {
|
|
14832
|
+
parameters: {
|
|
14833
|
+
query?: never;
|
|
14834
|
+
header?: never;
|
|
14835
|
+
path: {
|
|
14836
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
14837
|
+
organization_id: string;
|
|
14838
|
+
};
|
|
14839
|
+
cookie?: never;
|
|
14840
|
+
};
|
|
14841
|
+
requestBody?: never;
|
|
14842
|
+
responses: {
|
|
14843
|
+
/** @description Default Response */
|
|
14844
|
+
200: {
|
|
14845
|
+
headers: {
|
|
14846
|
+
[name: string]: unknown;
|
|
14847
|
+
};
|
|
14848
|
+
content: {
|
|
14849
|
+
"application/json": {
|
|
14850
|
+
/**
|
|
14851
|
+
* Format: uuid
|
|
14852
|
+
* @description UUIDv7, lowercase canonical form.
|
|
14853
|
+
*/
|
|
14854
|
+
organization_id: string;
|
|
14855
|
+
plan: {
|
|
14856
|
+
plan_key: string;
|
|
14857
|
+
catalog_version: string;
|
|
14858
|
+
source: "override" | "subscription" | "trial" | "default";
|
|
14859
|
+
/** @description When this plan grant stops applying (a trial or partner grant); null when it lasts until changed. */
|
|
14860
|
+
ends_at: string | null;
|
|
14861
|
+
} | null;
|
|
14862
|
+
/** @description Resolved plan limits (null = unlimited). */
|
|
14863
|
+
limits: {
|
|
14864
|
+
[key: string]: unknown;
|
|
14865
|
+
};
|
|
14866
|
+
allowances: {
|
|
14867
|
+
[key: string]: unknown;
|
|
14868
|
+
};
|
|
14869
|
+
policies: {
|
|
14870
|
+
[key: string]: unknown;
|
|
14871
|
+
};
|
|
14872
|
+
/** @description Active admission restrictions, e.g. `new_starts` {reason, since, grace_until} after a payment grace period ended. */
|
|
14873
|
+
restrictions: {
|
|
14874
|
+
[key: string]: unknown;
|
|
14875
|
+
};
|
|
14876
|
+
/**
|
|
14877
|
+
* Format: date-time
|
|
14878
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
14879
|
+
*/
|
|
14880
|
+
resolved_at: string;
|
|
14881
|
+
};
|
|
14882
|
+
};
|
|
14883
|
+
};
|
|
14884
|
+
/** @description Default Response */
|
|
14885
|
+
"4XX": {
|
|
14886
|
+
headers: {
|
|
14887
|
+
[name: string]: unknown;
|
|
14888
|
+
};
|
|
14889
|
+
content: {
|
|
14890
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14891
|
+
};
|
|
14892
|
+
};
|
|
14893
|
+
/** @description Default Response */
|
|
14894
|
+
"5XX": {
|
|
14895
|
+
headers: {
|
|
14896
|
+
[name: string]: unknown;
|
|
14897
|
+
};
|
|
14898
|
+
content: {
|
|
14899
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14900
|
+
};
|
|
14901
|
+
};
|
|
14902
|
+
};
|
|
14903
|
+
};
|
|
14904
|
+
putV1WorkspacesWorkspaceIdPortsPort: {
|
|
14905
|
+
parameters: {
|
|
14906
|
+
query?: never;
|
|
14907
|
+
header?: never;
|
|
14908
|
+
path: {
|
|
14909
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
14910
|
+
workspace_id: string;
|
|
14911
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
14912
|
+
port: number;
|
|
14913
|
+
};
|
|
14914
|
+
cookie?: never;
|
|
14915
|
+
};
|
|
14916
|
+
requestBody?: never;
|
|
14917
|
+
responses: {
|
|
14918
|
+
/** @description An exposed port of a workspace (contracts §39.3). Private: every request needs a credential. */
|
|
14919
|
+
200: {
|
|
14920
|
+
headers: {
|
|
14921
|
+
[name: string]: unknown;
|
|
14922
|
+
};
|
|
14923
|
+
content: {
|
|
14924
|
+
"application/json": components["schemas"]["Port"];
|
|
14925
|
+
};
|
|
14926
|
+
};
|
|
14927
|
+
/** @description An exposed port of a workspace (contracts §39.3). Private: every request needs a credential. */
|
|
14928
|
+
201: {
|
|
14929
|
+
headers: {
|
|
14930
|
+
[name: string]: unknown;
|
|
14931
|
+
};
|
|
14932
|
+
content: {
|
|
14933
|
+
"application/json": components["schemas"]["Port"];
|
|
14934
|
+
};
|
|
14935
|
+
};
|
|
14936
|
+
/** @description Default Response */
|
|
14937
|
+
"4XX": {
|
|
14938
|
+
headers: {
|
|
14939
|
+
[name: string]: unknown;
|
|
14940
|
+
};
|
|
14941
|
+
content: {
|
|
14942
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14943
|
+
};
|
|
14944
|
+
};
|
|
14945
|
+
/** @description Default Response */
|
|
14946
|
+
"5XX": {
|
|
14947
|
+
headers: {
|
|
14948
|
+
[name: string]: unknown;
|
|
14949
|
+
};
|
|
14950
|
+
content: {
|
|
14951
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14952
|
+
};
|
|
14953
|
+
};
|
|
14954
|
+
};
|
|
14955
|
+
};
|
|
14956
|
+
deleteV1WorkspacesWorkspaceIdPortsPort: {
|
|
14957
|
+
parameters: {
|
|
14958
|
+
query?: never;
|
|
14959
|
+
header?: never;
|
|
14960
|
+
path: {
|
|
14961
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
14962
|
+
workspace_id: string;
|
|
14963
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
14964
|
+
port: number;
|
|
14965
|
+
};
|
|
14966
|
+
cookie?: never;
|
|
14967
|
+
};
|
|
14968
|
+
requestBody?: never;
|
|
14969
|
+
responses: {
|
|
14970
|
+
/** @description No content. */
|
|
14971
|
+
204: {
|
|
14972
|
+
headers: {
|
|
14973
|
+
[name: string]: unknown;
|
|
14974
|
+
};
|
|
14975
|
+
content?: never;
|
|
14976
|
+
};
|
|
14977
|
+
/** @description Default Response */
|
|
14978
|
+
"4XX": {
|
|
14979
|
+
headers: {
|
|
14980
|
+
[name: string]: unknown;
|
|
14981
|
+
};
|
|
14982
|
+
content: {
|
|
14983
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14984
|
+
};
|
|
14985
|
+
};
|
|
14986
|
+
/** @description Default Response */
|
|
14987
|
+
"5XX": {
|
|
14988
|
+
headers: {
|
|
14989
|
+
[name: string]: unknown;
|
|
14990
|
+
};
|
|
14991
|
+
content: {
|
|
14992
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
14993
|
+
};
|
|
14994
|
+
};
|
|
14995
|
+
};
|
|
14996
|
+
};
|
|
14997
|
+
getV1WorkspacesWorkspaceIdPorts: {
|
|
14998
|
+
parameters: {
|
|
14999
|
+
query?: never;
|
|
15000
|
+
header?: never;
|
|
15001
|
+
path: {
|
|
15002
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15003
|
+
workspace_id: string;
|
|
15004
|
+
};
|
|
15005
|
+
cookie?: never;
|
|
15006
|
+
};
|
|
15007
|
+
requestBody?: never;
|
|
15008
|
+
responses: {
|
|
15009
|
+
/** @description Default Response */
|
|
15010
|
+
200: {
|
|
15011
|
+
headers: {
|
|
15012
|
+
[name: string]: unknown;
|
|
15013
|
+
};
|
|
15014
|
+
content: {
|
|
15015
|
+
"application/json": {
|
|
15016
|
+
ports: components["schemas"]["Port"][];
|
|
15017
|
+
};
|
|
15018
|
+
};
|
|
15019
|
+
};
|
|
15020
|
+
/** @description Default Response */
|
|
15021
|
+
"4XX": {
|
|
15022
|
+
headers: {
|
|
15023
|
+
[name: string]: unknown;
|
|
15024
|
+
};
|
|
15025
|
+
content: {
|
|
15026
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15027
|
+
};
|
|
15028
|
+
};
|
|
15029
|
+
/** @description Default Response */
|
|
15030
|
+
"5XX": {
|
|
15031
|
+
headers: {
|
|
15032
|
+
[name: string]: unknown;
|
|
15033
|
+
};
|
|
15034
|
+
content: {
|
|
15035
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15036
|
+
};
|
|
15037
|
+
};
|
|
15038
|
+
};
|
|
15039
|
+
};
|
|
15040
|
+
postV1WorkspacesWorkspaceIdPortsPortTokens: {
|
|
15041
|
+
parameters: {
|
|
15042
|
+
query?: never;
|
|
15043
|
+
header?: never;
|
|
15044
|
+
path: {
|
|
15045
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15046
|
+
workspace_id: string;
|
|
15047
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15048
|
+
port: number;
|
|
15049
|
+
};
|
|
15050
|
+
cookie?: never;
|
|
15051
|
+
};
|
|
15052
|
+
requestBody?: {
|
|
15053
|
+
content: {
|
|
15054
|
+
"application/json": {
|
|
15055
|
+
/**
|
|
15056
|
+
* @description Lifetime in seconds (60-86400, default 3600).
|
|
15057
|
+
* @default 3600
|
|
15058
|
+
*/
|
|
15059
|
+
ttl_seconds?: number;
|
|
15060
|
+
};
|
|
15061
|
+
};
|
|
15062
|
+
};
|
|
15063
|
+
responses: {
|
|
15064
|
+
/** @description Default Response */
|
|
15065
|
+
201: {
|
|
15066
|
+
headers: {
|
|
15067
|
+
[name: string]: unknown;
|
|
15068
|
+
};
|
|
15069
|
+
content: {
|
|
15070
|
+
"application/json": {
|
|
15071
|
+
/** @description sfp_…: send as `Authorization: Bearer <token>` (or `X-Shardflux-Token`) to `url`. Revoked when the port is closed. */
|
|
15072
|
+
token: string;
|
|
15073
|
+
/**
|
|
15074
|
+
* Format: date-time
|
|
15075
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
15076
|
+
*/
|
|
15077
|
+
expires_at: string;
|
|
15078
|
+
/** @description The port’s URL. */
|
|
15079
|
+
url: string;
|
|
15080
|
+
};
|
|
15081
|
+
};
|
|
15082
|
+
};
|
|
15083
|
+
/** @description Default Response */
|
|
15084
|
+
"4XX": {
|
|
15085
|
+
headers: {
|
|
15086
|
+
[name: string]: unknown;
|
|
15087
|
+
};
|
|
15088
|
+
content: {
|
|
15089
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15090
|
+
};
|
|
15091
|
+
};
|
|
15092
|
+
/** @description Default Response */
|
|
15093
|
+
"5XX": {
|
|
15094
|
+
headers: {
|
|
15095
|
+
[name: string]: unknown;
|
|
15096
|
+
};
|
|
15097
|
+
content: {
|
|
15098
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15099
|
+
};
|
|
15100
|
+
};
|
|
15101
|
+
};
|
|
15102
|
+
};
|
|
15103
|
+
postV1WorkspacesWorkspaceIdPortsPortLinks: {
|
|
15104
|
+
parameters: {
|
|
15105
|
+
query?: never;
|
|
15106
|
+
header?: never;
|
|
15107
|
+
path: {
|
|
15108
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15109
|
+
workspace_id: string;
|
|
15110
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15111
|
+
port: number;
|
|
15112
|
+
};
|
|
15113
|
+
cookie?: never;
|
|
15114
|
+
};
|
|
15115
|
+
requestBody?: {
|
|
15116
|
+
content: {
|
|
15117
|
+
"application/json": {
|
|
15118
|
+
/**
|
|
15119
|
+
* @description Lifetime of the link and of the browser session it starts (60-604800 s, default 86400).
|
|
15120
|
+
* @default 86400
|
|
15121
|
+
*/
|
|
15122
|
+
ttl_seconds?: number;
|
|
15123
|
+
/** @description Where the link lands (default `/`): a path starting with one `/`, printable ASCII, query allowed. */
|
|
15124
|
+
path?: string;
|
|
15125
|
+
};
|
|
15126
|
+
};
|
|
15127
|
+
};
|
|
15128
|
+
responses: {
|
|
15129
|
+
/** @description Default Response */
|
|
15130
|
+
201: {
|
|
15131
|
+
headers: {
|
|
15132
|
+
[name: string]: unknown;
|
|
15133
|
+
};
|
|
15134
|
+
content: {
|
|
15135
|
+
"application/json": {
|
|
15136
|
+
/** @description Open in a browser: it sets a session cookie for the port’s host (until expires_at) and redirects to `path`. */
|
|
15137
|
+
url: string;
|
|
15138
|
+
/**
|
|
15139
|
+
* Format: date-time
|
|
15140
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
15141
|
+
*/
|
|
15142
|
+
expires_at: string;
|
|
15143
|
+
};
|
|
15144
|
+
};
|
|
15145
|
+
};
|
|
15146
|
+
/** @description Default Response */
|
|
15147
|
+
"4XX": {
|
|
15148
|
+
headers: {
|
|
15149
|
+
[name: string]: unknown;
|
|
15150
|
+
};
|
|
15151
|
+
content: {
|
|
15152
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15153
|
+
};
|
|
15154
|
+
};
|
|
15155
|
+
/** @description Default Response */
|
|
15156
|
+
"5XX": {
|
|
15157
|
+
headers: {
|
|
15158
|
+
[name: string]: unknown;
|
|
15159
|
+
};
|
|
15160
|
+
content: {
|
|
15161
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15162
|
+
};
|
|
15163
|
+
};
|
|
15164
|
+
};
|
|
15165
|
+
};
|
|
15166
|
+
postV1WorkspacesWorkspaceIdPortsPortCallback: {
|
|
15167
|
+
parameters: {
|
|
15168
|
+
query?: never;
|
|
15169
|
+
header?: never;
|
|
15170
|
+
path: {
|
|
15171
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15172
|
+
workspace_id: string;
|
|
15173
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15174
|
+
port: number;
|
|
15175
|
+
};
|
|
15176
|
+
cookie?: never;
|
|
15177
|
+
};
|
|
15178
|
+
requestBody?: never;
|
|
15179
|
+
responses: {
|
|
15180
|
+
/** @description Default Response */
|
|
15181
|
+
201: {
|
|
15182
|
+
headers: {
|
|
15183
|
+
[name: string]: unknown;
|
|
15184
|
+
};
|
|
15185
|
+
content: {
|
|
15186
|
+
"application/json": {
|
|
15187
|
+
/** @description https://<port>-<handle>.<domain>/__shardflux/callback/sfcb_…/: append your own path. Shown once. */
|
|
15188
|
+
url: string;
|
|
15189
|
+
/**
|
|
15190
|
+
* Format: date-time
|
|
15191
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
15192
|
+
*/
|
|
15193
|
+
created_at: string;
|
|
15194
|
+
};
|
|
15195
|
+
};
|
|
15196
|
+
};
|
|
15197
|
+
/** @description Default Response */
|
|
15198
|
+
"4XX": {
|
|
15199
|
+
headers: {
|
|
15200
|
+
[name: string]: unknown;
|
|
15201
|
+
};
|
|
15202
|
+
content: {
|
|
15203
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15204
|
+
};
|
|
15205
|
+
};
|
|
15206
|
+
/** @description Default Response */
|
|
15207
|
+
"5XX": {
|
|
15208
|
+
headers: {
|
|
15209
|
+
[name: string]: unknown;
|
|
15210
|
+
};
|
|
15211
|
+
content: {
|
|
15212
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15213
|
+
};
|
|
15214
|
+
};
|
|
15215
|
+
};
|
|
15216
|
+
};
|
|
15217
|
+
deleteV1WorkspacesWorkspaceIdPortsPortCallback: {
|
|
15218
|
+
parameters: {
|
|
15219
|
+
query?: never;
|
|
15220
|
+
header?: never;
|
|
15221
|
+
path: {
|
|
15222
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15223
|
+
workspace_id: string;
|
|
15224
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15225
|
+
port: number;
|
|
15226
|
+
};
|
|
15227
|
+
cookie?: never;
|
|
15228
|
+
};
|
|
15229
|
+
requestBody?: never;
|
|
15230
|
+
responses: {
|
|
15231
|
+
/** @description No content. */
|
|
15232
|
+
204: {
|
|
15233
|
+
headers: {
|
|
15234
|
+
[name: string]: unknown;
|
|
15235
|
+
};
|
|
15236
|
+
content?: never;
|
|
15237
|
+
};
|
|
15238
|
+
/** @description Default Response */
|
|
15239
|
+
"4XX": {
|
|
15240
|
+
headers: {
|
|
15241
|
+
[name: string]: unknown;
|
|
15242
|
+
};
|
|
15243
|
+
content: {
|
|
15244
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15245
|
+
};
|
|
15246
|
+
};
|
|
15247
|
+
/** @description Default Response */
|
|
15248
|
+
"5XX": {
|
|
15249
|
+
headers: {
|
|
15250
|
+
[name: string]: unknown;
|
|
15251
|
+
};
|
|
15252
|
+
content: {
|
|
15253
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15254
|
+
};
|
|
15255
|
+
};
|
|
15256
|
+
};
|
|
15257
|
+
};
|
|
15258
|
+
putApiV1WorkspacesWorkspaceIdPortsPort: {
|
|
15259
|
+
parameters: {
|
|
15260
|
+
query?: never;
|
|
15261
|
+
header?: never;
|
|
15262
|
+
path: {
|
|
15263
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15264
|
+
workspace_id: string;
|
|
15265
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15266
|
+
port: number;
|
|
15267
|
+
};
|
|
15268
|
+
cookie?: never;
|
|
15269
|
+
};
|
|
15270
|
+
requestBody?: never;
|
|
15271
|
+
responses: {
|
|
15272
|
+
/** @description An exposed port of a workspace (contracts §39.3). Private: every request needs a credential. */
|
|
15273
|
+
200: {
|
|
15274
|
+
headers: {
|
|
15275
|
+
[name: string]: unknown;
|
|
15276
|
+
};
|
|
15277
|
+
content: {
|
|
15278
|
+
"application/json": components["schemas"]["Port"];
|
|
15279
|
+
};
|
|
15280
|
+
};
|
|
15281
|
+
/** @description An exposed port of a workspace (contracts §39.3). Private: every request needs a credential. */
|
|
15282
|
+
201: {
|
|
15283
|
+
headers: {
|
|
15284
|
+
[name: string]: unknown;
|
|
15285
|
+
};
|
|
15286
|
+
content: {
|
|
15287
|
+
"application/json": components["schemas"]["Port"];
|
|
15288
|
+
};
|
|
15289
|
+
};
|
|
15290
|
+
/** @description Default Response */
|
|
15291
|
+
"4XX": {
|
|
15292
|
+
headers: {
|
|
15293
|
+
[name: string]: unknown;
|
|
15294
|
+
};
|
|
15295
|
+
content: {
|
|
15296
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15297
|
+
};
|
|
15298
|
+
};
|
|
15299
|
+
/** @description Default Response */
|
|
15300
|
+
"5XX": {
|
|
15301
|
+
headers: {
|
|
15302
|
+
[name: string]: unknown;
|
|
15303
|
+
};
|
|
15304
|
+
content: {
|
|
15305
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15306
|
+
};
|
|
15307
|
+
};
|
|
15308
|
+
};
|
|
15309
|
+
};
|
|
15310
|
+
deleteApiV1WorkspacesWorkspaceIdPortsPort: {
|
|
15311
|
+
parameters: {
|
|
15312
|
+
query?: never;
|
|
15313
|
+
header?: never;
|
|
15314
|
+
path: {
|
|
15315
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15316
|
+
workspace_id: string;
|
|
15317
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15318
|
+
port: number;
|
|
15319
|
+
};
|
|
15320
|
+
cookie?: never;
|
|
15321
|
+
};
|
|
15322
|
+
requestBody?: never;
|
|
15323
|
+
responses: {
|
|
15324
|
+
/** @description No content. */
|
|
15325
|
+
204: {
|
|
15326
|
+
headers: {
|
|
15327
|
+
[name: string]: unknown;
|
|
15328
|
+
};
|
|
15329
|
+
content?: never;
|
|
15330
|
+
};
|
|
15331
|
+
/** @description Default Response */
|
|
15332
|
+
"4XX": {
|
|
15333
|
+
headers: {
|
|
15334
|
+
[name: string]: unknown;
|
|
15335
|
+
};
|
|
15336
|
+
content: {
|
|
15337
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15338
|
+
};
|
|
15339
|
+
};
|
|
15340
|
+
/** @description Default Response */
|
|
15341
|
+
"5XX": {
|
|
15342
|
+
headers: {
|
|
15343
|
+
[name: string]: unknown;
|
|
15344
|
+
};
|
|
15345
|
+
content: {
|
|
15346
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15347
|
+
};
|
|
15348
|
+
};
|
|
15349
|
+
};
|
|
15350
|
+
};
|
|
15351
|
+
getApiV1WorkspacesWorkspaceIdPorts: {
|
|
15352
|
+
parameters: {
|
|
15353
|
+
query?: never;
|
|
15354
|
+
header?: never;
|
|
15355
|
+
path: {
|
|
15356
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15357
|
+
workspace_id: string;
|
|
15358
|
+
};
|
|
15359
|
+
cookie?: never;
|
|
15360
|
+
};
|
|
15361
|
+
requestBody?: never;
|
|
15362
|
+
responses: {
|
|
15363
|
+
/** @description Default Response */
|
|
15364
|
+
200: {
|
|
15365
|
+
headers: {
|
|
15366
|
+
[name: string]: unknown;
|
|
15367
|
+
};
|
|
15368
|
+
content: {
|
|
15369
|
+
"application/json": {
|
|
15370
|
+
ports: components["schemas"]["Port"][];
|
|
15371
|
+
};
|
|
15372
|
+
};
|
|
15373
|
+
};
|
|
15374
|
+
/** @description Default Response */
|
|
15375
|
+
"4XX": {
|
|
15376
|
+
headers: {
|
|
15377
|
+
[name: string]: unknown;
|
|
15378
|
+
};
|
|
15379
|
+
content: {
|
|
15380
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15381
|
+
};
|
|
15382
|
+
};
|
|
15383
|
+
/** @description Default Response */
|
|
15384
|
+
"5XX": {
|
|
15385
|
+
headers: {
|
|
15386
|
+
[name: string]: unknown;
|
|
15387
|
+
};
|
|
15388
|
+
content: {
|
|
15389
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15390
|
+
};
|
|
15391
|
+
};
|
|
15392
|
+
};
|
|
15393
|
+
};
|
|
15394
|
+
postApiV1WorkspacesWorkspaceIdPortsPortTokens: {
|
|
15395
|
+
parameters: {
|
|
15396
|
+
query?: never;
|
|
15397
|
+
header?: never;
|
|
15398
|
+
path: {
|
|
15399
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15400
|
+
workspace_id: string;
|
|
15401
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15402
|
+
port: number;
|
|
15403
|
+
};
|
|
15404
|
+
cookie?: never;
|
|
15405
|
+
};
|
|
15406
|
+
requestBody?: {
|
|
15407
|
+
content: {
|
|
15408
|
+
"application/json": {
|
|
15409
|
+
/**
|
|
15410
|
+
* @description Lifetime in seconds (60-86400, default 3600).
|
|
15411
|
+
* @default 3600
|
|
15412
|
+
*/
|
|
15413
|
+
ttl_seconds?: number;
|
|
15414
|
+
};
|
|
15415
|
+
};
|
|
15416
|
+
};
|
|
15417
|
+
responses: {
|
|
15418
|
+
/** @description Default Response */
|
|
15419
|
+
201: {
|
|
15420
|
+
headers: {
|
|
15421
|
+
[name: string]: unknown;
|
|
15422
|
+
};
|
|
15423
|
+
content: {
|
|
15424
|
+
"application/json": {
|
|
15425
|
+
/** @description sfp_…: send as `Authorization: Bearer <token>` (or `X-Shardflux-Token`) to `url`. Revoked when the port is closed. */
|
|
15426
|
+
token: string;
|
|
15427
|
+
/**
|
|
15428
|
+
* Format: date-time
|
|
15429
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
15430
|
+
*/
|
|
15431
|
+
expires_at: string;
|
|
15432
|
+
/** @description The port’s URL. */
|
|
15433
|
+
url: string;
|
|
15434
|
+
};
|
|
15435
|
+
};
|
|
15436
|
+
};
|
|
15437
|
+
/** @description Default Response */
|
|
15438
|
+
"4XX": {
|
|
15439
|
+
headers: {
|
|
15440
|
+
[name: string]: unknown;
|
|
15441
|
+
};
|
|
15442
|
+
content: {
|
|
15443
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15444
|
+
};
|
|
15445
|
+
};
|
|
15446
|
+
/** @description Default Response */
|
|
15447
|
+
"5XX": {
|
|
15448
|
+
headers: {
|
|
15449
|
+
[name: string]: unknown;
|
|
15450
|
+
};
|
|
15451
|
+
content: {
|
|
15452
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15453
|
+
};
|
|
15454
|
+
};
|
|
15455
|
+
};
|
|
15456
|
+
};
|
|
15457
|
+
postApiV1WorkspacesWorkspaceIdPortsPortLinks: {
|
|
15458
|
+
parameters: {
|
|
15459
|
+
query?: never;
|
|
15460
|
+
header?: never;
|
|
15461
|
+
path: {
|
|
15462
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
15463
|
+
workspace_id: string;
|
|
15464
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15465
|
+
port: number;
|
|
15466
|
+
};
|
|
15467
|
+
cookie?: never;
|
|
15468
|
+
};
|
|
15469
|
+
requestBody?: {
|
|
15470
|
+
content: {
|
|
15471
|
+
"application/json": {
|
|
15472
|
+
/**
|
|
15473
|
+
* @description Lifetime of the link and of the browser session it starts (60-604800 s, default 86400).
|
|
15474
|
+
* @default 86400
|
|
15475
|
+
*/
|
|
15476
|
+
ttl_seconds?: number;
|
|
15477
|
+
/** @description Where the link lands (default `/`): a path starting with one `/`, printable ASCII, query allowed. */
|
|
15478
|
+
path?: string;
|
|
15479
|
+
};
|
|
15480
|
+
};
|
|
15481
|
+
};
|
|
15482
|
+
responses: {
|
|
15483
|
+
/** @description Default Response */
|
|
15484
|
+
201: {
|
|
15485
|
+
headers: {
|
|
15486
|
+
[name: string]: unknown;
|
|
15487
|
+
};
|
|
15488
|
+
content: {
|
|
15489
|
+
"application/json": {
|
|
15490
|
+
/** @description Open in a browser: it sets a session cookie for the port’s host (until expires_at) and redirects to `path`. */
|
|
15491
|
+
url: string;
|
|
15492
|
+
/**
|
|
15493
|
+
* Format: date-time
|
|
15494
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
15495
|
+
*/
|
|
15496
|
+
expires_at: string;
|
|
15497
|
+
};
|
|
15498
|
+
};
|
|
15499
|
+
};
|
|
15500
|
+
/** @description Default Response */
|
|
15501
|
+
"4XX": {
|
|
15502
|
+
headers: {
|
|
15503
|
+
[name: string]: unknown;
|
|
15504
|
+
};
|
|
15505
|
+
content: {
|
|
15506
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15507
|
+
};
|
|
15508
|
+
};
|
|
15509
|
+
/** @description Default Response */
|
|
15510
|
+
"5XX": {
|
|
15511
|
+
headers: {
|
|
15512
|
+
[name: string]: unknown;
|
|
15513
|
+
};
|
|
15514
|
+
content: {
|
|
15515
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
15516
|
+
};
|
|
15517
|
+
};
|
|
15518
|
+
};
|
|
15519
|
+
};
|
|
15520
|
+
postApiV1WorkspacesWorkspaceIdPortsPortCallback: {
|
|
13915
15521
|
parameters: {
|
|
13916
|
-
query?:
|
|
13917
|
-
limit?: number;
|
|
13918
|
-
cursor?: string;
|
|
13919
|
-
};
|
|
15522
|
+
query?: never;
|
|
13920
15523
|
header?: never;
|
|
13921
15524
|
path: {
|
|
13922
15525
|
/** @description UUIDv7, lowercase canonical form. */
|
|
13923
15526
|
workspace_id: string;
|
|
15527
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15528
|
+
port: number;
|
|
13924
15529
|
};
|
|
13925
15530
|
cookie?: never;
|
|
13926
15531
|
};
|
|
13927
15532
|
requestBody?: never;
|
|
13928
15533
|
responses: {
|
|
13929
15534
|
/** @description Default Response */
|
|
13930
|
-
|
|
15535
|
+
201: {
|
|
13931
15536
|
headers: {
|
|
13932
15537
|
[name: string]: unknown;
|
|
13933
15538
|
};
|
|
13934
15539
|
content: {
|
|
13935
15540
|
"application/json": {
|
|
13936
|
-
|
|
13937
|
-
|
|
13938
|
-
|
|
13939
|
-
|
|
13940
|
-
|
|
13941
|
-
|
|
13942
|
-
|
|
13943
|
-
* Format: uuid
|
|
13944
|
-
* @description UUIDv7, lowercase canonical form.
|
|
13945
|
-
*/
|
|
13946
|
-
workspace_id: string;
|
|
13947
|
-
agent_label: string;
|
|
13948
|
-
principal_type: "user" | "api_key";
|
|
13949
|
-
/**
|
|
13950
|
-
* Format: uuid
|
|
13951
|
-
* @description UUIDv7, lowercase canonical form.
|
|
13952
|
-
*/
|
|
13953
|
-
principal_id: string;
|
|
13954
|
-
/**
|
|
13955
|
-
* Format: date-time
|
|
13956
|
-
* @description RFC 3339 UTC timestamp with Z.
|
|
13957
|
-
*/
|
|
13958
|
-
created_at: string;
|
|
13959
|
-
last_token_issued_at: string | null;
|
|
13960
|
-
tokens_issued: number;
|
|
13961
|
-
revoked_at: string | null;
|
|
13962
|
-
}[];
|
|
13963
|
-
next_cursor: string | null;
|
|
15541
|
+
/** @description https://<port>-<handle>.<domain>/__shardflux/callback/sfcb_…/: append your own path. Shown once. */
|
|
15542
|
+
url: string;
|
|
15543
|
+
/**
|
|
15544
|
+
* Format: date-time
|
|
15545
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
15546
|
+
*/
|
|
15547
|
+
created_at: string;
|
|
13964
15548
|
};
|
|
13965
15549
|
};
|
|
13966
15550
|
};
|
|
@@ -13984,58 +15568,26 @@ export interface operations {
|
|
|
13984
15568
|
};
|
|
13985
15569
|
};
|
|
13986
15570
|
};
|
|
13987
|
-
|
|
15571
|
+
deleteApiV1WorkspacesWorkspaceIdPortsPortCallback: {
|
|
13988
15572
|
parameters: {
|
|
13989
15573
|
query?: never;
|
|
13990
15574
|
header?: never;
|
|
13991
15575
|
path: {
|
|
13992
15576
|
/** @description UUIDv7, lowercase canonical form. */
|
|
13993
15577
|
workspace_id: string;
|
|
15578
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15579
|
+
port: number;
|
|
13994
15580
|
};
|
|
13995
15581
|
cookie?: never;
|
|
13996
15582
|
};
|
|
13997
|
-
requestBody
|
|
13998
|
-
content: {
|
|
13999
|
-
"application/json": {
|
|
14000
|
-
/** @enum {string} */
|
|
14001
|
-
tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
|
|
14002
|
-
/** @description Attribution label; one agent session per (workspace, principal, label). */
|
|
14003
|
-
agent_label?: string;
|
|
14004
|
-
};
|
|
14005
|
-
};
|
|
14006
|
-
};
|
|
15583
|
+
requestBody?: never;
|
|
14007
15584
|
responses: {
|
|
14008
|
-
/** @description
|
|
14009
|
-
|
|
15585
|
+
/** @description No content. */
|
|
15586
|
+
204: {
|
|
14010
15587
|
headers: {
|
|
14011
15588
|
[name: string]: unknown;
|
|
14012
15589
|
};
|
|
14013
|
-
content
|
|
14014
|
-
"application/json": {
|
|
14015
|
-
/** @description Single use, valid 30 s; pass as `?ticket=` on the cell WebSocket upgrade from the same Origin. */
|
|
14016
|
-
ticket: string;
|
|
14017
|
-
/**
|
|
14018
|
-
* Format: date-time
|
|
14019
|
-
* @description RFC 3339 UTC timestamp with Z.
|
|
14020
|
-
*/
|
|
14021
|
-
expires_at: string;
|
|
14022
|
-
/**
|
|
14023
|
-
* Format: uuid
|
|
14024
|
-
* @description UUIDv7, lowercase canonical form.
|
|
14025
|
-
*/
|
|
14026
|
-
workspace_id: string;
|
|
14027
|
-
/** @enum {string} */
|
|
14028
|
-
tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
|
|
14029
|
-
/**
|
|
14030
|
-
* Format: uuid
|
|
14031
|
-
* @description UUIDv7, lowercase canonical form.
|
|
14032
|
-
*/
|
|
14033
|
-
agent_session_id: string;
|
|
14034
|
-
origin: string;
|
|
14035
|
-
ownership_epoch: number;
|
|
14036
|
-
cell_endpoint: string;
|
|
14037
|
-
};
|
|
14038
|
-
};
|
|
15590
|
+
content?: never;
|
|
14039
15591
|
};
|
|
14040
15592
|
/** @description Default Response */
|
|
14041
15593
|
"4XX": {
|
|
@@ -14057,56 +15609,69 @@ export interface operations {
|
|
|
14057
15609
|
};
|
|
14058
15610
|
};
|
|
14059
15611
|
};
|
|
14060
|
-
|
|
15612
|
+
postV1InternalPortWakes: {
|
|
14061
15613
|
parameters: {
|
|
14062
15614
|
query?: never;
|
|
14063
|
-
header?:
|
|
14064
|
-
|
|
14065
|
-
|
|
14066
|
-
organization_id: string;
|
|
15615
|
+
header?: {
|
|
15616
|
+
/** @description RFC 7240 preference, e.g. `wait=20` (held wake). */
|
|
15617
|
+
prefer?: string;
|
|
14067
15618
|
};
|
|
15619
|
+
path?: never;
|
|
14068
15620
|
cookie?: never;
|
|
14069
15621
|
};
|
|
14070
|
-
requestBody
|
|
15622
|
+
requestBody: {
|
|
15623
|
+
content: {
|
|
15624
|
+
"application/json": {
|
|
15625
|
+
/**
|
|
15626
|
+
* Format: uuid
|
|
15627
|
+
* @description UUIDv7, lowercase canonical form.
|
|
15628
|
+
*/
|
|
15629
|
+
workspace_id: string;
|
|
15630
|
+
/** @description TCP port inside the workspace (1-65535). */
|
|
15631
|
+
port: number;
|
|
15632
|
+
/** @description The callback URL’s secret (`sfcb_…`) when the request came in on the callback path; omit when Authorization carries a port token. */
|
|
15633
|
+
callback_secret?: string;
|
|
15634
|
+
};
|
|
15635
|
+
};
|
|
15636
|
+
};
|
|
14071
15637
|
responses: {
|
|
14072
|
-
/** @description
|
|
15638
|
+
/** @description 200: running (operation null: it already was) or the resume succeeded during the hold. 202: the resume/open to wait for. */
|
|
14073
15639
|
200: {
|
|
14074
15640
|
headers: {
|
|
14075
15641
|
[name: string]: unknown;
|
|
14076
15642
|
};
|
|
14077
15643
|
content: {
|
|
14078
15644
|
"application/json": {
|
|
14079
|
-
|
|
14080
|
-
|
|
14081
|
-
|
|
14082
|
-
|
|
14083
|
-
|
|
14084
|
-
|
|
14085
|
-
|
|
14086
|
-
|
|
14087
|
-
source: "override" | "subscription" | "trial" | "default";
|
|
14088
|
-
/** @description When this plan grant stops applying (a trial or partner grant); null when it lasts until changed. */
|
|
14089
|
-
ends_at: string | null;
|
|
14090
|
-
} | null;
|
|
14091
|
-
/** @description Resolved plan limits (null = unlimited). */
|
|
14092
|
-
limits: {
|
|
14093
|
-
[key: string]: unknown;
|
|
14094
|
-
};
|
|
14095
|
-
allowances: {
|
|
14096
|
-
[key: string]: unknown;
|
|
14097
|
-
};
|
|
14098
|
-
policies: {
|
|
14099
|
-
[key: string]: unknown;
|
|
15645
|
+
workspace: {
|
|
15646
|
+
/**
|
|
15647
|
+
* Format: uuid
|
|
15648
|
+
* @description UUIDv7, lowercase canonical form.
|
|
15649
|
+
*/
|
|
15650
|
+
id: string;
|
|
15651
|
+
observed_state: string;
|
|
15652
|
+
ownership_epoch: number;
|
|
14100
15653
|
};
|
|
14101
|
-
|
|
14102
|
-
|
|
14103
|
-
|
|
15654
|
+
operation: components["schemas"]["Operation"] | null;
|
|
15655
|
+
};
|
|
15656
|
+
};
|
|
15657
|
+
};
|
|
15658
|
+
/** @description 200: running (operation null: it already was) or the resume succeeded during the hold. 202: the resume/open to wait for. */
|
|
15659
|
+
202: {
|
|
15660
|
+
headers: {
|
|
15661
|
+
[name: string]: unknown;
|
|
15662
|
+
};
|
|
15663
|
+
content: {
|
|
15664
|
+
"application/json": {
|
|
15665
|
+
workspace: {
|
|
15666
|
+
/**
|
|
15667
|
+
* Format: uuid
|
|
15668
|
+
* @description UUIDv7, lowercase canonical form.
|
|
15669
|
+
*/
|
|
15670
|
+
id: string;
|
|
15671
|
+
observed_state: string;
|
|
15672
|
+
ownership_epoch: number;
|
|
14104
15673
|
};
|
|
14105
|
-
|
|
14106
|
-
* Format: date-time
|
|
14107
|
-
* @description RFC 3339 UTC timestamp with Z.
|
|
14108
|
-
*/
|
|
14109
|
-
resolved_at: string;
|
|
15674
|
+
operation: components["schemas"]["Operation"] | null;
|
|
14110
15675
|
};
|
|
14111
15676
|
};
|
|
14112
15677
|
};
|
|
@@ -35363,6 +36928,18 @@ export interface operations {
|
|
|
35363
36928
|
disk_gib: number;
|
|
35364
36929
|
}[];
|
|
35365
36930
|
heartbeat_stale_after_seconds: number;
|
|
36931
|
+
/** @description Contracts §42.5: what draining this host costs in memory (cell.hosts.drain_runtime_impact). */
|
|
36932
|
+
runtime_impact?: {
|
|
36933
|
+
/** @description known: recorded by the cell’s capacity tick within 15 minutes; unknown: not recorded; stale: older (both reported, neither blocks). */
|
|
36934
|
+
status: "known" | "unknown" | "stale";
|
|
36935
|
+
memory_lost: number | null;
|
|
36936
|
+
waits: number | null;
|
|
36937
|
+
/** @description Affected snapshot compatibility keys with counts and their outlook without this host (largest first, at most 20). */
|
|
36938
|
+
keys: {
|
|
36939
|
+
[key: string]: unknown;
|
|
36940
|
+
}[];
|
|
36941
|
+
computed_at: string | null;
|
|
36942
|
+
};
|
|
35366
36943
|
host: {
|
|
35367
36944
|
/**
|
|
35368
36945
|
* Format: uuid
|
|
@@ -35554,6 +37131,18 @@ export interface operations {
|
|
|
35554
37131
|
disk_gib: number;
|
|
35555
37132
|
}[];
|
|
35556
37133
|
heartbeat_stale_after_seconds: number;
|
|
37134
|
+
/** @description Contracts §42.5: what draining this host costs in memory (cell.hosts.drain_runtime_impact). */
|
|
37135
|
+
runtime_impact?: {
|
|
37136
|
+
/** @description known: recorded by the cell’s capacity tick within 15 minutes; unknown: not recorded; stale: older (both reported, neither blocks). */
|
|
37137
|
+
status: "known" | "unknown" | "stale";
|
|
37138
|
+
memory_lost: number | null;
|
|
37139
|
+
waits: number | null;
|
|
37140
|
+
/** @description Affected snapshot compatibility keys with counts and their outlook without this host (largest first, at most 20). */
|
|
37141
|
+
keys: {
|
|
37142
|
+
[key: string]: unknown;
|
|
37143
|
+
}[];
|
|
37144
|
+
computed_at: string | null;
|
|
37145
|
+
};
|
|
35557
37146
|
host: {
|
|
35558
37147
|
/**
|
|
35559
37148
|
* Format: uuid
|
|
@@ -35742,6 +37331,18 @@ export interface operations {
|
|
|
35742
37331
|
disk_gib: number;
|
|
35743
37332
|
}[];
|
|
35744
37333
|
heartbeat_stale_after_seconds: number;
|
|
37334
|
+
/** @description Contracts §42.5: what draining this host costs in memory (cell.hosts.drain_runtime_impact). */
|
|
37335
|
+
runtime_impact?: {
|
|
37336
|
+
/** @description known: recorded by the cell’s capacity tick within 15 minutes; unknown: not recorded; stale: older (both reported, neither blocks). */
|
|
37337
|
+
status: "known" | "unknown" | "stale";
|
|
37338
|
+
memory_lost: number | null;
|
|
37339
|
+
waits: number | null;
|
|
37340
|
+
/** @description Affected snapshot compatibility keys with counts and their outlook without this host (largest first, at most 20). */
|
|
37341
|
+
keys: {
|
|
37342
|
+
[key: string]: unknown;
|
|
37343
|
+
}[];
|
|
37344
|
+
computed_at: string | null;
|
|
37345
|
+
};
|
|
35745
37346
|
host: {
|
|
35746
37347
|
/**
|
|
35747
37348
|
* Format: uuid
|
|
@@ -35935,6 +37536,18 @@ export interface operations {
|
|
|
35935
37536
|
disk_gib: number;
|
|
35936
37537
|
}[];
|
|
35937
37538
|
heartbeat_stale_after_seconds: number;
|
|
37539
|
+
/** @description Contracts §42.5: what draining this host costs in memory (cell.hosts.drain_runtime_impact). */
|
|
37540
|
+
runtime_impact?: {
|
|
37541
|
+
/** @description known: recorded by the cell’s capacity tick within 15 minutes; unknown: not recorded; stale: older (both reported, neither blocks). */
|
|
37542
|
+
status: "known" | "unknown" | "stale";
|
|
37543
|
+
memory_lost: number | null;
|
|
37544
|
+
waits: number | null;
|
|
37545
|
+
/** @description Affected snapshot compatibility keys with counts and their outlook without this host (largest first, at most 20). */
|
|
37546
|
+
keys: {
|
|
37547
|
+
[key: string]: unknown;
|
|
37548
|
+
}[];
|
|
37549
|
+
computed_at: string | null;
|
|
37550
|
+
};
|
|
35938
37551
|
host: {
|
|
35939
37552
|
/**
|
|
35940
37553
|
* Format: uuid
|
|
@@ -37085,4 +38698,116 @@ export interface operations {
|
|
|
37085
38698
|
};
|
|
37086
38699
|
};
|
|
37087
38700
|
};
|
|
38701
|
+
getApiV1OauthAuthorization: {
|
|
38702
|
+
parameters: {
|
|
38703
|
+
query?: {
|
|
38704
|
+
response_type?: string;
|
|
38705
|
+
client_id?: string;
|
|
38706
|
+
redirect_uri?: string;
|
|
38707
|
+
code_challenge?: string;
|
|
38708
|
+
code_challenge_method?: string;
|
|
38709
|
+
scope?: string;
|
|
38710
|
+
state?: string;
|
|
38711
|
+
resource?: string;
|
|
38712
|
+
};
|
|
38713
|
+
header?: never;
|
|
38714
|
+
path?: never;
|
|
38715
|
+
cookie?: never;
|
|
38716
|
+
};
|
|
38717
|
+
requestBody?: never;
|
|
38718
|
+
responses: {
|
|
38719
|
+
/** @description Default Response */
|
|
38720
|
+
200: {
|
|
38721
|
+
headers: {
|
|
38722
|
+
[name: string]: unknown;
|
|
38723
|
+
};
|
|
38724
|
+
content: {
|
|
38725
|
+
"application/json": components["schemas"]["OAuthConsentView"];
|
|
38726
|
+
};
|
|
38727
|
+
};
|
|
38728
|
+
/** @description Default Response */
|
|
38729
|
+
"4XX": {
|
|
38730
|
+
headers: {
|
|
38731
|
+
[name: string]: unknown;
|
|
38732
|
+
};
|
|
38733
|
+
content: {
|
|
38734
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
38735
|
+
};
|
|
38736
|
+
};
|
|
38737
|
+
/** @description Default Response */
|
|
38738
|
+
"5XX": {
|
|
38739
|
+
headers: {
|
|
38740
|
+
[name: string]: unknown;
|
|
38741
|
+
};
|
|
38742
|
+
content: {
|
|
38743
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
38744
|
+
};
|
|
38745
|
+
};
|
|
38746
|
+
};
|
|
38747
|
+
};
|
|
38748
|
+
postApiV1OauthAuthorization: {
|
|
38749
|
+
parameters: {
|
|
38750
|
+
query?: never;
|
|
38751
|
+
header?: never;
|
|
38752
|
+
path?: never;
|
|
38753
|
+
cookie?: never;
|
|
38754
|
+
};
|
|
38755
|
+
requestBody: {
|
|
38756
|
+
content: {
|
|
38757
|
+
"application/json": {
|
|
38758
|
+
/** @description The authorization request exactly as /oauth/authorize received it (RFC 6749 §4.1.1, PKCE S256, RFC 8707 resource). */
|
|
38759
|
+
request: {
|
|
38760
|
+
response_type?: string;
|
|
38761
|
+
client_id?: string;
|
|
38762
|
+
redirect_uri?: string;
|
|
38763
|
+
code_challenge?: string;
|
|
38764
|
+
code_challenge_method?: string;
|
|
38765
|
+
scope?: string;
|
|
38766
|
+
state?: string;
|
|
38767
|
+
resource?: string;
|
|
38768
|
+
} & {
|
|
38769
|
+
[key: string]: unknown;
|
|
38770
|
+
};
|
|
38771
|
+
decision: "approve" | "deny";
|
|
38772
|
+
/**
|
|
38773
|
+
* Format: uuid
|
|
38774
|
+
* @description UUIDv7, lowercase canonical form.
|
|
38775
|
+
*/
|
|
38776
|
+
project_id?: string;
|
|
38777
|
+
};
|
|
38778
|
+
};
|
|
38779
|
+
};
|
|
38780
|
+
responses: {
|
|
38781
|
+
/** @description Default Response */
|
|
38782
|
+
200: {
|
|
38783
|
+
headers: {
|
|
38784
|
+
[name: string]: unknown;
|
|
38785
|
+
};
|
|
38786
|
+
content: {
|
|
38787
|
+
"application/json": {
|
|
38788
|
+
/** @description Send the browser here (the client’s redirect_uri with code or error, state and iss). */
|
|
38789
|
+
redirect_to: string;
|
|
38790
|
+
};
|
|
38791
|
+
};
|
|
38792
|
+
};
|
|
38793
|
+
/** @description Default Response */
|
|
38794
|
+
"4XX": {
|
|
38795
|
+
headers: {
|
|
38796
|
+
[name: string]: unknown;
|
|
38797
|
+
};
|
|
38798
|
+
content: {
|
|
38799
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
38800
|
+
};
|
|
38801
|
+
};
|
|
38802
|
+
/** @description Default Response */
|
|
38803
|
+
"5XX": {
|
|
38804
|
+
headers: {
|
|
38805
|
+
[name: string]: unknown;
|
|
38806
|
+
};
|
|
38807
|
+
content: {
|
|
38808
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
38809
|
+
};
|
|
38810
|
+
};
|
|
38811
|
+
};
|
|
38812
|
+
};
|
|
37088
38813
|
}
|