@faable/deploy-sdk 2.17.0 → 2.18.0

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.
Files changed (36) hide show
  1. package/dist/FaableDeployApi.d.ts +89 -0
  2. package/dist/FaableDeployApi.d.ts.map +1 -1
  3. package/dist/FaableDeployApi.js +10 -0
  4. package/dist/api/api-types.d.ts +19 -0
  5. package/dist/api/api-types.d.ts.map +1 -1
  6. package/dist/api/generated-client.d.ts +864 -11
  7. package/dist/api/generated-client.d.ts.map +1 -1
  8. package/dist/api/generated-client.js +518 -11
  9. package/dist/api/types.d.ts +4910 -827
  10. package/dist/api/types.d.ts.map +1 -1
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -0
  14. package/dist/informers/Indexer.d.ts +24 -0
  15. package/dist/informers/Indexer.d.ts.map +1 -0
  16. package/dist/informers/Indexer.js +70 -0
  17. package/dist/informers/InformerFactory.d.ts +67 -0
  18. package/dist/informers/InformerFactory.d.ts.map +1 -0
  19. package/dist/informers/InformerFactory.js +184 -0
  20. package/dist/informers/WatchClient.d.ts +38 -0
  21. package/dist/informers/WatchClient.d.ts.map +1 -0
  22. package/dist/informers/WatchClient.js +9 -0
  23. package/dist/informers/deployApiWatchClient.d.ts +4 -0
  24. package/dist/informers/deployApiWatchClient.d.ts.map +1 -0
  25. package/dist/informers/deployApiWatchClient.js +36 -0
  26. package/dist/informers/index.d.ts +6 -0
  27. package/dist/informers/index.d.ts.map +1 -0
  28. package/dist/informers/index.js +5 -0
  29. package/dist/informers/ndjson.d.ts +2 -0
  30. package/dist/informers/ndjson.d.ts.map +1 -0
  31. package/dist/informers/ndjson.js +19 -0
  32. package/dist/informers/rv.d.ts +4 -0
  33. package/dist/informers/rv.d.ts.map +1 -0
  34. package/dist/informers/rv.js +16 -0
  35. package/package.json +1 -1
  36. package/spec/openapi.json +15974 -7114
@@ -30,6 +30,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
30
30
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
31
31
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
32
32
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
33
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
33
34
  */
34
35
  appCheckname(params?: OpQuery<"app/checkname">): Promise<{
35
36
  name: string;
@@ -45,7 +46,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
45
46
  *
46
47
  * @throws {FaableApiError} `already_exists` (400) — A resource with the same unique field already exists. `details.fields` names the field.
47
48
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
48
- * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-team` header.
49
+ * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).
49
50
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
50
51
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
51
52
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
@@ -53,6 +54,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
53
54
  * @throws {FaableApiError} `app_rate_limited` (429) — A new account may only create a few apps in its first 24 hours.
54
55
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
55
56
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
57
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
56
58
  */
57
59
  appCreate(data: OpBody<"app/create">): Promise<{
58
60
  id: string;
@@ -71,9 +73,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
71
73
  runtime: {
72
74
  name: string;
73
75
  version?: string;
76
+ source?: string;
74
77
  };
75
78
  dockerfile_ignored?: boolean;
76
79
  } | null;
80
+ runtime_pin?: {
81
+ name: string;
82
+ version: string;
83
+ pinned_at: string;
84
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
85
+ } | null;
77
86
  mode: import("./types.js").components["schemas"]["AppMode"];
78
87
  build_mode?: ("local" | "remote") | null;
79
88
  deploy_output?: ("image" | "artifact") | null;
@@ -81,6 +90,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
81
90
  coexistence_routing?: ("cookie" | "path") | null;
82
91
  coexistence_keep_versions?: number | null;
83
92
  coexistence_drain_hours?: number | null;
93
+ instance?: string | null;
84
94
  instance_type: string;
85
95
  region: "gui1" | "poz1" | "ams1";
86
96
  notify_deploy_success?: boolean | null;
@@ -116,6 +126,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
116
126
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
117
127
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
118
128
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
129
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
119
130
  */
120
131
  appDelete(id: string): Promise<{
121
132
  id: string;
@@ -134,9 +145,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
134
145
  runtime: {
135
146
  name: string;
136
147
  version?: string;
148
+ source?: string;
137
149
  };
138
150
  dockerfile_ignored?: boolean;
139
151
  } | null;
152
+ runtime_pin?: {
153
+ name: string;
154
+ version: string;
155
+ pinned_at: string;
156
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
157
+ } | null;
140
158
  mode: import("./types.js").components["schemas"]["AppMode"];
141
159
  build_mode?: ("local" | "remote") | null;
142
160
  deploy_output?: ("image" | "artifact") | null;
@@ -144,6 +162,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
144
162
  coexistence_routing?: ("cookie" | "path") | null;
145
163
  coexistence_keep_versions?: number | null;
146
164
  coexistence_drain_hours?: number | null;
165
+ instance?: string | null;
147
166
  instance_type: string;
148
167
  region: "gui1" | "poz1" | "ams1";
149
168
  notify_deploy_success?: boolean | null;
@@ -168,7 +187,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
168
187
  *
169
188
  * Deploy the latest commit now
170
189
  *
171
- * Build and deploy the current head of the deploy branch, without waiting for a push. Same path as a push webhook, including the same-commit dedupe.
190
+ * Build and deploy the current head of the deploy branch, without waiting for a push. Same path as a push webhook, including the same-commit dedupe — unless `force=true`, which rebuilds a commit that is already deployed.
172
191
  *
173
192
  * @throws {FaableApiError} `branch_missing` (400) — The deploy branch does not exist on the repository. `message` lists the branches that do.
174
193
  * @throws {FaableApiError} `deploy_mode_conflict` (400) — The app deploys from its own workflow, so the platform will not create a deployment for it.
@@ -186,11 +205,13 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
186
205
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
187
206
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
188
207
  * @throws {FaableApiError} `github_error` (502) — GitHub failed upstream. `message` carries what it said.
208
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
189
209
  */
190
- appDeployNow(id: string): Promise<{
210
+ appDeployNow(id: string, params?: OpQuery<"app/deploy_now">): Promise<{
191
211
  status: "created";
192
212
  commit: string;
193
213
  branch: string;
214
+ deployment_id?: string;
194
215
  }>;
195
216
  /**
196
217
  * `GET /app/{id}` — operationId: `app/get`
@@ -208,6 +229,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
208
229
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
209
230
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
210
231
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
232
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
211
233
  */
212
234
  appGet(id: string, params?: OpQuery<"app/get">): Promise<{
213
235
  id: string;
@@ -226,9 +248,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
226
248
  runtime: {
227
249
  name: string;
228
250
  version?: string;
251
+ source?: string;
229
252
  };
230
253
  dockerfile_ignored?: boolean;
231
254
  } | null;
255
+ runtime_pin?: {
256
+ name: string;
257
+ version: string;
258
+ pinned_at: string;
259
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
260
+ } | null;
232
261
  mode: import("./types.js").components["schemas"]["AppMode"];
233
262
  build_mode?: ("local" | "remote") | null;
234
263
  deploy_output?: ("image" | "artifact") | null;
@@ -236,6 +265,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
236
265
  coexistence_routing?: ("cookie" | "path") | null;
237
266
  coexistence_keep_versions?: number | null;
238
267
  coexistence_drain_hours?: number | null;
268
+ instance?: string | null;
239
269
  instance_type: string;
240
270
  region: "gui1" | "poz1" | "ams1";
241
271
  notify_deploy_success?: boolean | null;
@@ -269,6 +299,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
269
299
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
270
300
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
271
301
  * @throws {FaableApiError} `bad_gateway` (502) — An upstream the API depends on failed.
302
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
272
303
  */
273
304
  appGetRegistry(app_id: string): Promise<{
274
305
  id: string;
@@ -303,6 +334,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
303
334
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
304
335
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
305
336
  * @throws {FaableApiError} `github_error` (502) — GitHub failed upstream. `message` carries what it said.
337
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
306
338
  */
307
339
  appLinkRepository(id: string, data: OpBody<"app/link_repository">): Promise<{
308
340
  id: string;
@@ -321,9 +353,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
321
353
  runtime: {
322
354
  name: string;
323
355
  version?: string;
356
+ source?: string;
324
357
  };
325
358
  dockerfile_ignored?: boolean;
326
359
  } | null;
360
+ runtime_pin?: {
361
+ name: string;
362
+ version: string;
363
+ pinned_at: string;
364
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
365
+ } | null;
327
366
  mode: import("./types.js").components["schemas"]["AppMode"];
328
367
  build_mode?: ("local" | "remote") | null;
329
368
  deploy_output?: ("image" | "artifact") | null;
@@ -331,6 +370,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
331
370
  coexistence_routing?: ("cookie" | "path") | null;
332
371
  coexistence_keep_versions?: number | null;
333
372
  coexistence_drain_hours?: number | null;
373
+ instance?: string | null;
334
374
  instance_type: string;
335
375
  region: "gui1" | "poz1" | "ams1";
336
376
  notify_deploy_success?: boolean | null;
@@ -359,13 +399,14 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
359
399
  * @throws {FaableApiError} `invalid_expand` (400) — An `?expand=` path is not allowed on this resource.
360
400
  * @throws {FaableApiError} `search_not_supported` (400) — This resource does not support `?q=`.
361
401
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
362
- * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in `x-faable-team` or a global scope on the token.
402
+ * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
363
403
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
364
404
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
365
405
  * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
366
406
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
367
407
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
368
408
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
409
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
369
410
  */
370
411
  appList(params?: Omit<OpQuery<"app/list">, "cursor" | "next">): {
371
412
  all: () => Promise<{
@@ -385,9 +426,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
385
426
  runtime: {
386
427
  name: string;
387
428
  version?: string;
429
+ source?: string;
388
430
  };
389
431
  dockerfile_ignored?: boolean;
390
432
  } | null;
433
+ runtime_pin?: {
434
+ name: string;
435
+ version: string;
436
+ pinned_at: string;
437
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
438
+ } | null;
391
439
  mode: import("./types.js").components["schemas"]["AppMode"];
392
440
  build_mode?: ("local" | "remote") | null;
393
441
  deploy_output?: ("image" | "artifact") | null;
@@ -395,6 +443,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
395
443
  coexistence_routing?: ("cookie" | "path") | null;
396
444
  coexistence_keep_versions?: number | null;
397
445
  coexistence_drain_hours?: number | null;
446
+ instance?: string | null;
398
447
  instance_type: string;
399
448
  region: "gui1" | "poz1" | "ams1";
400
449
  notify_deploy_success?: boolean | null;
@@ -431,9 +480,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
431
480
  runtime: {
432
481
  name: string;
433
482
  version?: string;
483
+ source?: string;
434
484
  };
435
485
  dockerfile_ignored?: boolean;
436
486
  } | null;
487
+ runtime_pin?: {
488
+ name: string;
489
+ version: string;
490
+ pinned_at: string;
491
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
492
+ } | null;
437
493
  mode: import("./types.js").components["schemas"]["AppMode"];
438
494
  build_mode?: ("local" | "remote") | null;
439
495
  deploy_output?: ("image" | "artifact") | null;
@@ -441,6 +497,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
441
497
  coexistence_routing?: ("cookie" | "path") | null;
442
498
  coexistence_keep_versions?: number | null;
443
499
  coexistence_drain_hours?: number | null;
500
+ instance?: string | null;
444
501
  instance_type: string;
445
502
  region: "gui1" | "poz1" | "ams1";
446
503
  notify_deploy_success?: boolean | null;
@@ -480,9 +537,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
480
537
  runtime: {
481
538
  name: string;
482
539
  version?: string;
540
+ source?: string;
483
541
  };
484
542
  dockerfile_ignored?: boolean;
485
543
  } | null;
544
+ runtime_pin?: {
545
+ name: string;
546
+ version: string;
547
+ pinned_at: string;
548
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
549
+ } | null;
486
550
  mode: import("./types.js").components["schemas"]["AppMode"];
487
551
  build_mode?: ("local" | "remote") | null;
488
552
  deploy_output?: ("image" | "artifact") | null;
@@ -490,6 +554,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
490
554
  coexistence_routing?: ("cookie" | "path") | null;
491
555
  coexistence_keep_versions?: number | null;
492
556
  coexistence_drain_hours?: number | null;
557
+ instance?: string | null;
493
558
  instance_type: string;
494
559
  region: "gui1" | "poz1" | "ams1";
495
560
  notify_deploy_success?: boolean | null;
@@ -522,6 +587,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
522
587
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
523
588
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
524
589
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
590
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
525
591
  */
526
592
  appLogs(app_id: string, params?: OpQuery<"app/logs">): Promise<void>;
527
593
  /**
@@ -541,6 +607,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
541
607
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
542
608
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
543
609
  * @throws {FaableApiError} `github_error` (502) — GitHub failed upstream. `message` carries what it said.
610
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
544
611
  */
545
612
  appRepoBranches(id: string): Promise<{
546
613
  branches: string[];
@@ -562,6 +629,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
562
629
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
563
630
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
564
631
  * @throws {FaableApiError} `github_error` (502) — GitHub failed upstream. `message` carries what it said.
632
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
565
633
  */
566
634
  appRepoConfig(id: string): Promise<{
567
635
  root_dir: string | null;
@@ -581,6 +649,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
581
649
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
582
650
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
583
651
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
652
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
584
653
  */
585
654
  appRepoDirectories(id: string): Promise<{
586
655
  directories: {
@@ -607,6 +676,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
607
676
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
608
677
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
609
678
  * @throws {FaableApiError} `github_error` (502) — GitHub failed upstream. `message` carries what it said.
679
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
610
680
  */
611
681
  appRepoLinkable(params?: OpQuery<"app/repo_linkable">): Promise<{
612
682
  linkable: boolean;
@@ -632,6 +702,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
632
702
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
633
703
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
634
704
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
705
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
635
706
  */
636
707
  appRepoWorkflows(id: string): Promise<{
637
708
  workflows: {
@@ -640,6 +711,47 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
640
711
  }[];
641
712
  deploy_workflow: string | null;
642
713
  }>;
714
+ /**
715
+ * `GET /app/{id}/runtime-version` — operationId: `app/runtime_version`
716
+ *
717
+ * Runtime version and upgrade options
718
+ *
719
+ * The app's sticky runtime version (pin), and the versions it could move to — the data behind the upgrade button.
720
+ *
721
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
722
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
723
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
724
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
725
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
726
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
727
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
728
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
729
+ */
730
+ appRuntimeVersion(id: string): Promise<{
731
+ name: string | null;
732
+ pinned: {
733
+ name: string;
734
+ version: string;
735
+ pinned_at: string;
736
+ source: string;
737
+ } | null;
738
+ repo_pin: string | null;
739
+ current: string | null;
740
+ available: string[];
741
+ newest: string | null;
742
+ retiring: {
743
+ retire_at: string;
744
+ replacement: string;
745
+ why: string;
746
+ } | null;
747
+ last_upgrade: {
748
+ deployment_id: string;
749
+ to: string;
750
+ from: string | null;
751
+ phase: string;
752
+ created_at: string;
753
+ } | null;
754
+ }>;
643
755
  /**
644
756
  * `POST /app/{id}/deploy-branch` — operationId: `app/set_deploy_branch`
645
757
  *
@@ -657,6 +769,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
657
769
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
658
770
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
659
771
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
772
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
660
773
  */
661
774
  appSetDeployBranch(id: string, data: OpBody<"app/set_deploy_branch">): Promise<{
662
775
  github_branch: string;
@@ -679,6 +792,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
679
792
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
680
793
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
681
794
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
795
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
682
796
  */
683
797
  appSetDeployMode(id: string, data: OpBody<"app/set_deploy_mode">): Promise<{
684
798
  id: string;
@@ -697,9 +811,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
697
811
  runtime: {
698
812
  name: string;
699
813
  version?: string;
814
+ source?: string;
700
815
  };
701
816
  dockerfile_ignored?: boolean;
702
817
  } | null;
818
+ runtime_pin?: {
819
+ name: string;
820
+ version: string;
821
+ pinned_at: string;
822
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
823
+ } | null;
703
824
  mode: import("./types.js").components["schemas"]["AppMode"];
704
825
  build_mode?: ("local" | "remote") | null;
705
826
  deploy_output?: ("image" | "artifact") | null;
@@ -707,6 +828,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
707
828
  coexistence_routing?: ("cookie" | "path") | null;
708
829
  coexistence_keep_versions?: number | null;
709
830
  coexistence_drain_hours?: number | null;
831
+ instance?: string | null;
710
832
  instance_type: string;
711
833
  region: "gui1" | "poz1" | "ams1";
712
834
  notify_deploy_success?: boolean | null;
@@ -742,6 +864,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
742
864
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
743
865
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
744
866
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
867
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
745
868
  */
746
869
  appSetRootDir(id: string, data: OpBody<"app/set_root_dir">): Promise<{
747
870
  id: string;
@@ -760,9 +883,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
760
883
  runtime: {
761
884
  name: string;
762
885
  version?: string;
886
+ source?: string;
763
887
  };
764
888
  dockerfile_ignored?: boolean;
765
889
  } | null;
890
+ runtime_pin?: {
891
+ name: string;
892
+ version: string;
893
+ pinned_at: string;
894
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
895
+ } | null;
766
896
  mode: import("./types.js").components["schemas"]["AppMode"];
767
897
  build_mode?: ("local" | "remote") | null;
768
898
  deploy_output?: ("image" | "artifact") | null;
@@ -770,6 +900,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
770
900
  coexistence_routing?: ("cookie" | "path") | null;
771
901
  coexistence_keep_versions?: number | null;
772
902
  coexistence_drain_hours?: number | null;
903
+ instance?: string | null;
773
904
  instance_type: string;
774
905
  region: "gui1" | "poz1" | "ams1";
775
906
  notify_deploy_success?: boolean | null;
@@ -789,6 +920,35 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
789
920
  createdAt: string;
790
921
  updatedAt?: string;
791
922
  }>;
923
+ /**
924
+ * `POST /app/{id}/runtime-version` — operationId: `app/set_runtime_version`
925
+ *
926
+ * Change the runtime version
927
+ *
928
+ * Move the app to another supported runtime version. Writes the sticky pin and rebuilds the promoted deployment from its stored source — the version changes with a build, never in place. The previous deployment keeps serving until the rebuild is READY, and remains available to roll back to.
929
+ *
930
+ * @throws {FaableApiError} `unsupported_runtime_version` (400) — The requested version has no runtime image in the platform catalogue. `message` lists the supported versions.
931
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
932
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
933
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
934
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
935
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
936
+ * @throws {FaableApiError} `runtime_pin_unavailable` (409) — The app has no shared runtime to version: docker and static apps bring their own, and an app that never built has nothing to move.
937
+ * @throws {FaableApiError} `runtime_repo_pinned` (409) — The repository forces the runtime version (runtime.txt, engines.node…), which outranks this setting. `message` names the file; remove that pin and push to manage the version from the platform.
938
+ * @throws {FaableApiError} `rebuild_in_flight` (409) — A rebuild of this deployment is already queued or building. `details.deployment_id` is that rebuild.
939
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
940
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
941
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
942
+ */
943
+ appSetRuntimeVersion(id: string, data: OpBody<"app/set_runtime_version">): Promise<{
944
+ pinned: {
945
+ name: string;
946
+ version: string;
947
+ pinned_at: string;
948
+ source: string;
949
+ };
950
+ deployment_id: string | null;
951
+ }>;
792
952
  /**
793
953
  * `GET /app/slug/{slug}` — operationId: `app/slug`
794
954
  *
@@ -802,6 +962,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
802
962
  * @throws {FaableApiError} `app_not_found` (404) — No app with that id or slug in this project.
803
963
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
804
964
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
965
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
805
966
  */
806
967
  appSlug(slug: string): Promise<{
807
968
  id: string;
@@ -820,9 +981,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
820
981
  runtime: {
821
982
  name: string;
822
983
  version?: string;
984
+ source?: string;
823
985
  };
824
986
  dockerfile_ignored?: boolean;
825
987
  } | null;
988
+ runtime_pin?: {
989
+ name: string;
990
+ version: string;
991
+ pinned_at: string;
992
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
993
+ } | null;
826
994
  mode: import("./types.js").components["schemas"]["AppMode"];
827
995
  build_mode?: ("local" | "remote") | null;
828
996
  deploy_output?: ("image" | "artifact") | null;
@@ -830,6 +998,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
830
998
  coexistence_routing?: ("cookie" | "path") | null;
831
999
  coexistence_keep_versions?: number | null;
832
1000
  coexistence_drain_hours?: number | null;
1001
+ instance?: string | null;
833
1002
  instance_type: string;
834
1003
  region: "gui1" | "poz1" | "ams1";
835
1004
  notify_deploy_success?: boolean | null;
@@ -862,6 +1031,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
862
1031
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
863
1032
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
864
1033
  * @throws {FaableApiError} `metrics_unavailable` (503) — Traffic metrics are temporarily unavailable — this is not an app with no traffic.
1034
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
865
1035
  */
866
1036
  appTraffic(app_id: string, params?: OpQuery<"app/traffic">): Promise<{
867
1037
  range: {
@@ -932,6 +1102,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
932
1102
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
933
1103
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
934
1104
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1105
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
935
1106
  */
936
1107
  appUnlinkRepository(id: string): Promise<{
937
1108
  id: string;
@@ -950,9 +1121,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
950
1121
  runtime: {
951
1122
  name: string;
952
1123
  version?: string;
1124
+ source?: string;
953
1125
  };
954
1126
  dockerfile_ignored?: boolean;
955
1127
  } | null;
1128
+ runtime_pin?: {
1129
+ name: string;
1130
+ version: string;
1131
+ pinned_at: string;
1132
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
1133
+ } | null;
956
1134
  mode: import("./types.js").components["schemas"]["AppMode"];
957
1135
  build_mode?: ("local" | "remote") | null;
958
1136
  deploy_output?: ("image" | "artifact") | null;
@@ -960,6 +1138,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
960
1138
  coexistence_routing?: ("cookie" | "path") | null;
961
1139
  coexistence_keep_versions?: number | null;
962
1140
  coexistence_drain_hours?: number | null;
1141
+ instance?: string | null;
963
1142
  instance_type: string;
964
1143
  region: "gui1" | "poz1" | "ams1";
965
1144
  notify_deploy_success?: boolean | null;
@@ -995,6 +1174,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
995
1174
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
996
1175
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
997
1176
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1177
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
998
1178
  */
999
1179
  appUpdate(id: string, data: OpBody<"app/update">): Promise<{
1000
1180
  id: string;
@@ -1013,9 +1193,16 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1013
1193
  runtime: {
1014
1194
  name: string;
1015
1195
  version?: string;
1196
+ source?: string;
1016
1197
  };
1017
1198
  dockerfile_ignored?: boolean;
1018
1199
  } | null;
1200
+ runtime_pin?: {
1201
+ name: string;
1202
+ version: string;
1203
+ pinned_at: string;
1204
+ source: "first_build" | "backfill" | "user_upgrade" | "retirement";
1205
+ } | null;
1019
1206
  mode: import("./types.js").components["schemas"]["AppMode"];
1020
1207
  build_mode?: ("local" | "remote") | null;
1021
1208
  deploy_output?: ("image" | "artifact") | null;
@@ -1023,6 +1210,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1023
1210
  coexistence_routing?: ("cookie" | "path") | null;
1024
1211
  coexistence_keep_versions?: number | null;
1025
1212
  coexistence_drain_hours?: number | null;
1213
+ instance?: string | null;
1026
1214
  instance_type: string;
1027
1215
  region: "gui1" | "poz1" | "ams1";
1028
1216
  notify_deploy_success?: boolean | null;
@@ -1056,6 +1244,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1056
1244
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1057
1245
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1058
1246
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1247
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1059
1248
  */
1060
1249
  appWaf(app_id: string): Promise<{
1061
1250
  enabled: boolean;
@@ -1096,6 +1285,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1096
1285
  * @throws {FaableApiError} `conflict` (409) — The request conflicts with the current state of the resource.
1097
1286
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1098
1287
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1288
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1099
1289
  */
1100
1290
  appWafAddRule(app_id: string, data: OpBody<"app/waf/addRule">): Promise<{
1101
1291
  enabled: boolean;
@@ -1137,6 +1327,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1137
1327
  * @throws {FaableApiError} `conflict` (409) — The request conflicts with the current state of the resource.
1138
1328
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1139
1329
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1330
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1140
1331
  */
1141
1332
  appWafRemoveRule(app_id: string, data: OpBody<"app/waf/removeRule">): Promise<{
1142
1333
  enabled: boolean;
@@ -1161,6 +1352,29 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1161
1352
  description?: string;
1162
1353
  }[];
1163
1354
  }>;
1355
+ /**
1356
+ * `POST /auth-accounts/{account_id}/token` — operationId: `authAccount/issueToken`
1357
+ *
1358
+ * Get a management token for one of your Auth accounts
1359
+ *
1360
+ * Short-lived Management API token for the Faable Auth account, issued when the caller is a member of the project that owns it. 204 when that account has no per-tenant token (the platform account): keep using your own token.
1361
+ *
1362
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1363
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1364
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
1365
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
1366
+ * @throws {FaableApiError} `project_access_denied` (403) — The caller is not a member of the project named in `x-faable-project`, or the credential belongs to another project.
1367
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1368
+ * @throws {FaableApiError} `auth_account_not_found` (404) — There is no Faable Auth account with that id.
1369
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1370
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1371
+ * @throws {FaableApiError} `tenant_token_unavailable` (503) — Faable Auth could not issue a management token for the account right now. Retry later.
1372
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1373
+ */
1374
+ authAccountIssueToken(account_id: string): Promise<{
1375
+ access_token: string;
1376
+ expires_in: number;
1377
+ }>;
1164
1378
  /**
1165
1379
  * `GET /deploy-quota` — operationId: `deploy_quota/get`
1166
1380
  *
@@ -1178,6 +1392,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1178
1392
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1179
1393
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1180
1394
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1395
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1181
1396
  */
1182
1397
  deployQuotaGet(): Promise<{
1183
1398
  limited: boolean;
@@ -1200,6 +1415,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1200
1415
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1201
1416
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1202
1417
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1418
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1203
1419
  */
1204
1420
  deployQuotaRelease(): Promise<{
1205
1421
  released: string[];
@@ -1219,6 +1435,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1219
1435
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1220
1436
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1221
1437
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1438
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1222
1439
  */
1223
1440
  deploymentCancel(deployment_id: string): Promise<{
1224
1441
  id: string;
@@ -1235,6 +1452,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1235
1452
  build_started_at?: string;
1236
1453
  build_ms?: number;
1237
1454
  redeploy_of?: string;
1455
+ rebuild_of?: string;
1456
+ runtime_upgrade?: {
1457
+ name: string;
1458
+ to: string;
1459
+ previous: {
1460
+ name: string;
1461
+ version: string;
1462
+ pinned_at: string;
1463
+ source: string;
1464
+ } | null;
1465
+ };
1238
1466
  quota_released_at?: string;
1239
1467
  trigger?: string | null;
1240
1468
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1252,7 +1480,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1252
1480
  *
1253
1481
  * @throws {FaableApiError} `already_exists` (400) — A resource with the same unique field already exists. `details.fields` names the field.
1254
1482
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1255
- * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-team` header.
1483
+ * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).
1256
1484
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1257
1485
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
1258
1486
  * @throws {FaableApiError} `plan_required` (403) — The build or feature needs a higher plan. `message` says which.
@@ -1263,6 +1491,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1263
1491
  * @throws {FaableApiError} `deploy_refused` (409) — The deploy was refused by quota, plan or an in-flight deployment. `message` says which.
1264
1492
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1265
1493
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1494
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1266
1495
  */
1267
1496
  deploymentCreate(data: OpBody<"deployment/create">): Promise<{
1268
1497
  id: string;
@@ -1279,6 +1508,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1279
1508
  build_started_at?: string;
1280
1509
  build_ms?: number;
1281
1510
  redeploy_of?: string;
1511
+ rebuild_of?: string;
1512
+ runtime_upgrade?: {
1513
+ name: string;
1514
+ to: string;
1515
+ previous: {
1516
+ name: string;
1517
+ version: string;
1518
+ pinned_at: string;
1519
+ source: string;
1520
+ } | null;
1521
+ };
1282
1522
  quota_released_at?: string;
1283
1523
  trigger?: string | null;
1284
1524
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1304,6 +1544,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1304
1544
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1305
1545
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1306
1546
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1547
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1307
1548
  */
1308
1549
  deploymentDelete(id: string): Promise<{
1309
1550
  id: string;
@@ -1320,6 +1561,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1320
1561
  build_started_at?: string;
1321
1562
  build_ms?: number;
1322
1563
  redeploy_of?: string;
1564
+ rebuild_of?: string;
1565
+ runtime_upgrade?: {
1566
+ name: string;
1567
+ to: string;
1568
+ previous: {
1569
+ name: string;
1570
+ version: string;
1571
+ pinned_at: string;
1572
+ source: string;
1573
+ } | null;
1574
+ };
1323
1575
  quota_released_at?: string;
1324
1576
  trigger?: string | null;
1325
1577
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1346,6 +1598,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1346
1598
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1347
1599
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1348
1600
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1601
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1349
1602
  */
1350
1603
  deploymentGet(id: string): Promise<{
1351
1604
  id: string;
@@ -1362,6 +1615,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1362
1615
  build_started_at?: string;
1363
1616
  build_ms?: number;
1364
1617
  redeploy_of?: string;
1618
+ rebuild_of?: string;
1619
+ runtime_upgrade?: {
1620
+ name: string;
1621
+ to: string;
1622
+ previous: {
1623
+ name: string;
1624
+ version: string;
1625
+ pinned_at: string;
1626
+ source: string;
1627
+ } | null;
1628
+ };
1365
1629
  quota_released_at?: string;
1366
1630
  trigger?: string | null;
1367
1631
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1387,6 +1651,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1387
1651
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1388
1652
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1389
1653
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1654
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1390
1655
  */
1391
1656
  deploymentGetLogs(deployment_id: string): Promise<{
1392
1657
  id: string;
@@ -1402,6 +1667,41 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1402
1667
  createdAt?: string;
1403
1668
  updatedAt?: string;
1404
1669
  }>;
1670
+ /**
1671
+ * `GET /deployment/{deployment_id}/timeline` — operationId: `deployment/get_timeline`
1672
+ *
1673
+ * Get a deployment timeline
1674
+ *
1675
+ * Where the deployment spent its time, phase by phase: queue, detection, each build step, hand-off and start-up.
1676
+ *
1677
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1678
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1679
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
1680
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
1681
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1682
+ * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1683
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1684
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1685
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1686
+ */
1687
+ deploymentGetTimeline(deployment_id: string): Promise<{
1688
+ deployment_id: string;
1689
+ outcome: string;
1690
+ started_at: string;
1691
+ total_ms: number;
1692
+ segments: {
1693
+ key: string;
1694
+ label: string;
1695
+ started_at: string;
1696
+ ms: number;
1697
+ measured: boolean;
1698
+ }[];
1699
+ superseded_at?: string;
1700
+ superseded_by?: {
1701
+ deployment_id: string;
1702
+ github_commit: string | null;
1703
+ };
1704
+ }>;
1405
1705
  /**
1406
1706
  * `GET /deployment` — operationId: `deployment/list`
1407
1707
  *
@@ -1411,13 +1711,14 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1411
1711
  * @throws {FaableApiError} `invalid_expand` (400) — An `?expand=` path is not allowed on this resource.
1412
1712
  * @throws {FaableApiError} `search_not_supported` (400) — This resource does not support `?q=`.
1413
1713
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1414
- * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in `x-faable-team` or a global scope on the token.
1714
+ * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
1415
1715
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1416
1716
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
1417
1717
  * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
1418
1718
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1419
1719
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1420
1720
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1721
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1421
1722
  */
1422
1723
  deploymentList(params?: Omit<OpQuery<"deployment/list">, "cursor" | "next">): {
1423
1724
  all: () => Promise<{
@@ -1435,6 +1736,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1435
1736
  build_started_at?: string;
1436
1737
  build_ms?: number;
1437
1738
  redeploy_of?: string;
1739
+ rebuild_of?: string;
1740
+ runtime_upgrade?: {
1741
+ name: string;
1742
+ to: string;
1743
+ previous: {
1744
+ name: string;
1745
+ version: string;
1746
+ pinned_at: string;
1747
+ source: string;
1748
+ } | null;
1749
+ };
1438
1750
  quota_released_at?: string;
1439
1751
  trigger?: string | null;
1440
1752
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1460,6 +1772,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1460
1772
  build_started_at?: string;
1461
1773
  build_ms?: number;
1462
1774
  redeploy_of?: string;
1775
+ rebuild_of?: string;
1776
+ runtime_upgrade?: {
1777
+ name: string;
1778
+ to: string;
1779
+ previous: {
1780
+ name: string;
1781
+ version: string;
1782
+ pinned_at: string;
1783
+ source: string;
1784
+ } | null;
1785
+ };
1463
1786
  quota_released_at?: string;
1464
1787
  trigger?: string | null;
1465
1788
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1488,6 +1811,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1488
1811
  build_started_at?: string;
1489
1812
  build_ms?: number;
1490
1813
  redeploy_of?: string;
1814
+ rebuild_of?: string;
1815
+ runtime_upgrade?: {
1816
+ name: string;
1817
+ to: string;
1818
+ previous: {
1819
+ name: string;
1820
+ version: string;
1821
+ pinned_at: string;
1822
+ source: string;
1823
+ } | null;
1824
+ };
1491
1825
  quota_released_at?: string;
1492
1826
  trigger?: string | null;
1493
1827
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1515,6 +1849,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1515
1849
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1516
1850
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1517
1851
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1852
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1518
1853
  */
1519
1854
  deploymentUpdate(id: string, data: OpBody<"deployment/update">): Promise<{
1520
1855
  id: string;
@@ -1531,6 +1866,17 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1531
1866
  build_started_at?: string;
1532
1867
  build_ms?: number;
1533
1868
  redeploy_of?: string;
1869
+ rebuild_of?: string;
1870
+ runtime_upgrade?: {
1871
+ name: string;
1872
+ to: string;
1873
+ previous: {
1874
+ name: string;
1875
+ version: string;
1876
+ pinned_at: string;
1877
+ source: string;
1878
+ } | null;
1879
+ };
1534
1880
  quota_released_at?: string;
1535
1881
  trigger?: string | null;
1536
1882
  detected?: import("./types.js").components["schemas"]["DeploymentDetected"];
@@ -1548,7 +1894,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1548
1894
  *
1549
1895
  * @throws {FaableApiError} `already_exists` (400) — A resource with the same unique field already exists. `details.fields` names the field.
1550
1896
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1551
- * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-team` header.
1897
+ * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).
1552
1898
  * @throws {FaableApiError} `domain_invalid` (400) — Not a valid hostname. No protocol, port or path.
1553
1899
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1554
1900
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
@@ -1558,6 +1904,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1558
1904
  * @throws {FaableApiError} `domain_taken` (409) — That hostname is already registered on Faable.
1559
1905
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1560
1906
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1907
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1561
1908
  */
1562
1909
  domainCreate(data: OpBody<"domain/create">): Promise<{
1563
1910
  id: string;
@@ -1568,6 +1915,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1568
1915
  verified: boolean;
1569
1916
  active: boolean;
1570
1917
  dns_alias: string | null;
1918
+ dormant_at: string | null;
1919
+ recheck_at: string | null;
1571
1920
  status: import("./types.js").components["schemas"]["DomainStatus"];
1572
1921
  metadata: {
1573
1922
  [key: string]: unknown;
@@ -1590,6 +1939,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1590
1939
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1591
1940
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1592
1941
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1942
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1593
1943
  */
1594
1944
  domainDelete(id: string): Promise<{
1595
1945
  id: string;
@@ -1600,6 +1950,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1600
1950
  verified: boolean;
1601
1951
  active: boolean;
1602
1952
  dns_alias: string | null;
1953
+ dormant_at: string | null;
1954
+ recheck_at: string | null;
1603
1955
  status: import("./types.js").components["schemas"]["DomainStatus"];
1604
1956
  metadata: {
1605
1957
  [key: string]: unknown;
@@ -1619,6 +1971,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1619
1971
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1620
1972
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1621
1973
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
1974
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1622
1975
  */
1623
1976
  domainFqdn(fqdn: string): Promise<{
1624
1977
  id: string;
@@ -1629,6 +1982,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1629
1982
  verified: boolean;
1630
1983
  active: boolean;
1631
1984
  dns_alias: string | null;
1985
+ dormant_at: string | null;
1986
+ recheck_at: string | null;
1632
1987
  status: import("./types.js").components["schemas"]["DomainStatus"];
1633
1988
  metadata: {
1634
1989
  [key: string]: unknown;
@@ -1652,6 +2007,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1652
2007
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1653
2008
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1654
2009
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2010
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1655
2011
  */
1656
2012
  domainGet(id: string): Promise<{
1657
2013
  id: string;
@@ -1662,6 +2018,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1662
2018
  verified: boolean;
1663
2019
  active: boolean;
1664
2020
  dns_alias: string | null;
2021
+ dormant_at: string | null;
2022
+ recheck_at: string | null;
1665
2023
  status: import("./types.js").components["schemas"]["DomainStatus"];
1666
2024
  metadata: {
1667
2025
  [key: string]: unknown;
@@ -1678,13 +2036,14 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1678
2036
  * @throws {FaableApiError} `invalid_expand` (400) — An `?expand=` path is not allowed on this resource.
1679
2037
  * @throws {FaableApiError} `search_not_supported` (400) — This resource does not support `?q=`.
1680
2038
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1681
- * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in `x-faable-team` or a global scope on the token.
2039
+ * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
1682
2040
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1683
2041
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
1684
2042
  * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
1685
2043
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1686
2044
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1687
2045
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2046
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1688
2047
  */
1689
2048
  domainList(params?: Omit<OpQuery<"domain/list">, "cursor" | "next">): {
1690
2049
  all: () => Promise<{
@@ -1696,6 +2055,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1696
2055
  verified: boolean;
1697
2056
  active: boolean;
1698
2057
  dns_alias: string | null;
2058
+ dormant_at: string | null;
2059
+ recheck_at: string | null;
1699
2060
  status: import("./types.js").components["schemas"]["DomainStatus"];
1700
2061
  metadata: {
1701
2062
  [key: string]: unknown;
@@ -1712,6 +2073,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1712
2073
  verified: boolean;
1713
2074
  active: boolean;
1714
2075
  dns_alias: string | null;
2076
+ dormant_at: string | null;
2077
+ recheck_at: string | null;
1715
2078
  status: import("./types.js").components["schemas"]["DomainStatus"];
1716
2079
  metadata: {
1717
2080
  [key: string]: unknown;
@@ -1731,6 +2094,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1731
2094
  verified: boolean;
1732
2095
  active: boolean;
1733
2096
  dns_alias: string | null;
2097
+ dormant_at: string | null;
2098
+ recheck_at: string | null;
1734
2099
  status: import("./types.js").components["schemas"]["DomainStatus"];
1735
2100
  metadata: {
1736
2101
  [key: string]: unknown;
@@ -1739,6 +2104,41 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1739
2104
  updatedAt?: string;
1740
2105
  }>>;
1741
2106
  };
2107
+ /**
2108
+ * `POST /domain/{domain_id}/recheck` — operationId: `domain/recheck`
2109
+ *
2110
+ * Re-check a domain
2111
+ *
2112
+ * Check this domain’s DNS now. A dormant domain wakes up: it is checked and served again, and gets two more days to point at Faable.
2113
+ *
2114
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2115
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2116
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2117
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2118
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2119
+ * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
2120
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2121
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2122
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2123
+ */
2124
+ domainRecheck(domain_id: string): Promise<{
2125
+ id: string;
2126
+ team: string;
2127
+ fqdn: string;
2128
+ tls: boolean;
2129
+ app_id: string | null;
2130
+ verified: boolean;
2131
+ active: boolean;
2132
+ dns_alias: string | null;
2133
+ dormant_at: string | null;
2134
+ recheck_at: string | null;
2135
+ status: import("./types.js").components["schemas"]["DomainStatus"];
2136
+ metadata: {
2137
+ [key: string]: unknown;
2138
+ };
2139
+ createdAt: string;
2140
+ updatedAt?: string;
2141
+ }>;
1742
2142
  /**
1743
2143
  * `POST /domain/{id}` — operationId: `domain/update`
1744
2144
  *
@@ -1755,6 +2155,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1755
2155
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1756
2156
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1757
2157
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2158
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1758
2159
  */
1759
2160
  domainUpdate(id: string, data: OpBody<"domain/update">): Promise<{
1760
2161
  id: string;
@@ -1765,6 +2166,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1765
2166
  verified: boolean;
1766
2167
  active: boolean;
1767
2168
  dns_alias: string | null;
2169
+ dormant_at: string | null;
2170
+ recheck_at: string | null;
1768
2171
  status: import("./types.js").components["schemas"]["DomainStatus"];
1769
2172
  metadata: {
1770
2173
  [key: string]: unknown;
@@ -1772,6 +2175,137 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1772
2175
  createdAt: string;
1773
2176
  updatedAt?: string;
1774
2177
  }>;
2178
+ /**
2179
+ * `GET /egress-allowance` — operationId: `egress_allowance/get`
2180
+ *
2181
+ * Get the project's egress allowance status
2182
+ *
2183
+ * Egress used by the current project today and this month (UTC), against the allowance of its plan, and the highest warning threshold reached. Only the Free plan has a limited allowance.
2184
+ *
2185
+ * @throws {FaableApiError} `invalid_id` (400) — The id in the path is not a valid id for this resource.
2186
+ * @throws {FaableApiError} `invalid_expand` (400) — An `?expand=` path is not allowed on this resource.
2187
+ * @throws {FaableApiError} `access_denied` (401) — The row exists but does not belong to the caller.
2188
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2189
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2190
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2191
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2192
+ * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
2193
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2194
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2195
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2196
+ */
2197
+ egressAllowanceGet(): Promise<{
2198
+ project_id: string;
2199
+ limited: boolean;
2200
+ day: {
2201
+ used_bytes: number;
2202
+ limit_bytes: number | null;
2203
+ threshold: 80 | 90 | 100 | null;
2204
+ resets_at: string;
2205
+ };
2206
+ month: {
2207
+ used_bytes: number;
2208
+ limit_bytes: number | null;
2209
+ threshold: 80 | 90 | 100 | null;
2210
+ resets_at: string;
2211
+ };
2212
+ apps: {
2213
+ app_id: string;
2214
+ day_bytes: number;
2215
+ month_bytes: number;
2216
+ }[];
2217
+ }>;
2218
+ /**
2219
+ * `POST /project-invitations/accept` — operationId: `project_invitations/accept`
2220
+ *
2221
+ * Accept a project invitation
2222
+ *
2223
+ * Joins the project the invitation is for, as the signed-in user, if their verified email is the invited one. `token` is the secret from the invitation link's fragment.
2224
+ *
2225
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2226
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2227
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2228
+ * @throws {FaableApiError} `invitation_email_mismatch` (403) — The invitation is for another email address than the signed-in account. `details.invited_email` shows it masked.
2229
+ * @throws {FaableApiError} `invitation_email_unverified` (403) — The signed-in account has the invited email but hasn't verified it yet.
2230
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2231
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2232
+ * @throws {FaableApiError} `invitation_invalid` (404) — The invitation link is not valid (mistyped, or revoked and replaced).
2233
+ * @throws {FaableApiError} `invitation_used` (409) — The invitation was already accepted or revoked.
2234
+ * @throws {FaableApiError} `invitation_expired` (410) — The invitation expired. Ask for a new one.
2235
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2236
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2237
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2238
+ */
2239
+ projectInvitationsAccept(data: OpBody<"project_invitations/accept">): Promise<{
2240
+ status: "accepted" | "already_member";
2241
+ project_id: string;
2242
+ }>;
2243
+ /**
2244
+ * `POST /project-invitations/{invite_id}/accept` — operationId: `project_invitations/acceptMine`
2245
+ *
2246
+ * Accept one of my project invitations
2247
+ *
2248
+ * Joins the project, as the signed-in user, if their verified email is the invited one.
2249
+ *
2250
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2251
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2252
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2253
+ * @throws {FaableApiError} `invitation_email_mismatch` (403) — The invitation is for another email address than the signed-in account. `details.invited_email` shows it masked.
2254
+ * @throws {FaableApiError} `invitation_email_unverified` (403) — The signed-in account has the invited email but hasn't verified it yet.
2255
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2256
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2257
+ * @throws {FaableApiError} `invitation_invalid` (404) — The invitation link is not valid (mistyped, or revoked and replaced).
2258
+ * @throws {FaableApiError} `invitation_used` (409) — The invitation was already accepted or revoked.
2259
+ * @throws {FaableApiError} `invitation_expired` (410) — The invitation expired. Ask for a new one.
2260
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2261
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2262
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2263
+ */
2264
+ projectInvitationsAcceptMine(invite_id: string): Promise<{
2265
+ status: "accepted" | "already_member";
2266
+ project_id: string;
2267
+ }>;
2268
+ /**
2269
+ * `POST /project-invitations/{invite_id}/decline` — operationId: `project_invitations/declineMine`
2270
+ *
2271
+ * Decline one of my project invitations
2272
+ *
2273
+ * The invitation is spent: its link stops working and it leaves the pending list of the project.
2274
+ *
2275
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2276
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2277
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2278
+ * @throws {FaableApiError} `invitation_email_mismatch` (403) — The invitation is for another email address than the signed-in account. `details.invited_email` shows it masked.
2279
+ * @throws {FaableApiError} `invitation_email_unverified` (403) — The signed-in account has the invited email but hasn't verified it yet.
2280
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2281
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2282
+ * @throws {FaableApiError} `invitation_invalid` (404) — The invitation link is not valid (mistyped, or revoked and replaced).
2283
+ * @throws {FaableApiError} `invitation_used` (409) — The invitation was already accepted or revoked.
2284
+ * @throws {FaableApiError} `invitation_expired` (410) — The invitation expired. Ask for a new one.
2285
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2286
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2287
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2288
+ */
2289
+ projectInvitationsDeclineMine(invite_id: string): Promise<void>;
2290
+ /**
2291
+ * `GET /project-invitations` — operationId: `project_invitations/listMine`
2292
+ *
2293
+ * List my pending project invitations
2294
+ *
2295
+ * Invitations to projects addressed to the signed-in user's email, only if it is verified (`email_verified: false` and an empty list otherwise).
2296
+ *
2297
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2298
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2299
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2300
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2301
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2302
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2303
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2304
+ */
2305
+ projectInvitationsListMine(): Promise<{
2306
+ email_verified: boolean;
2307
+ results: import("./types.js").components["schemas"]["MyProjectInvitation"][];
2308
+ }>;
1775
2309
  /**
1776
2310
  * `POST /project` — operationId: `project/create`
1777
2311
  *
@@ -1779,7 +2313,8 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1779
2313
  *
1780
2314
  * @throws {FaableApiError} `already_exists` (400) — A resource with the same unique field already exists. `details.fields` names the field.
1781
2315
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1782
- * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-team` header.
2316
+ * @throws {FaableApiError} `team_required` (400) — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).
2317
+ * @throws {FaableApiError} `invalid_project_description` (400) — The project description is not acceptable (a link, or over the length limit). `message` says why.
1783
2318
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1784
2319
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
1785
2320
  * @throws {FaableApiError} `project_plan_limited` (402) — The Free plan project cap is reached. Upgrade to create more.
@@ -1788,6 +2323,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1788
2323
  * @throws {FaableApiError} `project_rate_limited` (429) — A new account may only create a few projects in its first hours. It opens with time, or with a plan.
1789
2324
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1790
2325
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2326
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1791
2327
  */
1792
2328
  projectCreate(data: OpBody<"project/create">): Promise<{
1793
2329
  id: string;
@@ -1797,12 +2333,33 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1797
2333
  team: string;
1798
2334
  user_id?: string;
1799
2335
  collaborators: string[];
2336
+ members?: {
2337
+ user_id: string;
2338
+ role: string;
2339
+ }[];
1800
2340
  product_intent?: "deploy" | "auth" | "undecided";
1801
2341
  owner_suspended?: boolean;
1802
2342
  owner_email?: string;
1803
2343
  createdAt: string;
1804
2344
  updatedAt?: string;
1805
2345
  }>;
2346
+ /**
2347
+ * `POST /project/{id}/auth-accounts` — operationId: `project/createAuthAccount`
2348
+ *
2349
+ * Create an Auth account for a project
2350
+ *
2351
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2352
+ * @throws {FaableApiError} `access_denied` (401) — The row exists but does not belong to the caller.
2353
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2354
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2355
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2356
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2357
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2358
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2359
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2360
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2361
+ */
2362
+ projectCreateAuthAccount(id: string, data: OpBody<"project/createAuthAccount">): Promise<void>;
1806
2363
  /**
1807
2364
  * `DELETE /project/{id}` — operationId: `project/delete`
1808
2365
  *
@@ -1819,6 +2376,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1819
2376
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1820
2377
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1821
2378
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2379
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1822
2380
  */
1823
2381
  projectDelete(id: string): Promise<{
1824
2382
  id: string;
@@ -1828,6 +2386,10 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1828
2386
  team: string;
1829
2387
  user_id?: string;
1830
2388
  collaborators: string[];
2389
+ members?: {
2390
+ user_id: string;
2391
+ role: string;
2392
+ }[];
1831
2393
  product_intent?: "deploy" | "auth" | "undecided";
1832
2394
  owner_suspended?: boolean;
1833
2395
  owner_email?: string;
@@ -1850,6 +2412,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1850
2412
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
1851
2413
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1852
2414
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2415
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1853
2416
  */
1854
2417
  projectGet(id: string): Promise<{
1855
2418
  id: string;
@@ -1859,6 +2422,10 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1859
2422
  team: string;
1860
2423
  user_id?: string;
1861
2424
  collaborators: string[];
2425
+ members?: {
2426
+ user_id: string;
2427
+ role: string;
2428
+ }[];
1862
2429
  product_intent?: "deploy" | "auth" | "undecided";
1863
2430
  owner_suspended?: boolean;
1864
2431
  owner_email?: string;
@@ -1878,13 +2445,15 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1878
2445
  * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
1879
2446
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1880
2447
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2448
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1881
2449
  */
1882
2450
  projectInvite(id: string, data: OpBody<"project/invite">): Promise<{
1883
2451
  project: import("./types.js").components["schemas"]["Project"];
1884
2452
  results: {
1885
2453
  email: string;
1886
- status: "invited" | "invited_created_account" | "already_member" | "failed";
2454
+ status: "invited" | "invited_created_account" | "already_member" | "failed" | "pending";
1887
2455
  user_id?: string;
2456
+ error_code?: string;
1888
2457
  }[];
1889
2458
  }>;
1890
2459
  /**
@@ -1901,6 +2470,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1901
2470
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1902
2471
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1903
2472
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2473
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1904
2474
  */
1905
2475
  projectLimits(): Promise<{
1906
2476
  can_create: boolean;
@@ -1924,13 +2494,14 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1924
2494
  * @throws {FaableApiError} `invalid_expand` (400) — An `?expand=` path is not allowed on this resource.
1925
2495
  * @throws {FaableApiError} `search_not_supported` (400) — This resource does not support `?q=`.
1926
2496
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
1927
- * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in `x-faable-team` or a global scope on the token.
2497
+ * @throws {FaableApiError} `team_or_scope_required` (401) — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
1928
2498
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
1929
2499
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
1930
2500
  * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
1931
2501
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
1932
2502
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1933
2503
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2504
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1934
2505
  */
1935
2506
  projectList(params?: Omit<OpQuery<"project/list">, "cursor" | "next">): {
1936
2507
  all: () => Promise<{
@@ -1941,6 +2512,10 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1941
2512
  team: string;
1942
2513
  user_id?: string;
1943
2514
  collaborators: string[];
2515
+ members?: {
2516
+ user_id: string;
2517
+ role: string;
2518
+ }[];
1944
2519
  product_intent?: "deploy" | "auth" | "undecided";
1945
2520
  owner_suspended?: boolean;
1946
2521
  owner_email?: string;
@@ -1955,6 +2530,10 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1955
2530
  team: string;
1956
2531
  user_id?: string;
1957
2532
  collaborators: string[];
2533
+ members?: {
2534
+ user_id: string;
2535
+ role: string;
2536
+ }[];
1958
2537
  product_intent?: "deploy" | "auth" | "undecided";
1959
2538
  owner_suspended?: boolean;
1960
2539
  owner_email?: string;
@@ -1972,6 +2551,10 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1972
2551
  team: string;
1973
2552
  user_id?: string;
1974
2553
  collaborators: string[];
2554
+ members?: {
2555
+ user_id: string;
2556
+ role: string;
2557
+ }[];
1975
2558
  product_intent?: "deploy" | "auth" | "undecided";
1976
2559
  owner_suspended?: boolean;
1977
2560
  owner_email?: string;
@@ -1979,6 +2562,102 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1979
2562
  updatedAt?: string;
1980
2563
  }>>;
1981
2564
  };
2565
+ /**
2566
+ * `GET /project/{id}/activity` — operationId: `project/listActivity`
2567
+ *
2568
+ * Membership activity of a project
2569
+ *
2570
+ * Who joined, left, was invited, removed or changed role, newest first. Changes show up a few seconds after they happen. `next` pages back.
2571
+ *
2572
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2573
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2574
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2575
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2576
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2577
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2578
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2579
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2580
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2581
+ */
2582
+ projectListActivity(id: string, params?: OpQuery<"project/listActivity">): Promise<{
2583
+ results: {
2584
+ id: string;
2585
+ kind: string;
2586
+ at: string;
2587
+ actor: {
2588
+ user_id: string;
2589
+ name: string | null;
2590
+ email: string | null;
2591
+ } | null;
2592
+ subject: {
2593
+ user_id: string;
2594
+ name: string | null;
2595
+ email: string | null;
2596
+ } | null;
2597
+ email: string | null;
2598
+ role: string | null;
2599
+ previous_role: string | null;
2600
+ }[];
2601
+ next: string | null;
2602
+ }>;
2603
+ /**
2604
+ * `GET /project/{id}/auth-accounts` — operationId: `project/listAuthAccounts`
2605
+ *
2606
+ * List a project's Auth accounts
2607
+ *
2608
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2609
+ * @throws {FaableApiError} `access_denied` (401) — The row exists but does not belong to the caller.
2610
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2611
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2612
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2613
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2614
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2615
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2616
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2617
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2618
+ */
2619
+ projectListAuthAccounts(id: string, params?: OpQuery<"project/listAuthAccounts">): Promise<void>;
2620
+ /**
2621
+ * `GET /project/{id}/invitations` — operationId: `project/listInvitations`
2622
+ *
2623
+ * List the pending invitations of a project
2624
+ *
2625
+ * Invitations sent and not yet accepted, revoked or expired. The link secret is never returned.
2626
+ *
2627
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2628
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2629
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2630
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2631
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2632
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2633
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2634
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2635
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2636
+ */
2637
+ projectListInvitations(id: string): Promise<{
2638
+ results: import("./types.js").components["schemas"]["ProjectInvitation"][];
2639
+ }>;
2640
+ /**
2641
+ * `GET /project/{id}/members` — operationId: `project/listMembers`
2642
+ *
2643
+ * List the members of a project
2644
+ *
2645
+ * Members of a project (owner first, then collaborators) with their profile
2646
+ *
2647
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2648
+ * @throws {FaableApiError} `access_denied` (401) — The row exists but does not belong to the caller.
2649
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2650
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2651
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2652
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2653
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2654
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2655
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2656
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2657
+ */
2658
+ projectListMembers(id: string): Promise<{
2659
+ results: import("./types.js").components["schemas"]["ProjectMember"][];
2660
+ }>;
1982
2661
  /**
1983
2662
  * `DELETE /project/{id}/collaborator/{user_id}` — operationId: `project/removeCollaborator`
1984
2663
  *
@@ -1995,6 +2674,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
1995
2674
  * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
1996
2675
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
1997
2676
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2677
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
1998
2678
  */
1999
2679
  projectRemoveCollaborator(id: string, user_id: string): Promise<{
2000
2680
  id: string;
@@ -2004,6 +2684,129 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2004
2684
  team: string;
2005
2685
  user_id?: string;
2006
2686
  collaborators: string[];
2687
+ members?: {
2688
+ user_id: string;
2689
+ role: string;
2690
+ }[];
2691
+ product_intent?: "deploy" | "auth" | "undecided";
2692
+ owner_suspended?: boolean;
2693
+ owner_email?: string;
2694
+ createdAt: string;
2695
+ updatedAt?: string;
2696
+ }>;
2697
+ /**
2698
+ * `DELETE /project/{id}/members/{user_id}` — operationId: `project/removeMember`
2699
+ *
2700
+ * Remove a member, or leave the project
2701
+ *
2702
+ * An owner removes anyone; any member removes themselves (leave). Never the last owner, nor the member who pays for the project.
2703
+ *
2704
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2705
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2706
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2707
+ * @throws {FaableApiError} `owner_only` (403) — Only the project owner can manage collaborators.
2708
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2709
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2710
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2711
+ * @throws {FaableApiError} `member_not_found` (404) — That user is not a member of the project.
2712
+ * @throws {FaableApiError} `last_owner` (409) — A project needs at least one owner: make someone else an owner first, or delete the project.
2713
+ * @throws {FaableApiError} `billing_owner_not_removable` (409) — The member who pays for the project cannot be removed or leave until billing is handed over.
2714
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2715
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2716
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2717
+ */
2718
+ projectRemoveMember(id: string, user_id: string): Promise<{
2719
+ id: string;
2720
+ name: string;
2721
+ description: string;
2722
+ slug: string;
2723
+ team: string;
2724
+ user_id?: string;
2725
+ collaborators: string[];
2726
+ members?: {
2727
+ user_id: string;
2728
+ role: string;
2729
+ }[];
2730
+ product_intent?: "deploy" | "auth" | "undecided";
2731
+ owner_suspended?: boolean;
2732
+ owner_email?: string;
2733
+ createdAt: string;
2734
+ updatedAt?: string;
2735
+ }>;
2736
+ /**
2737
+ * `POST /project/{id}/invitations/{invite_id}/resend` — operationId: `project/resendInvitation`
2738
+ *
2739
+ * Send a pending invitation again
2740
+ *
2741
+ * Emails a new link for the same address and role; the previous link stops working.
2742
+ *
2743
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2744
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2745
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2746
+ * @throws {FaableApiError} `owner_only` (403) — Only the project owner can manage collaborators.
2747
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2748
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2749
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2750
+ * @throws {FaableApiError} `invitation_not_found` (404) — No pending invitation with that id in this project.
2751
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2752
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2753
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2754
+ */
2755
+ projectResendInvitation(id: string, invite_id: string): Promise<void>;
2756
+ /**
2757
+ * `DELETE /project/{id}/invitations/{invite_id}` — operationId: `project/revokeInvitation`
2758
+ *
2759
+ * Revoke a pending invitation
2760
+ *
2761
+ * The link stops working at once.
2762
+ *
2763
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2764
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2765
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2766
+ * @throws {FaableApiError} `owner_only` (403) — Only the project owner can manage collaborators.
2767
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2768
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2769
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2770
+ * @throws {FaableApiError} `invitation_not_found` (404) — No pending invitation with that id in this project.
2771
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2772
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2773
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2774
+ */
2775
+ projectRevokeInvitation(id: string, invite_id: string): Promise<void>;
2776
+ /**
2777
+ * `POST /project/{id}/billing-owner` — operationId: `project/setBillingOwner`
2778
+ *
2779
+ * Hand over who pays for the project
2780
+ *
2781
+ * The member who pays hands billing to another owner. Only for projects without an active subscription; with one, support does it.
2782
+ *
2783
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2784
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2785
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2786
+ * @throws {FaableApiError} `billing_receiver_free_limit` (402) — The receiver already has as many free projects as the plan allows.
2787
+ * @throws {FaableApiError} `billing_owner_only` (403) — Only the member who pays for the project can hand billing over.
2788
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2789
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2790
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2791
+ * @throws {FaableApiError} `billing_receiver_not_owner` (409) — Billing can only be handed to an owner of the project.
2792
+ * @throws {FaableApiError} `billing_transfer_requires_support` (409) — The project has an active subscription; handing it over is done by support.
2793
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2794
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2795
+ * @throws {FaableApiError} `billing_unavailable` (503) — Billing is not answering; nothing was changed.
2796
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2797
+ */
2798
+ projectSetBillingOwner(id: string, data: OpBody<"project/setBillingOwner">): Promise<{
2799
+ id: string;
2800
+ name: string;
2801
+ description: string;
2802
+ slug: string;
2803
+ team: string;
2804
+ user_id?: string;
2805
+ collaborators: string[];
2806
+ members?: {
2807
+ user_id: string;
2808
+ role: string;
2809
+ }[];
2007
2810
  product_intent?: "deploy" | "auth" | "undecided";
2008
2811
  owner_suspended?: boolean;
2009
2812
  owner_email?: string;
@@ -2018,6 +2821,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2018
2821
  * @throws {FaableApiError} `invalid_id` (400) — The id in the path is not a valid id for this resource.
2019
2822
  * @throws {FaableApiError} `already_exists` (400) — A resource with the same unique field already exists. `details.fields` names the field.
2020
2823
  * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2824
+ * @throws {FaableApiError} `invalid_project_description` (400) — The project description is not acceptable (a link, or over the length limit). `message` says why.
2021
2825
  * @throws {FaableApiError} `access_denied` (401) — The row exists but does not belong to the caller.
2022
2826
  * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2023
2827
  * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
@@ -2026,6 +2830,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2026
2830
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
2027
2831
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2028
2832
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2833
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2029
2834
  */
2030
2835
  projectUpdate(id: string, data: OpBody<"project/update">): Promise<{
2031
2836
  id: string;
@@ -2035,6 +2840,48 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2035
2840
  team: string;
2036
2841
  user_id?: string;
2037
2842
  collaborators: string[];
2843
+ members?: {
2844
+ user_id: string;
2845
+ role: string;
2846
+ }[];
2847
+ product_intent?: "deploy" | "auth" | "undecided";
2848
+ owner_suspended?: boolean;
2849
+ owner_email?: string;
2850
+ createdAt: string;
2851
+ updatedAt?: string;
2852
+ }>;
2853
+ /**
2854
+ * `POST /project/{id}/members/{user_id}` — operationId: `project/updateMember`
2855
+ *
2856
+ * Change a member's role
2857
+ *
2858
+ * Owner only. A project always keeps at least one owner (`last_owner`).
2859
+ *
2860
+ * @throws {FaableApiError} `validation_error` (400) — The body, query or path failed schema validation. `details.issues` lists each failing field.
2861
+ * @throws {FaableApiError} `unauthorized` (401) — The request carries no valid credentials.
2862
+ * @throws {FaableApiError} `invalid_token` (401) — The bearer token is missing, malformed or expired.
2863
+ * @throws {FaableApiError} `owner_only` (403) — Only the project owner can manage collaborators.
2864
+ * @throws {FaableApiError} `forbidden` (403) — The credentials are valid but do not allow this operation.
2865
+ * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2866
+ * @throws {FaableApiError} `project_not_found` (404) — No project with that id for this caller.
2867
+ * @throws {FaableApiError} `member_not_found` (404) — That user is not a member of the project.
2868
+ * @throws {FaableApiError} `last_owner` (409) — A project needs at least one owner: make someone else an owner first, or delete the project.
2869
+ * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2870
+ * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2871
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2872
+ */
2873
+ projectUpdateMember(id: string, user_id: string, data: OpBody<"project/updateMember">): Promise<{
2874
+ id: string;
2875
+ name: string;
2876
+ description: string;
2877
+ slug: string;
2878
+ team: string;
2879
+ user_id?: string;
2880
+ collaborators: string[];
2881
+ members?: {
2882
+ user_id: string;
2883
+ role: string;
2884
+ }[];
2038
2885
  product_intent?: "deploy" | "auth" | "undecided";
2039
2886
  owner_suspended?: boolean;
2040
2887
  owner_email?: string;
@@ -2055,6 +2902,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2055
2902
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2056
2903
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2057
2904
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2905
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2058
2906
  */
2059
2907
  secretsCreateBatch(data: OpBody<"secrets/create_batch">): Promise<{
2060
2908
  id: string;
@@ -2086,6 +2934,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2086
2934
  * @throws {FaableApiError} `not_found` (404) — The resource does not exist, or not in the caller’s project.
2087
2935
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2088
2936
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2937
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2089
2938
  */
2090
2939
  secretsDelete(secret_id: string): Promise<void>;
2091
2940
  /**
@@ -2102,6 +2951,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2102
2951
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2103
2952
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2104
2953
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2954
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2105
2955
  */
2106
2956
  secretsListApp(context_id: string, params?: OpQuery<"secrets/list_app">): Promise<{
2107
2957
  next: string | null;
@@ -2119,6 +2969,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2119
2969
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2120
2970
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2121
2971
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
2972
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2122
2973
  */
2123
2974
  secretsUpsert(data: OpBody<"secrets/upsert">): Promise<{
2124
2975
  id: string;
@@ -2147,6 +2998,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2147
2998
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2148
2999
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2149
3000
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
3001
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2150
3002
  */
2151
3003
  usageSummary(params?: OpQuery<"usage/summary">): Promise<{
2152
3004
  resources: {
@@ -2193,6 +3045,7 @@ export declare abstract class GeneratedFaableDeployApi extends FaableApi {
2193
3045
  * @throws {FaableApiError} `user_suspended` (403) — The account is suspended. Contact support@faable.com.
2194
3046
  * @throws {FaableApiError} `too_many_requests` (429) — Rate limit exceeded. Honour the `Retry-After` header.
2195
3047
  * @throws {FaableApiError} `internal_error` (500) — Unexpected server error. Retry later; the request id is logged.
3048
+ * @throws {FaableApiError} `database_unavailable` (503) — Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.
2196
3049
  */
2197
3050
  usageTraffic(): Promise<{
2198
3051
  traffic: {