@faable/deploy-sdk 2.16.0 → 2.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1073,6 +1073,7 @@ export interface components {
1073
1073
  name: string;
1074
1074
  version?: string;
1075
1075
  };
1076
+ dockerfile_ignored?: boolean;
1076
1077
  } | null;
1077
1078
  mode: components["schemas"]["AppMode"];
1078
1079
  build_mode?: ("local" | "remote") | null;
@@ -1091,6 +1092,8 @@ export interface components {
1091
1092
  region: "gui1" | "poz1" | "ams1";
1092
1093
  /** @description Success deploy emails (first deploy + every promote). Absent/null = enabled; false = muted. Failure emails are never gated by this. */
1093
1094
  notify_deploy_success?: boolean | null;
1095
+ /** @description Whether HTTP/3 is advertised for this app. Absent/null = advertised; false = not advertised. Note it controls the advertisement, not the listener: clients that already discovered HTTP/3 may keep using it until the advertisement expires, and the server does not refuse it. */
1096
+ http3?: boolean | null;
1094
1097
  status: components["schemas"]["AppStatus"];
1095
1098
  repository?: string;
1096
1099
  github_branch?: string;
@@ -1149,13 +1152,15 @@ export interface components {
1149
1152
  runtime?: components["schemas"]["AppRuntime"];
1150
1153
  runtime_strategy?: components["schemas"]["AppRuntimeStrategy"];
1151
1154
  instance_type?: string;
1152
- notify_deploy_success?: boolean | null;
1155
+ /** @default null */
1156
+ notify_deploy_success: boolean | null;
1157
+ /** @default null */
1158
+ http3: boolean | null;
1153
1159
  };
1154
1160
  /** @description Repository link pre-check */
1155
1161
  AppRepoLinkable: {
1156
1162
  linkable: boolean;
1157
- /** @enum {string} */
1158
- code?: "repository_already_linked";
1163
+ code?: "repository_already_linked" | "repository_taken_down";
1159
1164
  message?: string;
1160
1165
  details?: {
1161
1166
  app_id: string;
@@ -1280,6 +1285,20 @@ export interface components {
1280
1285
  static?: {
1281
1286
  spa: boolean;
1282
1287
  };
1288
+ images?: {
1289
+ deviceSizes?: number[];
1290
+ imageSizes?: number[];
1291
+ formats?: string[];
1292
+ qualities?: number[];
1293
+ minimumCacheTTL?: number;
1294
+ unoptimized?: boolean;
1295
+ loader?: string;
1296
+ path?: string;
1297
+ basePath?: string;
1298
+ assetPrefix?: boolean;
1299
+ dangerouslyAllowSVG?: boolean;
1300
+ remotePatterns?: number;
1301
+ };
1283
1302
  };
1284
1303
  DeploymentDetected: {
1285
1304
  buildpack: string;
@@ -1288,6 +1307,7 @@ export interface components {
1288
1307
  name: string;
1289
1308
  version?: string;
1290
1309
  };
1310
+ dockerfile_ignored?: boolean;
1291
1311
  };
1292
1312
  /** @description Deployment */
1293
1313
  Deployment: {
@@ -1362,6 +1382,9 @@ export interface components {
1362
1382
  artifact?: components["schemas"]["DeploymentArtifact"];
1363
1383
  type?: string;
1364
1384
  detected?: components["schemas"]["DeploymentDetected"];
1385
+ plan?: {
1386
+ [key: string]: unknown;
1387
+ };
1365
1388
  };
1366
1389
  DomainStatus: {
1367
1390
  /**
@@ -1371,10 +1394,21 @@ export interface components {
1371
1394
  */
1372
1395
  dns_state: "pending" | "ok" | "misconfigured" | "error";
1373
1396
  /**
1374
- * @description ISO timestamp of the last DNS check
1397
+ * @description ISO timestamp of the last DNS change
1375
1398
  * @default null
1376
1399
  */
1377
1400
  dns_checked_at: string | null;
1401
+ /**
1402
+ * @description ISO timestamp of the last DNS check
1403
+ * @default null
1404
+ */
1405
+ dns_last_seen_at: string | null;
1406
+ /**
1407
+ * @description Why an `error` verdict could not conclude
1408
+ * @default null
1409
+ * @enum {string|null}
1410
+ */
1411
+ dns_error_kind: "transient" | "proxy" | null;
1378
1412
  /**
1379
1413
  * @description Expected CNAME target(s) the fqdn should point to
1380
1414
  * @default []
@@ -1385,6 +1419,11 @@ export interface components {
1385
1419
  * @default []
1386
1420
  */
1387
1421
  dns_observed: string[];
1422
+ /**
1423
+ * @description IPv4 address(es) the expected target currently resolves to
1424
+ * @default []
1425
+ */
1426
+ dns_expected_ips: string[];
1388
1427
  /**
1389
1428
  * @description Human-readable diagnostic of the DNS check
1390
1429
  * @default null
@@ -1837,7 +1876,7 @@ export interface components {
1837
1876
  /** @description PlatformImage ID */
1838
1877
  id: string;
1839
1878
  team: string;
1840
- kind: "runtime" | "builder" | "fetcher" | "buildkit";
1879
+ kind: "runtime" | "builder" | "fetcher" | "buildkit" | "detector";
1841
1880
  role: "workload" | "cluster";
1842
1881
  /** @description Canonical key: node:22, python:3.11, static, fetcher, buildkit */
1843
1882
  key: string;
@@ -1931,7 +1970,7 @@ export interface components {
1931
1970
  payload: components["schemas"]["PlatformImage"];
1932
1971
  };
1933
1972
  PlatformImageCreate: {
1934
- kind: "runtime" | "builder" | "fetcher" | "buildkit";
1973
+ kind: "runtime" | "builder" | "fetcher" | "buildkit" | "detector";
1935
1974
  key: string;
1936
1975
  repository: string;
1937
1976
  current: string;
@@ -2030,8 +2069,11 @@ export interface components {
2030
2069
  * - `build_token_unusable` (401): The deployment reached a terminal phase, so its build token no longer works.
2031
2070
  * - `build_token_app_missing` (401): The app the build token was minted for no longer exists.
2032
2071
  * - `user_token_required` (401): The endpoint acts on behalf of a person and the credential carries no user (an API key or a service account).
2033
- * - `team_required` (400): The operation needs a project: send it in the `x-faable-team` header.
2034
- * - `team_or_scope_required` (401): Listing needs either a project in `x-faable-team` or a global scope on the token.
2072
+ * - `team_required` (400): The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).
2073
+ * - `team_or_scope_required` (401): Listing needs either a project in the `x-faable-project` header or a global scope on the token.
2074
+ * - `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.
2075
+ * - `project_header_conflict` (400): The request names two different projects (`x-faable-project` and the deprecated `x-faable-team`, or a query param). Send only `x-faable-project`.
2076
+ * - `invalid_project_id` (400): The project in `x-faable-project` is not a valid project id (`project_` followed by 24 hex characters).
2035
2077
  * - `user_suspended` (403): The account is suspended. Contact support@faable.com.
2036
2078
  * - `superadmin_only` (403): The operation is restricted to platform staff.
2037
2079
  * - `project_not_found` (404): No project with that id for this caller.
@@ -2066,8 +2108,11 @@ export interface components {
2066
2108
  * - `github_installation_suspended` (403): The GitHub App installation is suspended.
2067
2109
  * - `github_installation_not_found` (412): The installation id is unknown or the App was uninstalled.
2068
2110
  * - `github_repository_blocked` (403): GitHub refuses to serve the source of that repository (403 or 451).
2111
+ * - `github_rate_limited` (429): GitHub is rate-limiting Faable. Transient: retry after a short wait.
2112
+ * - `github_token_refresh_failed` (401): GitHub refused to refresh the stored authorization. The user has to reconnect.
2069
2113
  * - `github_error` (502): GitHub failed upstream. `message` carries what it said.
2070
2114
  * - `repository_already_linked` (409): The repository is already linked to another app. `details.app_id` / `details.app_name` name it.
2115
+ * - `repository_taken_down` (409): An app built from this repository was taken down for abuse, so the repository cannot be linked again. Not a plan limit — upgrading does not lift it. Restoring the taken-down app does.
2071
2116
  * - `invalid_installation_id` (400): The `installation_id` is not a number.
2072
2117
  * - `oidc_untrusted` (401): The GitHub Actions OIDC token was rejected. `message` says why.
2073
2118
  * - `app_repository_mismatch` (403): The app does not exist or is not linked to the repository the token comes from.
@@ -2092,7 +2137,7 @@ export interface components {
2092
2137
  * - `missing_github_event` (400): The `x-github-event` header is missing.
2093
2138
  * @enum {string}
2094
2139
  */
2095
- ApiErrorCode: "bad_request" | "validation_error" | "unauthorized" | "payment_required" | "forbidden" | "not_found" | "method_not_allowed" | "conflict" | "payload_too_large" | "unsupported_media_type" | "unprocessable_entity" | "too_many_requests" | "internal_error" | "gone" | "bad_gateway" | "service_unavailable" | "already_exists" | "invalid_id" | "invalid_query" | "invalid_expand" | "search_not_supported" | "access_denied" | "invalid_token" | "invalid_apikey" | "apikey_expired" | "invalid_build_token" | "build_token_expired" | "build_token_unusable" | "build_token_app_missing" | "user_token_required" | "team_required" | "team_or_scope_required" | "user_suspended" | "superadmin_only" | "project_not_found" | "owner_only" | "owner_not_removable" | "collaborator_not_found" | "invalid_project_name" | "moderation_hold" | "app_not_found" | "repository_not_linked" | "repository_empty" | "branch_missing" | "deploy_mode_conflict" | "deploy_refused" | "invalid_root_dir" | "root_dir_not_found" | "root_dir_mismatch" | "no_workflows" | "no_deploy_workflow" | "invalid_secret_name" | "invalid_secret_context" | "app_secrets_only" | "secrets_access_denied" | "status_forbidden_resource" | "status_forbidden_field" | "status_forbidden_phase" | "github_identity_missing" | "github_installation_missing" | "github_repository_not_found" | "github_token_invalid" | "github_permission_denied" | "github_installation_suspended" | "github_installation_not_found" | "github_repository_blocked" | "github_error" | "repository_already_linked" | "invalid_installation_id" | "oidc_untrusted" | "app_repository_mismatch" | "no_app_for_repository" | "ambiguous_app_for_repository" | "app_disabled" | "app_rate_limited" | "plan_required" | "remote_build_disabled" | "artifact_deploy_disabled" | "artifact_too_large" | "metrics_unavailable" | "transfer_refused" | "user_not_found" | "waf_rule_not_found" | "project_rate_limited" | "project_plan_limited" | "domain_invalid" | "domain_reserved" | "domain_taken" | "invalid_json" | "missing_github_event";
2140
+ ApiErrorCode: "bad_request" | "validation_error" | "unauthorized" | "payment_required" | "forbidden" | "not_found" | "method_not_allowed" | "conflict" | "payload_too_large" | "unsupported_media_type" | "unprocessable_entity" | "too_many_requests" | "internal_error" | "gone" | "bad_gateway" | "service_unavailable" | "already_exists" | "invalid_id" | "invalid_query" | "invalid_expand" | "search_not_supported" | "access_denied" | "invalid_token" | "invalid_apikey" | "apikey_expired" | "invalid_build_token" | "build_token_expired" | "build_token_unusable" | "build_token_app_missing" | "user_token_required" | "team_required" | "team_or_scope_required" | "project_access_denied" | "project_header_conflict" | "invalid_project_id" | "user_suspended" | "superadmin_only" | "project_not_found" | "owner_only" | "owner_not_removable" | "collaborator_not_found" | "invalid_project_name" | "moderation_hold" | "app_not_found" | "repository_not_linked" | "repository_empty" | "branch_missing" | "deploy_mode_conflict" | "deploy_refused" | "invalid_root_dir" | "root_dir_not_found" | "root_dir_mismatch" | "no_workflows" | "no_deploy_workflow" | "invalid_secret_name" | "invalid_secret_context" | "app_secrets_only" | "secrets_access_denied" | "status_forbidden_resource" | "status_forbidden_field" | "status_forbidden_phase" | "github_identity_missing" | "github_installation_missing" | "github_repository_not_found" | "github_token_invalid" | "github_permission_denied" | "github_installation_suspended" | "github_installation_not_found" | "github_repository_blocked" | "github_rate_limited" | "github_token_refresh_failed" | "github_error" | "repository_already_linked" | "repository_taken_down" | "invalid_installation_id" | "oidc_untrusted" | "app_repository_mismatch" | "no_app_for_repository" | "ambiguous_app_for_repository" | "app_disabled" | "app_rate_limited" | "plan_required" | "remote_build_disabled" | "artifact_deploy_disabled" | "artifact_too_large" | "metrics_unavailable" | "transfer_refused" | "user_not_found" | "waf_rule_not_found" | "project_rate_limited" | "project_plan_limited" | "domain_invalid" | "domain_reserved" | "domain_taken" | "invalid_json" | "missing_github_event";
2096
2141
  /** @description Every error response has this shape. Branch on `error_code`, never on `message`: the message is written for a person and may change. */
2097
2142
  ApiErrorResponse: {
2098
2143
  /** @description The HTTP status, repeated. */
@@ -2474,7 +2519,7 @@ export interface operations {
2474
2519
  };
2475
2520
  };
2476
2521
  };
2477
- /** @description `team_or_scope_required` — Listing needs either a project in `x-faable-team` or a global scope on the token.
2522
+ /** @description `team_or_scope_required` — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
2478
2523
  *
2479
2524
  * `unauthorized` — The request carries no valid credentials.
2480
2525
  *
@@ -2577,7 +2622,7 @@ export interface operations {
2577
2622
  *
2578
2623
  * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
2579
2624
  *
2580
- * `team_required` — The operation needs a project: send it in the `x-faable-team` header. */
2625
+ * `team_required` — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`). */
2581
2626
  400: {
2582
2627
  headers: {
2583
2628
  [name: string]: unknown;
@@ -3074,7 +3119,7 @@ export interface operations {
3074
3119
  };
3075
3120
  };
3076
3121
  };
3077
- /** @description `team_or_scope_required` — Listing needs either a project in `x-faable-team` or a global scope on the token.
3122
+ /** @description `team_or_scope_required` — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
3078
3123
  *
3079
3124
  * `unauthorized` — The request carries no valid credentials.
3080
3125
  *
@@ -3173,6 +3218,7 @@ export interface operations {
3173
3218
  name: string;
3174
3219
  version?: string;
3175
3220
  };
3221
+ dockerfile_ignored?: boolean;
3176
3222
  } | null;
3177
3223
  mode: components["schemas"]["AppMode"];
3178
3224
  build_mode?: ("local" | "remote") | null;
@@ -3191,6 +3237,8 @@ export interface operations {
3191
3237
  region: "gui1" | "poz1" | "ams1";
3192
3238
  /** @description Success deploy emails (first deploy + every promote). Absent/null = enabled; false = muted. Failure emails are never gated by this. */
3193
3239
  notify_deploy_success?: boolean | null;
3240
+ /** @description Whether HTTP/3 is advertised for this app. Absent/null = advertised; false = not advertised. Note it controls the advertisement, not the listener: clients that already discovered HTTP/3 may keep using it until the advertisement expires, and the server does not refuse it. */
3241
+ http3?: boolean | null;
3194
3242
  status: components["schemas"]["AppStatus"];
3195
3243
  repository?: string;
3196
3244
  github_branch?: string;
@@ -3220,7 +3268,7 @@ export interface operations {
3220
3268
  *
3221
3269
  * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
3222
3270
  *
3223
- * `team_required` — The operation needs a project: send it in the `x-faable-team` header. */
3271
+ * `team_required` — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`). */
3224
3272
  400: {
3225
3273
  headers: {
3226
3274
  [name: string]: unknown;
@@ -3328,6 +3376,7 @@ export interface operations {
3328
3376
  name: string;
3329
3377
  version?: string;
3330
3378
  };
3379
+ dockerfile_ignored?: boolean;
3331
3380
  } | null;
3332
3381
  mode: components["schemas"]["AppMode"];
3333
3382
  build_mode?: ("local" | "remote") | null;
@@ -3346,6 +3395,8 @@ export interface operations {
3346
3395
  region: "gui1" | "poz1" | "ams1";
3347
3396
  /** @description Success deploy emails (first deploy + every promote). Absent/null = enabled; false = muted. Failure emails are never gated by this. */
3348
3397
  notify_deploy_success?: boolean | null;
3398
+ /** @description Whether HTTP/3 is advertised for this app. Absent/null = advertised; false = not advertised. Note it controls the advertisement, not the listener: clients that already discovered HTTP/3 may keep using it until the advertisement expires, and the server does not refuse it. */
3399
+ http3?: boolean | null;
3349
3400
  status: components["schemas"]["AppStatus"];
3350
3401
  repository?: string;
3351
3402
  github_branch?: string;
@@ -3472,7 +3523,10 @@ export interface operations {
3472
3523
  runtime?: components["schemas"]["AppRuntime"];
3473
3524
  runtime_strategy?: components["schemas"]["AppRuntimeStrategy"];
3474
3525
  instance_type?: string;
3526
+ /** @default null */
3475
3527
  notify_deploy_success?: boolean | null;
3528
+ /** @default null */
3529
+ http3?: boolean | null;
3476
3530
  };
3477
3531
  };
3478
3532
  };
@@ -3503,6 +3557,7 @@ export interface operations {
3503
3557
  name: string;
3504
3558
  version?: string;
3505
3559
  };
3560
+ dockerfile_ignored?: boolean;
3506
3561
  } | null;
3507
3562
  mode: components["schemas"]["AppMode"];
3508
3563
  build_mode?: ("local" | "remote") | null;
@@ -3521,6 +3576,8 @@ export interface operations {
3521
3576
  region: "gui1" | "poz1" | "ams1";
3522
3577
  /** @description Success deploy emails (first deploy + every promote). Absent/null = enabled; false = muted. Failure emails are never gated by this. */
3523
3578
  notify_deploy_success?: boolean | null;
3579
+ /** @description Whether HTTP/3 is advertised for this app. Absent/null = advertised; false = not advertised. Note it controls the advertisement, not the listener: clients that already discovered HTTP/3 may keep using it until the advertisement expires, and the server does not refuse it. */
3580
+ http3?: boolean | null;
3524
3581
  status: components["schemas"]["AppStatus"];
3525
3582
  repository?: string;
3526
3583
  github_branch?: string;
@@ -3667,6 +3724,7 @@ export interface operations {
3667
3724
  name: string;
3668
3725
  version?: string;
3669
3726
  };
3727
+ dockerfile_ignored?: boolean;
3670
3728
  } | null;
3671
3729
  mode: components["schemas"]["AppMode"];
3672
3730
  build_mode?: ("local" | "remote") | null;
@@ -3685,6 +3743,8 @@ export interface operations {
3685
3743
  region: "gui1" | "poz1" | "ams1";
3686
3744
  /** @description Success deploy emails (first deploy + every promote). Absent/null = enabled; false = muted. Failure emails are never gated by this. */
3687
3745
  notify_deploy_success?: boolean | null;
3746
+ /** @description Whether HTTP/3 is advertised for this app. Absent/null = advertised; false = not advertised. Note it controls the advertisement, not the listener: clients that already discovered HTTP/3 may keep using it until the advertisement expires, and the server does not refuse it. */
3747
+ http3?: boolean | null;
3688
3748
  status: components["schemas"]["AppStatus"];
3689
3749
  repository?: string;
3690
3750
  github_branch?: string;
@@ -4552,7 +4612,9 @@ export interface operations {
4552
4612
  };
4553
4613
  };
4554
4614
  };
4555
- /** @description `repository_already_linked` — The repository is already linked to another app. `details.app_id` / `details.app_name` name it. */
4615
+ /** @description `repository_already_linked` — The repository is already linked to another app. `details.app_id` / `details.app_name` name it.
4616
+ *
4617
+ * `repository_taken_down` — An app built from this repository was taken down for abuse, so the repository cannot be linked again. Not a plan limit — upgrading does not lift it. Restoring the taken-down app does. */
4556
4618
  409: {
4557
4619
  headers: {
4558
4620
  [name: string]: unknown;
@@ -4560,7 +4622,7 @@ export interface operations {
4560
4622
  content: {
4561
4623
  "application/json": components["schemas"]["ApiErrorResponse"] & {
4562
4624
  /** @enum {string} */
4563
- error_code?: "repository_already_linked";
4625
+ error_code?: "repository_already_linked" | "repository_taken_down";
4564
4626
  };
4565
4627
  };
4566
4628
  };
@@ -5988,7 +6050,7 @@ export interface operations {
5988
6050
  };
5989
6051
  };
5990
6052
  };
5991
- /** @description `team_or_scope_required` — Listing needs either a project in `x-faable-team` or a global scope on the token.
6053
+ /** @description `team_or_scope_required` — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
5992
6054
  *
5993
6055
  * `unauthorized` — The request carries no valid credentials.
5994
6056
  *
@@ -6111,7 +6173,7 @@ export interface operations {
6111
6173
  *
6112
6174
  * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
6113
6175
  *
6114
- * `team_required` — The operation needs a project: send it in the `x-faable-team` header. */
6176
+ * `team_required` — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`). */
6115
6177
  400: {
6116
6178
  headers: {
6117
6179
  [name: string]: unknown;
@@ -6346,6 +6408,9 @@ export interface operations {
6346
6408
  artifact?: components["schemas"]["DeploymentArtifact"];
6347
6409
  type?: string;
6348
6410
  detected?: components["schemas"]["DeploymentDetected"];
6411
+ plan?: {
6412
+ [key: string]: unknown;
6413
+ };
6349
6414
  };
6350
6415
  };
6351
6416
  };
@@ -6883,7 +6948,7 @@ export interface operations {
6883
6948
  };
6884
6949
  };
6885
6950
  };
6886
- /** @description `team_or_scope_required` — Listing needs either a project in `x-faable-team` or a global scope on the token.
6951
+ /** @description `team_or_scope_required` — Listing needs either a project in the `x-faable-project` header or a global scope on the token.
6887
6952
  *
6888
6953
  * `unauthorized` — The request carries no valid credentials.
6889
6954
  *
@@ -7001,7 +7066,7 @@ export interface operations {
7001
7066
  *
7002
7067
  * `validation_error` — The body, query or path failed schema validation. `details.issues` lists each failing field.
7003
7068
  *
7004
- * `team_required` — The operation needs a project: send it in the `x-faable-team` header.
7069
+ * `team_required` — The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).
7005
7070
  *
7006
7071
  * `domain_invalid` — Not a valid hostname. No protocol, port or path. */
7007
7072
  400: {