@runlot/api 0.1.0-rc.46 → 0.1.0-rc.47
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/dist/schema.d.ts +165 -140
- package/dist/schema.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/schema.d.ts
CHANGED
|
@@ -610,7 +610,7 @@ export interface paths {
|
|
|
610
610
|
put?: never;
|
|
611
611
|
/**
|
|
612
612
|
* Creates a diagnostic image (`runlot pg export`)
|
|
613
|
-
* @description **
|
|
613
|
+
* @description **This is not a backup** (docs/env-db-assembly.md §5). What it creates is an **immutable
|
|
614
614
|
* diagnostic key** under the current `(project, epoch)`, and it moves none of the latest,
|
|
615
615
|
* freshness, or retention pointers, nor does it affect the name of the next automatic
|
|
616
616
|
* backup.
|
|
@@ -622,14 +622,14 @@ export interface paths {
|
|
|
622
622
|
* this endpoint creates stays **outside** that namespace — restore cannot select it,
|
|
623
623
|
* pruning does not count it, and it cannot move latest.
|
|
624
624
|
*
|
|
625
|
-
* **
|
|
625
|
+
* **This is not idempotent.** Each call creates one more image, because the server builds a new
|
|
626
626
|
* stamp for every request. The only thing absorbed idempotently is a **retry of the same
|
|
627
627
|
* stamp** once it has reached the node.
|
|
628
628
|
*
|
|
629
629
|
* Requires member or higher only. The image is the entire database, so it is not something
|
|
630
630
|
* a viewer should fetch in a single call.
|
|
631
631
|
*
|
|
632
|
-
*
|
|
632
|
+
* It is slow. The response arrives only after the dump finishes — in proportion to size — and
|
|
633
633
|
* the project's actor is held for that duration.
|
|
634
634
|
*/
|
|
635
635
|
post: operations["exportDatabase"];
|
|
@@ -804,8 +804,7 @@ export interface paths {
|
|
|
804
804
|
/**
|
|
805
805
|
* Aborts an in-progress operation (`runlot pg abort`)
|
|
806
806
|
* @description Only possible **before** an unrecoverable phase (docs/phase5.md B4): evict,
|
|
807
|
-
* restore_generation, and delete are abortable up to committing; restore is not. Aborting
|
|
808
|
-
* returns the batch to active and leaves `terminalCode=aborted`.
|
|
807
|
+
* restore_generation, and delete are abortable up to committing; restore is not. Aborting returns the placement to active and leaves `terminalCode=aborted`.
|
|
809
808
|
*
|
|
810
809
|
* admin and above. The server **reads first, then aborts** — reversing the order would
|
|
811
810
|
* abort another project's operation for real before returning 404.
|
|
@@ -978,7 +977,7 @@ export interface paths {
|
|
|
978
977
|
*/
|
|
979
978
|
post: operations["grantStorage"];
|
|
980
979
|
/**
|
|
981
|
-
*
|
|
980
|
+
* Remove project storage (`runlot storage delete`)
|
|
982
981
|
* @description **Objects are not deleted.** Deleting everything under the prefix must be a CP operation
|
|
983
982
|
* idempotent by `op_id` (docs/storage.md §7, the same lane as database deletion), and that
|
|
984
983
|
* lane does not exist yet — this fact is recorded in the audit log.
|
|
@@ -1002,21 +1001,21 @@ export interface paths {
|
|
|
1002
1001
|
cookie?: never;
|
|
1003
1002
|
};
|
|
1004
1003
|
/**
|
|
1005
|
-
* AI
|
|
1006
|
-
* @description `env.ai`
|
|
1007
|
-
*
|
|
1008
|
-
* 가격표다.
|
|
1004
|
+
* AI model catalog (`runlot ai models`)
|
|
1005
|
+
* @description Every model `env.ai` can call (docs/ai.md §2.3). **Any signed-in user can read it** — what you can
|
|
1006
|
+
* buy is not an org secret, and this list is the price list.
|
|
1009
1007
|
*
|
|
1010
|
-
*
|
|
1011
|
-
* (`listPrice: true`,
|
|
1012
|
-
*
|
|
1013
|
-
*
|
|
1008
|
+
* There are two lanes. `frontier` passes the provider's **list price** straight through
|
|
1009
|
+
* (`listPrice: true`, zero margin) — that is why the provider's name stays in the model id and
|
|
1010
|
+
* `provider` is included. `value` models are the ones we buy wholesale and sell at our own price, so
|
|
1011
|
+
* `provider` is **not included**: that is a value we swap whenever we want.
|
|
1014
1012
|
*
|
|
1015
|
-
*
|
|
1016
|
-
*
|
|
1017
|
-
*
|
|
1013
|
+
* Prices are integer **microcents** per million tokens (1 µ¢ = 1e-8 USD). The point is that the
|
|
1014
|
+
* server does not fix the number of decimal places — a small call rounds to 0 in cents
|
|
1015
|
+
* (docs/ai.md §3.1), and that fact must not be tied to a single format string.
|
|
1018
1016
|
*
|
|
1019
|
-
*
|
|
1017
|
+
* A model id that is not on this list returns 400 at call time. **There is no arbitrary model
|
|
1018
|
+
* passthrough.**
|
|
1020
1019
|
*/
|
|
1021
1020
|
get: operations["listAIModels"];
|
|
1022
1021
|
put?: never;
|
|
@@ -1038,45 +1037,44 @@ export interface paths {
|
|
|
1038
1037
|
cookie?: never;
|
|
1039
1038
|
};
|
|
1040
1039
|
/**
|
|
1041
|
-
* AI
|
|
1042
|
-
* @description
|
|
1043
|
-
*
|
|
1044
|
-
* `granted`
|
|
1040
|
+
* AI status (`runlot ai usage`)
|
|
1041
|
+
* @description Whether AI is turned on, the four limits, the org's balance, and the last 24 hours of usage
|
|
1042
|
+
* (docs/ai.md §6). The limits come populated even when AI is off — they are the material for "here is
|
|
1043
|
+
* what the limits would be if you turned this on", and `granted` is the real state.
|
|
1045
1044
|
*
|
|
1046
|
-
* `maxOutputTokens
|
|
1045
|
+
* `0` in `maxOutputTokens` and `maxInputTokens` means **the model decides**.
|
|
1047
1046
|
*
|
|
1048
|
-
* `spentMicroCents24h`
|
|
1049
|
-
*
|
|
1050
|
-
* 이유다.
|
|
1047
|
+
* `spentMicroCents24h` cannot be built from `usage_hourly`, so it is read from the ledger instead —
|
|
1048
|
+
* prices are a function of the moment, which is why 0046 split the two tables.
|
|
1051
1049
|
*
|
|
1052
|
-
* viewer
|
|
1050
|
+
* viewer or above.
|
|
1053
1051
|
*/
|
|
1054
1052
|
get: operations["getAI"];
|
|
1055
1053
|
put?: never;
|
|
1056
1054
|
/**
|
|
1057
|
-
*
|
|
1058
|
-
* @description
|
|
1059
|
-
*
|
|
1055
|
+
* Turns on AI (a deployment calls this after reading `"ai": true`)
|
|
1056
|
+
* @description **This is idempotent.** There is no request body — neither the limits nor the model list is a
|
|
1057
|
+
* value the user sets.
|
|
1060
1058
|
*
|
|
1061
|
-
*
|
|
1062
|
-
*
|
|
1063
|
-
*
|
|
1059
|
+
* Once it is on, the node connects `env.ai` on the next convergence. **The bundle must also say
|
|
1060
|
+
* `\"ai\": true`** — turning it on is the CP's side, and which system workers start is the bundle's
|
|
1061
|
+
* side.
|
|
1064
1062
|
*
|
|
1065
|
-
*
|
|
1066
|
-
*
|
|
1067
|
-
*
|
|
1063
|
+
* There is **no node credential check**: the upstream credentials (Bedrock, Vertex) live in the
|
|
1064
|
+
* node's site.env, so the CP has no record of them. On a node without them, turning it on still
|
|
1065
|
+
* succeeds and the call returns 503 (an open item in docs/ai.md §9).
|
|
1068
1066
|
*
|
|
1069
|
-
* member
|
|
1067
|
+
* member and above. Audited as `ai.grant`.
|
|
1070
1068
|
*/
|
|
1071
1069
|
post: operations["grantAI"];
|
|
1072
1070
|
/**
|
|
1073
|
-
*
|
|
1074
|
-
* @description
|
|
1071
|
+
* Turns off AI (`runlot ai delete`)
|
|
1072
|
+
* @description From the next deployment on, there is no `env.ai`. This is idempotent.
|
|
1075
1073
|
*
|
|
1076
|
-
*
|
|
1077
|
-
*
|
|
1074
|
+
* **The ledger is not deleted** — it is the record of money already paid. The credit balance stays
|
|
1075
|
+
* as well: the balance belongs to the org, and what you are turning off belongs to the project.
|
|
1078
1076
|
*
|
|
1079
|
-
* admin.
|
|
1077
|
+
* admin. Audited as `ai.revoke`.
|
|
1080
1078
|
*/
|
|
1081
1079
|
delete: operations["revokeAI"];
|
|
1082
1080
|
options?: never;
|
|
@@ -1094,17 +1092,18 @@ export interface paths {
|
|
|
1094
1092
|
cookie?: never;
|
|
1095
1093
|
};
|
|
1096
1094
|
/**
|
|
1097
|
-
* AI
|
|
1098
|
-
* @description
|
|
1099
|
-
*
|
|
1095
|
+
* AI credit balance and auto top-up settings (`runlot ai credit`)
|
|
1096
|
+
* @description The balance is in **microcents** and can go negative (docs/ai.md §3.3 — the balance check runs
|
|
1097
|
+
* before a call and the deduction after it, so a single call that has already started can take the
|
|
1098
|
+
* balance past zero).
|
|
1100
1099
|
*
|
|
1101
|
-
* `hasPaymentMethod`
|
|
1102
|
-
*
|
|
1100
|
+
* If `hasPaymentMethod` is false, auto top-up cannot be turned on — there is no saved card, and
|
|
1101
|
+
* **the first top-up is always manual** (that is what saves the card).
|
|
1103
1102
|
*
|
|
1104
|
-
* `autoTopupsToday`
|
|
1105
|
-
*
|
|
1103
|
+
* `autoTopupsToday` and `autoTopupPerDay` come together. That cap is the ceiling on a day's spend,
|
|
1104
|
+
* so a screen has to show both to answer "why didn't it top up".
|
|
1106
1105
|
*
|
|
1107
|
-
* member
|
|
1106
|
+
* member or above.
|
|
1108
1107
|
*/
|
|
1109
1108
|
get: operations["getAICredit"];
|
|
1110
1109
|
put?: never;
|
|
@@ -1125,12 +1124,12 @@ export interface paths {
|
|
|
1125
1124
|
cookie?: never;
|
|
1126
1125
|
};
|
|
1127
1126
|
/**
|
|
1128
|
-
* AI
|
|
1129
|
-
* @description
|
|
1130
|
-
*
|
|
1131
|
-
*
|
|
1127
|
+
* AI ledger
|
|
1128
|
+
* @description This is the source of truth for amounts (0046). `kind` is `call` (negative), `topup` (positive),
|
|
1129
|
+
* or `adjust`. The cursor is `ledger_id` — cutting by time would split two rows in the same
|
|
1130
|
+
* millisecond across a page boundary.
|
|
1132
1131
|
*
|
|
1133
|
-
* member
|
|
1132
|
+
* member or above.
|
|
1134
1133
|
*/
|
|
1135
1134
|
get: operations["listAILedger"];
|
|
1136
1135
|
put?: never;
|
|
@@ -1153,18 +1152,16 @@ export interface paths {
|
|
|
1153
1152
|
get?: never;
|
|
1154
1153
|
put?: never;
|
|
1155
1154
|
/**
|
|
1156
|
-
*
|
|
1157
|
-
* @description
|
|
1158
|
-
*
|
|
1159
|
-
*
|
|
1160
|
-
* **돌아온 브라우저는 증거가 아니다.** 잔액을 올리는 것은 `order.paid` 웹훅
|
|
1161
|
-
* 하나이고, 화면은 성공 사건 뒤에 잔액을 폴링한다.
|
|
1155
|
+
* Credit top-up checkout
|
|
1156
|
+
* @description Returns an embedded checkout URL (the same shape as docs/billing.md §3.1 — the dashboard opens it
|
|
1157
|
+
* in an iframe).
|
|
1162
1158
|
*
|
|
1163
|
-
*
|
|
1164
|
-
*
|
|
1165
|
-
* 자유롭게 두면 표가 둘이 된다.
|
|
1159
|
+
* **A browser coming back is not proof.** The one thing that raises the balance is the `order.paid`
|
|
1160
|
+
* webhook, and the screen polls the balance after the success event.
|
|
1166
1161
|
*
|
|
1167
|
-
*
|
|
1162
|
+
* `microCents` must be one of the listed tiers — auto top-up uses the same list (it charges with
|
|
1163
|
+
* nobody watching, so the amount has to be one of the enumerated values), and leaving manual top-up
|
|
1164
|
+
* free-form would create two tables.
|
|
1168
1165
|
*/
|
|
1169
1166
|
post: operations["createAICreditCheckout"];
|
|
1170
1167
|
delete?: never;
|
|
@@ -1184,19 +1181,19 @@ export interface paths {
|
|
|
1184
1181
|
};
|
|
1185
1182
|
get?: never;
|
|
1186
1183
|
/**
|
|
1187
|
-
*
|
|
1188
|
-
* @description
|
|
1189
|
-
*
|
|
1190
|
-
*
|
|
1191
|
-
*
|
|
1184
|
+
* Turns auto top-up on or off
|
|
1185
|
+
* @description **Turning it on is explicit consent** (docs/ai.md §3.5). The screen shows "when the balance falls
|
|
1186
|
+
* below X, we charge Y to the saved card, at most N times a day" verbatim and takes a checkbox — card
|
|
1187
|
+
* network rules require prior consent for off-session charges, and that sentence is the content of
|
|
1188
|
+
* the consent.
|
|
1192
1189
|
*
|
|
1193
|
-
*
|
|
1194
|
-
*
|
|
1195
|
-
*
|
|
1196
|
-
*
|
|
1197
|
-
*
|
|
1190
|
+
* The server checks three things: whether a payment method is saved (409 if not), whether the amount
|
|
1191
|
+
* is on the tier list, and whether the threshold is **greater than 0 and smaller than the top-up
|
|
1192
|
+
* amount**. A threshold of 0 makes the whole asynchronous top-up window return 402, and a threshold
|
|
1193
|
+
* at or above the top-up amount leaves the balance still below the threshold after a top-up, so it
|
|
1194
|
+
* keeps topping up to the daily cap — that is a trap, not a setting.
|
|
1198
1195
|
*
|
|
1199
|
-
* admin.
|
|
1196
|
+
* admin. Audited as `ai.autotopup.on` / `ai.autotopup.off`.
|
|
1200
1197
|
*/
|
|
1201
1198
|
put: operations["setAIAutoTopup"];
|
|
1202
1199
|
post?: never;
|
|
@@ -1228,7 +1225,7 @@ export interface paths {
|
|
|
1228
1225
|
put?: never;
|
|
1229
1226
|
/**
|
|
1230
1227
|
* Turns on email (a deployment calls this after reading `"email": true`)
|
|
1231
|
-
* @description **
|
|
1228
|
+
* @description **This is idempotent.** There is no request body — we determine the address
|
|
1232
1229
|
* (`<project>.<org>.<mail-domain>`), and the plan determines the limit. The address is
|
|
1233
1230
|
* fixed to the name at the time of grant.
|
|
1234
1231
|
*
|
|
@@ -1402,13 +1399,12 @@ export interface paths {
|
|
|
1402
1399
|
head?: never;
|
|
1403
1400
|
/**
|
|
1404
1401
|
* Change settings (`runlot auth set`)
|
|
1405
|
-
* @description **
|
|
1402
|
+
* @description **This is a partial update.** Only the fields you send change, and the rest stay as they are.
|
|
1406
1403
|
* If the UI sends all three brand settings every time a single switch changes, a later
|
|
1407
1404
|
* save can overwrite an earlier one when two users edit the same settings.
|
|
1408
1405
|
*
|
|
1409
|
-
* Returns 404 `not_granted` if
|
|
1410
|
-
* alone ahead of time, because the setting values are stored
|
|
1411
|
-
* setting record.
|
|
1406
|
+
* Returns 404 `not_granted` if auth has not been turned on for this project. You cannot save settings
|
|
1407
|
+
* alone ahead of time, because the setting values are stored in the record created when auth was turned on.
|
|
1412
1408
|
*
|
|
1413
1409
|
* `sessionDays` is a setting that also determines the size of the session table
|
|
1414
1410
|
* (docs/auth.md §13 — it stays within the 150 MB cap).
|
|
@@ -2353,7 +2349,7 @@ export interface paths {
|
|
|
2353
2349
|
get?: never;
|
|
2354
2350
|
put?: never;
|
|
2355
2351
|
/**
|
|
2356
|
-
* Renews
|
|
2352
|
+
* Renews a domain (`runlot domains renew`)
|
|
2357
2353
|
* @description Requires admin or higher. Audited as `domain.renew`.
|
|
2358
2354
|
*/
|
|
2359
2355
|
post: operations["renewDomain"];
|
|
@@ -2457,7 +2453,7 @@ export interface paths {
|
|
|
2457
2453
|
get?: never;
|
|
2458
2454
|
put?: never;
|
|
2459
2455
|
/**
|
|
2460
|
-
*
|
|
2456
|
+
* Re-reads this domain from the registrar now (`runlot domains sync`)
|
|
2461
2457
|
* @description Requires member or higher. The registrar is the source of truth for
|
|
2462
2458
|
* expiry date, lock, and NS. If the registrar responds that it is not in
|
|
2463
2459
|
* our account, that is `transferred_out` — the only signal that a transfer
|
|
@@ -3003,7 +2999,7 @@ export interface components {
|
|
|
3003
2999
|
};
|
|
3004
3000
|
/**
|
|
3005
3001
|
* @description Becomes a single label of the hostname, so it follows DNS rules. Since
|
|
3006
|
-
* the project name goes directly into `<name
|
|
3002
|
+
* the project name goes directly into `<name>.<org>.<app-domain>`, not enforcing this
|
|
3007
3003
|
* here would let you create a project that exists but is unreachable.
|
|
3008
3004
|
*/
|
|
3009
3005
|
Slug: string;
|
|
@@ -3059,6 +3055,14 @@ export interface components {
|
|
|
3059
3055
|
* (the 409 `project_limit` from `createProject`).
|
|
3060
3056
|
*/
|
|
3061
3057
|
projectLimit: number;
|
|
3058
|
+
/**
|
|
3059
|
+
* Format: int64
|
|
3060
|
+
* @description The project database size cap for this plan (Free 500 MiB, Pro 8 GiB). The
|
|
3061
|
+
* same derived-value reasoning as `projectLimit`: the dashboard's usage meter and
|
|
3062
|
+
* the CLI's limit line read it from here instead of carrying their own table.
|
|
3063
|
+
* Nothing rejects a write at the cap; see `/docs/data/database/size-cap`.
|
|
3064
|
+
*/
|
|
3065
|
+
dbCapBytes: number;
|
|
3062
3066
|
};
|
|
3063
3067
|
Notification: {
|
|
3064
3068
|
/** Format: int64 */
|
|
@@ -3271,7 +3275,7 @@ export interface components {
|
|
|
3271
3275
|
user: string;
|
|
3272
3276
|
password: string;
|
|
3273
3277
|
/**
|
|
3274
|
-
* @description **
|
|
3278
|
+
* @description **Connections with sslmode=disable are rejected.** front cuts off the SSLRequest at the
|
|
3275
3279
|
* rejection stage, so `disable` never connects in the first place.
|
|
3276
3280
|
* @enum {string}
|
|
3277
3281
|
*/
|
|
@@ -3363,16 +3367,33 @@ export interface components {
|
|
|
3363
3367
|
*/
|
|
3364
3368
|
seq: number;
|
|
3365
3369
|
/**
|
|
3366
|
-
* @description Offsite key (`gen/<project>/<epoch>/<stamp>-<seq>.
|
|
3367
|
-
* @example gen/2f1c…/7/20260902T031500Z-0003.
|
|
3370
|
+
* @description Offsite key (`gen/<project>/<epoch>/<stamp>-<seq>.pages`)
|
|
3371
|
+
* @example gen/2f1c…/7/20260902T031500Z-0003.pages
|
|
3368
3372
|
*/
|
|
3369
3373
|
key: string;
|
|
3370
3374
|
/**
|
|
3371
3375
|
* Format: int64
|
|
3372
3376
|
* @description The size of the **object stored offsite**. An encrypted generation is larger than
|
|
3373
|
-
* the plaintext
|
|
3377
|
+
* the plaintext. For a delta this is the size of the changed pages only — see
|
|
3378
|
+
* `imageBytes` for the size of the database a restore produces.
|
|
3374
3379
|
*/
|
|
3375
3380
|
bytes: number;
|
|
3381
|
+
/**
|
|
3382
|
+
* @description `true` when this object alone restores the database; `false` for a delta, which is
|
|
3383
|
+
* applied on top of the chain that ends at `prevTxnId`. Restoring a delta pours its whole
|
|
3384
|
+
* chain (full first); the chain is resolved by the server and never crosses an epoch.
|
|
3385
|
+
*/
|
|
3386
|
+
full: boolean;
|
|
3387
|
+
/**
|
|
3388
|
+
* Format: int64
|
|
3389
|
+
* @description For a delta, the commit of the generation it links to. 0 for a full.
|
|
3390
|
+
*/
|
|
3391
|
+
prevTxnId?: number;
|
|
3392
|
+
/**
|
|
3393
|
+
* Format: int64
|
|
3394
|
+
* @description The size of the database a restore of this generation produces.
|
|
3395
|
+
*/
|
|
3396
|
+
imageBytes: number;
|
|
3376
3397
|
sha256: string;
|
|
3377
3398
|
/**
|
|
3378
3399
|
* Format: int64
|
|
@@ -3771,65 +3792,65 @@ export interface components {
|
|
|
3771
3792
|
*/
|
|
3772
3793
|
mailIn: number;
|
|
3773
3794
|
};
|
|
3774
|
-
/** @description
|
|
3795
|
+
/** @description One row of the catalog (docs/ai.md §2.3). */
|
|
3775
3796
|
AIModel: {
|
|
3776
|
-
/** @description `env.ai.run()
|
|
3797
|
+
/** @description The string you write in `env.ai.run()`. Frontier models are `<provider>/<model>`, value models are `@runlot/<model>` */
|
|
3777
3798
|
id: string;
|
|
3778
3799
|
/** @enum {string} */
|
|
3779
3800
|
lane: "frontier" | "value";
|
|
3780
3801
|
display: string;
|
|
3781
|
-
/** @description
|
|
3802
|
+
/** @description who built the model (Anthropic, Google, Meta, and so on) */
|
|
3782
3803
|
vendor: string;
|
|
3783
3804
|
/**
|
|
3784
|
-
* @description
|
|
3785
|
-
*
|
|
3805
|
+
* @description The provider we call. **Included for frontier models only** — for value models this is something we
|
|
3806
|
+
* swap, so it is not part of the contract.
|
|
3786
3807
|
*/
|
|
3787
3808
|
provider?: string;
|
|
3788
|
-
/** @description
|
|
3809
|
+
/** @description the model's own context window */
|
|
3789
3810
|
contextTokens: number;
|
|
3790
3811
|
/**
|
|
3791
|
-
* @description runlot
|
|
3792
|
-
* GPT-5.6 Terra
|
|
3793
|
-
*
|
|
3812
|
+
* @description The input limit runlot allows for this model. It is the same as contextTokens for most models;
|
|
3813
|
+
* GPT-5.6 Terra is 272,000 — past that point the whole request switches to long-context pricing, so a
|
|
3814
|
+
* catalog that advertises a single standard price cuts it off there.
|
|
3794
3815
|
*/
|
|
3795
3816
|
maxInputTokens: number;
|
|
3796
3817
|
maxOutputTokens: number;
|
|
3797
3818
|
/**
|
|
3798
3819
|
* Format: int64
|
|
3799
|
-
* @description
|
|
3820
|
+
* @description microcents per million input tokens
|
|
3800
3821
|
*/
|
|
3801
3822
|
inPerMTok: number;
|
|
3802
3823
|
/** Format: int64 */
|
|
3803
3824
|
outPerMTok: number;
|
|
3804
3825
|
/**
|
|
3805
3826
|
* Format: int64
|
|
3806
|
-
* @description
|
|
3827
|
+
* @description The price of cached input. Absent means the model has no cache discount and cached tokens are billed at the full input price
|
|
3807
3828
|
*/
|
|
3808
3829
|
cachedInPerMTok?: number;
|
|
3809
3830
|
/**
|
|
3810
|
-
* @description
|
|
3811
|
-
*
|
|
3831
|
+
* @description When true, this is the provider's **list price** passed straight through (zero margin). Saying so
|
|
3832
|
+
* on screen is one of this product's promises — if it goes unsaid, users assume a markup.
|
|
3812
3833
|
*/
|
|
3813
3834
|
listPrice: boolean;
|
|
3814
3835
|
};
|
|
3815
3836
|
AIStatus: {
|
|
3816
3837
|
granted: boolean;
|
|
3817
|
-
/** @description
|
|
3838
|
+
/** @description calls per minute, per project */
|
|
3818
3839
|
perMinute: number;
|
|
3819
|
-
/** @description
|
|
3840
|
+
/** @description concurrent calls, per project */
|
|
3820
3841
|
concurrent: number;
|
|
3821
|
-
/** @description 0
|
|
3842
|
+
/** @description 0 means the model decides */
|
|
3822
3843
|
maxOutputTokens?: number;
|
|
3823
|
-
/** @description 0
|
|
3844
|
+
/** @description 0 means the model decides */
|
|
3824
3845
|
maxInputTokens?: number;
|
|
3825
3846
|
/**
|
|
3826
3847
|
* Format: int64
|
|
3827
|
-
* @description org
|
|
3848
|
+
* @description the org balance (can be negative)
|
|
3828
3849
|
*/
|
|
3829
3850
|
creditMicroCents: number;
|
|
3830
3851
|
/**
|
|
3831
3852
|
* Format: int64
|
|
3832
|
-
* @description
|
|
3853
|
+
* @description the daily allowance, for value models only
|
|
3833
3854
|
*/
|
|
3834
3855
|
freeDailyMicroCents?: number;
|
|
3835
3856
|
/** Format: int64 */
|
|
@@ -3840,7 +3861,7 @@ export interface components {
|
|
|
3840
3861
|
tokensOut24h?: number;
|
|
3841
3862
|
/**
|
|
3842
3863
|
* Format: int64
|
|
3843
|
-
* @description
|
|
3864
|
+
* @description The sum of the last 24 hours of the ledger (positive = amount spent). This number cannot be built from usage_hourly
|
|
3844
3865
|
*/
|
|
3845
3866
|
spentMicroCents24h?: number;
|
|
3846
3867
|
};
|
|
@@ -3851,25 +3872,25 @@ export interface components {
|
|
|
3851
3872
|
microCents: number;
|
|
3852
3873
|
};
|
|
3853
3874
|
AICredit: {
|
|
3854
|
-
/** @description
|
|
3875
|
+
/** @description false means this installation has no credit product — the top-up endpoints return 501 */
|
|
3855
3876
|
enabled: boolean;
|
|
3856
3877
|
sandbox: boolean;
|
|
3857
3878
|
/**
|
|
3858
3879
|
* Format: int64
|
|
3859
|
-
* @description
|
|
3880
|
+
* @description the balance (can be negative)
|
|
3860
3881
|
*/
|
|
3861
3882
|
microCents: number;
|
|
3862
3883
|
/** Format: int64 */
|
|
3863
3884
|
lowMicroCents?: number;
|
|
3864
3885
|
/** Format: int64 */
|
|
3865
3886
|
freeDailyMicroCents?: number;
|
|
3866
|
-
/** @description
|
|
3887
|
+
/** @description A top-up tier. Auto top-up uses the **same list** */
|
|
3867
3888
|
tiers: number[];
|
|
3868
|
-
/** @description
|
|
3889
|
+
/** @description When false, auto top-up cannot be turned on — the first top-up is what saves the card */
|
|
3869
3890
|
hasPaymentMethod: boolean;
|
|
3870
3891
|
autoTopup?: components["schemas"]["AIAutoTopup"];
|
|
3871
3892
|
autoTopupsToday: number;
|
|
3872
|
-
/** @description
|
|
3893
|
+
/** @description this number is the daily spending ceiling */
|
|
3873
3894
|
autoTopupPerDay: number;
|
|
3874
3895
|
};
|
|
3875
3896
|
AILedgerRow: {
|
|
@@ -3883,7 +3904,7 @@ export interface components {
|
|
|
3883
3904
|
tokensOut?: number;
|
|
3884
3905
|
/**
|
|
3885
3906
|
* Format: int64
|
|
3886
|
-
* @description `call`
|
|
3907
|
+
* @description `call` rows are negative
|
|
3887
3908
|
*/
|
|
3888
3909
|
microCents: number;
|
|
3889
3910
|
/** Format: date-time */
|
|
@@ -3925,7 +3946,7 @@ export interface components {
|
|
|
3925
3946
|
* @description number received in the last 24 hours
|
|
3926
3947
|
*/
|
|
3927
3948
|
received24h: number;
|
|
3928
|
-
/** @description The mail domain suffix for this
|
|
3949
|
+
/** @description The mail domain suffix for this installation. Email cannot be enabled if it is empty. */
|
|
3929
3950
|
mailDomain: string;
|
|
3930
3951
|
};
|
|
3931
3952
|
/** @description One line of the email log (docs/email.md §6.1). */
|
|
@@ -3990,6 +4011,13 @@ export interface components {
|
|
|
3990
4011
|
projects: number;
|
|
3991
4012
|
/** Format: int64 */
|
|
3992
4013
|
storageBytes: number;
|
|
4014
|
+
/**
|
|
4015
|
+
* Format: int64
|
|
4016
|
+
* @description The project Postgres size cap for this plan (Free 500 MiB, Pro 8 GiB). The
|
|
4017
|
+
* dashboard's usage meter and chart read this value; nothing enforces it — the 90 %
|
|
4018
|
+
* notification is the only consumer on the server.
|
|
4019
|
+
*/
|
|
4020
|
+
dbCapBytes: number;
|
|
3993
4021
|
/** @description number of retained generations (= time) */
|
|
3994
4022
|
backupKeep: number;
|
|
3995
4023
|
crons: number;
|
|
@@ -4003,7 +4031,7 @@ export interface components {
|
|
|
4003
4031
|
*/
|
|
4004
4032
|
StorageStatus: {
|
|
4005
4033
|
/**
|
|
4006
|
-
* @description Indicates whether storage
|
|
4034
|
+
* @description Indicates whether storage has been turned on for this project. Since the existence of that
|
|
4007
4035
|
* record is the only representation of this (migration 0022), there is no state of
|
|
4008
4036
|
* "provisioned but turned off".
|
|
4009
4037
|
*/
|
|
@@ -4162,7 +4190,7 @@ export interface components {
|
|
|
4162
4190
|
AuthStatus: {
|
|
4163
4191
|
/**
|
|
4164
4192
|
* @description Indicates whether auth is configured for use. Since the existence of a
|
|
4165
|
-
*
|
|
4193
|
+
* record created when auth was turned on is the only representation, there is no "configured but
|
|
4166
4194
|
* disabled" state. When disabled, `settings` holds default values and `providers` is
|
|
4167
4195
|
* an empty array.
|
|
4168
4196
|
*/
|
|
@@ -4181,11 +4209,8 @@ export interface components {
|
|
|
4181
4209
|
* login fails
|
|
4182
4210
|
* on that host alone, and the reason is visible only in the provider's console.
|
|
4183
4211
|
*
|
|
4184
|
-
*
|
|
4185
|
-
*
|
|
4186
|
-
* name `<project>--<org>.<domain>`. A deploy registers both, so links already in the
|
|
4187
|
-
* wild keep
|
|
4188
|
-
* working, which is why both callback URLs are needed.
|
|
4212
|
+
* The default hostname is `<project>.<org>.<domain>`. Register a callback URL for every host in
|
|
4213
|
+
* this list — the list is exactly the set of hosts this project answers on.
|
|
4189
4214
|
* @example [
|
|
4190
4215
|
* "app.acme.runlot.app",
|
|
4191
4216
|
* "app--acme.runlot.app",
|
|
@@ -4243,7 +4268,7 @@ export interface components {
|
|
|
4243
4268
|
*/
|
|
4244
4269
|
hostname: string;
|
|
4245
4270
|
/**
|
|
4246
|
-
* @description `default` is the default name
|
|
4271
|
+
* @description `default` is the default name `<project>.<org>.<app-domain>`. `custom` is a customer domain
|
|
4247
4272
|
* @enum {string}
|
|
4248
4273
|
*/
|
|
4249
4274
|
kind: "default" | "custom";
|
|
@@ -5488,7 +5513,7 @@ export interface operations {
|
|
|
5488
5513
|
"application/json": components["schemas"]["Error"];
|
|
5489
5514
|
};
|
|
5490
5515
|
};
|
|
5491
|
-
/** @description Not in a state that can be restored (for example, no
|
|
5516
|
+
/** @description Not in a state that can be restored (for example, no node available for placement) */
|
|
5492
5517
|
503: {
|
|
5493
5518
|
headers: {
|
|
5494
5519
|
[name: string]: unknown;
|
|
@@ -5923,7 +5948,7 @@ export interface operations {
|
|
|
5923
5948
|
};
|
|
5924
5949
|
requestBody?: never;
|
|
5925
5950
|
responses: {
|
|
5926
|
-
/** @description
|
|
5951
|
+
/** @description Catalog */
|
|
5927
5952
|
200: {
|
|
5928
5953
|
headers: {
|
|
5929
5954
|
[name: string]: unknown;
|
|
@@ -5933,12 +5958,12 @@ export interface operations {
|
|
|
5933
5958
|
models: components["schemas"]["AIModel"][];
|
|
5934
5959
|
/**
|
|
5935
5960
|
* Format: int64
|
|
5936
|
-
* @description org
|
|
5961
|
+
* @description The per-org daily free allowance (microcents). It applies to **value-lane models only**
|
|
5937
5962
|
*/
|
|
5938
5963
|
freeDailyMicroCents: number;
|
|
5939
5964
|
/**
|
|
5940
5965
|
* Format: int64
|
|
5941
|
-
* @description "
|
|
5966
|
+
* @description The "balance is low" threshold — if the UI hardcoded it, there would be two tables to keep in sync
|
|
5942
5967
|
*/
|
|
5943
5968
|
lowMicroCents: number;
|
|
5944
5969
|
};
|
|
@@ -5959,7 +5984,7 @@ export interface operations {
|
|
|
5959
5984
|
};
|
|
5960
5985
|
requestBody?: never;
|
|
5961
5986
|
responses: {
|
|
5962
|
-
/** @description AI
|
|
5987
|
+
/** @description AI status */
|
|
5963
5988
|
200: {
|
|
5964
5989
|
headers: {
|
|
5965
5990
|
[name: string]: unknown;
|
|
@@ -5993,7 +6018,7 @@ export interface operations {
|
|
|
5993
6018
|
};
|
|
5994
6019
|
requestBody?: never;
|
|
5995
6020
|
responses: {
|
|
5996
|
-
/** @description
|
|
6021
|
+
/** @description Status after turning it on (the existing value if it was already on) */
|
|
5997
6022
|
200: {
|
|
5998
6023
|
headers: {
|
|
5999
6024
|
[name: string]: unknown;
|
|
@@ -6027,7 +6052,7 @@ export interface operations {
|
|
|
6027
6052
|
};
|
|
6028
6053
|
requestBody?: never;
|
|
6029
6054
|
responses: {
|
|
6030
|
-
/** @description
|
|
6055
|
+
/** @description turned off */
|
|
6031
6056
|
204: {
|
|
6032
6057
|
headers: {
|
|
6033
6058
|
[name: string]: unknown;
|
|
@@ -6058,7 +6083,7 @@ export interface operations {
|
|
|
6058
6083
|
};
|
|
6059
6084
|
requestBody?: never;
|
|
6060
6085
|
responses: {
|
|
6061
|
-
/** @description
|
|
6086
|
+
/** @description Credit status */
|
|
6062
6087
|
200: {
|
|
6063
6088
|
headers: {
|
|
6064
6089
|
[name: string]: unknown;
|
|
@@ -6074,7 +6099,7 @@ export interface operations {
|
|
|
6074
6099
|
parameters: {
|
|
6075
6100
|
query?: {
|
|
6076
6101
|
limit?: number;
|
|
6077
|
-
/** @description
|
|
6102
|
+
/** @description rows before this ledger_id */
|
|
6078
6103
|
before?: number;
|
|
6079
6104
|
};
|
|
6080
6105
|
header?: never;
|
|
@@ -6085,7 +6110,7 @@ export interface operations {
|
|
|
6085
6110
|
};
|
|
6086
6111
|
requestBody?: never;
|
|
6087
6112
|
responses: {
|
|
6088
|
-
/** @description
|
|
6113
|
+
/** @description Ledger */
|
|
6089
6114
|
200: {
|
|
6090
6115
|
headers: {
|
|
6091
6116
|
[name: string]: unknown;
|
|
@@ -6120,7 +6145,7 @@ export interface operations {
|
|
|
6120
6145
|
};
|
|
6121
6146
|
};
|
|
6122
6147
|
responses: {
|
|
6123
|
-
/** @description
|
|
6148
|
+
/** @description Checkout */
|
|
6124
6149
|
200: {
|
|
6125
6150
|
headers: {
|
|
6126
6151
|
[name: string]: unknown;
|
|
@@ -6132,7 +6157,7 @@ export interface operations {
|
|
|
6132
6157
|
};
|
|
6133
6158
|
};
|
|
6134
6159
|
};
|
|
6135
|
-
/** @description
|
|
6160
|
+
/** @description The top-up amount is not one of the offered tiers, or `returnTo` is not an allowed address */
|
|
6136
6161
|
400: {
|
|
6137
6162
|
headers: {
|
|
6138
6163
|
[name: string]: unknown;
|
|
@@ -6142,7 +6167,7 @@ export interface operations {
|
|
|
6142
6167
|
};
|
|
6143
6168
|
};
|
|
6144
6169
|
403: components["responses"]["Forbidden"];
|
|
6145
|
-
/** @description `billing_off` —
|
|
6170
|
+
/** @description `billing_off` — this installation has no credit product configured */
|
|
6146
6171
|
501: {
|
|
6147
6172
|
headers: {
|
|
6148
6173
|
[name: string]: unknown;
|
|
@@ -6174,7 +6199,7 @@ export interface operations {
|
|
|
6174
6199
|
};
|
|
6175
6200
|
};
|
|
6176
6201
|
responses: {
|
|
6177
|
-
/** @description
|
|
6202
|
+
/** @description Turned on */
|
|
6178
6203
|
200: {
|
|
6179
6204
|
headers: {
|
|
6180
6205
|
[name: string]: unknown;
|
|
@@ -6185,14 +6210,14 @@ export interface operations {
|
|
|
6185
6210
|
};
|
|
6186
6211
|
};
|
|
6187
6212
|
};
|
|
6188
|
-
/** @description
|
|
6213
|
+
/** @description turned off */
|
|
6189
6214
|
204: {
|
|
6190
6215
|
headers: {
|
|
6191
6216
|
[name: string]: unknown;
|
|
6192
6217
|
};
|
|
6193
6218
|
content?: never;
|
|
6194
6219
|
};
|
|
6195
|
-
/** @description
|
|
6220
|
+
/** @description The amount is not on the tier list, the threshold is 0 or less, or the threshold is at or above the top-up amount */
|
|
6196
6221
|
400: {
|
|
6197
6222
|
headers: {
|
|
6198
6223
|
[name: string]: unknown;
|
|
@@ -6202,7 +6227,7 @@ export interface operations {
|
|
|
6202
6227
|
};
|
|
6203
6228
|
};
|
|
6204
6229
|
403: components["responses"]["Forbidden"];
|
|
6205
|
-
/** @description `no_payment_method` —
|
|
6230
|
+
/** @description `no_payment_method` — there is no saved card. Top up manually once first */
|
|
6206
6231
|
409: {
|
|
6207
6232
|
headers: {
|
|
6208
6233
|
[name: string]: unknown;
|