{"openapi":"3.1.0","info":{"title":"BoxCompute Customer Sandbox API","version":"2.0.0","license":{"name":"Proprietary"},"description":"The public customer contract for /api/v2. This is not the private downstream Sandbox API.","x-versioning-policy":"Compatible fields and routes may be added within v2. Removing or changing existing behavior requires a new major path. Clients must ignore unknown response fields. SDK publication requires a versioned release generated from this document."},"servers":[{"url":"https://api.boxcompute.ai"}],"paths":{"/api/v2/openapi.json":{"get":{"operationId":"getPublicOpenApi","summary":"Download this public contract","security":[],"responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v2/auth":{"delete":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"revokeCurrentApiKey","summary":"Revoke the API key used for this request","responses":{"204":{"description":"Key revoked"},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/me":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"getCurrentIdentity","summary":"Introspect the API key's account","description":"Returns the account and API key the bearer token authenticates, to confirm which identity a token represents.","responses":{"200":{"description":"The authenticated account and API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/workspaces":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"listWorkspaces","summary":"List owned workspaces","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["workspaces"],"properties":{"workspaces":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"}}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"workspace:create","operationId":"createWorkspace","summary":"Create an account workspace","description":"Creates an empty workspace for the authenticated account. The public API allows at most 10 workspaces per account. This operation does not grant workspace deletion rights.","parameters":[{"$ref":"#/components/parameters/RequiredIdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceRequest"}}}},"responses":{"201":{"description":"Workspace created or original response replayed","content":{"application/json":{"schema":{"type":"object","required":["workspace"],"properties":{"workspace":{"$ref":"#/components/schemas/Workspace"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency conflict or workspace quota exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"listSandboxes","summary":"List owned Sandbox instances","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["sandboxes"],"properties":{"sandboxes":{"type":"array","items":{"$ref":"#/components/schemas/Sandbox"}}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:create","operationId":"createSandbox","summary":"Create and start a Sandbox in an owned workspace","description":"VM Sandboxes require Idempotency-Key and return promptly as pending while durable reconciliation provisions the fixed VM profile. Reuse the same key to recover the same public Sandbox; replay returns 202 while pending and 201 once ready. A VM refused by the account's Sandbox or storage limit becomes expired, and replay returns 429 with the reason.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSandboxRequest"}}}},"responses":{"201":{"description":"Sandbox created and running","content":{"application/json":{"schema":{"type":"object","required":["sandbox"],"properties":{"sandbox":{"$ref":"#/components/schemas/Sandbox"}}}}}},"202":{"description":"VM Sandbox durably accepted and pending","content":{"application/json":{"schema":{"type":"object","required":["sandbox"],"properties":{"sandbox":{"$ref":"#/components/schemas/Sandbox"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency key was used with a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The account's Sandbox count or workspace storage limit is reached; stopped Sandboxes count toward both","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"inspectSandbox","summary":"Inspect an owned Sandbox","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["sandbox"],"properties":{"sandbox":{"$ref":"#/components/schemas/Sandbox"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:delete","operationId":"deleteSandbox","summary":"Delete an owned Sandbox and its volume","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}}],"responses":{"204":{"description":"Sandbox deleted"},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/analytics":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"getSandboxAnalytics","summary":"Read bounded lifecycle, operation, and resource analytics","description":"Returns generation-safe customer aggregates for one owned logical Sandbox. Missing resource telemetry is distinct from a numeric zero, and the response never exposes provider or Kubernetes identifiers.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"resolutionSeconds","in":"query","schema":{"default":300,"type":"integer","minimum":60,"maximum":86400}},{"name":"generation","in":"query","schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["analytics"],"properties":{"analytics":{"$ref":"#/components/schemas/SandboxAnalytics"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-account analytics request limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/logs":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"listSandboxLogs","summary":"Read retained Sandbox logs","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"until","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"stream","in":"query","schema":{"type":"string","enum":["stdout","stderr"]}},{"name":"source","in":"query","schema":{"type":"string","enum":["workload","execute","process"]}},{"name":"limit","in":"query","schema":{"default":1000,"type":"integer","minimum":1,"maximum":5000}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["logs"],"properties":{"logs":{"$ref":"#/components/schemas/SandboxLogs"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/execute":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"executeCommand","summary":"Execute structured argv in an owned Sandbox","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["result"],"properties":{"result":{"$ref":"#/components/schemas/ExecutionResult"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"Execution timed out","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/previews":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"createSandboxPreview","summary":"Create a one-hour HTTP/WebSocket preview for one VM port","description":"Creates an in-memory bearer hostname backed by an app-owned Tailcat client. The Sandbox must be an owned, running, network-enabled VM. The hostname is removed after one hour or explicit close; guest revoke remains an untrusted cooperative report.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePreviewRequest"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["preview"],"properties":{"preview":{"$ref":"#/components/schemas/Preview"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The VM already has a preview tunnel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Preview transport unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/previews/{previewId}":{"delete":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"closeSandboxPreview","summary":"Close an exact browser preview","description":"Removes the bearer hostname, stops the app-owned client, and attempts exact-generation guest revoke. This is not host-confirmed transport retirement.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"previewId","in":"path","required":true,"description":"Random browser-preview capability identifier.","schema":{"type":"string","pattern":"^[a-f0-9]{32}$"}}],"responses":{"204":{"description":"Preview closed"},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Preview URL is disabled but cleanup remains pending","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/services":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"createServiceAccess","summary":"Open selected TCP access to an owned active VM (default off)","description":"Required UUIDv4 Idempotency-Key and immutable requested_at. One retained client, 1–8 strictly ascending unique ports, exact requested_at+3600 expiry. No provisioning or mutation retry. Returns only a sealed capability.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$ref":"#/components/schemas/ServiceAccessId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccessRequest"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccessEnvelope"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/services/lookup":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"lookupServiceAccess","summary":"Recover the original live service envelope without renewal","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"$ref":"#/components/schemas/ServiceAccessId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccessRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccessEnvelope"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/services/{generationId}":{"delete":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"revokeServiceAccess","summary":"Revoke the exact service generation","description":"The cleanup field reports the runtime profile's evidence. VM guest reports are untrusted and never represented as independent physical-stop proof.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"generationId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ServiceAccessId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccessRevoke"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/cooperative-connection":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"activateCooperativeConnection","summary":"Activate the operator-selected cooperative SSH MVP (default off)","description":"Existing owned active runtime only. One nonrenewable grant of at most 30 seconds; no provisioning, retry or physical-stop guarantee.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CooperativeConnectionKeys"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CooperativeEnvelope"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/start":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:create","operationId":"startExistingSandbox","summary":"Start an existing owned Sandbox slot","description":"No slot allocation or caller-selected image. Reuses its current runtime; operator-selected cooperative slots cannot restore sleeping or terminal runtimes.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartSandboxRequest"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["sandbox"],"properties":{"sandbox":{"$ref":"#/components/schemas/Sandbox"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The account's Sandbox count or workspace storage limit is reached; stopped Sandboxes count toward both","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/cooperative-connection/{endpointId}":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"reconnectCooperativeConnection","summary":"Return the unchanged original envelope for the same keys","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"endpointId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CooperativeEndpointId"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CooperativeConnectionKeys"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CooperativeEnvelope"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"revokeCooperativeConnection","summary":"Request best-effort cooperative cleanup; always unconfirmed","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"endpointId","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CooperativeEndpointId"}}],"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CooperativeRevoke"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/operations":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"startSandboxOperation","summary":"Start an independently observable command","description":"Starts structured argv without tying remote cancellation to the HTTP connection. Reuse the required account-scoped idempotency key to recover the original operation after a lost response.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"$ref":"#/components/parameters/RequiredIdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartOperationRequest"}}}},"responses":{"202":{"description":"Operation accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency key was used with a different request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/operations/{operationId}":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"inspectSandboxOperation","summary":"Inspect an operation","description":"Terminal states are immutable. A non-zero command exit is a completed operation with its exitCode.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"operationId","in":"path","required":true,"description":"Opaque customer-facing operation ID.","schema":{"type":"string","pattern":"^op_[a-f0-9]{32}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/operations/{operationId}/output":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"readSandboxOperationOutput","summary":"Read bounded operation output from a byte offset","description":"Returns at most limit decoded bytes. offset and nextOffset are absolute byte offsets. truncated is true when requested earlier bytes are no longer retained.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"operationId","in":"path","required":true,"description":"Opaque customer-facing operation ID.","schema":{"type":"string","pattern":"^op_[a-f0-9]{32}$"}},{"name":"stream","in":"query","required":true,"schema":{"type":"string","enum":["stdout","stderr"]}},{"name":"offset","in":"query","required":true,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","schema":{"default":65536,"type":"integer","minimum":1,"maximum":262144}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationOutputChunk"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/operations/{operationId}/wait":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"waitForSandboxOperation","summary":"Wait up to 30 seconds for operation progress","description":"A wait timeout returns the current non-terminal operation; it is not a transport error and does not cancel the command.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"operationId","in":"path","required":true,"description":"Opaque customer-facing operation ID.","schema":{"type":"string","pattern":"^op_[a-f0-9]{32}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitOperationRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 128 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/operations/{operationId}/cancel":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"cancelSandboxOperation","summary":"Request operation cancellation","description":"Returns cancelled only when cancellation wins. If completion wins the race, returns that immutable completed terminal result. Repeating cancellation returns the existing terminal result.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"operationId","in":"path","required":true,"description":"Opaque customer-facing operation ID.","schema":{"type":"string","pattern":"^op_[a-f0-9]{32}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/files/stat":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"statSandboxFile","summary":"Stat a path in an owned Sandbox workspace","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileStatResponse"}}}},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The file or directory changed after the continuation cursor was issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/files/content":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"readSandboxFile","summary":"Read bounded binary content from an owned Sandbox workspace","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}},{"name":"offset","in":"query","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"maxBytes","in":"query","schema":{"default":8388608,"type":"integer","minimum":1,"maximum":8388608}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":4096}}],"responses":{"200":{"description":"Bounded file bytes","headers":{"Accept-Ranges":{"schema":{"type":"string","const":"bytes"}},"X-BoxCompute-Offset":{"schema":{"type":"integer","minimum":0}},"X-BoxCompute-Next-Offset":{"schema":{"type":"integer","minimum":0}},"X-BoxCompute-File-Size":{"schema":{"type":"integer","minimum":0}},"X-BoxCompute-EOF":{"schema":{"type":"boolean"}},"X-BoxCompute-Next-Cursor":{"schema":{"type":"string"}}},"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary","maxLength":8388608,"x-boxcompute-max-bytes":8388608}}}},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The file or directory changed after the continuation cursor was issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"writeSandboxFile","summary":"Write bounded binary content to an owned Sandbox workspace","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}}],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary","maxLength":8388608,"x-boxcompute-max-bytes":8388608}}}},"responses":{"204":{"description":"File written"},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The file or directory changed after the continuation cursor was issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/octet-stream","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"editSandboxFile","summary":"Atomically edit UTF-8 text when its SHA-256 precondition matches","description":"The edit commits as one atomic replacement only when expectedSha256 matches the complete current file. A stale hash returns PRECONDITION_FAILED without changing the file. Unless replaceAll is true, oldText must occur exactly once. Transport failure before a response leaves the outcome indeterminate; retry only after reading the file again.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditFileRequest"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditFileResponse"}}}},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"oldText is absent or ambiguous","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"412":{"description":"File content no longer matches expectedSha256","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/files/list":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"listSandboxFiles","summary":"List one stable bounded page from an owned Sandbox directory","description":"Entries use the Sandbox filesystem's stable native directory order. Pass nextCursor unchanged to continue. A directory membership mutation invalidates the cursor with CURSOR_STALE; child metadata can reflect its value when that page is read.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}},{"name":"pageSize","in":"query","schema":{"default":1000,"type":"integer","minimum":1,"maximum":1000}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":4096}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileList"}}}},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The file or directory changed after the continuation cursor was issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/files/directory":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"createSandboxDirectory","summary":"Create a directory in an owned Sandbox workspace","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDirectoryRequest"}}}},"responses":{"204":{"description":"Directory created"},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The file or directory changed after the continuation cursor was issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/files/rename":{"post":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"renameSandboxFile","summary":"Atomically rename a path in an owned Sandbox workspace","description":"Source and destination must stay in the same Sandbox workspace and both parents must exist. By default an existing destination returns DESTINATION_EXISTS; overwrite atomically replaces it. A transport failure before a response leaves the outcome indeterminate, so inspect both paths before retrying.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameFileRequest"}}}},"responses":{"204":{"description":"Path renamed"},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Destination exists and overwrite is false","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Request body is not application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/files":{"delete":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:execute","operationId":"removeSandboxFile","summary":"Remove a file or directory from an owned Sandbox workspace","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"}},{"name":"recursive","in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}},{"name":"force","in":"query","schema":{"default":"false","type":"string","enum":["true","false"]}}],"responses":{"204":{"description":"Path removed"},"400":{"description":"Invalid or unsafe file path or options","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"BoxCompute credit is exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned Sandbox or file not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The file or directory changed after the continuation cursor was issued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File request or response exceeds its byte or entry limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sandbox runtime unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/usage":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"usage:read","operationId":"getUsage","summary":"Read account usage","parameters":[{"name":"days","in":"query","schema":{"default":30,"type":"integer","minimum":1,"maximum":90}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["usage"],"properties":{"usage":{"$ref":"#/components/schemas/Usage"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/deleted-sandboxes":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"listDeletedSandboxes","summary":"List deleted Sandboxes, newest first","description":"Read-only history kept for about 15 months after deletion. A deleted Sandbox holds no compute, quota or storage; its retained logs remain readable while the log store keeps them (about 30 days).","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletedSandboxList"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/deleted-sandboxes/{id}/logs":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"sandbox:read","operationId":"listDeletedSandboxLogs","summary":"Read a deleted Sandbox's retained logs","description":"Defaults to the most recent runtime; pass one of the Sandbox's runtimes to read an earlier one.","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"until","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"stream","in":"query","schema":{"type":"string","enum":["stdout","stderr"]}},{"name":"source","in":"query","schema":{"type":"string","enum":["workload","execute","process"]}},{"name":"limit","in":"query","schema":{"default":1000,"type":"integer","minimum":1,"maximum":5000}},{"name":"runtime","in":"query","schema":{"type":"string","minLength":1,"maxLength":128}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["logs"],"properties":{"logs":{"$ref":"#/components/schemas/SandboxLogs"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/costs/sandboxes":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"usage:read","operationId":"getSandboxCostReport","summary":"Compute cost per API key and per Sandbox","description":"Settled charges are exact ledger amounts for runs that ended in the window (default: last 30 days); estimatedMicros covers runs still in progress and is replaced by the settled charge once the run is finalized. Includes deleted Sandboxes. Pass apiKeyId=none for Sandboxes not created with an API key. Billing is per second with a 60-second minimum per run.","parameters":[{"name":"from","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"apiKeyId","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["costs"],"properties":{"costs":{"$ref":"#/components/schemas/SandboxCostReport"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/billing":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"usage:read","operationId":"getBillingSummary","summary":"Read remaining credit and settled AI/compute spending","description":"Amounts are integer micro-USD (1000000 = $1). Settled usage is all-time; holds and running compute are separate. availableMicros is null when live compute estimates are unavailable. Observation-mode AI does not debit the wallet. This read never starts or resumes compute.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["billing"],"properties":{"billing":{"$ref":"#/components/schemas/BillingSummary"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/billing/transactions":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"usage:read","operationId":"listBillingTransactions","summary":"Page the account's verified wallet transactions","description":"Newest first, ordered by creation time and ID. Pass nextCursor as before. from is inclusive and to exclusive. Positive amountMicros adds credit; negative subtracts it. Entries are bucket-level, so one charge may have multiple entries. Quarantined usage and zero-value expiry bookkeeping are excluded. No internal payment references or operator identities are returned.","parameters":[{"name":"from","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"kind","in":"query","schema":{"type":"string","minLength":1,"maxLength":64}},{"name":"bucket","in":"query","schema":{"type":"string","enum":["cash","promo","plan"]}},{"name":"before","in":"query","schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingTransactionPage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/sandboxes/{id}/costs":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"usage:read","operationId":"getSandboxCosts","summary":"Every charged run of a Sandbox, with a running estimate","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["costs"],"properties":{"costs":{"$ref":"#/components/schemas/SandboxCostDetail"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/deleted-sandboxes/{id}/costs":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"usage:read","operationId":"getDeletedSandboxCosts","summary":"Every charged run of a deleted Sandbox","parameters":[{"name":"id","in":"path","required":true,"description":"Customer-facing Sandbox ID.","schema":{"type":"string","pattern":"^sbx_"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["costs"],"properties":{"costs":{"$ref":"#/components/schemas/SandboxCostDetail"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Owned resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"501":{"description":"Operation unsupported by this runtime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Sandbox service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v2/audit-events":{"get":{"security":[{"bearerAuth":[]}],"x-boxcompute-required-scope":"usage:read","operationId":"listAuditEvents","summary":"List the account's API audit log, newest first","description":"Every API-key request plus key creation, revocation and rejected-key attempts. Page with nextCursor as before. Reads are retained 31 days; writes and key events about 15 months. Each API response's Request-Id header matches an event's requestId.","parameters":[{"name":"apiKeyId","in":"query","schema":{"type":"string","maxLength":64}},{"name":"type","in":"query","schema":{"type":"string","enum":["api.request","api_key.created","api_key.revoked","api_key.rejected"]}},{"name":"resourceId","in":"query","schema":{"type":"string","maxLength":128}},{"name":"method","in":"query","schema":{"type":"string","enum":["GET","HEAD","POST","PUT","PATCH","DELETE"]}},{"name":"outcome","in":"query","schema":{"type":"string","enum":["success","error"]}},{"name":"from","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"to","in":"query","schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},{"name":"before","in":"query","schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditEventPage"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"API key lacks the required scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","description":"Account-scoped replay key. Use 1–255 visible ASCII characters. Repeating the same canonical request within 24 hours replays the original response; using the key for a different public mutation returns IDEMPOTENCY_CONFLICT.","schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x21-\\x7e]+$"},"required":false},"RequiredIdempotencyKey":{"name":"Idempotency-Key","in":"header","description":"Account-scoped replay key. Use 1–255 visible ASCII characters. Repeating the same canonical request within 24 hours replays the original response; using the key for a different public mutation returns IDEMPOTENCY_CONFLICT.","schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[\\x21-\\x7e]+$"},"required":true}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"BoxCompute API key (bc_live_…)","description":"Account-scoped key. Each operation declares its required scope."}},"schemas":{"BillingSummary":{"type":"object","properties":{"currency":{"type":"string","const":"usd"},"accountStatus":{"type":"string","enum":["active","frozen"]},"balance":{"type":"object","properties":{"cashMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"promoMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"planMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"availableMicros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Spendable credit after holds and running compute; null when compute estimates are unavailable."},"reservedMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiringPromo":{"anyOf":[{"type":"object","properties":{"micros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["micros","expiresAt"],"additionalProperties":false},{"type":"null"}]}},"required":["cashMicros","promoMicros","planMicros","totalMicros","availableMicros","reservedMicros","expiringPromo"],"additionalProperties":false},"settledUsage":{"type":"object","properties":{"aiMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sandboxMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["aiMicros","sandboxMicros","totalMicros"],"additionalProperties":false,"description":"All-time verified wallet deductions for AI and compute. Excludes holds, running estimates and observed AI costs."},"activeEstimate":{"type":"object","properties":{"status":{"type":"string","enum":["available","not_applicable","unavailable"]},"asOf":{"anyOf":[{"type":"string"},{"type":"null"}]},"runtimeSeconds":{"type":"number","minimum":0},"billableSeconds":{"type":"number","minimum":0},"amountMicros":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["status","asOf","runtimeSeconds","billableSeconds","amountMicros"],"additionalProperties":false},"modelBillingMode":{"type":"string","enum":["observe","enforced"]}},"required":["currency","accountStatus","balance","settledUsage","activeEstimate","modelBillingMode"],"additionalProperties":false},"BillingTransaction":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"bucket":{"type":"string","enum":["cash","promo","plan"]},"amountMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","kind","bucket","amountMicros","description","createdAt","expiresAt"],"additionalProperties":false},"BillingTransactionPage":{"type":"object","properties":{"currency":{"type":"string","const":"usd"},"transactions":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"bucket":{"type":"string","enum":["cash","promo","plan"]},"amountMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","kind","bucket","amountMicros","description","createdAt","expiresAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["currency","transactions","nextCursor"],"additionalProperties":false},"StartSandboxRequest":{"type":"object","properties":{},"additionalProperties":false},"ServiceAccessRequest":{"type":"object","properties":{"requested_at":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"client_key":{"type":"string","pattern":"^nodekey:(?!0{64}$)[a-f0-9]{64}$"},"recipient_key":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$"},"ports":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"integer","minimum":1,"maximum":65535}}},"required":["requested_at","client_key","recipient_key","ports"],"additionalProperties":false},"ServiceAccessId":{"type":"string","pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"},"ServiceAccessEnvelope":{"type":"object","properties":{"generation_id":{"type":"string","pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"},"expires_at":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sealed":{"type":"string","minLength":80,"maxLength":16000}},"required":["generation_id","expires_at","sealed"],"additionalProperties":false},"ServiceAccessRevoke":{"type":"object","properties":{"generation_id":{"type":"string"},"cleanup":{"type":"string","enum":["guardian-confirmed","untrusted-guest-report"]}},"required":["generation_id","cleanup"],"additionalProperties":false},"CooperativeConnectionKeys":{"type":"object","properties":{"client_key":{"type":"string","pattern":"^nodekey:(?!0{64}$)[a-f0-9]{64}$"},"ssh_key":{"type":"string","pattern":"^ssh-ed25519 [A-Za-z0-9+/]{68}$"},"recipient_key":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$"}},"required":["client_key","ssh_key","recipient_key"],"additionalProperties":false},"CooperativeEndpointId":{"type":"string","pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"},"CooperativeEnvelope":{"type":"object","properties":{"endpoint_id":{"type":"string","pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"},"expires_at":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sealed":{"type":"string","minLength":80,"maxLength":16000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"}},"required":["endpoint_id","expires_at","sealed"],"additionalProperties":false},"CooperativeRevoke":{"type":"object","properties":{"endpoint_id":{"type":"string"},"cleanup":{"type":"string","const":"unconfirmed"}},"required":["endpoint_id","cleanup"],"additionalProperties":false},"Error":{"type":"object","properties":{"code":{"type":"string","enum":["AUTHENTICATION_REQUIRED","INVALID_API_KEY","ACCOUNT_SUSPENDED","INSUFFICIENT_SCOPE","INSUFFICIENT_CREDIT","BILLING_ACCOUNT_FROZEN","FEATURE_ACCESS_DENIED","INVALID_REQUEST","INVALID_PATH","INVALID_RANGE","INVALID_CURSOR","CURSOR_STALE","NOT_FOUND","FILE_NOT_FOUND","DESTINATION_EXISTS","PRECONDITION_FAILED","EDIT_CONFLICT","BINARY_FILE","EXECUTION_TIMEOUT","PAYLOAD_TOO_LARGE","SANDBOX_UNAVAILABLE","UNSUPPORTED_MEDIA_TYPE","UNSUPPORTED_FEATURE","INVALID_IDEMPOTENCY_KEY","IDEMPOTENCY_CONFLICT","WORKSPACE_QUOTA_EXCEEDED","SERVICE_UNAVAILABLE","RATE_LIMITED"]},"error":{"type":"string"}},"required":["code","error"],"additionalProperties":false},"Workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","name","createdAt"],"additionalProperties":false},"Me":{"type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","email","name"],"additionalProperties":false},"apiKey":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"scopes":{"minItems":1,"type":"array","items":{"type":"string"}},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","name","scopes","createdAt","lastUsedAt"],"additionalProperties":false}},"required":["account","apiKey"],"additionalProperties":false},"CreateWorkspaceRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"}},"required":["name"],"additionalProperties":{}},"Sandbox":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string"},"name":{"type":"string"},"state":{"type":"string","enum":["cold","pending","running","expired"]},"vmSandbox":{"type":"boolean"},"blockNetwork":{"description":"Immutable VM network intent: true means no NIC; false means Internet. Omitted for non-VM sandboxes and historical replay responses.","type":"boolean"},"size":{"description":"Immutable VM resource profile. Omitted for historical replay responses written before the selector existed; those rows are small.","type":"string","enum":["small","large"]},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id","workspaceId","name","state","vmSandbox","createdAt","lastUsedAt"],"additionalProperties":false},"CreateSandboxRequest":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"pattern":"\\S"},"name":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},"vmSandbox":{"default":true,"description":"Runtime selection. Omitted or true creates a VM sandbox (fixed image; no volumes, libraries or image override). False is rejected with INVALID_REQUEST; new gVisor creation is disabled. An explicit vmSandbox:true requires an Idempotency-Key header; an omitted vmSandbox may create keyless, in which case the server generates the key. Completed historical idempotency responses retain their original runtime.","type":"boolean","const":true},"blockNetwork":{"description":"VM only: defaults to false (Internet) for new requests; true selects no NIC. Historical idempotency replays retain their original blocked intent.","type":"boolean"},"size":{"default":"small","description":"VM only: resource profile. Omitted or \"small\" is 0.5 vCPU / 1024 MiB; \"large\" is 1.5 vCPU / 3072 MiB. Both default to a 30 GiB thin-provisioned workspace. Historical idempotency replays retain their original size and workspace capacity.","type":"string","enum":["small","large"]}},"required":["workspaceId"],"additionalProperties":{}},"ExecuteRequest":{"type":"object","properties":{"argv":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":8192}},"cwd":{"default":"/workspace","type":"string","pattern":"^\\/workspace(?:\\/.*)?$"},"env":{"type":"object","propertyNames":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$"},"additionalProperties":{"type":"string"},"maxProperties":64},"timeoutSeconds":{"default":120,"type":"integer","minimum":1,"maximum":900},"maxOutputBytes":{"default":262144,"type":"integer","minimum":1,"maximum":1048576}},"required":["argv"],"additionalProperties":{}},"CreatePreviewRequest":{"type":"object","properties":{"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["port"],"additionalProperties":false},"Preview":{"type":"object","properties":{"previewId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"sandboxId":{"type":"string"},"port":{"type":"integer","minimum":1,"maximum":65535},"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["previewId","sandboxId","port","url","expiresAt"],"additionalProperties":false},"StartOperationRequest":{"type":"object","properties":{"argv":{"minItems":1,"maxItems":64,"type":"array","items":{"type":"string","minLength":1,"maxLength":8192}},"cwd":{"default":"/workspace","type":"string","pattern":"^\\/workspace(?:\\/.*)?$"},"env":{"type":"object","propertyNames":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$"},"additionalProperties":{"type":"string"},"maxProperties":64},"timeoutSeconds":{"default":120,"type":"integer","minimum":1,"maximum":900},"maxOutputBytes":{"default":262144,"type":"integer","minimum":1,"maximum":1048576}},"required":["argv"],"additionalProperties":{}},"ExecutionResult":{"type":"object","properties":{"stdout":{"type":"string"},"stderr":{"type":"string"},"exitCode":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timedOut":{"type":"boolean"},"stdoutTruncated":{"type":"boolean"},"stderrTruncated":{"type":"boolean"}},"required":["stdout","stderr","exitCode","timedOut","stdoutTruncated","stderrTruncated"],"additionalProperties":false},"Operation":{"type":"object","properties":{"operationId":{"type":"string","pattern":"^op_[a-f0-9]{32}$"},"state":{"type":"string","enum":["accepted","running","completed","failed","timedOut","cancelled"]},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"stdoutOffset":{"type":"integer","minimum":0,"maximum":9007199254740991},"stderrOffset":{"type":"integer","minimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["operationId","state","exitCode","signal","acceptedAt","startedAt","finishedAt","stdoutOffset","stderrOffset","expiresAt"],"additionalProperties":false},"OperationResponse":{"type":"object","properties":{"operation":{"type":"object","properties":{"operationId":{"type":"string","pattern":"^op_[a-f0-9]{32}$"},"state":{"type":"string","enum":["accepted","running","completed","failed","timedOut","cancelled"]},"exitCode":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]},"acceptedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"stdoutOffset":{"type":"integer","minimum":0,"maximum":9007199254740991},"stderrOffset":{"type":"integer","minimum":0,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["operationId","state","exitCode","signal","acceptedAt","startedAt","finishedAt","stdoutOffset","stderrOffset","expiresAt"],"additionalProperties":false}},"required":["operation"],"additionalProperties":false},"OperationOutputChunk":{"type":"object","properties":{"stream":{"type":"string","enum":["stdout","stderr"]},"dataBase64":{"type":"string"},"offset":{"type":"integer","minimum":0,"maximum":9007199254740991},"nextOffset":{"type":"integer","minimum":0,"maximum":9007199254740991},"earliestOffset":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncated":{"type":"boolean"}},"required":["stream","dataBase64","offset","nextOffset","earliestOffset","truncated"],"additionalProperties":false},"WaitOperationRequest":{"type":"object","properties":{"timeoutSeconds":{"default":30,"type":"integer","minimum":0,"maximum":30}},"additionalProperties":{}},"SandboxLogs":{"type":"object","properties":{"sandboxId":{"type":"string"},"entries":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"string"},"stream":{"type":"string","enum":["stdout","stderr"]},"source":{"type":"string","enum":["workload","execute","process"]},"message":{"type":"string"}},"required":["timestamp","stream","source","message"],"additionalProperties":false}},"truncated":{"type":"boolean"},"retention_seconds":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["sandboxId","entries","truncated","retention_seconds"],"additionalProperties":false},"DeletedSandbox":{"type":"object","properties":{"id":{"type":"string"},"sandboxId":{"type":"string"},"name":{"type":"string"},"workspaceId":{"type":"string"},"workspaceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"vmSandbox":{"type":"boolean"},"size":{"type":"string"},"runtimes":{"type":"array","items":{"type":"string"}},"deletedVia":{"type":"string","enum":["console","api","agent","workspace"]},"deletedByApiKeyId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"deletedAt":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sandboxId","name","workspaceId","workspaceName","vmSandbox","size","runtimes","deletedVia","deletedByApiKeyId","createdAt","lastUsedAt","deletedAt"],"additionalProperties":false},"SandboxCostReport":{"type":"object","properties":{"from":{"type":"integer","minimum":0,"maximum":9007199254740991},"to":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string","const":"usd"},"estimates":{"type":"string","enum":["available","not_applicable","unavailable"]},"totals":{"type":"object","properties":{"runs":{"type":"integer","minimum":0,"maximum":9007199254740991},"billableSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"settledMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimatedMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["runs","billableSeconds","settledMicros","estimatedMicros"],"additionalProperties":false},"apiKeys":{"type":"array","items":{"type":"object","properties":{"runs":{"type":"integer","minimum":0,"maximum":9007199254740991},"billableSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"settledMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimatedMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"apiKey":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"hint":{"type":"string"},"revoked":{"type":"boolean"}},"required":["id","name","hint","revoked"],"additionalProperties":false},{"type":"null"}]},"sandboxes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["runs","billableSeconds","settledMicros","estimatedMicros","apiKey","sandboxes"],"additionalProperties":false}},"sandboxes":{"type":"array","items":{"type":"object","properties":{"runs":{"type":"integer","minimum":0,"maximum":9007199254740991},"billableSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"settledMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimatedMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"id":{"type":"string"},"sandboxId":{"type":"string"},"name":{"type":"string"},"deleted":{"type":"boolean"},"vmSandbox":{"type":"boolean"},"size":{"type":"string"},"createdByApiKeyId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"firstStartedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"lastEndedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["runs","billableSeconds","settledMicros","estimatedMicros","id","sandboxId","name","deleted","vmSandbox","size","createdByApiKeyId","createdAt","deletedAt","firstStartedAt","lastEndedAt"],"additionalProperties":false}},"unattributed":{"type":"object","properties":{"runs":{"type":"integer","minimum":0,"maximum":9007199254740991},"billableSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"settledMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimatedMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["runs","billableSeconds","settledMicros","estimatedMicros"],"additionalProperties":false}},"required":["from","to","currency","estimates","totals","apiKeys","sandboxes","unattributed"],"additionalProperties":false},"SandboxCostDetail":{"type":"object","properties":{"sandbox":{"type":"object","properties":{"runs":{"type":"integer","minimum":0,"maximum":9007199254740991},"billableSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"settledMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"estimatedMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"id":{"type":"string"},"sandboxId":{"type":"string"},"name":{"type":"string"},"deleted":{"type":"boolean"},"vmSandbox":{"type":"boolean"},"size":{"type":"string"},"createdByApiKeyId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"deletedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"firstStartedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"lastEndedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["runs","billableSeconds","settledMicros","estimatedMicros","id","sandboxId","name","deleted","vmSandbox","size","createdByApiKeyId","createdAt","deletedAt","firstStartedAt","lastEndedAt"],"additionalProperties":false},"createdByApiKey":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"hint":{"type":"string"},"revoked":{"type":"boolean"}},"required":["id","name","hint","revoked"],"additionalProperties":false},{"type":"null"}]},"currency":{"type":"string","const":"usd"},"estimates":{"type":"string","enum":["available","not_applicable","unavailable"]},"runs":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"startedAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"endedAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"runtimeSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"billableSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"rateMicrosPerMinute":{"type":"integer","minimum":0,"maximum":9007199254740991},"amountMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["startedAt","endedAt","runtimeSeconds","billableSeconds","rateMicrosPerMinute","amountMicros"],"additionalProperties":false}},"running":{"type":"array","items":{"type":"object","properties":{"startedAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"billableSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"estimatedMicros":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["startedAt","billableSeconds","estimatedMicros"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["sandbox","createdByApiKey","currency","estimates","runs","running","truncated"],"additionalProperties":false},"DeletedSandboxList":{"type":"object","properties":{"deletedSandboxes":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"sandboxId":{"type":"string"},"name":{"type":"string"},"workspaceId":{"type":"string"},"workspaceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"vmSandbox":{"type":"boolean"},"size":{"type":"string"},"runtimes":{"type":"array","items":{"type":"string"}},"deletedVia":{"type":"string","enum":["console","api","agent","workspace"]},"deletedByApiKeyId":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastUsedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"deletedAt":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","sandboxId","name","workspaceId","workspaceName","vmSandbox","size","runtimes","deletedVia","deletedByApiKeyId","createdAt","lastUsedAt","deletedAt"],"additionalProperties":false}}},"required":["deletedSandboxes"],"additionalProperties":false},"WorkspacePath":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"},"FileStat":{"type":"object","properties":{"path":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"},"kind":{"type":"string","enum":["file","dir","other"]},"isSymbolicLink":{"type":"boolean"},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"mtimeMs":{"type":"number","minimum":0}},"required":["path","kind","isSymbolicLink","size","mtimeMs"],"additionalProperties":false},"FileStatResponse":{"type":"object","properties":{"file":{"type":"object","properties":{"path":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"},"kind":{"type":"string","enum":["file","dir","other"]},"isSymbolicLink":{"type":"boolean"},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"mtimeMs":{"type":"number","minimum":0}},"required":["path","kind","isSymbolicLink","size","mtimeMs"],"additionalProperties":false}},"required":["file"],"additionalProperties":false},"FileListEntry":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"},"kind":{"type":"string","enum":["file","dir","symlink","other"]},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"mtimeMs":{"type":"number","minimum":0}},"required":["name","path","kind","size","mtimeMs"],"additionalProperties":false},"FileList":{"type":"object","properties":{"entries":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"},"kind":{"type":"string","enum":["file","dir","symlink","other"]},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"mtimeMs":{"type":"number","minimum":0}},"required":["name","path","kind","size","mtimeMs"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["entries","nextCursor"],"additionalProperties":false},"CreateDirectoryRequest":{"type":"object","properties":{"recursive":{"default":false,"type":"boolean"}},"additionalProperties":{}},"RenameFileRequest":{"type":"object","properties":{"destination":{"type":"string","maxLength":4096,"pattern":"^\\/workspace(?:\\/(?!\\.{1,2}(?:\\/|$))[^/\\0]+)*$"},"overwrite":{"default":false,"type":"boolean"}},"required":["destination","overwrite"],"additionalProperties":false},"EditFileRequest":{"type":"object","properties":{"expectedSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"oldText":{"type":"string","minLength":1,"maxLength":65536},"newText":{"type":"string","maxLength":65536},"replaceAll":{"default":false,"type":"boolean"}},"required":["expectedSha256","oldText","newText","replaceAll"],"additionalProperties":false},"EditFileResponse":{"type":"object","properties":{"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["sha256"],"additionalProperties":false},"Usage":{"type":"object","properties":{"since":{"type":"integer","minimum":0,"maximum":9007199254740991},"operations":{"type":"integer","minimum":0,"maximum":9007199254740991},"executions":{"type":"integer","minimum":0,"maximum":9007199254740991},"executionTimeMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"outputBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"failedOperations":{"type":"integer","minimum":0,"maximum":9007199254740991},"agentRuns":{"type":"integer","minimum":0,"maximum":9007199254740991},"toolCalls":{"type":"integer","minimum":0,"maximum":9007199254740991},"activeSandboxes":{"type":"integer","minimum":0,"maximum":9007199254740991},"sandboxSlots":{"type":"integer","minimum":0,"maximum":9007199254740991},"recent":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string"},"sandboxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"action":{"type":"string","enum":["sandbox.start","sandbox.inspect","sandbox.execute","sandbox.delete","sandbox.file.read","sandbox.file.write","sandbox.file.stat","sandbox.file.list","sandbox.file.mkdir","sandbox.file.rename","sandbox.file.edit","sandbox.file.remove"]},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"outputBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"success":{"type":"boolean"},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","workspaceId","sandboxId","action","durationMs","outputBytes","success","createdAt"],"additionalProperties":false}}},"required":["since","operations","executions","executionTimeMs","outputBytes","failedOperations","agentRuns","toolCalls","activeSandboxes","sandboxSlots","recent"],"additionalProperties":false},"AuditEvent":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["api.request","api_key.created","api_key.revoked","api_key.rejected"]},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"requestId":{"anyOf":[{"type":"string"},{"type":"null"}]},"actor":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","session"]},"apiKey":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"hint":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","hint"],"additionalProperties":false},{"type":"null"}]},"ipAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"userAgent":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","apiKey","ipAddress","userAgent"],"additionalProperties":false},"request":{"anyOf":[{"type":"object","properties":{"method":{"type":"string"},"route":{"anyOf":[{"type":"string"},{"type":"null"}]},"path":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["method","route","path","status","durationMs"],"additionalProperties":false},{"type":"null"}]},"resourceId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","createdAt","requestId","actor","request","resourceId"],"additionalProperties":false},"AuditEventPage":{"type":"object","properties":{"events":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["api.request","api_key.created","api_key.revoked","api_key.rejected"]},"createdAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"requestId":{"anyOf":[{"type":"string"},{"type":"null"}]},"actor":{"type":"object","properties":{"type":{"type":"string","enum":["api_key","session"]},"apiKey":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"hint":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","hint"],"additionalProperties":false},{"type":"null"}]},"ipAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"userAgent":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","apiKey","ipAddress","userAgent"],"additionalProperties":false},"request":{"anyOf":[{"type":"object","properties":{"method":{"type":"string"},"route":{"anyOf":[{"type":"string"},{"type":"null"}]},"path":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["method","route","path","status","durationMs"],"additionalProperties":false},{"type":"null"}]},"resourceId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","type","createdAt","requestId","actor","request","resourceId"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["events","nextCursor"],"additionalProperties":false},"SandboxAnalytics":{"type":"object","properties":{"sandboxId":{"type":"string"},"from":{"type":"integer","minimum":0,"maximum":9007199254740991},"to":{"type":"integer","minimum":0,"maximum":9007199254740991},"resolutionSeconds":{"type":"integer","minimum":60,"maximum":86400},"retentionSeconds":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"generationsTruncated":{"type":"boolean"},"selectedGeneration":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"operationsTruncated":{"type":"boolean"},"generations":{"maxItems":32,"type":"array","items":{"type":"object","properties":{"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"runtimeClass":{"type":"string","enum":["container","vm"]},"startedAt":{"type":"integer","minimum":0,"maximum":9007199254740991},"readyAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"stoppedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"finalizedAt":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"startupDurationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"runtimeDurationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["generation","runtimeClass","startedAt","readyAt","stoppedAt","finalizedAt","startupDurationMs","runtimeDurationMs"],"additionalProperties":false}},"operations":{"maxItems":1001,"type":"array","items":{"type":"object","properties":{"bucketStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"generation":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"operations":{"type":"integer","minimum":0,"maximum":9007199254740991},"executions":{"type":"integer","minimum":0,"maximum":9007199254740991},"durationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"executionDurationMs":{"type":"integer","minimum":0,"maximum":9007199254740991},"outputBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"failures":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["bucketStart","generation","operations","executions","durationMs","executionDurationMs","outputBytes","failures"],"additionalProperties":false}},"resources":{"type":"object","properties":{"status":{"type":"string","enum":["available","partial","unavailable","not_configured"]},"coverage":{"type":"string","enum":["available","partial","expired"]},"retentionStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"series":{"maxItems":9,"type":"array","items":{"type":"object","properties":{"generation":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"metric":{"type":"string","enum":["cpu_usage_cores","memory_working_set_bytes","network_receive_bytes_per_second","network_transmit_bytes_per_second","filesystem_read_bytes_per_second","filesystem_write_bytes_per_second","filesystem_usage_bytes","restarts_total","oom_kills_total"]},"unit":{"type":"string","enum":["cores","bytes","bytes_per_second","count"]},"availability":{"type":"string","enum":["available","no_data"]},"points":{"maxItems":1001,"type":"array","items":{"type":"array","prefixItems":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"number"}]}}},"required":["generation","metric","unit","availability","points"],"additionalProperties":false}}},"required":["status","coverage","retentionStart","series"],"additionalProperties":false}},"required":["sandboxId","from","to","resolutionSeconds","retentionSeconds","generationsTruncated","selectedGeneration","operationsTruncated","generations","operations","resources"],"additionalProperties":false}}}}