@faable/deploy-sdk 2.13.1 → 2.15.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.
@@ -3,6 +3,26 @@
3
3
  * Do not make direct changes to the file.
4
4
  */
5
5
  export interface paths {
6
+ "/project/limits": {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ /**
14
+ * Project creation limits for the caller
15
+ * @description Whether the caller can create another project, and why not
16
+ */
17
+ get: operations["project/limits"];
18
+ put?: never;
19
+ post?: never;
20
+ delete?: never;
21
+ options?: never;
22
+ head?: never;
23
+ patch?: never;
24
+ trace?: never;
25
+ };
6
26
  "/project/{id}/invite": {
7
27
  parameters: {
8
28
  query?: never;
@@ -187,6 +207,26 @@ export interface paths {
187
207
  patch?: never;
188
208
  trace?: never;
189
209
  };
210
+ "/app/repo-linkable": {
211
+ parameters: {
212
+ query?: never;
213
+ header?: never;
214
+ path?: never;
215
+ cookie?: never;
216
+ };
217
+ /**
218
+ * Check whether a repository can be linked to a new app
219
+ * @description Runs the free-plan "one repository, one app" guard before the app exists. Always 200: `linkable:false` names the app that already has the repository (and its project when it is another one of yours), with the same message the link would refuse with.
220
+ */
221
+ get: operations["app/repo_linkable"];
222
+ put?: never;
223
+ post?: never;
224
+ delete?: never;
225
+ options?: never;
226
+ head?: never;
227
+ patch?: never;
228
+ trace?: never;
229
+ };
190
230
  "/app/{app_id}/registry": {
191
231
  parameters: {
192
232
  query?: never;
@@ -833,6 +873,19 @@ export interface paths {
833
873
  export type webhooks = Record<string, never>;
834
874
  export interface components {
835
875
  schemas: {
876
+ ProjectLimits: {
877
+ can_create: boolean;
878
+ reason: "free_project_limit" | "new_account_window" | null;
879
+ message: string | null;
880
+ free_projects: number | null;
881
+ max_free_projects: number | null;
882
+ upgradable_projects: {
883
+ id: string;
884
+ name: string;
885
+ }[];
886
+ new_account_window_ends_at: string | null;
887
+ resolved: boolean;
888
+ };
836
889
  ProjectInvite: {
837
890
  emails: string[];
838
891
  };
@@ -854,6 +907,7 @@ export interface components {
854
907
  team: string;
855
908
  user_id?: string;
856
909
  collaborators: string[];
910
+ product_intent?: "deploy" | "auth" | "undecided";
857
911
  owner_suspended?: boolean;
858
912
  owner_email?: string;
859
913
  /** @description Project creation date */
@@ -889,6 +943,7 @@ export interface components {
889
943
  name: string;
890
944
  description?: string;
891
945
  collaborators?: string[];
946
+ product_intent?: "deploy" | "auth" | "undecided";
892
947
  };
893
948
  ProjectUpdate: {
894
949
  name?: string;
@@ -1096,6 +1151,18 @@ export interface components {
1096
1151
  instance_type?: string;
1097
1152
  notify_deploy_success?: boolean | null;
1098
1153
  };
1154
+ /** @description Repository link pre-check */
1155
+ AppRepoLinkable: {
1156
+ linkable: boolean;
1157
+ /** @enum {string} */
1158
+ code?: "repository_already_linked";
1159
+ message?: string;
1160
+ details?: {
1161
+ app_id: string;
1162
+ app_name?: string;
1163
+ project?: string;
1164
+ };
1165
+ };
1099
1166
  DeployBranchResult: {
1100
1167
  github_branch: string;
1101
1168
  workflow_synced: boolean;
@@ -1132,15 +1199,21 @@ export interface components {
1132
1199
  platform_profiles: {
1133
1200
  name: string;
1134
1201
  action: string;
1202
+ match: string;
1135
1203
  rule_count: number;
1136
1204
  rules?: {
1137
1205
  pattern: string;
1206
+ user_agent?: string;
1207
+ query?: string;
1138
1208
  description?: string;
1139
1209
  }[];
1140
1210
  }[];
1141
1211
  rules: {
1142
- pattern: string;
1212
+ pattern?: string;
1213
+ user_agent?: string;
1214
+ query?: string;
1143
1215
  action: string;
1216
+ match: string;
1144
1217
  description?: string;
1145
1218
  }[];
1146
1219
  };
@@ -1160,6 +1233,12 @@ export interface components {
1160
1233
  controlled_by?: string;
1161
1234
  /** @description Why the deployment failed (shown to the user on ERROR) */
1162
1235
  reason?: string;
1236
+ /** @description Producer's own name for what failed (e.g. detect_no_buildpack). Not the fault taxonomy. */
1237
+ failure_code?: string;
1238
+ /** @description Structured context the producer had before writing `reason` (found_files, subdir_hits, workdir, root_dir…). Never free build output: it must carry no repository paths beyond the entry names detection already lists. */
1239
+ failure_detail?: {
1240
+ [key: string]: unknown;
1241
+ };
1163
1242
  /** @description Scale-to-zero sub-state (admin-only): asleep, waking or null */
1164
1243
  cold_state?: "asleep" | "waking" | null;
1165
1244
  /** @description Runtime image (immutable version tag) this artifact deployment runs */
@@ -1311,6 +1390,11 @@ export interface components {
1311
1390
  * @default null
1312
1391
  */
1313
1392
  dns_message: string | null;
1393
+ /**
1394
+ * @description Advisory for a verified domain whose DNS is functional but not the record we publish
1395
+ * @default null
1396
+ */
1397
+ dns_warning: string | null;
1314
1398
  };
1315
1399
  /** @description Domain */
1316
1400
  Domain: {
@@ -1398,13 +1482,17 @@ export interface components {
1398
1482
  app_id: string | null;
1399
1483
  source: "builtin" | "manual" | "auto";
1400
1484
  action: "deny" | "sink" | "ratelimit" | "probe";
1401
- match: "path" | "user_agent";
1485
+ match: "path" | "user_agent" | "path_user_agent" | "query" | "path_query";
1402
1486
  apply: "all" | "node" | "php" | "manual";
1403
1487
  /** @description Runtimes excluded from `apply` (e.g. ["php"]) */
1404
1488
  except?: ("all" | "node" | "php" | "manual")[];
1405
1489
  rules: {
1406
- /** @description RE2 path-regex fragment */
1490
+ /** @description RE2 fragment; see the profile `match` */
1407
1491
  pattern: string;
1492
+ /** @description RE2 fragment matched against User-Agent. Only in `path_user_agent` profiles, where BOTH must match. */
1493
+ user_agent?: string;
1494
+ /** @description LITERAL query parameter name (never a regex). Only in `path_query` profiles, where BOTH must match. */
1495
+ query?: string;
1408
1496
  /** @description What this rule blocks (human annotation) */
1409
1497
  description?: string;
1410
1498
  }[];
@@ -1455,11 +1543,15 @@ export interface components {
1455
1543
  app_id?: string;
1456
1544
  source?: "builtin" | "manual" | "auto";
1457
1545
  action?: "deny" | "sink" | "ratelimit" | "probe";
1458
- match?: "path" | "user_agent";
1546
+ match?: "path" | "user_agent" | "path_user_agent" | "query" | "path_query";
1459
1547
  apply?: "all" | "node" | "php" | "manual";
1460
1548
  rules?: {
1461
- /** @description RE2 path-regex fragment */
1549
+ /** @description RE2 fragment; see the profile `match` */
1462
1550
  pattern: string;
1551
+ /** @description RE2 fragment matched against User-Agent. Only in `path_user_agent` profiles, where BOTH must match. */
1552
+ user_agent?: string;
1553
+ /** @description LITERAL query parameter name (never a regex). Only in `path_query` profiles, where BOTH must match. */
1554
+ query?: string;
1463
1555
  /** @description What this rule blocks (human annotation) */
1464
1556
  description?: string;
1465
1557
  }[];
@@ -1471,11 +1563,15 @@ export interface components {
1471
1563
  WafProfileUpdate: {
1472
1564
  name?: string;
1473
1565
  action?: "deny" | "sink" | "ratelimit" | "probe";
1474
- match?: "path" | "user_agent";
1566
+ match?: "path" | "user_agent" | "path_user_agent" | "query" | "path_query";
1475
1567
  apply?: "all" | "node" | "php" | "manual";
1476
1568
  rules?: {
1477
- /** @description RE2 path-regex fragment */
1569
+ /** @description RE2 fragment; see the profile `match` */
1478
1570
  pattern: string;
1571
+ /** @description RE2 fragment matched against User-Agent. Only in `path_user_agent` profiles, where BOTH must match. */
1572
+ user_agent?: string;
1573
+ /** @description LITERAL query parameter name (never a regex). Only in `path_query` profiles, where BOTH must match. */
1574
+ query?: string;
1479
1575
  /** @description What this rule blocks (human annotation) */
1480
1576
  description?: string;
1481
1577
  }[];
@@ -1742,6 +1838,7 @@ export interface components {
1742
1838
  id: string;
1743
1839
  team: string;
1744
1840
  kind: "runtime" | "builder" | "fetcher" | "buildkit";
1841
+ role: "workload" | "cluster";
1745
1842
  /** @description Canonical key: node:22, python:3.11, static, fetcher, buildkit */
1746
1843
  key: string;
1747
1844
  /** @description Repository ref without tag */
@@ -1752,6 +1849,36 @@ export interface components {
1752
1849
  min_version: string;
1753
1850
  /** @description A CI registration of a newer release moves current */
1754
1851
  auto_promote: boolean;
1852
+ rollout: {
1853
+ mode: "manual" | "auto";
1854
+ /** @default null */
1855
+ target: string | null;
1856
+ /** @default null */
1857
+ previous: string | null;
1858
+ state: "idle" | "running" | "reverting" | "halted" | "done" | "stalled";
1859
+ /**
1860
+ * Format: date-time
1861
+ * @default null
1862
+ */
1863
+ started_at: string | null;
1864
+ /**
1865
+ * Format: date-time
1866
+ * @default null
1867
+ */
1868
+ updated_at: string | null;
1869
+ /**
1870
+ * Format: date-time
1871
+ * @default null
1872
+ */
1873
+ deadline_at: string | null;
1874
+ failures: number;
1875
+ /** @default null */
1876
+ halted_reason: string | null;
1877
+ /** @default null */
1878
+ failed_version: string | null;
1879
+ /** @default null */
1880
+ gate: string | null;
1881
+ };
1755
1882
  versions: {
1756
1883
  /** @description Buildpacks release, X.Y.Z */
1757
1884
  version: string;
@@ -1809,6 +1936,7 @@ export interface components {
1809
1936
  repository: string;
1810
1937
  current: string;
1811
1938
  min_version: string;
1939
+ role?: "workload" | "cluster";
1812
1940
  auto_promote?: boolean;
1813
1941
  versions?: {
1814
1942
  /** @description Buildpacks release, X.Y.Z */
@@ -1881,6 +2009,26 @@ export interface components {
1881
2009
  }
1882
2010
  export type $defs = Record<string, never>;
1883
2011
  export interface operations {
2012
+ "project/limits": {
2013
+ parameters: {
2014
+ query?: never;
2015
+ header?: never;
2016
+ path?: never;
2017
+ cookie?: never;
2018
+ };
2019
+ requestBody?: never;
2020
+ responses: {
2021
+ /** @description Default Response */
2022
+ 200: {
2023
+ headers: {
2024
+ [name: string]: unknown;
2025
+ };
2026
+ content: {
2027
+ "application/json": components["schemas"]["ProjectLimits"];
2028
+ };
2029
+ };
2030
+ };
2031
+ };
1884
2032
  "project/invite": {
1885
2033
  parameters: {
1886
2034
  query?: never;
@@ -1977,6 +2125,7 @@ export interface operations {
1977
2125
  name: string;
1978
2126
  description?: string;
1979
2127
  collaborators?: string[];
2128
+ product_intent?: "deploy" | "auth" | "undecided";
1980
2129
  };
1981
2130
  };
1982
2131
  };
@@ -1996,6 +2145,7 @@ export interface operations {
1996
2145
  team: string;
1997
2146
  user_id?: string;
1998
2147
  collaborators: string[];
2148
+ product_intent?: "deploy" | "auth" | "undecided";
1999
2149
  owner_suspended?: boolean;
2000
2150
  owner_email?: string;
2001
2151
  /** @description Project creation date */
@@ -2033,6 +2183,7 @@ export interface operations {
2033
2183
  team: string;
2034
2184
  user_id?: string;
2035
2185
  collaborators: string[];
2186
+ product_intent?: "deploy" | "auth" | "undecided";
2036
2187
  owner_suspended?: boolean;
2037
2188
  owner_email?: string;
2038
2189
  /** @description Project creation date */
@@ -2077,6 +2228,7 @@ export interface operations {
2077
2228
  team: string;
2078
2229
  user_id?: string;
2079
2230
  collaborators: string[];
2231
+ product_intent?: "deploy" | "auth" | "undecided";
2080
2232
  owner_suspended?: boolean;
2081
2233
  owner_email?: string;
2082
2234
  /** @description Project creation date */
@@ -2114,6 +2266,7 @@ export interface operations {
2114
2266
  team: string;
2115
2267
  user_id?: string;
2116
2268
  collaborators: string[];
2269
+ product_intent?: "deploy" | "auth" | "undecided";
2117
2270
  owner_suspended?: boolean;
2118
2271
  owner_email?: string;
2119
2272
  /** @description Project creation date */
@@ -2552,6 +2705,31 @@ export interface operations {
2552
2705
  };
2553
2706
  };
2554
2707
  };
2708
+ "app/repo_linkable": {
2709
+ parameters: {
2710
+ query: {
2711
+ /** @description GitHub repository full name, e.g. acme/api */
2712
+ repository: string;
2713
+ /** @description GitHub App installation the repo belongs to */
2714
+ github_installation_id?: string;
2715
+ };
2716
+ header?: never;
2717
+ path?: never;
2718
+ cookie?: never;
2719
+ };
2720
+ requestBody?: never;
2721
+ responses: {
2722
+ /** @description Repository link pre-check */
2723
+ 200: {
2724
+ headers: {
2725
+ [name: string]: unknown;
2726
+ };
2727
+ content: {
2728
+ "application/json": components["schemas"]["AppRepoLinkable"];
2729
+ };
2730
+ };
2731
+ };
2732
+ };
2555
2733
  "app/get_registry": {
2556
2734
  parameters: {
2557
2735
  query?: never;
@@ -2681,6 +2859,7 @@ export interface operations {
2681
2859
  user_agent: string;
2682
2860
  requests: number;
2683
2861
  }[];
2862
+ degraded: string[];
2684
2863
  };
2685
2864
  };
2686
2865
  };
@@ -2982,15 +3161,21 @@ export interface operations {
2982
3161
  platform_profiles: {
2983
3162
  name: string;
2984
3163
  action: string;
3164
+ match: string;
2985
3165
  rule_count: number;
2986
3166
  rules?: {
2987
3167
  pattern: string;
3168
+ user_agent?: string;
3169
+ query?: string;
2988
3170
  description?: string;
2989
3171
  }[];
2990
3172
  }[];
2991
3173
  rules: {
2992
- pattern: string;
3174
+ pattern?: string;
3175
+ user_agent?: string;
3176
+ query?: string;
2993
3177
  action: string;
3178
+ match: string;
2994
3179
  description?: string;
2995
3180
  }[];
2996
3181
  };
@@ -3011,10 +3196,16 @@ export interface operations {
3011
3196
  content: {
3012
3197
  "application/json": {
3013
3198
  /** @description RE2 path-regex fragment, e.g. ^/robots\.txt$ */
3014
- pattern: string;
3199
+ pattern?: string;
3200
+ /** @description RE2 fragment matched against User-Agent. With `pattern`, BOTH must match. */
3201
+ user_agent?: string;
3202
+ /** @description LITERAL query parameter name, e.g. rest_route (never a regex). With `pattern`, BOTH must match. */
3203
+ query?: string;
3015
3204
  /** @description deny → 403 at the edge; sink → synthetic 404 from the platform (the app is never woken) */
3016
3205
  action: "deny" | "sink";
3017
3206
  description?: string;
3207
+ /** @description Accept a user-agent pattern that also matches a known search/AI crawler or uptime monitor, or a query parameter that carries an auth flow */
3208
+ force?: boolean;
3018
3209
  };
3019
3210
  };
3020
3211
  };
@@ -3030,15 +3221,21 @@ export interface operations {
3030
3221
  platform_profiles: {
3031
3222
  name: string;
3032
3223
  action: string;
3224
+ match: string;
3033
3225
  rule_count: number;
3034
3226
  rules?: {
3035
3227
  pattern: string;
3228
+ user_agent?: string;
3229
+ query?: string;
3036
3230
  description?: string;
3037
3231
  }[];
3038
3232
  }[];
3039
3233
  rules: {
3040
- pattern: string;
3234
+ pattern?: string;
3235
+ user_agent?: string;
3236
+ query?: string;
3041
3237
  action: string;
3238
+ match: string;
3042
3239
  description?: string;
3043
3240
  }[];
3044
3241
  };
@@ -3058,7 +3255,10 @@ export interface operations {
3058
3255
  requestBody: {
3059
3256
  content: {
3060
3257
  "application/json": {
3061
- pattern: string;
3258
+ pattern?: string;
3259
+ user_agent?: string;
3260
+ query?: string;
3261
+ action?: "deny" | "sink";
3062
3262
  };
3063
3263
  };
3064
3264
  };
@@ -3074,15 +3274,21 @@ export interface operations {
3074
3274
  platform_profiles: {
3075
3275
  name: string;
3076
3276
  action: string;
3277
+ match: string;
3077
3278
  rule_count: number;
3078
3279
  rules?: {
3079
3280
  pattern: string;
3281
+ user_agent?: string;
3282
+ query?: string;
3080
3283
  description?: string;
3081
3284
  }[];
3082
3285
  }[];
3083
3286
  rules: {
3084
- pattern: string;
3287
+ pattern?: string;
3288
+ user_agent?: string;
3289
+ query?: string;
3085
3290
  action: string;
3291
+ match: string;
3086
3292
  description?: string;
3087
3293
  }[];
3088
3294
  };