@runlot/api 0.1.0-rc.154 → 0.1.0-rc.156

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 CHANGED
@@ -226,6 +226,15 @@ export interface paths {
226
226
  * for one project, provider and attached host and lives ten minutes. Sends a 302
227
227
  * to the provider with identity-only scopes (GitHub `read:user user:email`,
228
228
  * Google `openid email profile` with PKCE).
229
+ *
230
+ * For the `runlot` provider (docs/custom-sign-in.md §12.2) four optional
231
+ * parameters are validated and kept on the start; an invalid one is dropped.
232
+ * `idp=google|github` goes straight to that upstream when the project offers it,
233
+ * `idp=password|passkey` opens the chooser in that mode, `prompt=none` issues a
234
+ * grant with no page when the browser has a Runlot ID session and the person has
235
+ * signed in to this project before, else returns `auth_error=login_required`.
236
+ * Every failure returns to `error_next` (or `next`) on the app host with
237
+ * `auth_error=<code>&auth_request=<id>`.
229
238
  */
230
239
  get: operations["appAuthStart"];
231
240
  put?: never;
@@ -260,6 +269,116 @@ export interface paths {
260
269
  patch?: never;
261
270
  trace?: never;
262
271
  };
272
+ "/v1/app-auth/choose/{id}/cancel": {
273
+ parameters: {
274
+ query?: never;
275
+ header?: never;
276
+ path?: never;
277
+ cookie?: never;
278
+ };
279
+ /**
280
+ * Runlot sign-in: back to the app
281
+ * @description The chooser's "back to <app>" link. Consumes the start and returns to the app with
282
+ * `auth_error=cancelled&auth_request=<id>`.
283
+ */
284
+ get: operations["appAuthChooseCancel"];
285
+ put?: never;
286
+ post?: never;
287
+ delete?: never;
288
+ options?: never;
289
+ head?: never;
290
+ patch?: never;
291
+ trace?: never;
292
+ };
293
+ "/v1/app-auth/choose/{id}/continue": {
294
+ parameters: {
295
+ query?: never;
296
+ header?: never;
297
+ path?: never;
298
+ cookie?: never;
299
+ };
300
+ get?: never;
301
+ put?: never;
302
+ /**
303
+ * Runlot sign-in: continue as the remembered Runlot user
304
+ * @description One click for a browser holding the broker's Runlot ID cookie
305
+ * (docs/custom-sign-in.md §12.7). Without a valid cookie the chooser is re-rendered.
306
+ */
307
+ post: operations["appAuthChooseContinue"];
308
+ delete?: never;
309
+ options?: never;
310
+ head?: never;
311
+ patch?: never;
312
+ trace?: never;
313
+ };
314
+ "/v1/app-auth/choose/{id}/passkey/options": {
315
+ parameters: {
316
+ query?: never;
317
+ header?: never;
318
+ path?: never;
319
+ cookie?: never;
320
+ };
321
+ get?: never;
322
+ put?: never;
323
+ /** Runlot sign-in: passkey assertion options */
324
+ post: operations["appAuthPasskeyOptions"];
325
+ delete?: never;
326
+ options?: never;
327
+ head?: never;
328
+ patch?: never;
329
+ trace?: never;
330
+ };
331
+ "/v1/app-auth/choose/{id}/passkey": {
332
+ parameters: {
333
+ query?: never;
334
+ header?: never;
335
+ path?: never;
336
+ cookie?: never;
337
+ };
338
+ get?: never;
339
+ put?: never;
340
+ /** Runlot sign-in: verify a passkey assertion */
341
+ post: operations["appAuthPasskeyVerify"];
342
+ delete?: never;
343
+ options?: never;
344
+ head?: never;
345
+ patch?: never;
346
+ trace?: never;
347
+ };
348
+ "/v1/app-auth/passkey/register/options": {
349
+ parameters: {
350
+ query?: never;
351
+ header?: never;
352
+ path?: never;
353
+ cookie?: never;
354
+ };
355
+ get?: never;
356
+ put?: never;
357
+ /** Passkey offer: creation options */
358
+ post: operations["appAuthPasskeyRegisterOptions"];
359
+ delete?: never;
360
+ options?: never;
361
+ head?: never;
362
+ patch?: never;
363
+ trace?: never;
364
+ };
365
+ "/v1/app-auth/passkey/register": {
366
+ parameters: {
367
+ query?: never;
368
+ header?: never;
369
+ path?: never;
370
+ cookie?: never;
371
+ };
372
+ get?: never;
373
+ put?: never;
374
+ /** Passkey offer: store the new passkey */
375
+ post: operations["appAuthPasskeyRegister"];
376
+ delete?: never;
377
+ options?: never;
378
+ head?: never;
379
+ patch?: never;
380
+ trace?: never;
381
+ };
263
382
  "/v1/app-auth/choose/{id}/password": {
264
383
  parameters: {
265
384
  query?: never;
@@ -1059,6 +1178,109 @@ export interface paths {
1059
1178
  patch?: never;
1060
1179
  trace?: never;
1061
1180
  };
1181
+ "/v1/orgs/{orgSlug}/projects/{projectName}/deployments/uploads": {
1182
+ parameters: {
1183
+ query?: never;
1184
+ header?: never;
1185
+ path: {
1186
+ orgSlug: components["parameters"]["OrgSlug"];
1187
+ projectName: components["parameters"]["ProjectName"];
1188
+ };
1189
+ cookie?: never;
1190
+ };
1191
+ get?: never;
1192
+ put?: never;
1193
+ /**
1194
+ * Open an incremental deploy upload: list the bundle's files, learn which are missing
1195
+ * @description The incremental form of `createDeployment` (docs/incremental-deploy-upload.md §1).
1196
+ * The body lists every entry the bundle tar would hold, **in tar order** — the server
1197
+ * does not re-sort it, so what it assembles at commit is what the client would have
1198
+ * tarred. A directory is `{ "path": "assets/", "type": "dir" }`.
1199
+ *
1200
+ * The list is checked against the bundle limits (entry count, path rules, per-entry
1201
+ * and total size, the single `runlot.json`) and the org/licence/preview checks of
1202
+ * `createDeployment` run here, so a deploy that is going to be refused is refused
1203
+ * before any byte moves.
1204
+ *
1205
+ * The answer names the sha256 hashes the server does not already hold for this
1206
+ * project (a preview uses its parent's). Upload those with `uploadDeploymentBlobs`,
1207
+ * then `commitDeploymentUpload`. A session lives for `expiresAt` (one hour).
1208
+ *
1209
+ * An older control plane answers **404** here; a client falls back to the single
1210
+ * `createDeployment` POST.
1211
+ */
1212
+ post: operations["createDeploymentUpload"];
1213
+ delete?: never;
1214
+ options?: never;
1215
+ head?: never;
1216
+ patch?: never;
1217
+ trace?: never;
1218
+ };
1219
+ "/v1/orgs/{orgSlug}/projects/{projectName}/deployments/uploads/{uploadId}/blobs": {
1220
+ parameters: {
1221
+ query?: never;
1222
+ header?: never;
1223
+ path: {
1224
+ orgSlug: components["parameters"]["OrgSlug"];
1225
+ projectName: components["parameters"]["ProjectName"];
1226
+ uploadId: string;
1227
+ };
1228
+ cookie?: never;
1229
+ };
1230
+ get?: never;
1231
+ put?: never;
1232
+ /**
1233
+ * Upload a batch of file contents for an open upload session
1234
+ * @description The body is a gzip tar of regular entries, each named by the lowercase sha256 hex
1235
+ * of its content. Clients keep each body at most 8 MiB of input; a single file larger
1236
+ * than that goes alone. Re-sending a blob is harmless, so a failed batch is retried
1237
+ * as a whole.
1238
+ *
1239
+ * `400 blob_mismatch` — an entry's content does not hash to its name.
1240
+ * `400 blob_not_listed` — a hash the session's file list did not mention.
1241
+ * `404 upload_not_found` — no such session, or it expired.
1242
+ */
1243
+ post: operations["uploadDeploymentBlobs"];
1244
+ delete?: never;
1245
+ options?: never;
1246
+ head?: never;
1247
+ patch?: never;
1248
+ trace?: never;
1249
+ };
1250
+ "/v1/orgs/{orgSlug}/projects/{projectName}/deployments/uploads/{uploadId}/commit": {
1251
+ parameters: {
1252
+ query?: never;
1253
+ header?: never;
1254
+ path: {
1255
+ orgSlug: components["parameters"]["OrgSlug"];
1256
+ projectName: components["parameters"]["ProjectName"];
1257
+ uploadId: string;
1258
+ };
1259
+ cookie?: never;
1260
+ };
1261
+ get?: never;
1262
+ put?: never;
1263
+ /**
1264
+ * Assemble the uploaded files into the bundle and deploy it
1265
+ * @description Assembles the gzip tar in the listed order and deploys it exactly as
1266
+ * `createDeployment` would; the 201 body is the same (`Deployment`, plus `preview` for
1267
+ * a preview session). Takes the same provenance headers.
1268
+ *
1269
+ * **Idempotent per session**: committing a session that already produced a deployment
1270
+ * returns that deployment instead of making a new version, so a client retries a
1271
+ * commit that timed out at the edge.
1272
+ *
1273
+ * `409 blobs_missing` — a listed blob is not held (it may have been swept between list
1274
+ * and commit); `details.missing` names them. Upload those and commit again.
1275
+ * `404 upload_not_found` — no such session, or it expired.
1276
+ */
1277
+ post: operations["commitDeploymentUpload"];
1278
+ delete?: never;
1279
+ options?: never;
1280
+ head?: never;
1281
+ patch?: never;
1282
+ trace?: never;
1283
+ };
1062
1284
  "/v1/orgs/{orgSlug}/projects/{projectName}/deployments/{deploymentId}": {
1063
1285
  parameters: {
1064
1286
  query?: never;
@@ -2806,6 +3028,87 @@ export interface paths {
2806
3028
  patch?: never;
2807
3029
  trace?: never;
2808
3030
  };
3031
+ "/v1/orgs/{orgSlug}/projects/{projectName}/auth/branding": {
3032
+ parameters: {
3033
+ query?: never;
3034
+ header?: never;
3035
+ path: {
3036
+ orgSlug: components["parameters"]["OrgSlug"];
3037
+ projectName: components["parameters"]["ProjectName"];
3038
+ };
3039
+ cookie?: never;
3040
+ };
3041
+ /**
3042
+ * The sign-in page branding, defaults filled
3043
+ * @description `settings.brand` (docs/custom-sign-in.md §12.3) with every default written out, and
3044
+ * `effectiveMethods`, what the chooser draws now. Viewer or higher.
3045
+ */
3046
+ get: operations["getAuthBranding"];
3047
+ /**
3048
+ * Replace the sign-in page branding
3049
+ * @description The whole brand object (absent fields are defaults). Refused fields answer 400
3050
+ * `invalid_branding` with `error.details.fields: [{path, message}]`. Member or higher.
3051
+ */
3052
+ put: operations["putAuthBranding"];
3053
+ post?: never;
3054
+ delete?: never;
3055
+ options?: never;
3056
+ head?: never;
3057
+ patch?: never;
3058
+ trace?: never;
3059
+ };
3060
+ "/v1/orgs/{orgSlug}/projects/{projectName}/auth/funnel": {
3061
+ parameters: {
3062
+ query?: never;
3063
+ header?: never;
3064
+ path: {
3065
+ orgSlug: components["parameters"]["OrgSlug"];
3066
+ projectName: components["parameters"]["ProjectName"];
3067
+ };
3068
+ cookie?: never;
3069
+ };
3070
+ /**
3071
+ * Sign-in funnel counters
3072
+ * @description Daily counters kept by the broker (docs/custom-sign-in.md §9.4), oldest first, 90-day
3073
+ * retention. Events: `start` (key: idp, `chooser` or `silent`), `chooser_view`,
3074
+ * `method` (key: password|google|github|passkey|session), `success` (key: method),
3075
+ * `error` (key: auth_error code, or `passkey_failed`). No per-person data.
3076
+ */
3077
+ get: operations["getAuthFunnel"];
3078
+ put?: never;
3079
+ post?: never;
3080
+ delete?: never;
3081
+ options?: never;
3082
+ head?: never;
3083
+ patch?: never;
3084
+ trace?: never;
3085
+ };
3086
+ "/v1/orgs/{orgSlug}/projects/{projectName}/auth/branding/preview": {
3087
+ parameters: {
3088
+ query?: never;
3089
+ header?: never;
3090
+ path: {
3091
+ orgSlug: components["parameters"]["OrgSlug"];
3092
+ projectName: components["parameters"]["ProjectName"];
3093
+ };
3094
+ cookie?: never;
3095
+ };
3096
+ /**
3097
+ * Render the chooser with draft branding
3098
+ * @description The real chooser template with every link inert. Authenticated by the session bearer
3099
+ * or by `ticket` (from POST), so an `<iframe>` can load it; framable only by this
3100
+ * origin. `/v1/projects/{projectId}/auth/branding/preview` is the same by project id.
3101
+ */
3102
+ get: operations["previewAuthBranding"];
3103
+ put?: never;
3104
+ /** A ten-minute preview ticket */
3105
+ post: operations["mintAuthBrandingPreviewTicket"];
3106
+ delete?: never;
3107
+ options?: never;
3108
+ head?: never;
3109
+ patch?: never;
3110
+ trace?: never;
3111
+ };
2809
3112
  "/v1/orgs/{orgSlug}/projects/{projectName}/auth/providers/{provider}": {
2810
3113
  parameters: {
2811
3114
  query?: never;
@@ -4554,6 +4857,46 @@ export interface paths {
4554
4857
  export type webhooks = Record<string, never>;
4555
4858
  export interface components {
4556
4859
  schemas: {
4860
+ /** @description docs/custom-sign-in.md §12.3. Every field optional; empty is the default. */
4861
+ SignInBrand: {
4862
+ name?: string;
4863
+ /** @description http(s) URL */
4864
+ logo?: string;
4865
+ color?: string;
4866
+ /** @description https URL */
4867
+ logoDark?: string;
4868
+ /** @enum {string} */
4869
+ theme?: "light" | "dark" | "system";
4870
+ /** @enum {string} */
4871
+ layout?: "centered" | "split" | "minimal";
4872
+ /** @enum {string} */
4873
+ buttonShape?: "rounded" | "pill" | "square";
4874
+ background?: {
4875
+ /** @enum {string} */
4876
+ kind?: "none" | "color" | "gradient" | "image";
4877
+ /** @description #rrggbb | '#rrggbb,#rrggbb[,#rrggbb]' | https URL */
4878
+ value?: string;
4879
+ };
4880
+ copy?: {
4881
+ [key: string]: {
4882
+ title?: string;
4883
+ subtitle?: string;
4884
+ footer?: string;
4885
+ };
4886
+ };
4887
+ links?: {
4888
+ terms?: string;
4889
+ privacy?: string;
4890
+ support?: string;
4891
+ };
4892
+ /** @enum {string} */
4893
+ defaultLang?: "ko" | "en" | "ja" | "";
4894
+ methods?: ("password" | "google" | "github" | "passkey")[];
4895
+ };
4896
+ AuthBranding: {
4897
+ brand: components["schemas"]["SignInBrand"];
4898
+ effectiveMethods: string[];
4899
+ };
4557
4900
  RepoRefs: {
4558
4901
  /**
4559
4902
  * @description The repository's current default branch. If this ever disagrees with
@@ -5216,6 +5559,28 @@ export interface components {
5216
5559
  email: boolean;
5217
5560
  auth: boolean;
5218
5561
  };
5562
+ /**
5563
+ * @description One entry of an incremental upload's file list. A regular file carries `sha256`
5564
+ * (lowercase hex) and `size`; a directory carries `type: dir` and a path ending in `/`.
5565
+ */
5566
+ DeploymentUploadEntry: {
5567
+ path: string;
5568
+ sha256?: string;
5569
+ /** Format: int64 */
5570
+ size?: number;
5571
+ /**
5572
+ * @default file
5573
+ * @enum {string}
5574
+ */
5575
+ type: "file" | "dir";
5576
+ };
5577
+ DeploymentUpload: {
5578
+ uploadId: string;
5579
+ /** @description sha256 hashes the server does not hold yet. Upload these, then commit. */
5580
+ missing: string[];
5581
+ /** Format: date-time */
5582
+ expiresAt: string;
5583
+ };
5219
5584
  Deployment: {
5220
5585
  /** Format: uuid */
5221
5586
  deploymentId: string;
@@ -6880,6 +7245,11 @@ export interface components {
6880
7245
  * @description the balance (can be negative)
6881
7246
  */
6882
7247
  microCents: number;
7248
+ /**
7249
+ * Format: int64
7250
+ * @description The part of the balance your running apps have set aside for calls in progress. It is still yours — what a call does not use returns to the balance. Zero when nothing is held
7251
+ */
7252
+ heldMicroCents?: number;
6883
7253
  /** Format: int64 */
6884
7254
  lowMicroCents?: number;
6885
7255
  /** Format: int64 */
@@ -8208,7 +8578,12 @@ export interface operations {
8208
8578
  };
8209
8579
  appAuthStart: {
8210
8580
  parameters: {
8211
- query?: never;
8581
+ query?: {
8582
+ idp?: "google" | "github" | "password" | "passkey";
8583
+ login_hint?: string;
8584
+ error_next?: string;
8585
+ prompt?: "none";
8586
+ };
8212
8587
  header?: never;
8213
8588
  path: {
8214
8589
  id: string;
@@ -8269,7 +8644,7 @@ export interface operations {
8269
8644
  };
8270
8645
  };
8271
8646
  };
8272
- appAuthChoosePassword: {
8647
+ appAuthChooseCancel: {
8273
8648
  parameters: {
8274
8649
  query?: never;
8275
8650
  header?: never;
@@ -8278,23 +8653,187 @@ export interface operations {
8278
8653
  };
8279
8654
  cookie?: never;
8280
8655
  };
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
- };
8656
+ requestBody?: never;
8291
8657
  responses: {
8292
- /** @description The chooser re-rendered with an error */
8293
- 200: {
8658
+ /** @description to the app host with auth_error=cancelled */
8659
+ 302: {
8294
8660
  headers: {
8295
8661
  [name: string]: unknown;
8296
8662
  };
8297
- content: {
8663
+ content?: never;
8664
+ };
8665
+ /** @description `sign_in_expired` */
8666
+ 400: {
8667
+ headers: {
8668
+ [name: string]: unknown;
8669
+ };
8670
+ content?: never;
8671
+ };
8672
+ };
8673
+ };
8674
+ appAuthChooseContinue: {
8675
+ parameters: {
8676
+ query?: never;
8677
+ header?: never;
8678
+ path: {
8679
+ id: string;
8680
+ };
8681
+ cookie?: never;
8682
+ };
8683
+ requestBody?: never;
8684
+ responses: {
8685
+ /** @description the chooser (no session) */
8686
+ 200: {
8687
+ headers: {
8688
+ [name: string]: unknown;
8689
+ };
8690
+ content: {
8691
+ "text/html": string;
8692
+ };
8693
+ };
8694
+ /** @description to the app host with a grant */
8695
+ 303: {
8696
+ headers: {
8697
+ [name: string]: unknown;
8698
+ };
8699
+ content?: never;
8700
+ };
8701
+ };
8702
+ };
8703
+ appAuthPasskeyOptions: {
8704
+ parameters: {
8705
+ query?: never;
8706
+ header?: never;
8707
+ path: {
8708
+ id: string;
8709
+ };
8710
+ cookie?: never;
8711
+ };
8712
+ requestBody?: never;
8713
+ responses: {
8714
+ /** @description `{challengeId, publicKey}` — WebAuthn PublicKeyCredentialRequestOptions (discoverable) */
8715
+ 200: {
8716
+ headers: {
8717
+ [name: string]: unknown;
8718
+ };
8719
+ content: {
8720
+ "application/json": Record<string, never>;
8721
+ };
8722
+ };
8723
+ 404: components["responses"]["NotFound"];
8724
+ };
8725
+ };
8726
+ appAuthPasskeyVerify: {
8727
+ parameters: {
8728
+ query: {
8729
+ challenge: string;
8730
+ };
8731
+ header?: never;
8732
+ path: {
8733
+ id: string;
8734
+ };
8735
+ cookie?: never;
8736
+ };
8737
+ requestBody: {
8738
+ content: {
8739
+ "application/json": Record<string, never>;
8740
+ };
8741
+ };
8742
+ responses: {
8743
+ /** @description `{redirect}` — the app URL carrying the grant */
8744
+ 200: {
8745
+ headers: {
8746
+ [name: string]: unknown;
8747
+ };
8748
+ content: {
8749
+ "application/json": Record<string, never>;
8750
+ };
8751
+ };
8752
+ /** @description `passkey_failed` */
8753
+ 401: {
8754
+ headers: {
8755
+ [name: string]: unknown;
8756
+ };
8757
+ content?: never;
8758
+ };
8759
+ };
8760
+ };
8761
+ appAuthPasskeyRegisterOptions: {
8762
+ parameters: {
8763
+ query: {
8764
+ ticket: string;
8765
+ };
8766
+ header?: never;
8767
+ path?: never;
8768
+ cookie?: never;
8769
+ };
8770
+ requestBody?: never;
8771
+ responses: {
8772
+ /** @description `{publicKey}` — PublicKeyCredentialCreationOptions */
8773
+ 200: {
8774
+ headers: {
8775
+ [name: string]: unknown;
8776
+ };
8777
+ content: {
8778
+ "application/json": Record<string, never>;
8779
+ };
8780
+ };
8781
+ 400: components["responses"]["BadRequest"];
8782
+ };
8783
+ };
8784
+ appAuthPasskeyRegister: {
8785
+ parameters: {
8786
+ query: {
8787
+ ticket: string;
8788
+ };
8789
+ header?: never;
8790
+ path?: never;
8791
+ cookie?: never;
8792
+ };
8793
+ requestBody: {
8794
+ content: {
8795
+ "application/json": Record<string, never>;
8796
+ };
8797
+ };
8798
+ responses: {
8799
+ /** @description `{redirect}` */
8800
+ 200: {
8801
+ headers: {
8802
+ [name: string]: unknown;
8803
+ };
8804
+ content: {
8805
+ "application/json": Record<string, never>;
8806
+ };
8807
+ };
8808
+ 400: components["responses"]["BadRequest"];
8809
+ };
8810
+ };
8811
+ appAuthChoosePassword: {
8812
+ parameters: {
8813
+ query?: never;
8814
+ header?: never;
8815
+ path: {
8816
+ id: string;
8817
+ };
8818
+ cookie?: never;
8819
+ };
8820
+ requestBody: {
8821
+ content: {
8822
+ "application/x-www-form-urlencoded": {
8823
+ email: string;
8824
+ password: string;
8825
+ /** @enum {string} */
8826
+ mode: "sign-in" | "sign-up";
8827
+ };
8828
+ };
8829
+ };
8830
+ responses: {
8831
+ /** @description The chooser re-rendered with an error */
8832
+ 200: {
8833
+ headers: {
8834
+ [name: string]: unknown;
8835
+ };
8836
+ content: {
8298
8837
  "text/html": string;
8299
8838
  };
8300
8839
  };
@@ -9609,6 +10148,147 @@ export interface operations {
9609
10148
  };
9610
10149
  };
9611
10150
  };
10151
+ createDeploymentUpload: {
10152
+ parameters: {
10153
+ query?: {
10154
+ /** @description As on `createDeployment`. */
10155
+ preview?: components["schemas"]["Slug"];
10156
+ /** @description As on `createDeployment`. Ignored without `preview`. */
10157
+ db?: "branch" | "shared" | "none";
10158
+ /** @description As on `createDeployment`. */
10159
+ from?: string;
10160
+ };
10161
+ header?: never;
10162
+ path: {
10163
+ orgSlug: components["parameters"]["OrgSlug"];
10164
+ projectName: components["parameters"]["ProjectName"];
10165
+ };
10166
+ cookie?: never;
10167
+ };
10168
+ requestBody: {
10169
+ content: {
10170
+ "application/json": {
10171
+ files: components["schemas"]["DeploymentUploadEntry"][];
10172
+ };
10173
+ };
10174
+ };
10175
+ responses: {
10176
+ /** @description The session, and the hashes still to upload */
10177
+ 201: {
10178
+ headers: {
10179
+ [name: string]: unknown;
10180
+ };
10181
+ content: {
10182
+ "application/json": components["schemas"]["DeploymentUpload"];
10183
+ };
10184
+ };
10185
+ 400: components["responses"]["BadRequest"];
10186
+ 403: components["responses"]["Forbidden"];
10187
+ 404: components["responses"]["NotFound"];
10188
+ /** @description `over_project_limit`, `project_disabled`, `preview_limit` — as on `createDeployment`. */
10189
+ 409: {
10190
+ headers: {
10191
+ [name: string]: unknown;
10192
+ };
10193
+ content: {
10194
+ "application/json": components["schemas"]["Error"];
10195
+ };
10196
+ };
10197
+ /** @description The listed bundle exceeds a limit */
10198
+ 413: {
10199
+ headers: {
10200
+ [name: string]: unknown;
10201
+ };
10202
+ content: {
10203
+ "application/json": components["schemas"]["Error"];
10204
+ };
10205
+ };
10206
+ };
10207
+ };
10208
+ uploadDeploymentBlobs: {
10209
+ parameters: {
10210
+ query?: never;
10211
+ header?: never;
10212
+ path: {
10213
+ orgSlug: components["parameters"]["OrgSlug"];
10214
+ projectName: components["parameters"]["ProjectName"];
10215
+ uploadId: string;
10216
+ };
10217
+ cookie?: never;
10218
+ };
10219
+ requestBody: {
10220
+ content: {
10221
+ "application/gzip": string;
10222
+ };
10223
+ };
10224
+ responses: {
10225
+ /** @description What this batch stored, and what the session still lacks */
10226
+ 200: {
10227
+ headers: {
10228
+ [name: string]: unknown;
10229
+ };
10230
+ content: {
10231
+ "application/json": {
10232
+ received: string[];
10233
+ missing: string[];
10234
+ };
10235
+ };
10236
+ };
10237
+ 400: components["responses"]["BadRequest"];
10238
+ 403: components["responses"]["Forbidden"];
10239
+ 404: components["responses"]["NotFound"];
10240
+ /** @description The batch or one of its entries exceeds a limit */
10241
+ 413: {
10242
+ headers: {
10243
+ [name: string]: unknown;
10244
+ };
10245
+ content: {
10246
+ "application/json": components["schemas"]["Error"];
10247
+ };
10248
+ };
10249
+ };
10250
+ };
10251
+ commitDeploymentUpload: {
10252
+ parameters: {
10253
+ query?: never;
10254
+ header?: {
10255
+ "X-Runlot-Git-Commit"?: string;
10256
+ "X-Runlot-Git-Message"?: string;
10257
+ "X-Runlot-Git-Branch"?: string;
10258
+ "X-Runlot-Git-Dirty"?: boolean;
10259
+ };
10260
+ path: {
10261
+ orgSlug: components["parameters"]["OrgSlug"];
10262
+ projectName: components["parameters"]["ProjectName"];
10263
+ uploadId: string;
10264
+ };
10265
+ cookie?: never;
10266
+ };
10267
+ requestBody?: never;
10268
+ responses: {
10269
+ /** @description The created deployment */
10270
+ 201: {
10271
+ headers: {
10272
+ [name: string]: unknown;
10273
+ };
10274
+ content: {
10275
+ "application/json": components["schemas"]["Deployment"];
10276
+ };
10277
+ };
10278
+ 400: components["responses"]["BadRequest"];
10279
+ 403: components["responses"]["Forbidden"];
10280
+ 404: components["responses"]["NotFound"];
10281
+ /** @description `blobs_missing`, or any 409 of `createDeployment`. */
10282
+ 409: {
10283
+ headers: {
10284
+ [name: string]: unknown;
10285
+ };
10286
+ content: {
10287
+ "application/json": components["schemas"]["Error"];
10288
+ };
10289
+ };
10290
+ };
10291
+ };
9612
10292
  getDeployment: {
9613
10293
  parameters: {
9614
10294
  query?: never;
@@ -12321,6 +13001,150 @@ export interface operations {
12321
13001
  404: components["responses"]["NotFound"];
12322
13002
  };
12323
13003
  };
13004
+ getAuthBranding: {
13005
+ parameters: {
13006
+ query?: never;
13007
+ header?: never;
13008
+ path: {
13009
+ orgSlug: components["parameters"]["OrgSlug"];
13010
+ projectName: components["parameters"]["ProjectName"];
13011
+ };
13012
+ cookie?: never;
13013
+ };
13014
+ requestBody?: never;
13015
+ responses: {
13016
+ /** @description `{brand, effectiveMethods}` */
13017
+ 200: {
13018
+ headers: {
13019
+ [name: string]: unknown;
13020
+ };
13021
+ content: {
13022
+ "application/json": components["schemas"]["AuthBranding"];
13023
+ };
13024
+ };
13025
+ 404: components["responses"]["NotFound"];
13026
+ };
13027
+ };
13028
+ putAuthBranding: {
13029
+ parameters: {
13030
+ query?: never;
13031
+ header?: never;
13032
+ path: {
13033
+ orgSlug: components["parameters"]["OrgSlug"];
13034
+ projectName: components["parameters"]["ProjectName"];
13035
+ };
13036
+ cookie?: never;
13037
+ };
13038
+ requestBody: {
13039
+ content: {
13040
+ "application/json": components["schemas"]["SignInBrand"];
13041
+ };
13042
+ };
13043
+ responses: {
13044
+ /** @description `{brand, effectiveMethods}` */
13045
+ 200: {
13046
+ headers: {
13047
+ [name: string]: unknown;
13048
+ };
13049
+ content: {
13050
+ "application/json": components["schemas"]["AuthBranding"];
13051
+ };
13052
+ };
13053
+ 400: components["responses"]["BadRequest"];
13054
+ /** @description `not_granted` */
13055
+ 404: {
13056
+ headers: {
13057
+ [name: string]: unknown;
13058
+ };
13059
+ content?: never;
13060
+ };
13061
+ };
13062
+ };
13063
+ getAuthFunnel: {
13064
+ parameters: {
13065
+ query?: {
13066
+ days?: number;
13067
+ };
13068
+ header?: never;
13069
+ path: {
13070
+ orgSlug: components["parameters"]["OrgSlug"];
13071
+ projectName: components["parameters"]["ProjectName"];
13072
+ };
13073
+ cookie?: never;
13074
+ };
13075
+ requestBody?: never;
13076
+ responses: {
13077
+ /** @description `{days, rows: [{day, event, key, n}]}` */
13078
+ 200: {
13079
+ headers: {
13080
+ [name: string]: unknown;
13081
+ };
13082
+ content: {
13083
+ "application/json": Record<string, never>;
13084
+ };
13085
+ };
13086
+ };
13087
+ };
13088
+ previewAuthBranding: {
13089
+ parameters: {
13090
+ query?: {
13091
+ ticket?: string;
13092
+ lang?: "ko" | "en" | "ja";
13093
+ theme?: "light" | "dark" | "system";
13094
+ state?: string;
13095
+ draft?: string;
13096
+ };
13097
+ header?: never;
13098
+ path: {
13099
+ orgSlug: components["parameters"]["OrgSlug"];
13100
+ projectName: components["parameters"]["ProjectName"];
13101
+ };
13102
+ cookie?: never;
13103
+ };
13104
+ requestBody?: never;
13105
+ responses: {
13106
+ /** @description HTML */
13107
+ 200: {
13108
+ headers: {
13109
+ [name: string]: unknown;
13110
+ };
13111
+ content: {
13112
+ "text/html": string;
13113
+ };
13114
+ };
13115
+ 400: components["responses"]["BadRequest"];
13116
+ /** @description no session and no valid ticket */
13117
+ 401: {
13118
+ headers: {
13119
+ [name: string]: unknown;
13120
+ };
13121
+ content?: never;
13122
+ };
13123
+ };
13124
+ };
13125
+ mintAuthBrandingPreviewTicket: {
13126
+ parameters: {
13127
+ query?: never;
13128
+ header?: never;
13129
+ path: {
13130
+ orgSlug: components["parameters"]["OrgSlug"];
13131
+ projectName: components["parameters"]["ProjectName"];
13132
+ };
13133
+ cookie?: never;
13134
+ };
13135
+ requestBody?: never;
13136
+ responses: {
13137
+ /** @description `{url, ticket, expiresAt}` */
13138
+ 200: {
13139
+ headers: {
13140
+ [name: string]: unknown;
13141
+ };
13142
+ content: {
13143
+ "application/json": Record<string, never>;
13144
+ };
13145
+ };
13146
+ };
13147
+ };
12324
13148
  setAuthProvider: {
12325
13149
  parameters: {
12326
13150
  query?: never;