@runlot/api 0.1.0-rc.145 → 0.1.0-rc.147
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/index.d.ts +150 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -2
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +549 -42
- package/dist/schema.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/schema.d.ts
CHANGED
|
@@ -212,6 +212,106 @@ export interface paths {
|
|
|
212
212
|
patch?: never;
|
|
213
213
|
trace?: never;
|
|
214
214
|
};
|
|
215
|
+
"/v1/app-auth/start/{id}": {
|
|
216
|
+
parameters: {
|
|
217
|
+
query?: never;
|
|
218
|
+
header?: never;
|
|
219
|
+
path?: never;
|
|
220
|
+
cookie?: never;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Managed app sign-in: start leg
|
|
224
|
+
* @description The sign-in broker for apps using a managed provider. The app's own
|
|
225
|
+
* `/__runlot/auth/sign-in/<provider>` sends the browser here; `id` was minted
|
|
226
|
+
* for one project, provider and attached host and lives ten minutes. Sends a 302
|
|
227
|
+
* to the provider with identity-only scopes (GitHub `read:user user:email`,
|
|
228
|
+
* Google `openid email profile` with PKCE).
|
|
229
|
+
*/
|
|
230
|
+
get: operations["appAuthStart"];
|
|
231
|
+
put?: never;
|
|
232
|
+
post?: never;
|
|
233
|
+
delete?: never;
|
|
234
|
+
options?: never;
|
|
235
|
+
head?: never;
|
|
236
|
+
patch?: never;
|
|
237
|
+
trace?: never;
|
|
238
|
+
};
|
|
239
|
+
"/v1/app-auth/choose/{id}": {
|
|
240
|
+
parameters: {
|
|
241
|
+
query?: never;
|
|
242
|
+
header?: never;
|
|
243
|
+
path?: never;
|
|
244
|
+
cookie?: never;
|
|
245
|
+
};
|
|
246
|
+
/**
|
|
247
|
+
* Runlot sign-in: chooser page
|
|
248
|
+
* @description For the `runlot` provider the start leg sends the browser here instead of straight
|
|
249
|
+
* to an upstream. An HTML page, branded Runlot and naming the app, offering email and
|
|
250
|
+
* password, Google and GitHub. Google and GitHub continue through the
|
|
251
|
+
* `/v1/auth/{provider}/callback/app` legs; the grant always carries
|
|
252
|
+
* `provider = runlot` and a pairwise subject.
|
|
253
|
+
*/
|
|
254
|
+
get: operations["appAuthChoose"];
|
|
255
|
+
put?: never;
|
|
256
|
+
post?: never;
|
|
257
|
+
delete?: never;
|
|
258
|
+
options?: never;
|
|
259
|
+
head?: never;
|
|
260
|
+
patch?: never;
|
|
261
|
+
trace?: never;
|
|
262
|
+
};
|
|
263
|
+
"/v1/app-auth/choose/{id}/password": {
|
|
264
|
+
parameters: {
|
|
265
|
+
query?: never;
|
|
266
|
+
header?: never;
|
|
267
|
+
path?: never;
|
|
268
|
+
cookie?: never;
|
|
269
|
+
};
|
|
270
|
+
get?: never;
|
|
271
|
+
put?: never;
|
|
272
|
+
/**
|
|
273
|
+
* Runlot sign-in: email and password
|
|
274
|
+
* @description The chooser's email-and-password form. `sign-up` creates an end-user Runlot account
|
|
275
|
+
* with no organization. On success, a 302 to the app host's
|
|
276
|
+
* `/__runlot/auth/callback/managed?code=<grant>`; a refusal re-renders the chooser
|
|
277
|
+
* with the error.
|
|
278
|
+
*/
|
|
279
|
+
post: operations["appAuthChoosePassword"];
|
|
280
|
+
delete?: never;
|
|
281
|
+
options?: never;
|
|
282
|
+
head?: never;
|
|
283
|
+
patch?: never;
|
|
284
|
+
trace?: never;
|
|
285
|
+
};
|
|
286
|
+
"/v1/auth/{provider}/callback/app": {
|
|
287
|
+
parameters: {
|
|
288
|
+
query?: never;
|
|
289
|
+
header?: never;
|
|
290
|
+
path?: never;
|
|
291
|
+
cookie?: never;
|
|
292
|
+
};
|
|
293
|
+
/**
|
|
294
|
+
* Managed app sign-in: provider callback
|
|
295
|
+
* @description The provider returns here. The broker exchanges the code, reads the profile and
|
|
296
|
+
* verified email, and sends a 302 to
|
|
297
|
+
* `https://<app host>/__runlot/auth/callback/managed?code=<grant>` with a
|
|
298
|
+
* single-use grant valid five minutes. A denial or cancel goes to
|
|
299
|
+
* `/__runlot/auth/sign-in?error=provider_denied` on the app host. No provider
|
|
300
|
+
* token ever leaves the broker.
|
|
301
|
+
*
|
|
302
|
+
* Register `<public origin>/v1/auth/google/callback/app` on the Google OAuth
|
|
303
|
+
* client. GitHub accepts it as a subpath of the app's registered
|
|
304
|
+
* `<public origin>/v1/auth/github/callback`.
|
|
305
|
+
*/
|
|
306
|
+
get: operations["appAuthCallback"];
|
|
307
|
+
put?: never;
|
|
308
|
+
post?: never;
|
|
309
|
+
delete?: never;
|
|
310
|
+
options?: never;
|
|
311
|
+
head?: never;
|
|
312
|
+
patch?: never;
|
|
313
|
+
trace?: never;
|
|
314
|
+
};
|
|
215
315
|
"/v1/auth/google/start": {
|
|
216
316
|
parameters: {
|
|
217
317
|
query?: never;
|
|
@@ -2671,11 +2771,41 @@ export interface paths {
|
|
|
2671
2771
|
*
|
|
2672
2772
|
* `sessionDays` also sets how long an end user's session is kept.
|
|
2673
2773
|
*
|
|
2774
|
+
* `password` and `magicLink` turn the email-and-password and email-link methods on or
|
|
2775
|
+
* off. A change that would leave no sign-in method enabled is refused with 409
|
|
2776
|
+
* `last_method`; turn login off instead.
|
|
2777
|
+
*
|
|
2674
2778
|
* Requires member or higher. Audited as `auth.settings`.
|
|
2675
2779
|
*/
|
|
2676
2780
|
patch: operations["updateAuthSettings"];
|
|
2677
2781
|
trace?: never;
|
|
2678
2782
|
};
|
|
2783
|
+
"/v1/orgs/{orgSlug}/projects/{projectName}/auth/schema": {
|
|
2784
|
+
parameters: {
|
|
2785
|
+
query?: never;
|
|
2786
|
+
header?: never;
|
|
2787
|
+
path: {
|
|
2788
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
2789
|
+
projectName: components["parameters"]["ProjectName"];
|
|
2790
|
+
};
|
|
2791
|
+
cookie?: never;
|
|
2792
|
+
};
|
|
2793
|
+
/**
|
|
2794
|
+
* The `runlot_auth` schema DDL
|
|
2795
|
+
* @description The statements that install the `runlot_auth` schema, the same ones the auth
|
|
2796
|
+
* system installs on first use. The CLI applies them before a project's own
|
|
2797
|
+
* migrations so a migration can reference `runlot_auth.users(id)`. Every statement
|
|
2798
|
+
* is idempotent; run them in order as one script. Viewer or higher.
|
|
2799
|
+
*/
|
|
2800
|
+
get: operations["getAuthSchema"];
|
|
2801
|
+
put?: never;
|
|
2802
|
+
post?: never;
|
|
2803
|
+
delete?: never;
|
|
2804
|
+
options?: never;
|
|
2805
|
+
head?: never;
|
|
2806
|
+
patch?: never;
|
|
2807
|
+
trace?: never;
|
|
2808
|
+
};
|
|
2679
2809
|
"/v1/orgs/{orgSlug}/projects/{projectName}/auth/providers/{provider}": {
|
|
2680
2810
|
parameters: {
|
|
2681
2811
|
query?: never;
|
|
@@ -2684,8 +2814,9 @@ export interface paths {
|
|
|
2684
2814
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2685
2815
|
projectName: components["parameters"]["ProjectName"];
|
|
2686
2816
|
/**
|
|
2687
|
-
* @description A
|
|
2688
|
-
*
|
|
2817
|
+
* @description A login provider id. `github`, `google` and `runlot` are the built-in names; any
|
|
2818
|
+
* other id names one of the project's OIDC providers. The id is also the last segment
|
|
2819
|
+
* of the provider's callback URL.
|
|
2689
2820
|
*/
|
|
2690
2821
|
provider: components["parameters"]["AuthProviderName"];
|
|
2691
2822
|
};
|
|
@@ -2694,8 +2825,11 @@ export interface paths {
|
|
|
2694
2825
|
get?: never;
|
|
2695
2826
|
/**
|
|
2696
2827
|
* Register or replace a social provider (`runlot auth provider set`)
|
|
2697
|
-
* @description
|
|
2698
|
-
*
|
|
2828
|
+
* @description Three kinds (see `AuthProviderPut`). **builtin** registers your project's own
|
|
2829
|
+
* GitHub or Google OAuth app. **oidc** registers any OpenID Connect provider under a
|
|
2830
|
+
* project-chosen id; the CP reads its discovery document when saving. **runlot**
|
|
2831
|
+
* (id `runlot`) turns on "Continue with Runlot": email, Google and GitHub at Runlot,
|
|
2832
|
+
* through the sign-in broker, with nothing to register.
|
|
2699
2833
|
*
|
|
2700
2834
|
* The callback URL to register with the provider is per host:
|
|
2701
2835
|
* `https://<host>/__runlot/auth/callback/<provider>`. The host list is in
|
|
@@ -2815,7 +2949,9 @@ export interface paths {
|
|
|
2815
2949
|
* Changes the policy (`runlot access set`)
|
|
2816
2950
|
* @description `public` leaves the deployment open to anyone, `org` requires member or higher in the
|
|
2817
2951
|
* org the project belongs to, and `password` uses **one** shared password for the whole
|
|
2818
|
-
* project.
|
|
2952
|
+
* project. `app` admits only requests that carry a valid `env.auth` session for this
|
|
2953
|
+
* project; a browser without one is sent to the app's sign-in page and anything else
|
|
2954
|
+
* gets 401 `sign_in_required`. It requires login to be on for the project.
|
|
2819
2955
|
*
|
|
2820
2956
|
* **If you don't send a password, the existing one stays.** Send a new value to replace
|
|
2821
2957
|
* it.
|
|
@@ -6044,6 +6180,61 @@ export interface components {
|
|
|
6044
6180
|
* ]
|
|
6045
6181
|
*/
|
|
6046
6182
|
trustedCertificates?: string[];
|
|
6183
|
+
/**
|
|
6184
|
+
* @description Path rules that **narrow** the project's access policy (`runlot access`) for this
|
|
6185
|
+
* deployment. Each request is checked against every rule whose `path` matches it,
|
|
6186
|
+
* and every matching rule must hold; a refused request gets
|
|
6187
|
+
* `403 access_rule_denied`.
|
|
6188
|
+
*
|
|
6189
|
+
* The rules only apply while the policy is `org` or `password`. On a `public`
|
|
6190
|
+
* project they are ignored (the deploy warns), because there is no identity to
|
|
6191
|
+
* test. A visitor admitted by the shared password or the automation bypass secret
|
|
6192
|
+
* satisfies only a rule with an empty `require`.
|
|
6193
|
+
*
|
|
6194
|
+
* The rules move with the deployment: rolling back restores the old list.
|
|
6195
|
+
* @example [
|
|
6196
|
+
* {
|
|
6197
|
+
* "path": "/admin/*",
|
|
6198
|
+
* "require": {
|
|
6199
|
+
* "orgRole": "admin"
|
|
6200
|
+
* }
|
|
6201
|
+
* },
|
|
6202
|
+
* {
|
|
6203
|
+
* "path": "/staff",
|
|
6204
|
+
* "require": {
|
|
6205
|
+
* "emailDomain": "example.com"
|
|
6206
|
+
* }
|
|
6207
|
+
* }
|
|
6208
|
+
* ]
|
|
6209
|
+
*/
|
|
6210
|
+
access?: components["schemas"]["ManifestAccessRule"][];
|
|
6211
|
+
};
|
|
6212
|
+
/** @description One manifest path rule (`access[]`). */
|
|
6213
|
+
ManifestAccessRule: {
|
|
6214
|
+
/**
|
|
6215
|
+
* @description An absolute path. An exact path, or a prefix ending in `/*`, which also covers the
|
|
6216
|
+
* prefix itself (`/admin/*` covers `/admin` and `/admin/x`). `*` is accepted nowhere
|
|
6217
|
+
* else. Matching is case-insensitive on the cleaned request path.
|
|
6218
|
+
* @example /admin/*
|
|
6219
|
+
*/
|
|
6220
|
+
path: string;
|
|
6221
|
+
/**
|
|
6222
|
+
* @description What the visitor must satisfy. Every field that is set must hold; `{}` admits
|
|
6223
|
+
* anyone the project policy already admitted.
|
|
6224
|
+
*/
|
|
6225
|
+
require: {
|
|
6226
|
+
/**
|
|
6227
|
+
* @description The minimum org role: viewer < member < admin.
|
|
6228
|
+
* @enum {string}
|
|
6229
|
+
*/
|
|
6230
|
+
orgRole?: "viewer" | "member" | "admin";
|
|
6231
|
+
/**
|
|
6232
|
+
* @description The visitor's email must be at one of these domains. One string or a list;
|
|
6233
|
+
* a leading `@` is ignored.
|
|
6234
|
+
* @example example.com
|
|
6235
|
+
*/
|
|
6236
|
+
emailDomain?: string | string[];
|
|
6237
|
+
};
|
|
6047
6238
|
};
|
|
6048
6239
|
/**
|
|
6049
6240
|
* @description Scheduled execution. It ships in the bundle exactly as you wrote it in
|
|
@@ -6587,6 +6778,10 @@ export interface components {
|
|
|
6587
6778
|
dimensionOptions?: number[];
|
|
6588
6779
|
/** @description Embedding models only: every value `env.ai.embed(model, input, { taskType })` may carry. A task type tells the model what the vectors are for, and the same text embedded under two of them is a different vector — so a namespace has to be filled under one choice and queried under the same one. Absent when the model has no such notion (Titan has none). Leaving `taskType` out sends the model's own default, which is what every vector stored before this option existed was embedded under. */
|
|
6589
6780
|
taskTypes?: string[];
|
|
6781
|
+
/** @description Chat models only: every value `env.ai.run(model, { reasoning: { effort } })` may carry. Absent when the model has no reasoning-effort control (`@runlot/…` have none), in which case asking for one is `400 bad_effort` rather than a silently ignored field. The vocabularies differ by family — the OpenAI rows include `none`, the Claude rows do not, and Gemini has only `low`/`medium`/`high`. Leaving `reasoning` out sends the model's own default. */
|
|
6782
|
+
effortLevels?: string[];
|
|
6783
|
+
/** @description Chat models only, present when true: `env.ai.run(model, { responseFormat })` is honoured on this model. False or absent means asking for a response format is `400 format_unsupported` rather than prose wearing the caller's schema. Read off each model card, so it is a per-row fact and not a family rule — Claude Haiku 4.5 has it and Claude Sonnet 5 does not, on the same endpoint. */
|
|
6784
|
+
structuredOutput?: boolean;
|
|
6590
6785
|
/** @enum {string} */
|
|
6591
6786
|
lane: "frontier" | "value";
|
|
6592
6787
|
display: string;
|
|
@@ -6762,7 +6957,7 @@ export interface components {
|
|
|
6762
6957
|
/** @description Lowercased. Empty for an account that has only a social identity. */
|
|
6763
6958
|
email: string;
|
|
6764
6959
|
name?: string;
|
|
6765
|
-
/** @description `password`, `github`, `google`, `
|
|
6960
|
+
/** @description `password`, `github`, `google`, `runlot`, OIDC ids … sorted, from the linked identities. */
|
|
6766
6961
|
providers: string[];
|
|
6767
6962
|
/** Format: date-time */
|
|
6768
6963
|
createdAt: string;
|
|
@@ -7050,10 +7245,11 @@ export interface components {
|
|
|
7050
7245
|
AccessPolicy: {
|
|
7051
7246
|
/**
|
|
7052
7247
|
* @description `public` means anyone, `org` means a member or higher of the org that owns the
|
|
7053
|
-
* project,
|
|
7248
|
+
* project, `password` means one shared password for the project, and `app` means
|
|
7249
|
+
* only people signed in to this app through `env.auth` (docs/auth-access-unify.md §3).
|
|
7054
7250
|
* @enum {string}
|
|
7055
7251
|
*/
|
|
7056
|
-
mode: "public" | "org" | "password";
|
|
7252
|
+
mode: "public" | "org" | "password" | "app";
|
|
7057
7253
|
/** @description Whether a password is set. The value itself is never returned. */
|
|
7058
7254
|
hasPassword: boolean;
|
|
7059
7255
|
/** @description Whether a bypass key for automation exists. The key is shown only once, when it is issued. */
|
|
@@ -7085,11 +7281,12 @@ export interface components {
|
|
|
7085
7281
|
redirect: string;
|
|
7086
7282
|
};
|
|
7087
7283
|
/**
|
|
7088
|
-
* @description A
|
|
7089
|
-
*
|
|
7090
|
-
*
|
|
7284
|
+
* @description A login provider id. `github` and `google` are your own OAuth apps, `runlot` is
|
|
7285
|
+
* Runlot's sign-in (email, Google and GitHub at Runlot), and any other id is an OIDC
|
|
7286
|
+
* provider the project registered under that name.
|
|
7287
|
+
* @example github
|
|
7091
7288
|
*/
|
|
7092
|
-
AuthProvider:
|
|
7289
|
+
AuthProvider: string;
|
|
7093
7290
|
/** @description End-user authentication settings for the project. */
|
|
7094
7291
|
AuthSettings: {
|
|
7095
7292
|
/**
|
|
@@ -7109,6 +7306,24 @@ export interface components {
|
|
|
7109
7306
|
*/
|
|
7110
7307
|
sessionDays: number;
|
|
7111
7308
|
brand: components["schemas"]["AuthBrand"];
|
|
7309
|
+
/**
|
|
7310
|
+
* @description Automatic row level security. When on, `env.db` statements from a signed-in user run
|
|
7311
|
+
* as that user (`runlot_authenticated`), from a signed-out visitor as `runlot_anon`, and
|
|
7312
|
+
* from cron and queue as the owner. Tables without row level security are closed to
|
|
7313
|
+
* app users. Off by default.
|
|
7314
|
+
*/
|
|
7315
|
+
rls: boolean;
|
|
7316
|
+
/**
|
|
7317
|
+
* @description The email-and-password method. Off makes the password routes answer 404
|
|
7318
|
+
* `method_disabled` and hides the form; stored password hashes stay.
|
|
7319
|
+
* @default true
|
|
7320
|
+
*/
|
|
7321
|
+
password: boolean;
|
|
7322
|
+
/**
|
|
7323
|
+
* @description The email-link method. Off makes `sign-in/email` answer 404 `method_disabled`.
|
|
7324
|
+
* @default true
|
|
7325
|
+
*/
|
|
7326
|
+
magicLink: boolean;
|
|
7112
7327
|
};
|
|
7113
7328
|
/**
|
|
7114
7329
|
* @description Branding for the hosted login page. For finer-grained branding, build your own
|
|
@@ -7139,7 +7354,13 @@ export interface components {
|
|
|
7139
7354
|
*/
|
|
7140
7355
|
AuthProviderMeta: {
|
|
7141
7356
|
provider: components["schemas"]["AuthProvider"];
|
|
7142
|
-
/**
|
|
7357
|
+
/**
|
|
7358
|
+
* @description `builtin` is your own GitHub or Google OAuth app, `oidc` a generic OpenID
|
|
7359
|
+
* Connect provider, and `runlot` Runlot's sign-in (no callback URL to register).
|
|
7360
|
+
* @enum {string}
|
|
7361
|
+
*/
|
|
7362
|
+
kind: "builtin" | "oidc" | "runlot";
|
|
7363
|
+
/** @description The public id given by the provider. Empty for `runlot` */
|
|
7143
7364
|
clientId: string;
|
|
7144
7365
|
/**
|
|
7145
7366
|
* Format: date-time
|
|
@@ -7147,12 +7368,17 @@ export interface components {
|
|
|
7147
7368
|
*/
|
|
7148
7369
|
updatedAt: string;
|
|
7149
7370
|
/**
|
|
7150
|
-
* @description
|
|
7151
|
-
*
|
|
7152
|
-
* github.com — which is the default.
|
|
7371
|
+
* @description For `github`, the base URL of your own GitHub Enterprise Server installation
|
|
7372
|
+
* (**absent means github.com**). For `oidc`, the issuer URL.
|
|
7153
7373
|
* @example https://github.acme.example
|
|
7154
7374
|
*/
|
|
7155
7375
|
issuer?: string;
|
|
7376
|
+
/** @description OIDC only. The button label on the hosted sign-in page */
|
|
7377
|
+
displayName?: string;
|
|
7378
|
+
/** @description OIDC only. The button icon on the hosted sign-in page */
|
|
7379
|
+
iconUrl?: string;
|
|
7380
|
+
/** @description OIDC only. Space-separated scopes requested at sign-in */
|
|
7381
|
+
scopes?: string;
|
|
7156
7382
|
};
|
|
7157
7383
|
/**
|
|
7158
7384
|
* @description The project's end-user authentication status.
|
|
@@ -7199,6 +7425,9 @@ export interface components {
|
|
|
7199
7425
|
allowSignup?: boolean;
|
|
7200
7426
|
requireVerifiedEmail?: boolean;
|
|
7201
7427
|
sessionDays?: number;
|
|
7428
|
+
rls?: boolean;
|
|
7429
|
+
password?: boolean;
|
|
7430
|
+
magicLink?: boolean;
|
|
7202
7431
|
/**
|
|
7203
7432
|
* @description Branding is patched the same way — a save that only changes the colour does not
|
|
7204
7433
|
* erase the logo.
|
|
@@ -7211,30 +7440,49 @@ export interface components {
|
|
|
7211
7440
|
};
|
|
7212
7441
|
};
|
|
7213
7442
|
/**
|
|
7214
|
-
* @description The
|
|
7215
|
-
*
|
|
7216
|
-
*
|
|
7443
|
+
* @description The whole provider row; three shapes by `kind`:
|
|
7444
|
+
*
|
|
7445
|
+
* - **builtin** (default; `github` and `google`): `{clientId, clientSecret}`, and
|
|
7446
|
+
* `issuer` on `github` only. Both credentials are required every time.
|
|
7447
|
+
* - **oidc** (any other id): `{kind:"oidc", issuer, clientId, clientSecret,
|
|
7448
|
+
* displayName?, iconUrl?, scopes?}`. `issuer` must be https; the CP fetches
|
|
7449
|
+
* `<issuer>/.well-known/openid-configuration` when saving and pins its endpoints.
|
|
7450
|
+
* - **runlot** (id `runlot` only): `{kind:"runlot"}` and no other field.
|
|
7451
|
+
*
|
|
7452
|
+
* `{"source":"managed"}` is no longer accepted (400 `managed_removed`); use the
|
|
7453
|
+
* `runlot` provider.
|
|
7217
7454
|
*/
|
|
7218
7455
|
AuthProviderPut: {
|
|
7219
|
-
/** @description The public id given by the provider */
|
|
7220
|
-
clientId: string;
|
|
7221
7456
|
/**
|
|
7222
|
-
* @
|
|
7223
|
-
*
|
|
7457
|
+
* @default builtin
|
|
7458
|
+
* @enum {string}
|
|
7224
7459
|
*/
|
|
7225
|
-
|
|
7460
|
+
kind: "builtin" | "oidc" | "runlot";
|
|
7461
|
+
/** @description The public id given by the provider. Required for builtin and oidc */
|
|
7462
|
+
clientId?: string;
|
|
7226
7463
|
/**
|
|
7227
|
-
* @description
|
|
7228
|
-
*
|
|
7229
|
-
*
|
|
7230
|
-
|
|
7231
|
-
|
|
7232
|
-
|
|
7233
|
-
*
|
|
7234
|
-
*
|
|
7464
|
+
* @description Required for builtin and oidc. Stored encrypted. **It is never returned in any
|
|
7465
|
+
* response.** If you lose it, issue a new one from the login provider's console and
|
|
7466
|
+
* PUT it again.
|
|
7467
|
+
*/
|
|
7468
|
+
clientSecret?: string;
|
|
7469
|
+
/**
|
|
7470
|
+
* @description On `github`: the base URL of your own GitHub Enterprise Server installation, for
|
|
7471
|
+
* example `https://github.acme.example`; **empty means github.com**. This PUT is
|
|
7472
|
+
* the whole row, so send it on every call. On `google` it is a 400.
|
|
7473
|
+
* On `oidc`: required, the https issuer URL.
|
|
7235
7474
|
* @example https://github.acme.example
|
|
7236
7475
|
*/
|
|
7237
7476
|
issuer?: string;
|
|
7477
|
+
/**
|
|
7478
|
+
* @description OIDC only. The button label
|
|
7479
|
+
* @example Kakao
|
|
7480
|
+
*/
|
|
7481
|
+
displayName?: string;
|
|
7482
|
+
/** @description OIDC only. An https URL of the button icon */
|
|
7483
|
+
iconUrl?: string;
|
|
7484
|
+
/** @description OIDC only. Space-separated; defaults to `openid email profile` */
|
|
7485
|
+
scopes?: string;
|
|
7238
7486
|
};
|
|
7239
7487
|
/**
|
|
7240
7488
|
* @description A single hostname attached to the project. `state` progresses from
|
|
@@ -7255,6 +7503,11 @@ export interface components {
|
|
|
7255
7503
|
kind: "default" | "custom";
|
|
7256
7504
|
/** @enum {string} */
|
|
7257
7505
|
state: "pending_dns" | "pending_tls" | "active" | "error";
|
|
7506
|
+
/**
|
|
7507
|
+
* @description `app` serves your app. `login` is the project's login domain: it serves the Runlot sign-in page for this project on your own name, and never the app
|
|
7508
|
+
* @enum {string}
|
|
7509
|
+
*/
|
|
7510
|
+
role?: "app" | "login";
|
|
7258
7511
|
/** @description The reason the last check failed. Read it to fix your own DNS */
|
|
7259
7512
|
lastError?: string;
|
|
7260
7513
|
/** Format: date-time */
|
|
@@ -7594,8 +7847,9 @@ export interface components {
|
|
|
7594
7847
|
RepoName: components["schemas"]["RepoName"];
|
|
7595
7848
|
SecretName: components["schemas"]["SecretName"];
|
|
7596
7849
|
/**
|
|
7597
|
-
* @description A
|
|
7598
|
-
*
|
|
7850
|
+
* @description A login provider id. `github`, `google` and `runlot` are the built-in names; any
|
|
7851
|
+
* other id names one of the project's OIDC providers. The id is also the last segment
|
|
7852
|
+
* of the provider's callback URL.
|
|
7599
7853
|
*/
|
|
7600
7854
|
AuthProviderName: components["schemas"]["AuthProvider"];
|
|
7601
7855
|
};
|
|
@@ -7952,6 +8206,145 @@ export interface operations {
|
|
|
7952
8206
|
400: components["responses"]["BadRequest"];
|
|
7953
8207
|
};
|
|
7954
8208
|
};
|
|
8209
|
+
appAuthStart: {
|
|
8210
|
+
parameters: {
|
|
8211
|
+
query?: never;
|
|
8212
|
+
header?: never;
|
|
8213
|
+
path: {
|
|
8214
|
+
id: string;
|
|
8215
|
+
};
|
|
8216
|
+
cookie?: never;
|
|
8217
|
+
};
|
|
8218
|
+
requestBody?: never;
|
|
8219
|
+
responses: {
|
|
8220
|
+
/** @description to the provider */
|
|
8221
|
+
302: {
|
|
8222
|
+
headers: {
|
|
8223
|
+
[name: string]: unknown;
|
|
8224
|
+
};
|
|
8225
|
+
content?: never;
|
|
8226
|
+
};
|
|
8227
|
+
/** @description `sign_in_expired` — unknown, expired or used id */
|
|
8228
|
+
400: {
|
|
8229
|
+
headers: {
|
|
8230
|
+
[name: string]: unknown;
|
|
8231
|
+
};
|
|
8232
|
+
content?: never;
|
|
8233
|
+
};
|
|
8234
|
+
/** @description `managed_unavailable` — no broker credential for that provider */
|
|
8235
|
+
503: {
|
|
8236
|
+
headers: {
|
|
8237
|
+
[name: string]: unknown;
|
|
8238
|
+
};
|
|
8239
|
+
content?: never;
|
|
8240
|
+
};
|
|
8241
|
+
};
|
|
8242
|
+
};
|
|
8243
|
+
appAuthChoose: {
|
|
8244
|
+
parameters: {
|
|
8245
|
+
query?: never;
|
|
8246
|
+
header?: never;
|
|
8247
|
+
path: {
|
|
8248
|
+
id: string;
|
|
8249
|
+
};
|
|
8250
|
+
cookie?: never;
|
|
8251
|
+
};
|
|
8252
|
+
requestBody?: never;
|
|
8253
|
+
responses: {
|
|
8254
|
+
/** @description The chooser page */
|
|
8255
|
+
200: {
|
|
8256
|
+
headers: {
|
|
8257
|
+
[name: string]: unknown;
|
|
8258
|
+
};
|
|
8259
|
+
content: {
|
|
8260
|
+
"text/html": string;
|
|
8261
|
+
};
|
|
8262
|
+
};
|
|
8263
|
+
/** @description `sign_in_expired` — unknown, expired or used id */
|
|
8264
|
+
400: {
|
|
8265
|
+
headers: {
|
|
8266
|
+
[name: string]: unknown;
|
|
8267
|
+
};
|
|
8268
|
+
content?: never;
|
|
8269
|
+
};
|
|
8270
|
+
};
|
|
8271
|
+
};
|
|
8272
|
+
appAuthChoosePassword: {
|
|
8273
|
+
parameters: {
|
|
8274
|
+
query?: never;
|
|
8275
|
+
header?: never;
|
|
8276
|
+
path: {
|
|
8277
|
+
id: string;
|
|
8278
|
+
};
|
|
8279
|
+
cookie?: never;
|
|
8280
|
+
};
|
|
8281
|
+
requestBody: {
|
|
8282
|
+
content: {
|
|
8283
|
+
"application/x-www-form-urlencoded": {
|
|
8284
|
+
email: string;
|
|
8285
|
+
password: string;
|
|
8286
|
+
/** @enum {string} */
|
|
8287
|
+
mode: "sign-in" | "sign-up";
|
|
8288
|
+
};
|
|
8289
|
+
};
|
|
8290
|
+
};
|
|
8291
|
+
responses: {
|
|
8292
|
+
/** @description The chooser re-rendered with an error */
|
|
8293
|
+
200: {
|
|
8294
|
+
headers: {
|
|
8295
|
+
[name: string]: unknown;
|
|
8296
|
+
};
|
|
8297
|
+
content: {
|
|
8298
|
+
"text/html": string;
|
|
8299
|
+
};
|
|
8300
|
+
};
|
|
8301
|
+
/** @description to the app host with a grant */
|
|
8302
|
+
302: {
|
|
8303
|
+
headers: {
|
|
8304
|
+
[name: string]: unknown;
|
|
8305
|
+
};
|
|
8306
|
+
content?: never;
|
|
8307
|
+
};
|
|
8308
|
+
/** @description `sign_in_expired` — unknown, expired or used id */
|
|
8309
|
+
400: {
|
|
8310
|
+
headers: {
|
|
8311
|
+
[name: string]: unknown;
|
|
8312
|
+
};
|
|
8313
|
+
content?: never;
|
|
8314
|
+
};
|
|
8315
|
+
};
|
|
8316
|
+
};
|
|
8317
|
+
appAuthCallback: {
|
|
8318
|
+
parameters: {
|
|
8319
|
+
query: {
|
|
8320
|
+
code?: string;
|
|
8321
|
+
state: string;
|
|
8322
|
+
error?: string;
|
|
8323
|
+
};
|
|
8324
|
+
header?: never;
|
|
8325
|
+
path: {
|
|
8326
|
+
provider: "github" | "google";
|
|
8327
|
+
};
|
|
8328
|
+
cookie?: never;
|
|
8329
|
+
};
|
|
8330
|
+
requestBody?: never;
|
|
8331
|
+
responses: {
|
|
8332
|
+
/** @description to the app host */
|
|
8333
|
+
302: {
|
|
8334
|
+
headers: {
|
|
8335
|
+
[name: string]: unknown;
|
|
8336
|
+
};
|
|
8337
|
+
content?: never;
|
|
8338
|
+
};
|
|
8339
|
+
/** @description `sign_in_expired` — unknown, expired or used state */
|
|
8340
|
+
400: {
|
|
8341
|
+
headers: {
|
|
8342
|
+
[name: string]: unknown;
|
|
8343
|
+
};
|
|
8344
|
+
content?: never;
|
|
8345
|
+
};
|
|
8346
|
+
};
|
|
8347
|
+
};
|
|
7955
8348
|
googleStart: {
|
|
7956
8349
|
parameters: {
|
|
7957
8350
|
query: {
|
|
@@ -11212,6 +11605,18 @@ export interface operations {
|
|
|
11212
11605
|
/** @description capped at 4,096 by the lane */
|
|
11213
11606
|
maxTokens?: number;
|
|
11214
11607
|
temperature?: number;
|
|
11608
|
+
/** @description `env.ai.run`'s reasoning option. cp-core checks `effort` against the model's catalog row. */
|
|
11609
|
+
reasoning?: {
|
|
11610
|
+
/** @description one of the model's `effortLevels` */
|
|
11611
|
+
effort?: string;
|
|
11612
|
+
};
|
|
11613
|
+
/** @description `env.ai.run`'s structured output. Only on a model whose catalog row says `structuredOutput`. */
|
|
11614
|
+
responseFormat?: {
|
|
11615
|
+
/** @enum {string} */
|
|
11616
|
+
type?: "json_schema";
|
|
11617
|
+
name?: string;
|
|
11618
|
+
schema?: Record<string, never>;
|
|
11619
|
+
};
|
|
11215
11620
|
};
|
|
11216
11621
|
};
|
|
11217
11622
|
};
|
|
@@ -11225,6 +11630,8 @@ export interface operations {
|
|
|
11225
11630
|
"application/json": {
|
|
11226
11631
|
text: string;
|
|
11227
11632
|
model: string;
|
|
11633
|
+
stopReason: string;
|
|
11634
|
+
usageComplete?: boolean;
|
|
11228
11635
|
usage: {
|
|
11229
11636
|
/** Format: int64 */
|
|
11230
11637
|
inputTokens?: number;
|
|
@@ -11804,6 +12211,18 @@ export interface operations {
|
|
|
11804
12211
|
};
|
|
11805
12212
|
403: components["responses"]["Forbidden"];
|
|
11806
12213
|
404: components["responses"]["NotFound"];
|
|
12214
|
+
/**
|
|
12215
|
+
* @description `access_mode_app` — the deployment's access mode is `app`, which needs login.
|
|
12216
|
+
* Choose another access mode first; login is never turned off under it silently.
|
|
12217
|
+
*/
|
|
12218
|
+
409: {
|
|
12219
|
+
headers: {
|
|
12220
|
+
[name: string]: unknown;
|
|
12221
|
+
};
|
|
12222
|
+
content: {
|
|
12223
|
+
"application/json": components["schemas"]["Error"];
|
|
12224
|
+
};
|
|
12225
|
+
};
|
|
11807
12226
|
/** @description `no_core` — the service is temporarily unavailable */
|
|
11808
12227
|
503: {
|
|
11809
12228
|
headers: {
|
|
@@ -11854,6 +12273,15 @@ export interface operations {
|
|
|
11854
12273
|
"application/json": components["schemas"]["Error"];
|
|
11855
12274
|
};
|
|
11856
12275
|
};
|
|
12276
|
+
/** @description `last_method` — the change would leave no sign-in method enabled */
|
|
12277
|
+
409: {
|
|
12278
|
+
headers: {
|
|
12279
|
+
[name: string]: unknown;
|
|
12280
|
+
};
|
|
12281
|
+
content: {
|
|
12282
|
+
"application/json": components["schemas"]["Error"];
|
|
12283
|
+
};
|
|
12284
|
+
};
|
|
11857
12285
|
/** @description `no_core` — the service is temporarily unavailable */
|
|
11858
12286
|
503: {
|
|
11859
12287
|
headers: {
|
|
@@ -11865,6 +12293,34 @@ export interface operations {
|
|
|
11865
12293
|
};
|
|
11866
12294
|
};
|
|
11867
12295
|
};
|
|
12296
|
+
getAuthSchema: {
|
|
12297
|
+
parameters: {
|
|
12298
|
+
query?: never;
|
|
12299
|
+
header?: never;
|
|
12300
|
+
path: {
|
|
12301
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
12302
|
+
projectName: components["parameters"]["ProjectName"];
|
|
12303
|
+
};
|
|
12304
|
+
cookie?: never;
|
|
12305
|
+
};
|
|
12306
|
+
requestBody?: never;
|
|
12307
|
+
responses: {
|
|
12308
|
+
/** @description The schema version and its statements */
|
|
12309
|
+
200: {
|
|
12310
|
+
headers: {
|
|
12311
|
+
[name: string]: unknown;
|
|
12312
|
+
};
|
|
12313
|
+
content: {
|
|
12314
|
+
"application/json": {
|
|
12315
|
+
version: number;
|
|
12316
|
+
statements: string[];
|
|
12317
|
+
};
|
|
12318
|
+
};
|
|
12319
|
+
};
|
|
12320
|
+
403: components["responses"]["Forbidden"];
|
|
12321
|
+
404: components["responses"]["NotFound"];
|
|
12322
|
+
};
|
|
12323
|
+
};
|
|
11868
12324
|
setAuthProvider: {
|
|
11869
12325
|
parameters: {
|
|
11870
12326
|
query?: never;
|
|
@@ -11873,8 +12329,9 @@ export interface operations {
|
|
|
11873
12329
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
11874
12330
|
projectName: components["parameters"]["ProjectName"];
|
|
11875
12331
|
/**
|
|
11876
|
-
* @description A
|
|
11877
|
-
*
|
|
12332
|
+
* @description A login provider id. `github`, `google` and `runlot` are the built-in names; any
|
|
12333
|
+
* other id names one of the project's OIDC providers. The id is also the last segment
|
|
12334
|
+
* of the provider's callback URL.
|
|
11878
12335
|
*/
|
|
11879
12336
|
provider: components["parameters"]["AuthProviderName"];
|
|
11880
12337
|
};
|
|
@@ -11896,9 +12353,14 @@ export interface operations {
|
|
|
11896
12353
|
};
|
|
11897
12354
|
};
|
|
11898
12355
|
/**
|
|
11899
|
-
* @description `invalid_provider` — the
|
|
11900
|
-
* `
|
|
11901
|
-
*
|
|
12356
|
+
* @description `invalid_provider` — the id does not match the pattern, the kind does not fit
|
|
12357
|
+
* the id (`builtin` outside `github`/`google`, `runlot` outside `runlot`, `oidc` on
|
|
12358
|
+
* a reserved id), or `clientId`/`clientSecret` is empty. `bad_request` — `issuer`
|
|
12359
|
+
* on `google`, a non-http(s) GitHub base, a non-https OIDC issuer, or fields a
|
|
12360
|
+
* `runlot` PUT does not take. `oidc_discovery_failed` — the issuer's
|
|
12361
|
+
* `/.well-known/openid-configuration` could not be read; the message quotes the
|
|
12362
|
+
* provider's answer. `managed_removed` — `{"source":"managed"}`; use the `runlot`
|
|
12363
|
+
* provider.
|
|
11902
12364
|
*/
|
|
11903
12365
|
400: {
|
|
11904
12366
|
headers: {
|
|
@@ -11910,6 +12372,18 @@ export interface operations {
|
|
|
11910
12372
|
};
|
|
11911
12373
|
403: components["responses"]["Forbidden"];
|
|
11912
12374
|
404: components["responses"]["NotFound"];
|
|
12375
|
+
/**
|
|
12376
|
+
* @description `runlot_unavailable` — this deployment has no sign-in broker, so the `runlot`
|
|
12377
|
+
* provider cannot be turned on. Register your own app instead.
|
|
12378
|
+
*/
|
|
12379
|
+
409: {
|
|
12380
|
+
headers: {
|
|
12381
|
+
[name: string]: unknown;
|
|
12382
|
+
};
|
|
12383
|
+
content: {
|
|
12384
|
+
"application/json": components["schemas"]["Error"];
|
|
12385
|
+
};
|
|
12386
|
+
};
|
|
11913
12387
|
/** @description `no_core` — the service is temporarily unavailable. */
|
|
11914
12388
|
503: {
|
|
11915
12389
|
headers: {
|
|
@@ -11929,8 +12403,9 @@ export interface operations {
|
|
|
11929
12403
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
11930
12404
|
projectName: components["parameters"]["ProjectName"];
|
|
11931
12405
|
/**
|
|
11932
|
-
* @description A
|
|
11933
|
-
*
|
|
12406
|
+
* @description A login provider id. `github`, `google` and `runlot` are the built-in names; any
|
|
12407
|
+
* other id names one of the project's OIDC providers. The id is also the last segment
|
|
12408
|
+
* of the provider's callback URL.
|
|
11934
12409
|
*/
|
|
11935
12410
|
provider: components["parameters"]["AuthProviderName"];
|
|
11936
12411
|
};
|
|
@@ -11947,6 +12422,15 @@ export interface operations {
|
|
|
11947
12422
|
};
|
|
11948
12423
|
403: components["responses"]["Forbidden"];
|
|
11949
12424
|
404: components["responses"]["NotFound"];
|
|
12425
|
+
/** @description `last_method` — removing it would leave no sign-in method enabled */
|
|
12426
|
+
409: {
|
|
12427
|
+
headers: {
|
|
12428
|
+
[name: string]: unknown;
|
|
12429
|
+
};
|
|
12430
|
+
content: {
|
|
12431
|
+
"application/json": components["schemas"]["Error"];
|
|
12432
|
+
};
|
|
12433
|
+
};
|
|
11950
12434
|
/** @description `no_core` — the service is temporarily unavailable. */
|
|
11951
12435
|
503: {
|
|
11952
12436
|
headers: {
|
|
@@ -12110,7 +12594,7 @@ export interface operations {
|
|
|
12110
12594
|
content: {
|
|
12111
12595
|
"application/json": {
|
|
12112
12596
|
/** @enum {string} */
|
|
12113
|
-
mode: "public" | "org" | "password";
|
|
12597
|
+
mode: "public" | "org" | "password" | "app";
|
|
12114
12598
|
/**
|
|
12115
12599
|
* @description The shared password for `password` mode. If left empty, the existing one is
|
|
12116
12600
|
* kept; if there was never one, this returns 400.
|
|
@@ -12132,6 +12616,18 @@ export interface operations {
|
|
|
12132
12616
|
400: components["responses"]["BadRequest"];
|
|
12133
12617
|
403: components["responses"]["Forbidden"];
|
|
12134
12618
|
404: components["responses"]["NotFound"];
|
|
12619
|
+
/**
|
|
12620
|
+
* @description `login_required` — mode `app` needs login turned on for this project
|
|
12621
|
+
* (`runlot auth on`) first.
|
|
12622
|
+
*/
|
|
12623
|
+
409: {
|
|
12624
|
+
headers: {
|
|
12625
|
+
[name: string]: unknown;
|
|
12626
|
+
};
|
|
12627
|
+
content: {
|
|
12628
|
+
"application/json": components["schemas"]["Error"];
|
|
12629
|
+
};
|
|
12630
|
+
};
|
|
12135
12631
|
/** @description `no_core` — the service is temporarily unavailable. */
|
|
12136
12632
|
503: {
|
|
12137
12633
|
headers: {
|
|
@@ -12876,6 +13372,17 @@ export interface operations {
|
|
|
12876
13372
|
* @example app.example.com
|
|
12877
13373
|
*/
|
|
12878
13374
|
hostname: string;
|
|
13375
|
+
/**
|
|
13376
|
+
* @description `login` (`runlot domain add <host> --login`) makes the name the project's
|
|
13377
|
+
* login domain: sign-in starts for this project are sent to
|
|
13378
|
+
* `https://<host>` once it is connected and its certificate is issued. Pro
|
|
13379
|
+
* plan only (403 `plan_required`), one per project (409
|
|
13380
|
+
* `login_domain_exists`); the same name already attached with the other role
|
|
13381
|
+
* is 409 `hostname_role_conflict`. It counts toward the custom domain limit.
|
|
13382
|
+
* @default app
|
|
13383
|
+
* @enum {string}
|
|
13384
|
+
*/
|
|
13385
|
+
role?: "app" | "login";
|
|
12879
13386
|
};
|
|
12880
13387
|
};
|
|
12881
13388
|
};
|