@shardflux/sdk 0.10.2 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -26
- package/README.md +73 -51
- package/dist/account.d.ts +2 -2
- package/dist/account.js +1 -1
- package/dist/cell.d.ts +21 -21
- package/dist/cell.js +12 -12
- package/dist/client.d.ts +31 -31
- package/dist/client.js +17 -17
- package/dist/egress.d.ts +3 -3
- package/dist/errors.d.ts +18 -18
- package/dist/errors.js +11 -11
- package/dist/executions.d.ts +2 -2
- package/dist/feedback.d.ts +3 -3
- package/dist/generated/app-api.d.ts +1352 -21
- package/dist/http.d.ts +7 -11
- package/dist/http.js +8 -11
- package/dist/index.d.ts +1 -1
- package/dist/lifecycle.d.ts +2 -2
- package/dist/lifecycle.js +1 -1
- package/dist/progress.d.ts +38 -18
- package/dist/progress.js +17 -11
- package/dist/tar.d.ts +1 -1
- package/dist/tar.js +1 -1
- package/dist/template-file.d.ts +1 -1
- package/dist/template-file.js +1 -1
- package/dist/templates.d.ts +21 -21
- package/dist/templates.js +8 -8
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +4 -4
- package/dist/version-check.d.ts +1 -1
- package/dist/volumes.d.ts +1 -1
- package/dist/workspace.d.ts +30 -21
- package/dist/workspace.js +27 -20
- package/package.json +1 -1
|
@@ -168,7 +168,7 @@ export interface paths {
|
|
|
168
168
|
put?: never;
|
|
169
169
|
/**
|
|
170
170
|
* Register with email and password
|
|
171
|
-
* @description Always 202 with the same body whether or not the address is already registered (no enumeration). A verification email is sent to new or still-unverified addresses.
|
|
171
|
+
* @description Always 202 with the same body whether or not the address is already registered (no enumeration). A verification email is sent to new or still-unverified addresses. An address at a disposable-email domain (or a subdomain of one) is 422 validation_failed with details.reason `email_disposable`.
|
|
172
172
|
*/
|
|
173
173
|
post: operations["postApiAuthRegister"];
|
|
174
174
|
delete?: never;
|
|
@@ -416,7 +416,7 @@ export interface paths {
|
|
|
416
416
|
put?: never;
|
|
417
417
|
/**
|
|
418
418
|
* Start changing the sign-in email (requires step-up)
|
|
419
|
-
* @description Sends a confirmation link to the new address and a notice to the current one. Nothing changes until confirmed. Always 202.
|
|
419
|
+
* @description Sends a confirmation link to the new address and a notice to the current one. Nothing changes until confirmed. Always 202 for a valid address; a disposable-email domain (or a subdomain of one) is 422 validation_failed with details.reason `email_disposable`.
|
|
420
420
|
*/
|
|
421
421
|
post: operations["postApiAuthEmailChange"];
|
|
422
422
|
delete?: never;
|
|
@@ -556,7 +556,7 @@ export interface paths {
|
|
|
556
556
|
put?: never;
|
|
557
557
|
/**
|
|
558
558
|
* Register with email and password
|
|
559
|
-
* @description Always 202 with the same body whether or not the address is already registered (no enumeration). A verification email is sent to new or still-unverified addresses.
|
|
559
|
+
* @description Always 202 with the same body whether or not the address is already registered (no enumeration). A verification email is sent to new or still-unverified addresses. An address at a disposable-email domain (or a subdomain of one) is 422 validation_failed with details.reason `email_disposable`.
|
|
560
560
|
*/
|
|
561
561
|
post: operations["postV1AuthRegister"];
|
|
562
562
|
delete?: never;
|
|
@@ -804,7 +804,7 @@ export interface paths {
|
|
|
804
804
|
put?: never;
|
|
805
805
|
/**
|
|
806
806
|
* Start changing the sign-in email (requires step-up)
|
|
807
|
-
* @description Sends a confirmation link to the new address and a notice to the current one. Nothing changes until confirmed. Always 202.
|
|
807
|
+
* @description Sends a confirmation link to the new address and a notice to the current one. Nothing changes until confirmed. Always 202 for a valid address; a disposable-email domain (or a subdomain of one) is 422 validation_failed with details.reason `email_disposable`.
|
|
808
808
|
*/
|
|
809
809
|
post: operations["postV1AuthEmailChange"];
|
|
810
810
|
delete?: never;
|
|
@@ -1547,7 +1547,7 @@ export interface paths {
|
|
|
1547
1547
|
put?: never;
|
|
1548
1548
|
/**
|
|
1549
1549
|
* Suspend the workspace if it stays idle for after_seconds from now (e.g. at the end of an agent turn)
|
|
1550
|
-
* @description Records a deferred suspend for the cell’s idle loop: once the workspace has been idle for after_seconds (
|
|
1550
|
+
* @description Records a deferred suspend for the cell’s idle loop: once the workspace has been idle for after_seconds (0..3600; 0 = as soon as it is idle), it is suspended (within a few seconds of activity flush grace), at `not_before` (= now + after_seconds) at the earliest. A tool call after the request (the next turn) or a resume cancels it for good. Other work only defers it: a command still running, an attached exec/PTY stream or a keepalive postpones the suspend until after_seconds after it ends. It applies under every idle policy (`never` included) and only ever shortens the policy’s wait; a policy that suspends sooner still does. Repeating replaces the pending request (the new `requested_at` counts); DELETE cancels it; `idle.suspend_request` on the workspace shows it. 202 {workspace, operation: null, suspend_request}; when a suspend is already in progress, 202 {workspace, operation: that suspend, suspend_request: null} and nothing is recorded. The suspend, when it happens, is a system `suspend` operation with input.reason requested_after_idle (input.requested_at, input.after_seconds). Errors: 409 session_lifetime, workspace_deleted, operation_in_progress (another lifecycle operation is active), not_running, not_supported_for_mode (file-first, contracts §29). Supports Idempotency-Key.
|
|
1551
1551
|
*/
|
|
1552
1552
|
post: operations["postV1WorkspacesWorkspaceIdSuspendWhenIdle"];
|
|
1553
1553
|
/**
|
|
@@ -1923,7 +1923,7 @@ export interface paths {
|
|
|
1923
1923
|
put?: never;
|
|
1924
1924
|
/**
|
|
1925
1925
|
* Suspend the workspace if it stays idle for after_seconds from now (e.g. at the end of an agent turn)
|
|
1926
|
-
* @description Records a deferred suspend for the cell’s idle loop: once the workspace has been idle for after_seconds (
|
|
1926
|
+
* @description Records a deferred suspend for the cell’s idle loop: once the workspace has been idle for after_seconds (0..3600; 0 = as soon as it is idle), it is suspended (within a few seconds of activity flush grace), at `not_before` (= now + after_seconds) at the earliest. A tool call after the request (the next turn) or a resume cancels it for good. Other work only defers it: a command still running, an attached exec/PTY stream or a keepalive postpones the suspend until after_seconds after it ends. It applies under every idle policy (`never` included) and only ever shortens the policy’s wait; a policy that suspends sooner still does. Repeating replaces the pending request (the new `requested_at` counts); DELETE cancels it; `idle.suspend_request` on the workspace shows it. 202 {workspace, operation: null, suspend_request}; when a suspend is already in progress, 202 {workspace, operation: that suspend, suspend_request: null} and nothing is recorded. The suspend, when it happens, is a system `suspend` operation with input.reason requested_after_idle (input.requested_at, input.after_seconds). Errors: 409 session_lifetime, workspace_deleted, operation_in_progress (another lifecycle operation is active), not_running, not_supported_for_mode (file-first, contracts §29). Supports Idempotency-Key.
|
|
1927
1927
|
*/
|
|
1928
1928
|
post: operations["postApiV1WorkspacesWorkspaceIdSuspendWhenIdle"];
|
|
1929
1929
|
/**
|
|
@@ -4973,7 +4973,10 @@ export interface paths {
|
|
|
4973
4973
|
path?: never;
|
|
4974
4974
|
cookie?: never;
|
|
4975
4975
|
};
|
|
4976
|
-
/**
|
|
4976
|
+
/**
|
|
4977
|
+
* Confirms operator access (MFA + step-up + grant) and the grant role
|
|
4978
|
+
* @description `role` = `viewer` (every operator read) or `operator` (reads and the mutating operator routes).
|
|
4979
|
+
*/
|
|
4977
4980
|
get: operations["getApiV1OperatorWhoami"];
|
|
4978
4981
|
put?: never;
|
|
4979
4982
|
post?: never;
|
|
@@ -5179,6 +5182,26 @@ export interface paths {
|
|
|
5179
5182
|
patch?: never;
|
|
5180
5183
|
trace?: never;
|
|
5181
5184
|
};
|
|
5185
|
+
"/api/v1/operator/operations/{id}": {
|
|
5186
|
+
parameters: {
|
|
5187
|
+
query?: never;
|
|
5188
|
+
header?: never;
|
|
5189
|
+
path?: never;
|
|
5190
|
+
cookie?: never;
|
|
5191
|
+
};
|
|
5192
|
+
/**
|
|
5193
|
+
* One lifecycle operation with its input, result and error
|
|
5194
|
+
* @description Any state (succeeded included). input, result and error are returned when their JSON is at most 16384 bytes; larger ones are null and named in `truncated`. These are the fields customers see on their own operations (no secrets are stored in them).
|
|
5195
|
+
*/
|
|
5196
|
+
get: operations["getApiV1OperatorOperationsId"];
|
|
5197
|
+
put?: never;
|
|
5198
|
+
post?: never;
|
|
5199
|
+
delete?: never;
|
|
5200
|
+
options?: never;
|
|
5201
|
+
head?: never;
|
|
5202
|
+
patch?: never;
|
|
5203
|
+
trace?: never;
|
|
5204
|
+
};
|
|
5182
5205
|
"/api/v1/operator/restrictions": {
|
|
5183
5206
|
parameters: {
|
|
5184
5207
|
query?: never;
|
|
@@ -5347,6 +5370,126 @@ export interface paths {
|
|
|
5347
5370
|
patch?: never;
|
|
5348
5371
|
trace?: never;
|
|
5349
5372
|
};
|
|
5373
|
+
"/api/v1/operator/status": {
|
|
5374
|
+
parameters: {
|
|
5375
|
+
query?: never;
|
|
5376
|
+
header?: never;
|
|
5377
|
+
path?: never;
|
|
5378
|
+
cookie?: never;
|
|
5379
|
+
};
|
|
5380
|
+
/**
|
|
5381
|
+
* Status page: summary cards, component health, recent fleet warnings and alerts
|
|
5382
|
+
* @description One consistent read (REPEATABLE READ, statement timeout). Health thresholds follow the CloudWatch alarms (docs/runbooks/alarms.md). Viewer or operator role.
|
|
5383
|
+
*/
|
|
5384
|
+
get: operations["getApiV1OperatorStatus"];
|
|
5385
|
+
put?: never;
|
|
5386
|
+
post?: never;
|
|
5387
|
+
delete?: never;
|
|
5388
|
+
options?: never;
|
|
5389
|
+
head?: never;
|
|
5390
|
+
patch?: never;
|
|
5391
|
+
trace?: never;
|
|
5392
|
+
};
|
|
5393
|
+
"/api/v1/operator/capacity": {
|
|
5394
|
+
parameters: {
|
|
5395
|
+
query?: never;
|
|
5396
|
+
header?: never;
|
|
5397
|
+
path?: never;
|
|
5398
|
+
cookie?: never;
|
|
5399
|
+
};
|
|
5400
|
+
/**
|
|
5401
|
+
* Fleet and capacity: managed pools (last plan), operations waiting for capacity, capacity actions and drains
|
|
5402
|
+
* @description One consistent read (REPEATABLE READ, statement timeout). Host rows: GET /operator/hosts. Viewer or operator role.
|
|
5403
|
+
*/
|
|
5404
|
+
get: operations["getApiV1OperatorCapacity"];
|
|
5405
|
+
put?: never;
|
|
5406
|
+
post?: never;
|
|
5407
|
+
delete?: never;
|
|
5408
|
+
options?: never;
|
|
5409
|
+
head?: never;
|
|
5410
|
+
patch?: never;
|
|
5411
|
+
trace?: never;
|
|
5412
|
+
};
|
|
5413
|
+
"/api/v1/operator/history": {
|
|
5414
|
+
parameters: {
|
|
5415
|
+
query?: never;
|
|
5416
|
+
header?: never;
|
|
5417
|
+
path?: never;
|
|
5418
|
+
cookie?: never;
|
|
5419
|
+
};
|
|
5420
|
+
/**
|
|
5421
|
+
* Hourly-rollup history for trend charts beyond 7 d (lifecycle latency, host PSI)
|
|
5422
|
+
* @description Series from the hourly rollups (migration 0080, kept 90 d). Buckets: 1 h for 7d, 6 h for 30d, 1 d for 90d (UTC-aligned, sparse). Latency percentiles of multi-hour buckets are the weighted median of the hourly percentiles; PSI avg is sample-weighted, max is the maximum.
|
|
5423
|
+
*/
|
|
5424
|
+
get: operations["getApiV1OperatorHistory"];
|
|
5425
|
+
put?: never;
|
|
5426
|
+
post?: never;
|
|
5427
|
+
delete?: never;
|
|
5428
|
+
options?: never;
|
|
5429
|
+
head?: never;
|
|
5430
|
+
patch?: never;
|
|
5431
|
+
trace?: never;
|
|
5432
|
+
};
|
|
5433
|
+
"/api/v1/operator/metrics": {
|
|
5434
|
+
parameters: {
|
|
5435
|
+
query?: never;
|
|
5436
|
+
header?: never;
|
|
5437
|
+
path?: never;
|
|
5438
|
+
cookie?: never;
|
|
5439
|
+
};
|
|
5440
|
+
/**
|
|
5441
|
+
* Request-level CloudWatch series (API, load balancer and gateway p95, 5xx, SQS depth and age)
|
|
5442
|
+
* @description GetMetricData over the window (1h: 60 s periods, 24h: 300 s, 7d: 1800 s; at most 360 points per series), cached 60 s. CloudWatch errors answer 200 with status degraded, empty series and a typed error.
|
|
5443
|
+
*/
|
|
5444
|
+
get: operations["getApiV1OperatorMetrics"];
|
|
5445
|
+
put?: never;
|
|
5446
|
+
post?: never;
|
|
5447
|
+
delete?: never;
|
|
5448
|
+
options?: never;
|
|
5449
|
+
head?: never;
|
|
5450
|
+
patch?: never;
|
|
5451
|
+
trace?: never;
|
|
5452
|
+
};
|
|
5453
|
+
"/api/v1/operator/performance": {
|
|
5454
|
+
parameters: {
|
|
5455
|
+
query?: never;
|
|
5456
|
+
header?: never;
|
|
5457
|
+
path?: never;
|
|
5458
|
+
cookie?: never;
|
|
5459
|
+
};
|
|
5460
|
+
/**
|
|
5461
|
+
* Lifecycle latency, start/resume paths, checkpoints, capacity waits, tool calls and reliability
|
|
5462
|
+
* @description Operator dashboard Performance page. Percentiles are percentile_cont (linear interpolation); the window figures come from one database snapshot, the trend, checkpoints and tool calls from a second one taken concurrently. Durations in milliseconds, sizes in bytes. Windows are rolling (now − window, now].
|
|
5463
|
+
*/
|
|
5464
|
+
get: operations["getApiV1OperatorPerformance"];
|
|
5465
|
+
put?: never;
|
|
5466
|
+
post?: never;
|
|
5467
|
+
delete?: never;
|
|
5468
|
+
options?: never;
|
|
5469
|
+
head?: never;
|
|
5470
|
+
patch?: never;
|
|
5471
|
+
trace?: never;
|
|
5472
|
+
};
|
|
5473
|
+
"/api/v1/operator/business": {
|
|
5474
|
+
parameters: {
|
|
5475
|
+
query?: never;
|
|
5476
|
+
header?: never;
|
|
5477
|
+
path?: never;
|
|
5478
|
+
cookie?: never;
|
|
5479
|
+
};
|
|
5480
|
+
/**
|
|
5481
|
+
* Growth, subscriptions, MRR, revenue, conversion and usage across organizations
|
|
5482
|
+
* @description Operator dashboard Customers and revenue page. One database snapshot; billing figures are this environment’s billing mode only; nothing is excluded (internal and test organizations count). Windows are rolling (now − window, now].
|
|
5483
|
+
*/
|
|
5484
|
+
get: operations["getApiV1OperatorBusiness"];
|
|
5485
|
+
put?: never;
|
|
5486
|
+
post?: never;
|
|
5487
|
+
delete?: never;
|
|
5488
|
+
options?: never;
|
|
5489
|
+
head?: never;
|
|
5490
|
+
patch?: never;
|
|
5491
|
+
trace?: never;
|
|
5492
|
+
};
|
|
5350
5493
|
}
|
|
5351
5494
|
export type webhooks = Record<string, never>;
|
|
5352
5495
|
export interface components {
|
|
@@ -11895,7 +12038,7 @@ export interface operations {
|
|
|
11895
12038
|
requestBody: {
|
|
11896
12039
|
content: {
|
|
11897
12040
|
"application/json": {
|
|
11898
|
-
/** @description Seconds from now the workspace must stay idle before it is suspended (
|
|
12041
|
+
/** @description Seconds from now the workspace must stay idle before it is suspended (0..3600; 0 = as soon as it is idle). */
|
|
11899
12042
|
after_seconds: number;
|
|
11900
12043
|
};
|
|
11901
12044
|
};
|
|
@@ -12420,6 +12563,8 @@ export interface operations {
|
|
|
12420
12563
|
plan_key: string;
|
|
12421
12564
|
catalog_version: string;
|
|
12422
12565
|
source: "override" | "subscription" | "trial" | "default";
|
|
12566
|
+
/** @description When this plan grant stops applying (a trial or partner grant); null when it lasts until changed. */
|
|
12567
|
+
ends_at: string | null;
|
|
12423
12568
|
} | null;
|
|
12424
12569
|
/** @description Resolved plan limits (null = unlimited). */
|
|
12425
12570
|
limits: {
|
|
@@ -13021,7 +13166,7 @@ export interface operations {
|
|
|
13021
13166
|
requestBody: {
|
|
13022
13167
|
content: {
|
|
13023
13168
|
"application/json": {
|
|
13024
|
-
/** @description Seconds from now the workspace must stay idle before it is suspended (
|
|
13169
|
+
/** @description Seconds from now the workspace must stay idle before it is suspended (0..3600; 0 = as soon as it is idle). */
|
|
13025
13170
|
after_seconds: number;
|
|
13026
13171
|
};
|
|
13027
13172
|
};
|
|
@@ -13619,6 +13764,8 @@ export interface operations {
|
|
|
13619
13764
|
plan_key: string;
|
|
13620
13765
|
catalog_version: string;
|
|
13621
13766
|
source: "override" | "subscription" | "trial" | "default";
|
|
13767
|
+
/** @description When this plan grant stops applying (a trial or partner grant); null when it lasts until changed. */
|
|
13768
|
+
ends_at: string | null;
|
|
13622
13769
|
} | null;
|
|
13623
13770
|
/** @description Resolved plan limits (null = unlimited). */
|
|
13624
13771
|
limits: {
|
|
@@ -27309,8 +27456,8 @@ export interface operations {
|
|
|
27309
27456
|
* @description RFC 3339 UTC timestamp with Z.
|
|
27310
27457
|
*/
|
|
27311
27458
|
resets_at: string;
|
|
27312
|
-
/** @description The entitling subscription period, else the calendar month (UTC). */
|
|
27313
|
-
source: "subscription" | "calendar_month";
|
|
27459
|
+
/** @description The entitling subscription period; `grant`: the window of a time-limited plan grant (a trial or partner grant), which ends at `end` rather than resetting; else the calendar month (UTC), counted from the end of a trial or partner grant that ended in it. */
|
|
27460
|
+
source: "subscription" | "calendar_month" | "grant";
|
|
27314
27461
|
/**
|
|
27315
27462
|
* Format: date-time
|
|
27316
27463
|
* @description First hour whose usage counts in this period (RFC 3339 UTC). Usage is metered per UTC hour, and each hour belongs to the period that contains its start (the hour's ledger rows keep the plan in force at that instant and are sent to Stripe with that timestamp). When the period starts inside an hour (after a plan change, or a subscription created mid-hour), that hour's usage counts toward the previous period, so counted_from is `start` rounded up to the next full hour; on a full hour it equals `start`. Before counted_from passes, the period has no counted usage (`estimate_status` no_data) even while workspaces run: their usage is in the usage series under the hour containing `start`.
|
|
@@ -27693,8 +27840,8 @@ export interface operations {
|
|
|
27693
27840
|
* @description RFC 3339 UTC timestamp with Z.
|
|
27694
27841
|
*/
|
|
27695
27842
|
resets_at: string;
|
|
27696
|
-
/** @description The entitling subscription period, else the calendar month (UTC). */
|
|
27697
|
-
source: "subscription" | "calendar_month";
|
|
27843
|
+
/** @description The entitling subscription period; `grant`: the window of a time-limited plan grant (a trial or partner grant), which ends at `end` rather than resetting; else the calendar month (UTC), counted from the end of a trial or partner grant that ended in it. */
|
|
27844
|
+
source: "subscription" | "calendar_month" | "grant";
|
|
27698
27845
|
/**
|
|
27699
27846
|
* Format: date-time
|
|
27700
27847
|
* @description First hour whose usage counts in this period (RFC 3339 UTC). Usage is metered per UTC hour, and each hour belongs to the period that contains its start (the hour's ledger rows keep the plan in force at that instant and are sent to Stripe with that timestamp). When the period starts inside an hour (after a plan change, or a subscription created mid-hour), that hour's usage counts toward the previous period, so counted_from is `start` rounded up to the next full hour; on a full hour it equals `start`. Before counted_from passes, the period has no counted usage (`estimate_status` no_data) even while workspaces run: their usage is in the usage series under the hour containing `start`.
|
|
@@ -28020,8 +28167,8 @@ export interface operations {
|
|
|
28020
28167
|
* @description RFC 3339 UTC timestamp with Z.
|
|
28021
28168
|
*/
|
|
28022
28169
|
resets_at: string;
|
|
28023
|
-
/** @description The entitling subscription period, else the calendar month (UTC). */
|
|
28024
|
-
source: "subscription" | "calendar_month";
|
|
28170
|
+
/** @description The entitling subscription period; `grant`: the window of a time-limited plan grant (a trial or partner grant), which ends at `end` rather than resetting; else the calendar month (UTC), counted from the end of a trial or partner grant that ended in it. */
|
|
28171
|
+
source: "subscription" | "calendar_month" | "grant";
|
|
28025
28172
|
/**
|
|
28026
28173
|
* Format: date-time
|
|
28027
28174
|
* @description First hour whose usage counts in this period (RFC 3339 UTC). Usage is metered per UTC hour, and each hour belongs to the period that contains its start (the hour's ledger rows keep the plan in force at that instant and are sent to Stripe with that timestamp). When the period starts inside an hour (after a plan change, or a subscription created mid-hour), that hour's usage counts toward the previous period, so counted_from is `start` rounded up to the next full hour; on a full hour it equals `start`. Before counted_from passes, the period has no counted usage (`estimate_status` no_data) even while workspaces run: their usage is in the usage series under the hour containing `start`.
|
|
@@ -28364,8 +28511,8 @@ export interface operations {
|
|
|
28364
28511
|
* @description RFC 3339 UTC timestamp with Z.
|
|
28365
28512
|
*/
|
|
28366
28513
|
resets_at: string;
|
|
28367
|
-
/** @description The entitling subscription period, else the calendar month (UTC). */
|
|
28368
|
-
source: "subscription" | "calendar_month";
|
|
28514
|
+
/** @description The entitling subscription period; `grant`: the window of a time-limited plan grant (a trial or partner grant), which ends at `end` rather than resetting; else the calendar month (UTC), counted from the end of a trial or partner grant that ended in it. */
|
|
28515
|
+
source: "subscription" | "calendar_month" | "grant";
|
|
28369
28516
|
/**
|
|
28370
28517
|
* Format: date-time
|
|
28371
28518
|
* @description First hour whose usage counts in this period (RFC 3339 UTC). Usage is metered per UTC hour, and each hour belongs to the period that contains its start (the hour's ledger rows keep the plan in force at that instant and are sent to Stripe with that timestamp). When the period starts inside an hour (after a plan change, or a subscription created mid-hour), that hour's usage counts toward the previous period, so counted_from is `start` rounded up to the next full hour; on a full hour it equals `start`. Before counted_from passes, the period has no counted usage (`estimate_status` no_data) even while workspaces run: their usage is in the usage series under the hour containing `start`.
|
|
@@ -28748,8 +28895,8 @@ export interface operations {
|
|
|
28748
28895
|
* @description RFC 3339 UTC timestamp with Z.
|
|
28749
28896
|
*/
|
|
28750
28897
|
resets_at: string;
|
|
28751
|
-
/** @description The entitling subscription period, else the calendar month (UTC). */
|
|
28752
|
-
source: "subscription" | "calendar_month";
|
|
28898
|
+
/** @description The entitling subscription period; `grant`: the window of a time-limited plan grant (a trial or partner grant), which ends at `end` rather than resetting; else the calendar month (UTC), counted from the end of a trial or partner grant that ended in it. */
|
|
28899
|
+
source: "subscription" | "calendar_month" | "grant";
|
|
28753
28900
|
/**
|
|
28754
28901
|
* Format: date-time
|
|
28755
28902
|
* @description First hour whose usage counts in this period (RFC 3339 UTC). Usage is metered per UTC hour, and each hour belongs to the period that contains its start (the hour's ledger rows keep the plan in force at that instant and are sent to Stripe with that timestamp). When the period starts inside an hour (after a plan change, or a subscription created mid-hour), that hour's usage counts toward the previous period, so counted_from is `start` rounded up to the next full hour; on a full hour it equals `start`. Before counted_from passes, the period has no counted usage (`estimate_status` no_data) even while workspaces run: their usage is in the usage series under the hour containing `start`.
|
|
@@ -29075,8 +29222,8 @@ export interface operations {
|
|
|
29075
29222
|
* @description RFC 3339 UTC timestamp with Z.
|
|
29076
29223
|
*/
|
|
29077
29224
|
resets_at: string;
|
|
29078
|
-
/** @description The entitling subscription period, else the calendar month (UTC). */
|
|
29079
|
-
source: "subscription" | "calendar_month";
|
|
29225
|
+
/** @description The entitling subscription period; `grant`: the window of a time-limited plan grant (a trial or partner grant), which ends at `end` rather than resetting; else the calendar month (UTC), counted from the end of a trial or partner grant that ended in it. */
|
|
29226
|
+
source: "subscription" | "calendar_month" | "grant";
|
|
29080
29227
|
/**
|
|
29081
29228
|
* Format: date-time
|
|
29082
29229
|
* @description First hour whose usage counts in this period (RFC 3339 UTC). Usage is metered per UTC hour, and each hour belongs to the period that contains its start (the hour's ledger rows keep the plan in force at that instant and are sent to Stripe with that timestamp). When the period starts inside an hour (after a plan change, or a subscription created mid-hour), that hour's usage counts toward the previous period, so counted_from is `start` rounded up to the next full hour; on a full hour it equals `start`. Before counted_from passes, the period has no counted usage (`estimate_status` no_data) even while workspaces run: their usage is in the usage series under the hour containing `start`.
|
|
@@ -32046,6 +32193,7 @@ export interface operations {
|
|
|
32046
32193
|
allowances: {
|
|
32047
32194
|
[key: string]: unknown;
|
|
32048
32195
|
};
|
|
32196
|
+
grant_days: number | null;
|
|
32049
32197
|
prices: {
|
|
32050
32198
|
interval: "month" | "year";
|
|
32051
32199
|
/** @description Price in the currency’s minor unit (cents). */
|
|
@@ -32115,6 +32263,8 @@ export interface operations {
|
|
|
32115
32263
|
plan_key: string;
|
|
32116
32264
|
catalog_version: string;
|
|
32117
32265
|
source: "override" | "subscription" | "trial" | "default";
|
|
32266
|
+
/** @description When this plan grant stops applying (a trial or partner grant); null when it lasts until changed. */
|
|
32267
|
+
ends_at: string | null;
|
|
32118
32268
|
} | null;
|
|
32119
32269
|
subscription: {
|
|
32120
32270
|
/**
|
|
@@ -32472,6 +32622,7 @@ export interface operations {
|
|
|
32472
32622
|
allowances: {
|
|
32473
32623
|
[key: string]: unknown;
|
|
32474
32624
|
};
|
|
32625
|
+
grant_days: number | null;
|
|
32475
32626
|
prices: {
|
|
32476
32627
|
interval: "month" | "year";
|
|
32477
32628
|
/** @description Price in the currency’s minor unit (cents). */
|
|
@@ -32541,6 +32692,8 @@ export interface operations {
|
|
|
32541
32692
|
plan_key: string;
|
|
32542
32693
|
catalog_version: string;
|
|
32543
32694
|
source: "override" | "subscription" | "trial" | "default";
|
|
32695
|
+
/** @description When this plan grant stops applying (a trial or partner grant); null when it lasts until changed. */
|
|
32696
|
+
ends_at: string | null;
|
|
32544
32697
|
} | null;
|
|
32545
32698
|
subscription: {
|
|
32546
32699
|
/**
|
|
@@ -32926,6 +33079,7 @@ export interface operations {
|
|
|
32926
33079
|
user_id: string;
|
|
32927
33080
|
/** @enum {boolean} */
|
|
32928
33081
|
operator: true;
|
|
33082
|
+
role: "viewer" | "operator";
|
|
32929
33083
|
/**
|
|
32930
33084
|
* Format: date-time
|
|
32931
33085
|
* @description RFC 3339 UTC timestamp with Z.
|
|
@@ -33893,6 +34047,100 @@ export interface operations {
|
|
|
33893
34047
|
};
|
|
33894
34048
|
};
|
|
33895
34049
|
};
|
|
34050
|
+
getApiV1OperatorOperationsId: {
|
|
34051
|
+
parameters: {
|
|
34052
|
+
query?: never;
|
|
34053
|
+
header?: never;
|
|
34054
|
+
path: {
|
|
34055
|
+
/** @description UUIDv7, lowercase canonical form. */
|
|
34056
|
+
id: string;
|
|
34057
|
+
};
|
|
34058
|
+
cookie?: never;
|
|
34059
|
+
};
|
|
34060
|
+
requestBody?: never;
|
|
34061
|
+
responses: {
|
|
34062
|
+
/** @description Default Response */
|
|
34063
|
+
200: {
|
|
34064
|
+
headers: {
|
|
34065
|
+
[name: string]: unknown;
|
|
34066
|
+
};
|
|
34067
|
+
content: {
|
|
34068
|
+
"application/json": {
|
|
34069
|
+
/**
|
|
34070
|
+
* Format: uuid
|
|
34071
|
+
* @description UUIDv7, lowercase canonical form.
|
|
34072
|
+
*/
|
|
34073
|
+
id: string;
|
|
34074
|
+
kind: string;
|
|
34075
|
+
state: string;
|
|
34076
|
+
state_reason: string | null;
|
|
34077
|
+
/**
|
|
34078
|
+
* Format: uuid
|
|
34079
|
+
* @description UUIDv7, lowercase canonical form.
|
|
34080
|
+
*/
|
|
34081
|
+
organization_id: string;
|
|
34082
|
+
workspace_id: string | null;
|
|
34083
|
+
principal_type: string;
|
|
34084
|
+
principal_id: string | null;
|
|
34085
|
+
request_id: string | null;
|
|
34086
|
+
/**
|
|
34087
|
+
* Format: date-time
|
|
34088
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
34089
|
+
*/
|
|
34090
|
+
created_at: string;
|
|
34091
|
+
/**
|
|
34092
|
+
* Format: date-time
|
|
34093
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
34094
|
+
*/
|
|
34095
|
+
updated_at: string;
|
|
34096
|
+
started_at: string | null;
|
|
34097
|
+
completed_at: string | null;
|
|
34098
|
+
/** @description now - created_at. */
|
|
34099
|
+
age_seconds: number;
|
|
34100
|
+
/** @description Claims so far (the claim fencing token). */
|
|
34101
|
+
attempt: number;
|
|
34102
|
+
claimed_by: string | null;
|
|
34103
|
+
claim_expires_at: string | null;
|
|
34104
|
+
/** @description Claimed but the lease expired (controller crashed or stalled). */
|
|
34105
|
+
claim_expired: boolean;
|
|
34106
|
+
next_attempt_at: string | null;
|
|
34107
|
+
reservation_ids: string[];
|
|
34108
|
+
volume_id: string | null;
|
|
34109
|
+
depends_on_operation_id: string | null;
|
|
34110
|
+
input: {
|
|
34111
|
+
[key: string]: unknown;
|
|
34112
|
+
} | null;
|
|
34113
|
+
result: {
|
|
34114
|
+
[key: string]: unknown;
|
|
34115
|
+
} | null;
|
|
34116
|
+
error: {
|
|
34117
|
+
[key: string]: unknown;
|
|
34118
|
+
} | null;
|
|
34119
|
+
/** @description Fields left out because their JSON is larger than 16384 bytes. */
|
|
34120
|
+
truncated: ("input" | "result" | "error")[];
|
|
34121
|
+
};
|
|
34122
|
+
};
|
|
34123
|
+
};
|
|
34124
|
+
/** @description Default Response */
|
|
34125
|
+
"4XX": {
|
|
34126
|
+
headers: {
|
|
34127
|
+
[name: string]: unknown;
|
|
34128
|
+
};
|
|
34129
|
+
content: {
|
|
34130
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
34131
|
+
};
|
|
34132
|
+
};
|
|
34133
|
+
/** @description Default Response */
|
|
34134
|
+
"5XX": {
|
|
34135
|
+
headers: {
|
|
34136
|
+
[name: string]: unknown;
|
|
34137
|
+
};
|
|
34138
|
+
content: {
|
|
34139
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
34140
|
+
};
|
|
34141
|
+
};
|
|
34142
|
+
};
|
|
34143
|
+
};
|
|
33896
34144
|
getApiV1OperatorRestrictions: {
|
|
33897
34145
|
parameters: {
|
|
33898
34146
|
query?: {
|
|
@@ -35240,4 +35488,1087 @@ export interface operations {
|
|
|
35240
35488
|
};
|
|
35241
35489
|
};
|
|
35242
35490
|
};
|
|
35491
|
+
getApiV1OperatorStatus: {
|
|
35492
|
+
parameters: {
|
|
35493
|
+
query?: never;
|
|
35494
|
+
header?: never;
|
|
35495
|
+
path?: never;
|
|
35496
|
+
cookie?: never;
|
|
35497
|
+
};
|
|
35498
|
+
requestBody?: never;
|
|
35499
|
+
responses: {
|
|
35500
|
+
/** @description Default Response */
|
|
35501
|
+
200: {
|
|
35502
|
+
headers: {
|
|
35503
|
+
[name: string]: unknown;
|
|
35504
|
+
};
|
|
35505
|
+
content: {
|
|
35506
|
+
"application/json": {
|
|
35507
|
+
/**
|
|
35508
|
+
* Format: date-time
|
|
35509
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35510
|
+
*/
|
|
35511
|
+
generated_at: string;
|
|
35512
|
+
cards: {
|
|
35513
|
+
hosts: {
|
|
35514
|
+
ready: number;
|
|
35515
|
+
/** @description Hosts that are not terminated. */
|
|
35516
|
+
total: number;
|
|
35517
|
+
};
|
|
35518
|
+
running_workspaces: number;
|
|
35519
|
+
waiting_for_capacity: {
|
|
35520
|
+
/** @description Operations in capacity_pending (starts, resumes, forks, restores, moves, volume work). */
|
|
35521
|
+
count: number;
|
|
35522
|
+
oldest_age_seconds: number | null;
|
|
35523
|
+
};
|
|
35524
|
+
failed_operations_last_hour: number;
|
|
35525
|
+
};
|
|
35526
|
+
/** @description One row per component, in this order: cell_loops, database, hosts, capacity, operations, billing, usage, mail. */
|
|
35527
|
+
health: {
|
|
35528
|
+
/** @enum {string} */
|
|
35529
|
+
component: "cell_loops" | "database" | "hosts" | "capacity" | "operations" | "billing" | "usage" | "mail";
|
|
35530
|
+
/** @enum {string} */
|
|
35531
|
+
state: "ok" | "warn" | "alert";
|
|
35532
|
+
/** @description One line: what is wrong (or the healthy figures). */
|
|
35533
|
+
detail: string;
|
|
35534
|
+
since: string | null;
|
|
35535
|
+
}[];
|
|
35536
|
+
fleet_events: {
|
|
35537
|
+
window_hours: number;
|
|
35538
|
+
/** @description Warning and alert events in the window. */
|
|
35539
|
+
total: number;
|
|
35540
|
+
truncated: boolean;
|
|
35541
|
+
/** @description Newest first, at most 50. */
|
|
35542
|
+
data: {
|
|
35543
|
+
/**
|
|
35544
|
+
* Format: uuid
|
|
35545
|
+
* @description UUIDv7, lowercase canonical form.
|
|
35546
|
+
*/
|
|
35547
|
+
id: string;
|
|
35548
|
+
cell_id: string;
|
|
35549
|
+
pool: string | null;
|
|
35550
|
+
host_id: string | null;
|
|
35551
|
+
instance_id: string | null;
|
|
35552
|
+
kind: string;
|
|
35553
|
+
severity: "warning" | "alert";
|
|
35554
|
+
message: string;
|
|
35555
|
+
details: {
|
|
35556
|
+
[key: string]: unknown;
|
|
35557
|
+
} | null;
|
|
35558
|
+
/**
|
|
35559
|
+
* Format: date-time
|
|
35560
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35561
|
+
*/
|
|
35562
|
+
created_at: string;
|
|
35563
|
+
}[];
|
|
35564
|
+
};
|
|
35565
|
+
cloudwatch_dashboard_url: string | null;
|
|
35566
|
+
};
|
|
35567
|
+
};
|
|
35568
|
+
};
|
|
35569
|
+
/** @description Default Response */
|
|
35570
|
+
"4XX": {
|
|
35571
|
+
headers: {
|
|
35572
|
+
[name: string]: unknown;
|
|
35573
|
+
};
|
|
35574
|
+
content: {
|
|
35575
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
35576
|
+
};
|
|
35577
|
+
};
|
|
35578
|
+
/** @description Default Response */
|
|
35579
|
+
"5XX": {
|
|
35580
|
+
headers: {
|
|
35581
|
+
[name: string]: unknown;
|
|
35582
|
+
};
|
|
35583
|
+
content: {
|
|
35584
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
35585
|
+
};
|
|
35586
|
+
};
|
|
35587
|
+
};
|
|
35588
|
+
};
|
|
35589
|
+
getApiV1OperatorCapacity: {
|
|
35590
|
+
parameters: {
|
|
35591
|
+
query?: {
|
|
35592
|
+
/** @description Window as hours or days, e.g. `1h`, `24h`, `7d`; at most `30d` (720h). */
|
|
35593
|
+
window?: string;
|
|
35594
|
+
/** @description Timeline rows. */
|
|
35595
|
+
limit?: number;
|
|
35596
|
+
};
|
|
35597
|
+
header?: never;
|
|
35598
|
+
path?: never;
|
|
35599
|
+
cookie?: never;
|
|
35600
|
+
};
|
|
35601
|
+
requestBody?: never;
|
|
35602
|
+
responses: {
|
|
35603
|
+
/** @description Default Response */
|
|
35604
|
+
200: {
|
|
35605
|
+
headers: {
|
|
35606
|
+
[name: string]: unknown;
|
|
35607
|
+
};
|
|
35608
|
+
content: {
|
|
35609
|
+
"application/json": {
|
|
35610
|
+
/**
|
|
35611
|
+
* Format: date-time
|
|
35612
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35613
|
+
*/
|
|
35614
|
+
generated_at: string;
|
|
35615
|
+
window: {
|
|
35616
|
+
value: string;
|
|
35617
|
+
seconds: number;
|
|
35618
|
+
/**
|
|
35619
|
+
* Format: date-time
|
|
35620
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35621
|
+
*/
|
|
35622
|
+
since: string;
|
|
35623
|
+
};
|
|
35624
|
+
/** @description Managed pools by cell and pool (at most 100). */
|
|
35625
|
+
pools: {
|
|
35626
|
+
cell_id: string;
|
|
35627
|
+
pool: string;
|
|
35628
|
+
asg_name: string;
|
|
35629
|
+
computed_at: string | null;
|
|
35630
|
+
reconciled_at: string | null;
|
|
35631
|
+
plan_error: string | null;
|
|
35632
|
+
instance_type: string | null;
|
|
35633
|
+
/** @description min/desired/max from pool_capacity; the rest from the plan’s supply (last tick). */
|
|
35634
|
+
hosts: {
|
|
35635
|
+
min: number;
|
|
35636
|
+
/** @description The controller’s persisted target (pool_capacity.desired_hosts). */
|
|
35637
|
+
desired: number;
|
|
35638
|
+
max: number;
|
|
35639
|
+
asg_desired: number | null;
|
|
35640
|
+
asg_max: number | null;
|
|
35641
|
+
ready: number | null;
|
|
35642
|
+
pending: number | null;
|
|
35643
|
+
draining: number | null;
|
|
35644
|
+
cordoned: number | null;
|
|
35645
|
+
drained: number | null;
|
|
35646
|
+
suspect: number | null;
|
|
35647
|
+
unhealthy: number | null;
|
|
35648
|
+
terminating: number | null;
|
|
35649
|
+
stuck: number | null;
|
|
35650
|
+
unfulfilled: number | null;
|
|
35651
|
+
planned: number | null;
|
|
35652
|
+
};
|
|
35653
|
+
/** @description Host targets by dimension; target = unclamped reduced by the clamp. */
|
|
35654
|
+
targets: {
|
|
35655
|
+
min_hosts: number | null;
|
|
35656
|
+
memory: number | null;
|
|
35657
|
+
packing: number | null;
|
|
35658
|
+
cpu: number | null;
|
|
35659
|
+
disk: number | null;
|
|
35660
|
+
unclamped: number | null;
|
|
35661
|
+
target: number | null;
|
|
35662
|
+
};
|
|
35663
|
+
desired_now: number | null;
|
|
35664
|
+
desired_after: number | null;
|
|
35665
|
+
desired_after_unclamped: number | null;
|
|
35666
|
+
need_new_unclamped: number | null;
|
|
35667
|
+
clamp: {
|
|
35668
|
+
reason: string | null;
|
|
35669
|
+
bound: string | null;
|
|
35670
|
+
cap: number | null;
|
|
35671
|
+
/** @description Counts keyed by value. */
|
|
35672
|
+
caps: {
|
|
35673
|
+
[key: string]: number;
|
|
35674
|
+
};
|
|
35675
|
+
};
|
|
35676
|
+
/** @description Plan C, Q, G, R and U (MiB). */
|
|
35677
|
+
ram: {
|
|
35678
|
+
committed_mib: number | null;
|
|
35679
|
+
queued_mib: number | null;
|
|
35680
|
+
growth_mib: number | null;
|
|
35681
|
+
reserve_mib: number | null;
|
|
35682
|
+
usable_per_host_mib: number | null;
|
|
35683
|
+
/** @description Sum of allocatable RAM of the pool’s ready hosts now (live, like /cells capacity.ready). */
|
|
35684
|
+
ready_allocatable_mib: number;
|
|
35685
|
+
};
|
|
35686
|
+
cpu: {
|
|
35687
|
+
committed_millis: number | null;
|
|
35688
|
+
queued_millis: number | null;
|
|
35689
|
+
};
|
|
35690
|
+
disk: {
|
|
35691
|
+
committed_gib: number | null;
|
|
35692
|
+
queued_gib: number | null;
|
|
35693
|
+
};
|
|
35694
|
+
/** @description Eligible queued demand the plan counted. */
|
|
35695
|
+
queued: {
|
|
35696
|
+
items: number | null;
|
|
35697
|
+
/** @description The controller bounded its queue. */
|
|
35698
|
+
truncated: boolean;
|
|
35699
|
+
};
|
|
35700
|
+
high_watermark: number | null;
|
|
35701
|
+
pressure: string[];
|
|
35702
|
+
/** @description Counts keyed by value. */
|
|
35703
|
+
excluded: {
|
|
35704
|
+
[key: string]: number;
|
|
35705
|
+
};
|
|
35706
|
+
notes: string[];
|
|
35707
|
+
capacity_pending_reason: string | null;
|
|
35708
|
+
capacity_pending_since: string | null;
|
|
35709
|
+
alert_state: string;
|
|
35710
|
+
alert_raised_at: string | null;
|
|
35711
|
+
scale_out_enabled: boolean;
|
|
35712
|
+
scale_in_enabled: boolean;
|
|
35713
|
+
}[];
|
|
35714
|
+
/** @description Operations in capacity_pending. */
|
|
35715
|
+
waiting_starts: {
|
|
35716
|
+
total: number;
|
|
35717
|
+
truncated: boolean;
|
|
35718
|
+
/** @description Oldest first, at most 200. */
|
|
35719
|
+
data: {
|
|
35720
|
+
/**
|
|
35721
|
+
* Format: uuid
|
|
35722
|
+
* @description UUIDv7, lowercase canonical form.
|
|
35723
|
+
*/
|
|
35724
|
+
operation_id: string;
|
|
35725
|
+
kind: string;
|
|
35726
|
+
/**
|
|
35727
|
+
* Format: uuid
|
|
35728
|
+
* @description UUIDv7, lowercase canonical form.
|
|
35729
|
+
*/
|
|
35730
|
+
organization_id: string;
|
|
35731
|
+
workspace_id: string | null;
|
|
35732
|
+
reason: string | null;
|
|
35733
|
+
/**
|
|
35734
|
+
* Format: date-time
|
|
35735
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35736
|
+
*/
|
|
35737
|
+
created_at: string;
|
|
35738
|
+
age_seconds: number;
|
|
35739
|
+
deadline_at: string | null;
|
|
35740
|
+
required: {
|
|
35741
|
+
cpu_millis: number;
|
|
35742
|
+
memory_mib: number;
|
|
35743
|
+
disk_gib: number;
|
|
35744
|
+
} | null;
|
|
35745
|
+
scale_out: string | null;
|
|
35746
|
+
attempt: number;
|
|
35747
|
+
next_attempt_at: string | null;
|
|
35748
|
+
}[];
|
|
35749
|
+
};
|
|
35750
|
+
timeline: {
|
|
35751
|
+
limit: number;
|
|
35752
|
+
truncated: boolean;
|
|
35753
|
+
/** @description Capacity actions and drains active in the window (not finished before it), newest start first. */
|
|
35754
|
+
data: {
|
|
35755
|
+
type: "capacity_action" | "drain";
|
|
35756
|
+
/**
|
|
35757
|
+
* Format: uuid
|
|
35758
|
+
* @description UUIDv7, lowercase canonical form.
|
|
35759
|
+
*/
|
|
35760
|
+
id: string;
|
|
35761
|
+
cell_id: string;
|
|
35762
|
+
pool: string | null;
|
|
35763
|
+
/** @description launch | retire | replace (capacity actions); drain | cordon (drains). */
|
|
35764
|
+
kind: string;
|
|
35765
|
+
state: string;
|
|
35766
|
+
reason: string | null;
|
|
35767
|
+
host_id: string | null;
|
|
35768
|
+
instance_ids: string[];
|
|
35769
|
+
replaces_instance_id: string | null;
|
|
35770
|
+
desired_before: number | null;
|
|
35771
|
+
desired_after: number | null;
|
|
35772
|
+
retire: boolean | null;
|
|
35773
|
+
blocked_reason: string | null;
|
|
35774
|
+
abort_reason: string | null;
|
|
35775
|
+
error: {
|
|
35776
|
+
[key: string]: unknown;
|
|
35777
|
+
} | null;
|
|
35778
|
+
/**
|
|
35779
|
+
* Format: date-time
|
|
35780
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35781
|
+
*/
|
|
35782
|
+
started_at: string;
|
|
35783
|
+
completed_at: string | null;
|
|
35784
|
+
/**
|
|
35785
|
+
* Format: date-time
|
|
35786
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35787
|
+
*/
|
|
35788
|
+
updated_at: string;
|
|
35789
|
+
}[];
|
|
35790
|
+
};
|
|
35791
|
+
};
|
|
35792
|
+
};
|
|
35793
|
+
};
|
|
35794
|
+
/** @description Default Response */
|
|
35795
|
+
"4XX": {
|
|
35796
|
+
headers: {
|
|
35797
|
+
[name: string]: unknown;
|
|
35798
|
+
};
|
|
35799
|
+
content: {
|
|
35800
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
35801
|
+
};
|
|
35802
|
+
};
|
|
35803
|
+
/** @description Default Response */
|
|
35804
|
+
"5XX": {
|
|
35805
|
+
headers: {
|
|
35806
|
+
[name: string]: unknown;
|
|
35807
|
+
};
|
|
35808
|
+
content: {
|
|
35809
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
35810
|
+
};
|
|
35811
|
+
};
|
|
35812
|
+
};
|
|
35813
|
+
};
|
|
35814
|
+
getApiV1OperatorHistory: {
|
|
35815
|
+
parameters: {
|
|
35816
|
+
query: {
|
|
35817
|
+
/** @description latency: per operation kind; psi: fleet and top hosts. */
|
|
35818
|
+
metric: "latency" | "psi";
|
|
35819
|
+
window?: "7d" | "30d" | "90d";
|
|
35820
|
+
kind?: "open" | "suspend" | "resume" | "fork" | "snapshot" | "restore" | "delete" | "move" | "resize" | "volume_create" | "volume_attach" | "volume_detach" | "volume_delete" | "reset" | "layer_snapshot";
|
|
35821
|
+
};
|
|
35822
|
+
header?: never;
|
|
35823
|
+
path?: never;
|
|
35824
|
+
cookie?: never;
|
|
35825
|
+
};
|
|
35826
|
+
requestBody?: never;
|
|
35827
|
+
responses: {
|
|
35828
|
+
/** @description Default Response */
|
|
35829
|
+
200: {
|
|
35830
|
+
headers: {
|
|
35831
|
+
[name: string]: unknown;
|
|
35832
|
+
};
|
|
35833
|
+
content: {
|
|
35834
|
+
"application/json": {
|
|
35835
|
+
/** @enum {string} */
|
|
35836
|
+
metric: "latency";
|
|
35837
|
+
window: "7d" | "30d" | "90d";
|
|
35838
|
+
/** @description Bucket length in seconds: 3600 (7d), 21600 (30d), 86400 (90d). */
|
|
35839
|
+
bucket_seconds: number;
|
|
35840
|
+
/**
|
|
35841
|
+
* Format: date-time
|
|
35842
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35843
|
+
*/
|
|
35844
|
+
start: string;
|
|
35845
|
+
/**
|
|
35846
|
+
* Format: date-time
|
|
35847
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35848
|
+
*/
|
|
35849
|
+
end: string;
|
|
35850
|
+
/**
|
|
35851
|
+
* Format: date-time
|
|
35852
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35853
|
+
*/
|
|
35854
|
+
generated_at: string;
|
|
35855
|
+
/** @description Rollup job cursor: every hour before next_hour is computed. null before the first run. */
|
|
35856
|
+
rollup: {
|
|
35857
|
+
next_hour: string | null;
|
|
35858
|
+
last_run_at: string | null;
|
|
35859
|
+
/** @description Hourly rows are kept this many days. */
|
|
35860
|
+
retention_days: number;
|
|
35861
|
+
};
|
|
35862
|
+
/** @description How hourly rows were combined into buckets. */
|
|
35863
|
+
aggregation: string;
|
|
35864
|
+
kinds: {
|
|
35865
|
+
kind: string;
|
|
35866
|
+
points: {
|
|
35867
|
+
/**
|
|
35868
|
+
* Format: date-time
|
|
35869
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35870
|
+
*/
|
|
35871
|
+
t: string;
|
|
35872
|
+
/** @description Some hour of this bucket is not rolled up yet (the current bucket). */
|
|
35873
|
+
partial: boolean;
|
|
35874
|
+
/** @description Hourly rows with completions in the bucket. */
|
|
35875
|
+
hours: number;
|
|
35876
|
+
/** @description Succeeded + failed operations completed in the bucket (canceled excluded). */
|
|
35877
|
+
completed: number;
|
|
35878
|
+
succeeded: number;
|
|
35879
|
+
failed: number;
|
|
35880
|
+
/** @description Succeeded operations with started_at (population of queue and run). */
|
|
35881
|
+
timed: number;
|
|
35882
|
+
success_rate: number | null;
|
|
35883
|
+
/** @description Total (completed_at - created_at) over succeeded operations: weighted median of the bucket's hourly percentiles (exact for 1 h buckets). */
|
|
35884
|
+
total: {
|
|
35885
|
+
p50: number | null;
|
|
35886
|
+
p95: number | null;
|
|
35887
|
+
p99: number | null;
|
|
35888
|
+
};
|
|
35889
|
+
/** @description Queue wait (started_at - created_at) over succeeded operations: weighted median of the bucket's hourly percentiles (exact for 1 h buckets). */
|
|
35890
|
+
queue: {
|
|
35891
|
+
p50: number | null;
|
|
35892
|
+
p95: number | null;
|
|
35893
|
+
p99: number | null;
|
|
35894
|
+
};
|
|
35895
|
+
/** @description Run time (completed_at - started_at) over succeeded operations: weighted median of the bucket's hourly percentiles (exact for 1 h buckets). */
|
|
35896
|
+
run: {
|
|
35897
|
+
p50: number | null;
|
|
35898
|
+
p95: number | null;
|
|
35899
|
+
p99: number | null;
|
|
35900
|
+
};
|
|
35901
|
+
}[];
|
|
35902
|
+
}[];
|
|
35903
|
+
} | {
|
|
35904
|
+
/** @enum {string} */
|
|
35905
|
+
metric: "psi";
|
|
35906
|
+
window: "7d" | "30d" | "90d";
|
|
35907
|
+
/** @description Bucket length in seconds: 3600 (7d), 21600 (30d), 86400 (90d). */
|
|
35908
|
+
bucket_seconds: number;
|
|
35909
|
+
/**
|
|
35910
|
+
* Format: date-time
|
|
35911
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35912
|
+
*/
|
|
35913
|
+
start: string;
|
|
35914
|
+
/**
|
|
35915
|
+
* Format: date-time
|
|
35916
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35917
|
+
*/
|
|
35918
|
+
end: string;
|
|
35919
|
+
/**
|
|
35920
|
+
* Format: date-time
|
|
35921
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35922
|
+
*/
|
|
35923
|
+
generated_at: string;
|
|
35924
|
+
/** @description Rollup job cursor: every hour before next_hour is computed. null before the first run. */
|
|
35925
|
+
rollup: {
|
|
35926
|
+
next_hour: string | null;
|
|
35927
|
+
last_run_at: string | null;
|
|
35928
|
+
/** @description Hourly rows are kept this many days. */
|
|
35929
|
+
retention_days: number;
|
|
35930
|
+
};
|
|
35931
|
+
/** @description How hourly rows were combined into buckets. */
|
|
35932
|
+
aggregation: string;
|
|
35933
|
+
/** @description All hosts together. */
|
|
35934
|
+
fleet: {
|
|
35935
|
+
/**
|
|
35936
|
+
* Format: date-time
|
|
35937
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35938
|
+
*/
|
|
35939
|
+
t: string;
|
|
35940
|
+
/** @description Some hour of this bucket is not rolled up yet (the current bucket). */
|
|
35941
|
+
partial: boolean;
|
|
35942
|
+
/** @description Heartbeat readings sampled (about one per host per minute). */
|
|
35943
|
+
samples: number;
|
|
35944
|
+
memory: {
|
|
35945
|
+
avg: number | null;
|
|
35946
|
+
max: number | null;
|
|
35947
|
+
};
|
|
35948
|
+
cpu: {
|
|
35949
|
+
avg: number | null;
|
|
35950
|
+
max: number | null;
|
|
35951
|
+
};
|
|
35952
|
+
io: {
|
|
35953
|
+
avg: number | null;
|
|
35954
|
+
max: number | null;
|
|
35955
|
+
};
|
|
35956
|
+
/** @description Hosts with samples in the bucket. */
|
|
35957
|
+
hosts: number;
|
|
35958
|
+
}[];
|
|
35959
|
+
hosts: {
|
|
35960
|
+
/**
|
|
35961
|
+
* Format: uuid
|
|
35962
|
+
* @description UUIDv7, lowercase canonical form.
|
|
35963
|
+
*/
|
|
35964
|
+
host_id: string;
|
|
35965
|
+
instance_id: string;
|
|
35966
|
+
cell_id: string;
|
|
35967
|
+
pool: string;
|
|
35968
|
+
peak: number | null;
|
|
35969
|
+
points: {
|
|
35970
|
+
/**
|
|
35971
|
+
* Format: date-time
|
|
35972
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
35973
|
+
*/
|
|
35974
|
+
t: string;
|
|
35975
|
+
/** @description Some hour of this bucket is not rolled up yet (the current bucket). */
|
|
35976
|
+
partial: boolean;
|
|
35977
|
+
/** @description Heartbeat readings sampled (about one per host per minute). */
|
|
35978
|
+
samples: number;
|
|
35979
|
+
memory: {
|
|
35980
|
+
avg: number | null;
|
|
35981
|
+
max: number | null;
|
|
35982
|
+
};
|
|
35983
|
+
cpu: {
|
|
35984
|
+
avg: number | null;
|
|
35985
|
+
max: number | null;
|
|
35986
|
+
};
|
|
35987
|
+
io: {
|
|
35988
|
+
avg: number | null;
|
|
35989
|
+
max: number | null;
|
|
35990
|
+
};
|
|
35991
|
+
}[];
|
|
35992
|
+
}[];
|
|
35993
|
+
/** @description Hosts with samples in the window. */
|
|
35994
|
+
hosts_total: number;
|
|
35995
|
+
/** @description More than 10 hosts had samples; only the ones with the highest peak are listed. */
|
|
35996
|
+
hosts_truncated: boolean;
|
|
35997
|
+
};
|
|
35998
|
+
};
|
|
35999
|
+
};
|
|
36000
|
+
/** @description Default Response */
|
|
36001
|
+
"4XX": {
|
|
36002
|
+
headers: {
|
|
36003
|
+
[name: string]: unknown;
|
|
36004
|
+
};
|
|
36005
|
+
content: {
|
|
36006
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36007
|
+
};
|
|
36008
|
+
};
|
|
36009
|
+
/** @description Default Response */
|
|
36010
|
+
"5XX": {
|
|
36011
|
+
headers: {
|
|
36012
|
+
[name: string]: unknown;
|
|
36013
|
+
};
|
|
36014
|
+
content: {
|
|
36015
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36016
|
+
};
|
|
36017
|
+
};
|
|
36018
|
+
};
|
|
36019
|
+
};
|
|
36020
|
+
getApiV1OperatorMetrics: {
|
|
36021
|
+
parameters: {
|
|
36022
|
+
query?: {
|
|
36023
|
+
window?: "1h" | "24h" | "7d";
|
|
36024
|
+
};
|
|
36025
|
+
header?: never;
|
|
36026
|
+
path?: never;
|
|
36027
|
+
cookie?: never;
|
|
36028
|
+
};
|
|
36029
|
+
requestBody?: never;
|
|
36030
|
+
responses: {
|
|
36031
|
+
/** @description Default Response */
|
|
36032
|
+
200: {
|
|
36033
|
+
headers: {
|
|
36034
|
+
[name: string]: unknown;
|
|
36035
|
+
};
|
|
36036
|
+
content: {
|
|
36037
|
+
"application/json": {
|
|
36038
|
+
window: "1h" | "24h" | "7d";
|
|
36039
|
+
/** @description CloudWatch period: 60 (1h), 300 (24h), 1800 (7d). */
|
|
36040
|
+
period_seconds: number;
|
|
36041
|
+
/**
|
|
36042
|
+
* Format: date-time
|
|
36043
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36044
|
+
*/
|
|
36045
|
+
start: string;
|
|
36046
|
+
/**
|
|
36047
|
+
* Format: date-time
|
|
36048
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36049
|
+
*/
|
|
36050
|
+
end: string;
|
|
36051
|
+
/**
|
|
36052
|
+
* Format: date-time
|
|
36053
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36054
|
+
*/
|
|
36055
|
+
fetched_at: string;
|
|
36056
|
+
/** @description Served from the 60 s in-process cache. */
|
|
36057
|
+
cached: boolean;
|
|
36058
|
+
region: string | null;
|
|
36059
|
+
dashboard_url: string | null;
|
|
36060
|
+
/** @description ok: every series complete; partial: some series not complete; degraded: CloudWatch could not be read (series empty, see error). */
|
|
36061
|
+
status: "ok" | "partial" | "degraded";
|
|
36062
|
+
error: {
|
|
36063
|
+
code: "not_configured" | "access_denied" | "throttled" | "invalid_query" | "no_credentials" | "timeout" | "unavailable";
|
|
36064
|
+
message: string;
|
|
36065
|
+
} | null;
|
|
36066
|
+
series: {
|
|
36067
|
+
/** @description Stable series id (api_latency_p95, edge_latency_p95, api_requests, api_5xx, edge_5xx, gateway_latency_p95, gateway_requests, sqs_depth_<topic>, sqs_age_<topic>, sqs_dlq_depth_<topic>). */
|
|
36068
|
+
id: string;
|
|
36069
|
+
group: "api" | "gateway" | "sqs";
|
|
36070
|
+
label: string;
|
|
36071
|
+
/** @description seconds (latency, message age) or count per period (requests, 5xx) / sampled maximum (queue depth). */
|
|
36072
|
+
unit: "seconds" | "count";
|
|
36073
|
+
/** @description CloudWatch namespace. */
|
|
36074
|
+
namespace: string;
|
|
36075
|
+
/** @description CloudWatch metric name. */
|
|
36076
|
+
metric: string;
|
|
36077
|
+
/** @description CloudWatch dimensions (name -> value). */
|
|
36078
|
+
dimensions: {
|
|
36079
|
+
[key: string]: string;
|
|
36080
|
+
};
|
|
36081
|
+
/** @description CloudWatch statistic (p95, Sum, Maximum). */
|
|
36082
|
+
stat: string;
|
|
36083
|
+
/** @description GetMetricData StatusCode of this series; missing = not in the response. */
|
|
36084
|
+
status: "complete" | "partial_data" | "internal_error" | "forbidden" | "missing";
|
|
36085
|
+
/** @description Period start of each point, ascending. */
|
|
36086
|
+
timestamps: string[];
|
|
36087
|
+
/** @description One value per timestamp, in `unit`. */
|
|
36088
|
+
values: number[];
|
|
36089
|
+
}[];
|
|
36090
|
+
};
|
|
36091
|
+
};
|
|
36092
|
+
};
|
|
36093
|
+
/** @description Default Response */
|
|
36094
|
+
"4XX": {
|
|
36095
|
+
headers: {
|
|
36096
|
+
[name: string]: unknown;
|
|
36097
|
+
};
|
|
36098
|
+
content: {
|
|
36099
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36100
|
+
};
|
|
36101
|
+
};
|
|
36102
|
+
/** @description Default Response */
|
|
36103
|
+
"5XX": {
|
|
36104
|
+
headers: {
|
|
36105
|
+
[name: string]: unknown;
|
|
36106
|
+
};
|
|
36107
|
+
content: {
|
|
36108
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36109
|
+
};
|
|
36110
|
+
};
|
|
36111
|
+
};
|
|
36112
|
+
};
|
|
36113
|
+
getApiV1OperatorPerformance: {
|
|
36114
|
+
parameters: {
|
|
36115
|
+
query?: {
|
|
36116
|
+
/** @description Rolling window (at most 30 days). */
|
|
36117
|
+
window?: "1h" | "24h" | "7d" | "30d";
|
|
36118
|
+
};
|
|
36119
|
+
header?: never;
|
|
36120
|
+
path?: never;
|
|
36121
|
+
cookie?: never;
|
|
36122
|
+
};
|
|
36123
|
+
requestBody?: never;
|
|
36124
|
+
responses: {
|
|
36125
|
+
/** @description Default Response */
|
|
36126
|
+
200: {
|
|
36127
|
+
headers: {
|
|
36128
|
+
[name: string]: unknown;
|
|
36129
|
+
};
|
|
36130
|
+
content: {
|
|
36131
|
+
"application/json": {
|
|
36132
|
+
/**
|
|
36133
|
+
* Format: date-time
|
|
36134
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36135
|
+
*/
|
|
36136
|
+
generated_at: string;
|
|
36137
|
+
window: "1h" | "24h" | "7d" | "30d";
|
|
36138
|
+
window_seconds: number;
|
|
36139
|
+
/**
|
|
36140
|
+
* Format: date-time
|
|
36141
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36142
|
+
*/
|
|
36143
|
+
window_start: string;
|
|
36144
|
+
/** @description Latency of succeeded operations of open, resume, suspend, fork and delete (always all five, in that order). */
|
|
36145
|
+
lifecycle: {
|
|
36146
|
+
/** @description Operation kind. */
|
|
36147
|
+
kind: string;
|
|
36148
|
+
/** @description Operations of this kind that succeeded within the window (completed_at in the window; created_at may be earlier). */
|
|
36149
|
+
samples: number;
|
|
36150
|
+
/** @description Of those, operations without started_at: counted in total_ms, not in queue_wait_ms or run_ms. */
|
|
36151
|
+
missing_started_at: number;
|
|
36152
|
+
/** @description started_at − created_at: waiting to be claimed, for an older operation of the workspace, and for capacity. */
|
|
36153
|
+
queue_wait_ms: {
|
|
36154
|
+
p50: number | null;
|
|
36155
|
+
p95: number | null;
|
|
36156
|
+
p99: number | null;
|
|
36157
|
+
};
|
|
36158
|
+
/** @description completed_at − started_at: the cell executing it. */
|
|
36159
|
+
run_ms: {
|
|
36160
|
+
p50: number | null;
|
|
36161
|
+
p95: number | null;
|
|
36162
|
+
p99: number | null;
|
|
36163
|
+
};
|
|
36164
|
+
/** @description completed_at − created_at: the server-side operation time. */
|
|
36165
|
+
total_ms: {
|
|
36166
|
+
p50: number | null;
|
|
36167
|
+
p95: number | null;
|
|
36168
|
+
p99: number | null;
|
|
36169
|
+
};
|
|
36170
|
+
}[];
|
|
36171
|
+
/** @description Daily p50/p95 of the total operation time of the lifecycle kinds. */
|
|
36172
|
+
trend: {
|
|
36173
|
+
/** @description UTC days shown: max(7, window in days); the 1 h and 24 h windows still show a week. */
|
|
36174
|
+
days: number;
|
|
36175
|
+
/**
|
|
36176
|
+
* Format: date-time
|
|
36177
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36178
|
+
*/
|
|
36179
|
+
since: string;
|
|
36180
|
+
series: {
|
|
36181
|
+
kind: string;
|
|
36182
|
+
/** @description One point per UTC day, oldest first; days without operations have samples 0. */
|
|
36183
|
+
points: {
|
|
36184
|
+
/** @description UTC day. */
|
|
36185
|
+
day: string;
|
|
36186
|
+
/** @description Succeeded operations completed that day. */
|
|
36187
|
+
samples: number;
|
|
36188
|
+
total_p50_ms: number | null;
|
|
36189
|
+
total_p95_ms: number | null;
|
|
36190
|
+
}[];
|
|
36191
|
+
}[];
|
|
36192
|
+
/** @description Comparison lines (docs/progress/startup-latency.md); only kinds with a recorded baseline. */
|
|
36193
|
+
baselines: {
|
|
36194
|
+
kind: string;
|
|
36195
|
+
/** @description Benchmark p50 of the server operation time, milliseconds. */
|
|
36196
|
+
p50_ms: number;
|
|
36197
|
+
/** @description Benchmark p95, milliseconds. */
|
|
36198
|
+
p95_ms: number;
|
|
36199
|
+
samples: number;
|
|
36200
|
+
/** @description UTC day of the benchmark run. */
|
|
36201
|
+
measured_on: string;
|
|
36202
|
+
environment: string;
|
|
36203
|
+
/** @description What the benchmark measured. */
|
|
36204
|
+
scenario: string;
|
|
36205
|
+
/** @description Where the numbers come from (progress document and receipt). */
|
|
36206
|
+
source: string;
|
|
36207
|
+
}[];
|
|
36208
|
+
};
|
|
36209
|
+
paths: {
|
|
36210
|
+
open: {
|
|
36211
|
+
/** @description Succeeded opens within the window. */
|
|
36212
|
+
succeeded: number;
|
|
36213
|
+
/** @description result.start_path: warm (cloned from the host’s warm snapshot) or boot; warm and boot always present. */
|
|
36214
|
+
by_path: {
|
|
36215
|
+
/** @description Path the cell recorded in the operation result; `unrecorded` when the result has none. */
|
|
36216
|
+
path: string;
|
|
36217
|
+
/** @description Succeeded operations that took this path within the window. */
|
|
36218
|
+
count: number;
|
|
36219
|
+
/** @description Server-side operation time (completed_at − created_at). */
|
|
36220
|
+
total_ms: {
|
|
36221
|
+
p50: number | null;
|
|
36222
|
+
p95: number | null;
|
|
36223
|
+
};
|
|
36224
|
+
/** @description Host VM start to guest ready (result.boot_to_ready_ms), for results that carry it. */
|
|
36225
|
+
boot_to_ready_ms: {
|
|
36226
|
+
p50: number | null;
|
|
36227
|
+
p95: number | null;
|
|
36228
|
+
};
|
|
36229
|
+
}[];
|
|
36230
|
+
warm_fallback: {
|
|
36231
|
+
/** @description Succeeded opens whose result carries warm_fallback (a warm-allowed start booted instead). */
|
|
36232
|
+
count: number;
|
|
36233
|
+
rate: number | null;
|
|
36234
|
+
/** @description Counts keyed by value. */
|
|
36235
|
+
by_reason: {
|
|
36236
|
+
[key: string]: number;
|
|
36237
|
+
};
|
|
36238
|
+
};
|
|
36239
|
+
};
|
|
36240
|
+
resume: {
|
|
36241
|
+
/** @description Succeeded resumes within the window. */
|
|
36242
|
+
succeeded: number;
|
|
36243
|
+
/** @description result.resume_path; local_cache, prestaged and download always present, cold_boot and others when they occurred. */
|
|
36244
|
+
by_path: {
|
|
36245
|
+
/** @description Path the cell recorded in the operation result; `unrecorded` when the result has none. */
|
|
36246
|
+
path: string;
|
|
36247
|
+
/** @description Succeeded operations that took this path within the window. */
|
|
36248
|
+
count: number;
|
|
36249
|
+
/** @description Server-side operation time (completed_at − created_at). */
|
|
36250
|
+
total_ms: {
|
|
36251
|
+
p50: number | null;
|
|
36252
|
+
p95: number | null;
|
|
36253
|
+
};
|
|
36254
|
+
/** @description Host VM start to guest ready (result.boot_to_ready_ms), for results that carry it. */
|
|
36255
|
+
boot_to_ready_ms: {
|
|
36256
|
+
p50: number | null;
|
|
36257
|
+
p95: number | null;
|
|
36258
|
+
};
|
|
36259
|
+
/** @description DownloadGeneration time (result.download.download_ms), for prestaged/download/cold_boot. */
|
|
36260
|
+
download_ms: {
|
|
36261
|
+
p50: number | null;
|
|
36262
|
+
p95: number | null;
|
|
36263
|
+
};
|
|
36264
|
+
}[];
|
|
36265
|
+
};
|
|
36266
|
+
};
|
|
36267
|
+
/** @description By checkpoint kind (suspend always present). */
|
|
36268
|
+
checkpoints: {
|
|
36269
|
+
/** @description Checkpoint kind: suspend | snapshot | fork_source | layer_capture. */
|
|
36270
|
+
kind: string;
|
|
36271
|
+
/** @description Checkpoints committed (durable) within the window. */
|
|
36272
|
+
committed: number;
|
|
36273
|
+
/** @description Checkpoints that failed within the window. */
|
|
36274
|
+
failed: number;
|
|
36275
|
+
/** @description Stored size of the committed generation (all objects). */
|
|
36276
|
+
total_bytes: {
|
|
36277
|
+
p50: number | null;
|
|
36278
|
+
p95: number | null;
|
|
36279
|
+
};
|
|
36280
|
+
/** @description Bytes the upload moved (chunked uploads skip reused chunks; single-object uploads send everything). */
|
|
36281
|
+
uploaded_bytes: {
|
|
36282
|
+
p50: number | null;
|
|
36283
|
+
p95: number | null;
|
|
36284
|
+
};
|
|
36285
|
+
/** @description Host snapshot RPC (the VM is paused for part of it). */
|
|
36286
|
+
snapshot_ms: {
|
|
36287
|
+
p50: number | null;
|
|
36288
|
+
p95: number | null;
|
|
36289
|
+
};
|
|
36290
|
+
/** @description Upload to the durable store. */
|
|
36291
|
+
upload_ms: {
|
|
36292
|
+
p50: number | null;
|
|
36293
|
+
p95: number | null;
|
|
36294
|
+
};
|
|
36295
|
+
/** @description Checkpoint created → committed (snapshot, upload and verification). */
|
|
36296
|
+
capture_to_durable_ms: {
|
|
36297
|
+
p50: number | null;
|
|
36298
|
+
p95: number | null;
|
|
36299
|
+
};
|
|
36300
|
+
/** @description Per-checkpoint upload throughput: uploaded_bytes / upload_ms (MiB = 2^20 bytes). */
|
|
36301
|
+
upload_mib_per_s: {
|
|
36302
|
+
p50: number | null;
|
|
36303
|
+
p95: number | null;
|
|
36304
|
+
};
|
|
36305
|
+
upload_mib_per_s_overall: number | null;
|
|
36306
|
+
}[];
|
|
36307
|
+
/** @description Operations that left capacity_pending before migration 0079 have no first_capacity_pending_at and count as not waited. */
|
|
36308
|
+
capacity_waits: {
|
|
36309
|
+
/** @description Operations completed (succeeded or failed) within the window that waited for capacity (first_capacity_pending_at set). */
|
|
36310
|
+
waited: number;
|
|
36311
|
+
/** @description Time from first entering capacity_pending until started_at (completed_at when the operation failed there). */
|
|
36312
|
+
wait_ms: {
|
|
36313
|
+
p50: number | null;
|
|
36314
|
+
p95: number | null;
|
|
36315
|
+
max: number | null;
|
|
36316
|
+
};
|
|
36317
|
+
/** @description Starts failed capacity_unavailable within the window (waited past the capacity deadline, default 15 min). */
|
|
36318
|
+
capacity_unavailable: number;
|
|
36319
|
+
/** @description Operations failed invalid_resources within the window. */
|
|
36320
|
+
invalid_resources: number;
|
|
36321
|
+
/** @description Of those, error.details.reason exceeds_host_class (larger than any host the pool can have). */
|
|
36322
|
+
exceeds_host_class: number;
|
|
36323
|
+
};
|
|
36324
|
+
/** @description From app.operator_tool_audit (all organizations), most calls first. */
|
|
36325
|
+
tool_calls: {
|
|
36326
|
+
/** @description exec | files | pty | process | git | browser. */
|
|
36327
|
+
tool: string;
|
|
36328
|
+
/** @description Tool calls within the window (every outcome). */
|
|
36329
|
+
calls: number;
|
|
36330
|
+
/** @description Calls with outcome error. */
|
|
36331
|
+
errors: number;
|
|
36332
|
+
/** @description Calls with outcome denied (authorization or stale ownership); not errors. */
|
|
36333
|
+
denied: number;
|
|
36334
|
+
error_rate: number | null;
|
|
36335
|
+
/** @description Gateway call duration. For stream actions (exec.attach, pty.attach, exec.output) it is the stream’s lifetime. */
|
|
36336
|
+
latency_ms: {
|
|
36337
|
+
p50: number | null;
|
|
36338
|
+
p95: number | null;
|
|
36339
|
+
};
|
|
36340
|
+
/** @description Per action, most calls first. */
|
|
36341
|
+
actions: {
|
|
36342
|
+
/** @description Gateway action, e.g. exec.start, files.read. */
|
|
36343
|
+
action: string;
|
|
36344
|
+
/** @description Tool calls within the window (every outcome). */
|
|
36345
|
+
calls: number;
|
|
36346
|
+
/** @description Calls with outcome error. */
|
|
36347
|
+
errors: number;
|
|
36348
|
+
/** @description Calls with outcome denied (authorization or stale ownership); not errors. */
|
|
36349
|
+
denied: number;
|
|
36350
|
+
error_rate: number | null;
|
|
36351
|
+
/** @description Gateway call duration. For stream actions (exec.attach, pty.attach, exec.output) it is the stream’s lifetime. */
|
|
36352
|
+
latency_ms: {
|
|
36353
|
+
p50: number | null;
|
|
36354
|
+
p95: number | null;
|
|
36355
|
+
};
|
|
36356
|
+
}[];
|
|
36357
|
+
}[];
|
|
36358
|
+
/** @description Operations completed within the window, per kind: the five lifecycle kinds always, others when they occurred. */
|
|
36359
|
+
reliability: {
|
|
36360
|
+
kind: string;
|
|
36361
|
+
succeeded: number;
|
|
36362
|
+
failed: number;
|
|
36363
|
+
success_rate: number | null;
|
|
36364
|
+
}[];
|
|
36365
|
+
};
|
|
36366
|
+
};
|
|
36367
|
+
};
|
|
36368
|
+
/** @description Default Response */
|
|
36369
|
+
"4XX": {
|
|
36370
|
+
headers: {
|
|
36371
|
+
[name: string]: unknown;
|
|
36372
|
+
};
|
|
36373
|
+
content: {
|
|
36374
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36375
|
+
};
|
|
36376
|
+
};
|
|
36377
|
+
/** @description Default Response */
|
|
36378
|
+
"5XX": {
|
|
36379
|
+
headers: {
|
|
36380
|
+
[name: string]: unknown;
|
|
36381
|
+
};
|
|
36382
|
+
content: {
|
|
36383
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36384
|
+
};
|
|
36385
|
+
};
|
|
36386
|
+
};
|
|
36387
|
+
};
|
|
36388
|
+
getApiV1OperatorBusiness: {
|
|
36389
|
+
parameters: {
|
|
36390
|
+
query?: {
|
|
36391
|
+
/** @description Rolling window (at most 30 days). */
|
|
36392
|
+
window?: "7d" | "30d";
|
|
36393
|
+
};
|
|
36394
|
+
header?: never;
|
|
36395
|
+
path?: never;
|
|
36396
|
+
cookie?: never;
|
|
36397
|
+
};
|
|
36398
|
+
requestBody?: never;
|
|
36399
|
+
responses: {
|
|
36400
|
+
/** @description Default Response */
|
|
36401
|
+
200: {
|
|
36402
|
+
headers: {
|
|
36403
|
+
[name: string]: unknown;
|
|
36404
|
+
};
|
|
36405
|
+
content: {
|
|
36406
|
+
"application/json": {
|
|
36407
|
+
/**
|
|
36408
|
+
* Format: date-time
|
|
36409
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36410
|
+
*/
|
|
36411
|
+
generated_at: string;
|
|
36412
|
+
window: "7d" | "30d";
|
|
36413
|
+
window_seconds: number;
|
|
36414
|
+
/**
|
|
36415
|
+
* Format: date-time
|
|
36416
|
+
* @description RFC 3339 UTC timestamp with Z.
|
|
36417
|
+
*/
|
|
36418
|
+
window_start: string;
|
|
36419
|
+
/** @description Stripe mode of every billing figure (this environment’s). */
|
|
36420
|
+
billing_mode: "test" | "live";
|
|
36421
|
+
/** @description The plan counted as free: DEFAULT_PLAN_KEY, the plan every new organization gets. */
|
|
36422
|
+
free_plan_key: string;
|
|
36423
|
+
growth: {
|
|
36424
|
+
/** @description Every UTC day the window touches, oldest first (the first and last day are partial). */
|
|
36425
|
+
daily: {
|
|
36426
|
+
/** @description UTC day. */
|
|
36427
|
+
day: string;
|
|
36428
|
+
/** @description Users created that day (within the window). */
|
|
36429
|
+
signups: number;
|
|
36430
|
+
/** @description Of those, users whose email is verified now. */
|
|
36431
|
+
verified_signups: number;
|
|
36432
|
+
/** @description Organizations created that day (including since deleted). */
|
|
36433
|
+
organizations_created: number;
|
|
36434
|
+
}[];
|
|
36435
|
+
users: {
|
|
36436
|
+
/** @description Every user row (all time). */
|
|
36437
|
+
total: number;
|
|
36438
|
+
/** @description Users with a verified email (all time). */
|
|
36439
|
+
verified: number;
|
|
36440
|
+
signups_in_window: number;
|
|
36441
|
+
verified_signups_in_window: number;
|
|
36442
|
+
};
|
|
36443
|
+
organizations: {
|
|
36444
|
+
/** @description Organizations not deleted (all time). */
|
|
36445
|
+
total: number;
|
|
36446
|
+
/** @description Deleted organizations (all time), not in total. */
|
|
36447
|
+
deleted: number;
|
|
36448
|
+
/** @description Created within the window, including since deleted. */
|
|
36449
|
+
created_in_window: number;
|
|
36450
|
+
};
|
|
36451
|
+
/** @description Distinct organizations with an operation that completed (succeeded or failed) in the last 7 / 30 days or is still queued, capacity_pending or running. Fixed windows, independent of `window`. */
|
|
36452
|
+
active_organizations: {
|
|
36453
|
+
last_7d: number;
|
|
36454
|
+
last_30d: number;
|
|
36455
|
+
};
|
|
36456
|
+
};
|
|
36457
|
+
money: {
|
|
36458
|
+
/** @description Organizations not deleted, by the plan in effect now (the entitlement resolver’s rule: override > subscription > trial > default, newest first). Most first. */
|
|
36459
|
+
organizations_by_plan: {
|
|
36460
|
+
/** @description `none` when no plan entitlement is in effect. */
|
|
36461
|
+
plan_key: string;
|
|
36462
|
+
organizations: number;
|
|
36463
|
+
}[];
|
|
36464
|
+
/** @description Stripe subscription projections of this billing mode, excluding canceled and incomplete_expired. */
|
|
36465
|
+
subscriptions: {
|
|
36466
|
+
/** @description Status active or past_due on a price above zero (what MRR counts). */
|
|
36467
|
+
paying: number;
|
|
36468
|
+
/** @description Of the paying ones, set to cancel (cancel_at_period_end or cancel_at): still in MRR until they end. */
|
|
36469
|
+
canceling: number;
|
|
36470
|
+
trialing: number;
|
|
36471
|
+
/** @description Status past_due (payment failed, Stripe retrying). */
|
|
36472
|
+
past_due: number;
|
|
36473
|
+
/** @description Status unpaid (retries exhausted; not in MRR). */
|
|
36474
|
+
unpaid: number;
|
|
36475
|
+
/** @description Entitlement state grace: past due, still within payment_grace_days. */
|
|
36476
|
+
grace: number;
|
|
36477
|
+
/** @description Entitlement state restricted: new starts refused for non-payment. */
|
|
36478
|
+
restricted: number;
|
|
36479
|
+
/** @description Active/past_due subscriptions whose Stripe price is not one of the catalog’s monthly/yearly prices: not in MRR. */
|
|
36480
|
+
unpriced: number;
|
|
36481
|
+
};
|
|
36482
|
+
/** @description Monthly recurring revenue per currency: the list price (plan_prices.unit_amount_minor) of every paying subscription, a yearly price divided by 12, rounded to minor units. Before discounts and tax; overage and usage charges are not recurring and not included. */
|
|
36483
|
+
mrr: {
|
|
36484
|
+
/** @description ISO 4217, lower case (plan_prices / invoice currency). */
|
|
36485
|
+
currency: string;
|
|
36486
|
+
/** @description Minor units (cents for usd). */
|
|
36487
|
+
amount_minor: number;
|
|
36488
|
+
subscriptions: number;
|
|
36489
|
+
}[];
|
|
36490
|
+
/** @description Collected in the last 30 days (fixed, independent of `window`): amount_paid of invoices with status paid and paid_at in the last 30 days, per currency. Includes overage settlement invoices. */
|
|
36491
|
+
revenue_30d: {
|
|
36492
|
+
/** @description ISO 4217, lower case (plan_prices / invoice currency). */
|
|
36493
|
+
currency: string;
|
|
36494
|
+
/** @description Minor units (cents for usd). */
|
|
36495
|
+
amount_minor: number;
|
|
36496
|
+
invoices: number;
|
|
36497
|
+
}[];
|
|
36498
|
+
conversion: {
|
|
36499
|
+
/** @description Stripe trials. The catalog configures no trial today, so this stays empty until one is offered; free_to_paid is the funnel in use. */
|
|
36500
|
+
trial_to_paid: {
|
|
36501
|
+
/** @description Subscriptions whose Stripe trial ended (trial_end) within the window. */
|
|
36502
|
+
trials_ended: number;
|
|
36503
|
+
/** @description Of those, subscriptions with a paid invoice (status paid, amount_paid > 0) at or after trial_end. */
|
|
36504
|
+
converted: number;
|
|
36505
|
+
rate: number | null;
|
|
36506
|
+
};
|
|
36507
|
+
/** @description New organizations that became paying customers. */
|
|
36508
|
+
free_to_paid: {
|
|
36509
|
+
/** @description Organizations created within the window (every organization starts on the free plan). */
|
|
36510
|
+
cohort: number;
|
|
36511
|
+
/** @description Of those, organizations that have paid an invoice (status paid, amount_paid > 0) in this billing mode. */
|
|
36512
|
+
converted: number;
|
|
36513
|
+
rate: number | null;
|
|
36514
|
+
};
|
|
36515
|
+
};
|
|
36516
|
+
};
|
|
36517
|
+
usage: {
|
|
36518
|
+
/** @description Every meter; hours whose start is within the window (the current hour as far as rolled up). */
|
|
36519
|
+
meters: {
|
|
36520
|
+
/** @description Usage meter (usage_org_hourly). */
|
|
36521
|
+
meter: string;
|
|
36522
|
+
/** @description hours: CPU hours (cpu_seconds / 3600); gib_hours: GiB-hours (gib_seconds / 3600); gb: decimal gigabytes (bytes / 1e9). */
|
|
36523
|
+
unit: "hours" | "gib_hours" | "gb";
|
|
36524
|
+
/** @description Raw (unrounded) usage within the window, in `unit`. */
|
|
36525
|
+
quantity: number;
|
|
36526
|
+
/** @description Organizations with usage on this meter. */
|
|
36527
|
+
organizations: number;
|
|
36528
|
+
/** @description Part of quantity from organizations on the free plan now. */
|
|
36529
|
+
free_plan_quantity: number;
|
|
36530
|
+
free_plan_share: number | null;
|
|
36531
|
+
}[];
|
|
36532
|
+
/** @description At most 10 organizations, ranked by RAM GiB-hours (the main cost driver), then CPU hours. */
|
|
36533
|
+
top_organizations: {
|
|
36534
|
+
/**
|
|
36535
|
+
* Format: uuid
|
|
36536
|
+
* @description UUIDv7, lowercase canonical form.
|
|
36537
|
+
*/
|
|
36538
|
+
organization_id: string;
|
|
36539
|
+
name: string;
|
|
36540
|
+
plan_key: string | null;
|
|
36541
|
+
/** @description The organization has been deleted since (its usage still counts). */
|
|
36542
|
+
deleted: boolean;
|
|
36543
|
+
cpu_hours: number;
|
|
36544
|
+
/** @description memory_gib_seconds / 3600: the workspace RAM allocation while running. */
|
|
36545
|
+
ram_gib_hours: number;
|
|
36546
|
+
/** @description storage_gib_seconds / 3600 (private disk + retained snapshots). */
|
|
36547
|
+
storage_gib_hours: number;
|
|
36548
|
+
egress_gb: number;
|
|
36549
|
+
}[];
|
|
36550
|
+
};
|
|
36551
|
+
};
|
|
36552
|
+
};
|
|
36553
|
+
};
|
|
36554
|
+
/** @description Default Response */
|
|
36555
|
+
"4XX": {
|
|
36556
|
+
headers: {
|
|
36557
|
+
[name: string]: unknown;
|
|
36558
|
+
};
|
|
36559
|
+
content: {
|
|
36560
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36561
|
+
};
|
|
36562
|
+
};
|
|
36563
|
+
/** @description Default Response */
|
|
36564
|
+
"5XX": {
|
|
36565
|
+
headers: {
|
|
36566
|
+
[name: string]: unknown;
|
|
36567
|
+
};
|
|
36568
|
+
content: {
|
|
36569
|
+
"application/json": components["schemas"]["ErrorBody"];
|
|
36570
|
+
};
|
|
36571
|
+
};
|
|
36572
|
+
};
|
|
36573
|
+
};
|
|
35243
36574
|
}
|