@cloudfleet/sdk 0.0.1-869c561 → 0.0.1-8857c7b

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 (72) hide show
  1. package/dist/@tanstack/react-query.gen.d.ts +1125 -0
  2. package/dist/@tanstack/react-query.gen.d.ts.map +1 -0
  3. package/dist/@tanstack/react-query.gen.js +1129 -0
  4. package/dist/@tanstack/react-query.gen.js.map +1 -0
  5. package/dist/client/client.gen.d.ts +3 -0
  6. package/dist/client/client.gen.d.ts.map +1 -0
  7. package/dist/client/client.gen.js +220 -0
  8. package/dist/client/client.gen.js.map +1 -0
  9. package/dist/client/index.d.ts +9 -0
  10. package/dist/client/index.d.ts.map +1 -0
  11. package/dist/client/index.js +7 -0
  12. package/dist/client/index.js.map +1 -0
  13. package/dist/client/types.gen.d.ts +121 -0
  14. package/dist/client/types.gen.d.ts.map +1 -0
  15. package/dist/client/types.gen.js +3 -0
  16. package/dist/client/types.gen.js.map +1 -0
  17. package/dist/client/utils.gen.d.ts +38 -0
  18. package/dist/client/utils.gen.d.ts.map +1 -0
  19. package/dist/client/utils.gen.js +229 -0
  20. package/dist/client/utils.gen.js.map +1 -0
  21. package/dist/client.gen.d.ts +4 -4
  22. package/dist/client.gen.d.ts.map +1 -1
  23. package/dist/client.gen.js +2 -4
  24. package/dist/client.gen.js.map +1 -1
  25. package/dist/core/auth.gen.d.ts +19 -0
  26. package/dist/core/auth.gen.d.ts.map +1 -0
  27. package/dist/core/auth.gen.js +15 -0
  28. package/dist/core/auth.gen.js.map +1 -0
  29. package/dist/core/bodySerializer.gen.d.ts +26 -0
  30. package/dist/core/bodySerializer.gen.d.ts.map +1 -0
  31. package/dist/core/bodySerializer.gen.js +58 -0
  32. package/dist/core/bodySerializer.gen.js.map +1 -0
  33. package/dist/core/params.gen.d.ts +44 -0
  34. package/dist/core/params.gen.d.ts.map +1 -0
  35. package/dist/core/params.gen.js +101 -0
  36. package/dist/core/params.gen.js.map +1 -0
  37. package/dist/core/pathSerializer.gen.d.ts +34 -0
  38. package/dist/core/pathSerializer.gen.d.ts.map +1 -0
  39. package/dist/core/pathSerializer.gen.js +107 -0
  40. package/dist/core/pathSerializer.gen.js.map +1 -0
  41. package/dist/core/queryKeySerializer.gen.d.ts +19 -0
  42. package/dist/core/queryKeySerializer.gen.d.ts.map +1 -0
  43. package/dist/core/queryKeySerializer.gen.js +93 -0
  44. package/dist/core/queryKeySerializer.gen.js.map +1 -0
  45. package/dist/core/serverSentEvents.gen.d.ts +72 -0
  46. package/dist/core/serverSentEvents.gen.d.ts.map +1 -0
  47. package/dist/core/serverSentEvents.gen.js +133 -0
  48. package/dist/core/serverSentEvents.gen.js.map +1 -0
  49. package/dist/core/types.gen.d.ts +79 -0
  50. package/dist/core/types.gen.d.ts.map +1 -0
  51. package/dist/core/types.gen.js +3 -0
  52. package/dist/core/types.gen.js.map +1 -0
  53. package/dist/core/utils.gen.d.ts +20 -0
  54. package/dist/core/utils.gen.d.ts.map +1 -0
  55. package/dist/core/utils.gen.js +88 -0
  56. package/dist/core/utils.gen.js.map +1 -0
  57. package/dist/schemas.gen.d.ts +1266 -576
  58. package/dist/schemas.gen.d.ts.map +1 -1
  59. package/dist/schemas.gen.js +2549 -665
  60. package/dist/schemas.gen.js.map +1 -1
  61. package/dist/sdk.gen.d.ts +172 -62
  62. package/dist/sdk.gen.d.ts.map +1 -1
  63. package/dist/sdk.gen.js +217 -164
  64. package/dist/sdk.gen.js.map +1 -1
  65. package/dist/services/kubernetes/api.d.ts +20 -20
  66. package/dist/types.gen.d.ts +1031 -351
  67. package/dist/types.gen.d.ts.map +1 -1
  68. package/dist/zod.gen.d.ts +3441 -2555
  69. package/dist/zod.gen.d.ts.map +1 -1
  70. package/dist/zod.gen.js +1196 -911
  71. package/dist/zod.gen.js.map +1 -1
  72. package/package.json +29 -7
@@ -58,15 +58,10 @@ export const BillingContactSchema = {
58
58
  description: 'Email address used for billing as a string.',
59
59
  example: 'email@example.com'
60
60
  },
61
- first_name: {
62
- type: 'string',
63
- description: 'First name of the billing contact person.',
64
- example: 'John'
65
- },
66
- last_name: {
61
+ individual_name: {
67
62
  type: 'string',
68
- description: 'Last name of the billing contact person.',
69
- example: 'Doe'
63
+ description: 'Name of the billing contact person.',
64
+ example: 'John Doe'
70
65
  },
71
66
  tax_id: {
72
67
  type: 'string',
@@ -79,10 +74,142 @@ export const BillingContactSchema = {
79
74
  nullable: true,
80
75
  description: 'Type of the tax ID.',
81
76
  example: 'de_vat',
82
- enum: ['ad_nrt', 'ae_trn', 'al_tin', 'am_tin', 'ao_tin', 'ar_cuit', 'at_vat', 'au_abn', 'au_arn', 'ba_tin', 'bb_tin', 'be_vat', 'bg_uic', 'bg_vat', 'bh_vat', 'bo_tin', 'br_cnpj', 'br_cpf', 'bs_tin', 'by_tin', 'ca_bn', 'ca_gst_hst', 'ca_pst_bc', 'ca_pst_mb', 'ca_pst_sk', 'ca_qst', 'cd_nif', 'ch_uid', 'ch_vat', 'cl_tin', 'cn_tin', 'co_nit', 'cr_tin', 'cy_vat', 'cz_vat', 'de_stn', 'de_vat', 'dk_vat', 'do_rcn', 'ec_ruc', 'ee_vat', 'eg_tin', 'es_cif', 'es_vat', 'eu_oss_vat', 'fi_vat', 'fr_vat', 'gb_vat', 'ge_vat', 'gn_nif', 'gr_vat', 'hk_br', 'hr_oib', 'hr_vat', 'hu_tin', 'hu_vat', 'id_npwp', 'ie_vat', 'il_vat', 'in_gst', 'is_vat', 'it_vat', 'jp_cn', 'jp_rn', 'jp_trn', 'ke_pin', 'kh_tin', 'kr_brn', 'kz_bin', 'li_uid', 'li_vat', 'lt_vat', 'lu_vat', 'lv_vat', 'ma_vat', 'md_vat', 'me_pib', 'mk_vat', 'mr_nif', 'mt_vat', 'mx_rfc', 'my_frp', 'my_itn', 'my_sst', 'ng_tin', 'nl_vat', 'no_vat', 'no_voec', 'np_pan', 'nz_gst', 'om_vat', 'pe_ruc', 'ph_tin', 'pl_vat', 'pt_vat', 'ro_tin', 'ro_vat', 'rs_pib', 'ru_inn', 'ru_kpp', 'sa_vat', 'se_vat', 'sg_gst', 'sg_uen', 'si_tin', 'si_vat', 'sk_vat', 'sn_ninea', 'sr_fin', 'sv_nit', 'th_vat', 'tj_tin', 'tr_tin', 'tw_vat', 'tz_vat', 'ua_vat', 'ug_tin', 'us_ein', 'uy_ruc', 'uz_tin', 'uz_vat', 've_rif', 'vn_tin', 'xi_vat', 'za_vat', 'zm_tin', 'zw_tin', '']
77
+ enum: [
78
+ 'ad_nrt',
79
+ 'ae_trn',
80
+ 'al_tin',
81
+ 'am_tin',
82
+ 'ao_tin',
83
+ 'ar_cuit',
84
+ 'at_vat',
85
+ 'au_abn',
86
+ 'au_arn',
87
+ 'ba_tin',
88
+ 'bb_tin',
89
+ 'be_vat',
90
+ 'bg_uic',
91
+ 'bg_vat',
92
+ 'bh_vat',
93
+ 'bo_tin',
94
+ 'br_cnpj',
95
+ 'br_cpf',
96
+ 'bs_tin',
97
+ 'by_tin',
98
+ 'ca_bn',
99
+ 'ca_gst_hst',
100
+ 'ca_pst_bc',
101
+ 'ca_pst_mb',
102
+ 'ca_pst_sk',
103
+ 'ca_qst',
104
+ 'cd_nif',
105
+ 'ch_uid',
106
+ 'ch_vat',
107
+ 'cl_tin',
108
+ 'cn_tin',
109
+ 'co_nit',
110
+ 'cr_tin',
111
+ 'cy_vat',
112
+ 'cz_vat',
113
+ 'de_stn',
114
+ 'de_vat',
115
+ 'dk_vat',
116
+ 'do_rcn',
117
+ 'ec_ruc',
118
+ 'ee_vat',
119
+ 'eg_tin',
120
+ 'es_cif',
121
+ 'es_vat',
122
+ 'eu_oss_vat',
123
+ 'fi_vat',
124
+ 'fr_vat',
125
+ 'gb_vat',
126
+ 'ge_vat',
127
+ 'gn_nif',
128
+ 'gr_vat',
129
+ 'hk_br',
130
+ 'hr_oib',
131
+ 'hr_vat',
132
+ 'hu_tin',
133
+ 'hu_vat',
134
+ 'id_npwp',
135
+ 'ie_vat',
136
+ 'il_vat',
137
+ 'in_gst',
138
+ 'is_vat',
139
+ 'it_vat',
140
+ 'jp_cn',
141
+ 'jp_rn',
142
+ 'jp_trn',
143
+ 'ke_pin',
144
+ 'kh_tin',
145
+ 'kr_brn',
146
+ 'kz_bin',
147
+ 'li_uid',
148
+ 'li_vat',
149
+ 'lt_vat',
150
+ 'lu_vat',
151
+ 'lv_vat',
152
+ 'ma_vat',
153
+ 'md_vat',
154
+ 'me_pib',
155
+ 'mk_vat',
156
+ 'mr_nif',
157
+ 'mt_vat',
158
+ 'mx_rfc',
159
+ 'my_frp',
160
+ 'my_itn',
161
+ 'my_sst',
162
+ 'ng_tin',
163
+ 'nl_vat',
164
+ 'no_vat',
165
+ 'no_voec',
166
+ 'np_pan',
167
+ 'nz_gst',
168
+ 'om_vat',
169
+ 'pe_ruc',
170
+ 'ph_tin',
171
+ 'pl_vat',
172
+ 'pt_vat',
173
+ 'ro_tin',
174
+ 'ro_vat',
175
+ 'rs_pib',
176
+ 'ru_inn',
177
+ 'ru_kpp',
178
+ 'sa_vat',
179
+ 'se_vat',
180
+ 'sg_gst',
181
+ 'sg_uen',
182
+ 'si_tin',
183
+ 'si_vat',
184
+ 'sk_vat',
185
+ 'sn_ninea',
186
+ 'sr_fin',
187
+ 'sv_nit',
188
+ 'th_vat',
189
+ 'tj_tin',
190
+ 'tr_tin',
191
+ 'tw_vat',
192
+ 'tz_vat',
193
+ 'ua_vat',
194
+ 'ug_tin',
195
+ 'us_ein',
196
+ 'uy_ruc',
197
+ 'uz_tin',
198
+ 'uz_vat',
199
+ 've_rif',
200
+ 'vn_tin',
201
+ 'xi_vat',
202
+ 'za_vat',
203
+ 'zm_tin',
204
+ 'zw_tin',
205
+ ''
206
+ ]
83
207
  }
84
208
  },
85
- required: ['email', 'first_name', 'last_name'],
209
+ required: [
210
+ 'email',
211
+ 'individual_name'
212
+ ],
86
213
  additionalProperties: false
87
214
  };
88
215
  export const BillingCreditsSchema = {
@@ -93,10 +220,25 @@ export const BillingCreditsSchema = {
93
220
  description: 'Generated unique identifier of the promotional code.',
94
221
  example: '7kUZnH7nnKUFfvc4NK2KQF'
95
222
  },
96
- date_created: {
223
+ type: {
224
+ type: 'string',
225
+ description: 'Type of the promotional code.',
226
+ example: 'credit',
227
+ enum: [
228
+ 'credit',
229
+ 'discount'
230
+ ]
231
+ },
232
+ date_start: {
97
233
  type: 'string',
98
234
  format: 'date-time',
99
- description: 'Date of the credit application. ISO 8601 date string in the UTC timezone.',
235
+ description: 'Timestamp when the credit becomes active. ISO 8601 date string in the UTC timezone.',
236
+ example: '2023-12-20T13:53:32.000Z'
237
+ },
238
+ date_end: {
239
+ type: 'string',
240
+ format: 'date-time',
241
+ description: 'Timestamp when the credit expires or becomes inactive. ISO 8601 date string in the UTC timezone.',
100
242
  example: '2023-12-20T13:53:32.000Z'
101
243
  },
102
244
  code: {
@@ -109,40 +251,25 @@ export const BillingCreditsSchema = {
109
251
  description: 'Description of the promotional code.',
110
252
  example: '10% off on all products'
111
253
  },
112
- products: {
113
- type: 'array',
114
- items: {
115
- type: 'string'
116
- },
117
- description: 'List of product SKUs that the promotional code can be used on.',
118
- example: ['cfke_controlplane', 'cfke_connected_nodes', 'infra_compute', 'infra_storage', 'infra_loadbalancing', 'infra_traffic', 'cfcr_storage']
119
- },
120
- type: {
121
- type: 'string',
122
- description: 'Type of the promotional code.',
123
- example: 'credit',
124
- enum: ['credit', 'discount']
125
- },
126
- value: {
254
+ value_total: {
127
255
  type: 'number',
128
256
  format: 'float',
129
- description: 'Value of the promotional code.',
257
+ description: 'Total value of the promotional code.',
130
258
  example: 10
131
259
  },
132
- billing_period: {
133
- type: 'string',
134
- format: 'date-time',
135
- description: 'Date of the billing cycle. An ISO 8601 date string in the UTC timezone.',
136
- example: '2023-12-20T13:53:32.000Z'
137
- },
138
260
  value_remaining: {
139
261
  type: 'number',
140
262
  format: 'float',
141
- description: 'Value of the promotional code.',
142
- example: 10
263
+ description: 'Remaining value of the promotional code.',
264
+ example: 8
143
265
  }
144
266
  },
145
- required: ['date_created', 'code', 'type', 'value', 'billing_period'],
267
+ required: [
268
+ 'type',
269
+ 'date_start',
270
+ 'code',
271
+ 'value_total'
272
+ ],
146
273
  additionalProperties: false
147
274
  };
148
275
  export const ChartCreateInputSchema = {
@@ -183,7 +310,13 @@ export const ChartCreateInputSchema = {
183
310
  example: 'postgresql'
184
311
  }
185
312
  },
186
- required: ['values', 'version_channel', 'name', 'namespace', 'chart'],
313
+ required: [
314
+ 'values',
315
+ 'version_channel',
316
+ 'name',
317
+ 'namespace',
318
+ 'chart'
319
+ ],
187
320
  additionalProperties: false
188
321
  };
189
322
  export const ChartSchema = {
@@ -227,7 +360,22 @@ export const ChartSchema = {
227
360
  type: 'string',
228
361
  description: 'Status of the chart deployment.',
229
362
  example: 'active',
230
- enum: ['InstallSucceeded', 'InstallFailed', 'UpgradeSucceeded', 'UpgradeFailed', 'TestSucceeded', 'TestFailed', 'RollbackSucceeded', 'RollbackFailed', 'UninstallSucceeded', 'UninstallFailed', 'ArtifactFailed', 'DependencyNotReady', 'Progressing', 'SourceNotReady']
363
+ enum: [
364
+ 'InstallSucceeded',
365
+ 'InstallFailed',
366
+ 'UpgradeSucceeded',
367
+ 'UpgradeFailed',
368
+ 'TestSucceeded',
369
+ 'TestFailed',
370
+ 'RollbackSucceeded',
371
+ 'RollbackFailed',
372
+ 'UninstallSucceeded',
373
+ 'UninstallFailed',
374
+ 'ArtifactFailed',
375
+ 'DependencyNotReady',
376
+ 'Progressing',
377
+ 'SourceNotReady'
378
+ ]
231
379
  },
232
380
  version_current: {
233
381
  type: 'string',
@@ -250,7 +398,18 @@ export const ChartSchema = {
250
398
  example: true
251
399
  }
252
400
  },
253
- required: ['values', 'version_channel', 'name', 'namespace', 'chart', 'status', 'version_current', 'created_at', 'updated_at', 'ready'],
401
+ required: [
402
+ 'values',
403
+ 'version_channel',
404
+ 'name',
405
+ 'namespace',
406
+ 'chart',
407
+ 'status',
408
+ 'version_current',
409
+ 'created_at',
410
+ 'updated_at',
411
+ 'ready'
412
+ ],
254
413
  additionalProperties: false
255
414
  };
256
415
  export const ChartUpdateInputSchema = {
@@ -267,7 +426,10 @@ export const ChartUpdateInputSchema = {
267
426
  example: '2.x.x-cfke.x'
268
427
  }
269
428
  },
270
- required: ['values', 'version_channel'],
429
+ required: [
430
+ 'values',
431
+ 'version_channel'
432
+ ],
271
433
  additionalProperties: false
272
434
  };
273
435
  export const ClusterCreateInputSchema = {
@@ -281,28 +443,45 @@ export const ClusterCreateInputSchema = {
281
443
  description: 'Name of the cluster.',
282
444
  example: 'production-cluster'
283
445
  },
284
- region: {
285
- type: 'string',
286
- description: 'Cloudfleet control plane region. One of "staging", "northamerica-central-1". This field can not be updated after creation.',
287
- default: 'staging',
288
- example: 'northamerica-central-1',
289
- enum: ['staging', 'northamerica-central-1']
290
- },
291
446
  tier: {
292
447
  type: 'string',
293
448
  description: 'Tier of the cluster.',
294
449
  example: 'pro',
295
- enum: ['basic', 'pro']
450
+ enum: [
451
+ 'basic',
452
+ 'pro'
453
+ ]
454
+ },
455
+ region: {
456
+ type: 'string',
457
+ description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
458
+ default: 'staging-1a',
459
+ example: 'northamerica-central-1a',
460
+ enum: [
461
+ 'staging-1a',
462
+ 'northamerica-central-1',
463
+ 'europe-central-1a',
464
+ 'northamerica-central-1a'
465
+ ]
296
466
  },
297
467
  version_channel: {
298
468
  type: 'string',
299
469
  pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
300
470
  description: 'Version of the kubernetes cluster.',
301
471
  default: '1.x.x-cfke.x',
302
- example: '1.29.x-cfke.x'
472
+ example: '1.x.x-cfke.x',
473
+ enum: [
474
+ '1.x.x-cfke.x',
475
+ '1.31.x-cfke.x',
476
+ '1.32.x-cfke.x',
477
+ '1.33.x-cfke.x'
478
+ ]
303
479
  }
304
480
  },
305
- required: ['name', 'tier'],
481
+ required: [
482
+ 'name',
483
+ 'tier'
484
+ ],
306
485
  additionalProperties: false
307
486
  };
308
487
  export const ClusterJoinInformationSchema = {
@@ -311,8 +490,7 @@ export const ClusterJoinInformationSchema = {
311
490
  certificate_authority: {
312
491
  type: 'string',
313
492
  description: 'Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.',
314
- example: `-----BEGIN CERTIFICATE-----
315
- MIIC0DCCAbigAwIBAgI...`
493
+ example: '-----BEGIN CERTIFICATE-----\nMIIC0DCCAbigAwIBAgI...'
316
494
  },
317
495
  endpoint: {
318
496
  type: 'string',
@@ -320,6 +498,11 @@ MIIC0DCCAbigAwIBAgI...`
320
498
  description: 'Internal URL of the Kubernetes cluster control plane. This is the endpoint that kubelet uses to connect to the cluster.',
321
499
  example: 'https://10.31.64.7:6443'
322
500
  },
501
+ cluster_dns: {
502
+ type: 'string',
503
+ description: 'Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.',
504
+ example: '10.96.0.10'
505
+ },
323
506
  auth_key: {
324
507
  type: 'string',
325
508
  description: 'Authentication key for the cluster.',
@@ -336,7 +519,7 @@ MIIC0DCCAbigAwIBAgI...`
336
519
  kubernetes: {
337
520
  type: 'string',
338
521
  description: 'Kubernetes version of the cluster.',
339
- example: '1.29.3'
522
+ example: '1.33.7'
340
523
  },
341
524
  tailscale: {
342
525
  type: 'string',
@@ -347,9 +530,19 @@ MIIC0DCCAbigAwIBAgI...`
347
530
  type: 'string',
348
531
  description: 'Containerd version of the cluster.',
349
532
  example: '1.7.19'
533
+ },
534
+ nvidia_driver: {
535
+ type: 'string',
536
+ description: 'NVIDIA driver version of the cluster.',
537
+ example: '565.0.0'
350
538
  }
351
539
  },
352
- required: ['kubernetes', 'tailscale', 'containerd'],
540
+ required: [
541
+ 'kubernetes',
542
+ 'tailscale',
543
+ 'containerd',
544
+ 'nvidia_driver'
545
+ ],
353
546
  additionalProperties: false,
354
547
  description: 'Versions of the different components of the cluster.'
355
548
  },
@@ -372,12 +565,24 @@ MIIC0DCCAbigAwIBAgI...`
372
565
  example: '//iam.googleapis.com/projects/89014267864/locations/global/workloadIdentityPools/cfke/providers/oidc'
373
566
  }
374
567
  },
375
- required: ['metadata_url', 'aws_role_arn', 'gcp_workload_identity_provider'],
568
+ required: [
569
+ 'metadata_url',
570
+ 'aws_role_arn',
571
+ 'gcp_workload_identity_provider'
572
+ ],
376
573
  additionalProperties: false,
377
- description: "OIDC Information for hosts to access to third party API's."
574
+ description: 'OIDC Information for hosts to access to third party API\'s.'
378
575
  }
379
576
  },
380
- required: ['certificate_authority', 'endpoint', 'auth_key', 'bootstrap_token', 'versions', 'third_party_api_access_config'],
577
+ required: [
578
+ 'certificate_authority',
579
+ 'endpoint',
580
+ 'cluster_dns',
581
+ 'auth_key',
582
+ 'bootstrap_token',
583
+ 'versions',
584
+ 'third_party_api_access_config'
585
+ ],
381
586
  additionalProperties: false
382
587
  };
383
588
  export const ClusterSchema = {
@@ -391,25 +596,26 @@ export const ClusterSchema = {
391
596
  description: 'Name of the cluster.',
392
597
  example: 'production-cluster'
393
598
  },
394
- region: {
395
- type: 'string',
396
- description: 'Cloudfleet control plane region. One of "staging", "northamerica-central-1". This field can not be updated after creation.',
397
- default: 'staging',
398
- example: 'northamerica-central-1',
399
- enum: ['staging', 'northamerica-central-1']
400
- },
401
599
  tier: {
402
600
  type: 'string',
403
601
  description: 'Tier of the cluster.',
404
602
  example: 'pro',
405
- enum: ['basic', 'pro']
603
+ enum: [
604
+ 'basic',
605
+ 'pro'
606
+ ]
406
607
  },
407
- version_channel: {
608
+ region: {
408
609
  type: 'string',
409
- pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
410
- description: 'Version of the kubernetes cluster.',
411
- default: '1.x.x-cfke.x',
412
- example: '1.29.x-cfke.x'
610
+ description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
611
+ default: 'staging-1a',
612
+ example: 'northamerica-central-1a',
613
+ enum: [
614
+ 'staging-1a',
615
+ 'northamerica-central-1',
616
+ 'europe-central-1a',
617
+ 'northamerica-central-1a'
618
+ ]
413
619
  },
414
620
  id: {
415
621
  type: 'string',
@@ -421,32 +627,57 @@ export const ClusterSchema = {
421
627
  type: 'string',
422
628
  description: 'Status of the cluster. When creating a new cluster, set to `active`. When deleting a clusters, set to `deleted`.',
423
629
  example: 'active',
424
- enum: ['active', 'deleted', 'creating', 'deployed', 'failed', 'updating']
630
+ enum: [
631
+ 'active',
632
+ 'disabled',
633
+ 'deleted',
634
+ 'creating',
635
+ 'deployed',
636
+ 'failed',
637
+ 'updating'
638
+ ]
425
639
  },
426
640
  endpoint: {
427
641
  anyOf: [
428
642
  {
429
643
  type: 'string',
430
644
  format: 'uri',
431
- description: 'URL of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
645
+ description: 'URL signed by the private CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster. (Deprecated, use endpoint_public instead)',
432
646
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.cloudfleet.dev:6443'
433
647
  },
434
648
  {
435
649
  type: 'string',
436
- enum: ['']
650
+ enum: [
651
+ ''
652
+ ]
653
+ }
654
+ ]
655
+ },
656
+ endpoint_public: {
657
+ anyOf: [
658
+ {
659
+ type: 'string',
660
+ format: 'uri',
661
+ description: 'URL signed by a public CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
662
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
663
+ },
664
+ {
665
+ type: 'string',
666
+ enum: [
667
+ ''
668
+ ]
437
669
  }
438
670
  ]
439
671
  },
440
672
  certificate_ca: {
441
673
  type: 'string',
442
674
  description: 'Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.',
443
- example: `-----BEGIN CERTIFICATE-----
444
- MIIC0DCCAbigAwIBAgI...`
675
+ example: '-----BEGIN CERTIFICATE-----\nMIIC0DCCAbigAwIBAgI...'
445
676
  },
446
677
  version_current: {
447
678
  type: 'string',
448
679
  description: 'Current version of the cluster.',
449
- example: '1.29.3-cfke.52'
680
+ example: '1.33.7-cfke.264'
450
681
  },
451
682
  created_at: {
452
683
  type: 'string',
@@ -462,9 +693,20 @@ MIIC0DCCAbigAwIBAgI...`
462
693
  type: 'boolean',
463
694
  description: 'Indicates if the cluster is ready to be used.',
464
695
  example: true
696
+ },
697
+ version_channel: {
698
+ type: 'string',
699
+ pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
700
+ description: 'Version of the kubernetes cluster.',
701
+ example: '1.x.x-cfke.x'
465
702
  }
466
703
  },
467
- required: ['name', 'tier', 'id', 'status'],
704
+ required: [
705
+ 'name',
706
+ 'tier',
707
+ 'id',
708
+ 'status'
709
+ ],
468
710
  additionalProperties: false
469
711
  };
470
712
  export const ClusterUpdateInputSchema = {
@@ -478,13 +720,25 @@ export const ClusterUpdateInputSchema = {
478
720
  description: 'Name of the cluster.',
479
721
  example: 'production-cluster'
480
722
  },
723
+ tier: {
724
+ type: 'string',
725
+ description: 'Tier of the cluster.',
726
+ example: 'pro',
727
+ enum: [
728
+ 'basic',
729
+ 'pro'
730
+ ]
731
+ },
481
732
  version_channel: {
482
733
  type: 'string',
483
734
  pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
484
735
  description: 'Version of the kubernetes cluster.',
485
- example: '1.29.x-cfke.x'
736
+ example: '1.x.x-cfke.x'
486
737
  }
487
738
  },
739
+ required: [
740
+ 'tier'
741
+ ],
488
742
  additionalProperties: false
489
743
  };
490
744
  export const FleetCreateInputSchema = {
@@ -500,7 +754,6 @@ export const FleetCreateInputSchema = {
500
754
  description: 'CPU limit in cores.'
501
755
  }
502
756
  },
503
- required: ['cpu'],
504
757
  additionalProperties: false,
505
758
  description: 'Limits define a set of bounds for provisioning capacity.'
506
759
  },
@@ -513,10 +766,11 @@ export const FleetCreateInputSchema = {
513
766
  },
514
767
  project: {
515
768
  type: 'string',
516
- description: 'Project GCP Project id to deploy instances into'
769
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
770
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
771
+ example: 'my-cloudfleet-project'
517
772
  }
518
773
  },
519
- required: ['project'],
520
774
  additionalProperties: false
521
775
  },
522
776
  hetzner: {
@@ -528,10 +782,12 @@ export const FleetCreateInputSchema = {
528
782
  },
529
783
  apiKey: {
530
784
  type: 'string',
531
- description: 'Hetzner Cloud API key with read / write access'
785
+ maxLength: 64,
786
+ minLength: 64,
787
+ pattern: '^[A-Za-z0-9]+$',
788
+ description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
532
789
  }
533
790
  },
534
- required: ['apiKey'],
535
791
  additionalProperties: false
536
792
  },
537
793
  aws: {
@@ -543,12 +799,291 @@ export const FleetCreateInputSchema = {
543
799
  },
544
800
  controllerRoleArn: {
545
801
  type: 'string',
546
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
802
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
803
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
804
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
547
805
  }
548
806
  },
549
- required: ['controllerRoleArn'],
550
807
  additionalProperties: false
551
808
  },
809
+ constraints: {
810
+ type: 'object',
811
+ properties: {
812
+ 'karpenter.sh/capacity-type': {
813
+ type: 'array',
814
+ items: {
815
+ type: 'string',
816
+ enum: [
817
+ 'on-demand',
818
+ 'spot'
819
+ ]
820
+ },
821
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
822
+ },
823
+ 'kubernetes.io/arch': {
824
+ type: 'array',
825
+ items: {
826
+ type: 'string',
827
+ enum: [
828
+ 'amd64',
829
+ 'arm64'
830
+ ]
831
+ },
832
+ description: 'Allowed values for `kubernetes.io/arch`.'
833
+ },
834
+ 'cfke.io/instance-family': {
835
+ type: 'array',
836
+ items: {
837
+ type: 'string',
838
+ enum: [
839
+ 'a1',
840
+ 'a2',
841
+ 'a3',
842
+ 'a4',
843
+ 'c1',
844
+ 'c2',
845
+ 'c2d',
846
+ 'c3',
847
+ 'c3d',
848
+ 'c4',
849
+ 'c4a',
850
+ 'c4d',
851
+ 'c5',
852
+ 'c5a',
853
+ 'c5ad',
854
+ 'c5d',
855
+ 'c5n',
856
+ 'c6a',
857
+ 'c6g',
858
+ 'c6gd',
859
+ 'c6gn',
860
+ 'c6i',
861
+ 'c6id',
862
+ 'c6in',
863
+ 'c7a',
864
+ 'c7g',
865
+ 'c7gd',
866
+ 'c7gn',
867
+ 'c7i',
868
+ 'c7i-flex',
869
+ 'c8g',
870
+ 'c8gd',
871
+ 'cax',
872
+ 'ccx',
873
+ 'cpx',
874
+ 'cx',
875
+ 'd2',
876
+ 'd3',
877
+ 'd3en',
878
+ 'dl1',
879
+ 'dl2q',
880
+ 'e2',
881
+ 'f1',
882
+ 'f2',
883
+ 'g1',
884
+ 'g2',
885
+ 'g4ad',
886
+ 'g4dn',
887
+ 'g5',
888
+ 'g5g',
889
+ 'g6',
890
+ 'g6e',
891
+ 'gr6',
892
+ 'h1',
893
+ 'h3',
894
+ 'hpc6a',
895
+ 'hpc6id',
896
+ 'hpc7a',
897
+ 'hpc7g',
898
+ 'i2',
899
+ 'i3',
900
+ 'i3en',
901
+ 'i4g',
902
+ 'i4i',
903
+ 'i7i',
904
+ 'i7ie',
905
+ 'i8g',
906
+ 'im4gn',
907
+ 'inf1',
908
+ 'inf2',
909
+ 'is4gen',
910
+ 'm1',
911
+ 'm2',
912
+ 'm3',
913
+ 'm4',
914
+ 'm5',
915
+ 'm5a',
916
+ 'm5ad',
917
+ 'm5d',
918
+ 'm5dn',
919
+ 'm5n',
920
+ 'm5zn',
921
+ 'm6a',
922
+ 'm6g',
923
+ 'm6gd',
924
+ 'm6i',
925
+ 'm6id',
926
+ 'm6idn',
927
+ 'm6in',
928
+ 'm7a',
929
+ 'm7g',
930
+ 'm7gd',
931
+ 'm7i',
932
+ 'm7i-flex',
933
+ 'm8g',
934
+ 'm8gd',
935
+ 'n1',
936
+ 'n2',
937
+ 'n2d',
938
+ 'n4',
939
+ 'p3',
940
+ 'p3dn',
941
+ 'p4d',
942
+ 'p4de',
943
+ 'p5',
944
+ 'p5e',
945
+ 'p5en',
946
+ 'p6-b200',
947
+ 'r3',
948
+ 'r4',
949
+ 'r5',
950
+ 'r5a',
951
+ 'r5ad',
952
+ 'r5b',
953
+ 'r5d',
954
+ 'r5dn',
955
+ 'r5n',
956
+ 'r6a',
957
+ 'r6g',
958
+ 'r6gd',
959
+ 'r6i',
960
+ 'r6id',
961
+ 'r6idn',
962
+ 'r6in',
963
+ 'r7a',
964
+ 'r7g',
965
+ 'r7gd',
966
+ 'r7i',
967
+ 'r7iz',
968
+ 'r8g',
969
+ 'r8gd',
970
+ 't2',
971
+ 't2a',
972
+ 't2d',
973
+ 't3',
974
+ 't3a',
975
+ 't4g',
976
+ 'trn1',
977
+ 'trn1n',
978
+ 'u-3tb1',
979
+ 'u-6tb1',
980
+ 'u7i-12tb',
981
+ 'u7i-6tb',
982
+ 'u7i-8tb',
983
+ 'u7in-16tb',
984
+ 'u7in-24tb',
985
+ 'u7in-32tb',
986
+ 'vt1',
987
+ 'x1',
988
+ 'x1e',
989
+ 'x2gd',
990
+ 'x2idn',
991
+ 'x2iedn',
992
+ 'x2iezn',
993
+ 'x4',
994
+ 'x8g',
995
+ 'z1d',
996
+ 'z3'
997
+ ]
998
+ },
999
+ description: 'Allowed values for `cfke.io/instance-family`.'
1000
+ },
1001
+ 'topology.kubernetes.io/region': {
1002
+ type: 'array',
1003
+ items: {
1004
+ type: 'string',
1005
+ enum: [
1006
+ 'africa-south1',
1007
+ 'ap-northeast-1',
1008
+ 'ap-northeast-2',
1009
+ 'ap-northeast-3',
1010
+ 'ap-south-1',
1011
+ 'ap-southeast-1',
1012
+ 'ap-southeast-2',
1013
+ 'ash',
1014
+ 'asia-east1',
1015
+ 'asia-east2',
1016
+ 'asia-northeast1',
1017
+ 'asia-northeast2',
1018
+ 'asia-northeast3',
1019
+ 'asia-south1',
1020
+ 'asia-south2',
1021
+ 'asia-southeast1',
1022
+ 'asia-southeast2',
1023
+ 'australia-southeast1',
1024
+ 'australia-southeast2',
1025
+ 'ca-central-1',
1026
+ 'eu-central-1',
1027
+ 'eu-central-2',
1028
+ 'eu-north-1',
1029
+ 'eu-west-1',
1030
+ 'eu-west-2',
1031
+ 'eu-west-3',
1032
+ 'europe-central2',
1033
+ 'europe-north1',
1034
+ 'europe-southwest1',
1035
+ 'europe-west1',
1036
+ 'europe-west10',
1037
+ 'europe-west12',
1038
+ 'europe-west2',
1039
+ 'europe-west3',
1040
+ 'europe-west4',
1041
+ 'europe-west6',
1042
+ 'europe-west8',
1043
+ 'europe-west9',
1044
+ 'fsn1',
1045
+ 'hel1',
1046
+ 'hil',
1047
+ 'me-central1',
1048
+ 'me-central2',
1049
+ 'me-west1',
1050
+ 'nbg1',
1051
+ 'northamerica-northeast1',
1052
+ 'northamerica-northeast2',
1053
+ 'sa-east-1',
1054
+ 'sin',
1055
+ 'southamerica-east1',
1056
+ 'southamerica-west1',
1057
+ 'us-central1',
1058
+ 'us-east-1',
1059
+ 'us-east-2',
1060
+ 'us-east1',
1061
+ 'us-east4',
1062
+ 'us-east5',
1063
+ 'us-south1',
1064
+ 'us-west-1',
1065
+ 'us-west-2',
1066
+ 'us-west1',
1067
+ 'us-west2',
1068
+ 'us-west3',
1069
+ 'us-west4'
1070
+ ]
1071
+ },
1072
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1073
+ }
1074
+ },
1075
+ additionalProperties: false,
1076
+ description: 'Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.'
1077
+ },
1078
+ scalingProfile: {
1079
+ type: 'string',
1080
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1081
+ example: 'conservative',
1082
+ enum: [
1083
+ 'aggressive',
1084
+ 'conservative'
1085
+ ]
1086
+ },
552
1087
  id: {
553
1088
  type: 'string',
554
1089
  maxLength: 63,
@@ -558,7 +1093,9 @@ export const FleetCreateInputSchema = {
558
1093
  example: 'new-clouds-fleet'
559
1094
  }
560
1095
  },
561
- required: ['id'],
1096
+ required: [
1097
+ 'id'
1098
+ ],
562
1099
  additionalProperties: false
563
1100
  };
564
1101
  export const FleetSchema = {
@@ -574,7 +1111,6 @@ export const FleetSchema = {
574
1111
  description: 'CPU limit in cores.'
575
1112
  }
576
1113
  },
577
- required: ['cpu'],
578
1114
  additionalProperties: false,
579
1115
  description: 'Limits define a set of bounds for provisioning capacity.'
580
1116
  },
@@ -587,10 +1123,11 @@ export const FleetSchema = {
587
1123
  },
588
1124
  project: {
589
1125
  type: 'string',
590
- description: 'Project GCP Project id to deploy instances into'
1126
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1127
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1128
+ example: 'my-cloudfleet-project'
591
1129
  }
592
1130
  },
593
- required: ['project'],
594
1131
  additionalProperties: false
595
1132
  },
596
1133
  hetzner: {
@@ -602,10 +1139,10 @@ export const FleetSchema = {
602
1139
  },
603
1140
  apiKey: {
604
1141
  type: 'string',
605
- description: 'Hetzner Cloud API key with read / write access'
1142
+ pattern: '^\\*{64}$',
1143
+ description: 'Redacted Hetzner API token. Returned as 64 asterisks when a token is configured; omitted otherwise. The real value is never echoed by the API.'
606
1144
  }
607
1145
  },
608
- required: ['apiKey'],
609
1146
  additionalProperties: false
610
1147
  },
611
1148
  aws: {
@@ -617,12 +1154,291 @@ export const FleetSchema = {
617
1154
  },
618
1155
  controllerRoleArn: {
619
1156
  type: 'string',
620
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1157
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1158
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1159
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
621
1160
  }
622
1161
  },
623
- required: ['controllerRoleArn'],
624
1162
  additionalProperties: false
625
1163
  },
1164
+ constraints: {
1165
+ type: 'object',
1166
+ properties: {
1167
+ 'karpenter.sh/capacity-type': {
1168
+ type: 'array',
1169
+ items: {
1170
+ type: 'string',
1171
+ enum: [
1172
+ 'on-demand',
1173
+ 'spot'
1174
+ ]
1175
+ },
1176
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
1177
+ },
1178
+ 'kubernetes.io/arch': {
1179
+ type: 'array',
1180
+ items: {
1181
+ type: 'string',
1182
+ enum: [
1183
+ 'amd64',
1184
+ 'arm64'
1185
+ ]
1186
+ },
1187
+ description: 'Allowed values for `kubernetes.io/arch`.'
1188
+ },
1189
+ 'cfke.io/instance-family': {
1190
+ type: 'array',
1191
+ items: {
1192
+ type: 'string',
1193
+ enum: [
1194
+ 'a1',
1195
+ 'a2',
1196
+ 'a3',
1197
+ 'a4',
1198
+ 'c1',
1199
+ 'c2',
1200
+ 'c2d',
1201
+ 'c3',
1202
+ 'c3d',
1203
+ 'c4',
1204
+ 'c4a',
1205
+ 'c4d',
1206
+ 'c5',
1207
+ 'c5a',
1208
+ 'c5ad',
1209
+ 'c5d',
1210
+ 'c5n',
1211
+ 'c6a',
1212
+ 'c6g',
1213
+ 'c6gd',
1214
+ 'c6gn',
1215
+ 'c6i',
1216
+ 'c6id',
1217
+ 'c6in',
1218
+ 'c7a',
1219
+ 'c7g',
1220
+ 'c7gd',
1221
+ 'c7gn',
1222
+ 'c7i',
1223
+ 'c7i-flex',
1224
+ 'c8g',
1225
+ 'c8gd',
1226
+ 'cax',
1227
+ 'ccx',
1228
+ 'cpx',
1229
+ 'cx',
1230
+ 'd2',
1231
+ 'd3',
1232
+ 'd3en',
1233
+ 'dl1',
1234
+ 'dl2q',
1235
+ 'e2',
1236
+ 'f1',
1237
+ 'f2',
1238
+ 'g1',
1239
+ 'g2',
1240
+ 'g4ad',
1241
+ 'g4dn',
1242
+ 'g5',
1243
+ 'g5g',
1244
+ 'g6',
1245
+ 'g6e',
1246
+ 'gr6',
1247
+ 'h1',
1248
+ 'h3',
1249
+ 'hpc6a',
1250
+ 'hpc6id',
1251
+ 'hpc7a',
1252
+ 'hpc7g',
1253
+ 'i2',
1254
+ 'i3',
1255
+ 'i3en',
1256
+ 'i4g',
1257
+ 'i4i',
1258
+ 'i7i',
1259
+ 'i7ie',
1260
+ 'i8g',
1261
+ 'im4gn',
1262
+ 'inf1',
1263
+ 'inf2',
1264
+ 'is4gen',
1265
+ 'm1',
1266
+ 'm2',
1267
+ 'm3',
1268
+ 'm4',
1269
+ 'm5',
1270
+ 'm5a',
1271
+ 'm5ad',
1272
+ 'm5d',
1273
+ 'm5dn',
1274
+ 'm5n',
1275
+ 'm5zn',
1276
+ 'm6a',
1277
+ 'm6g',
1278
+ 'm6gd',
1279
+ 'm6i',
1280
+ 'm6id',
1281
+ 'm6idn',
1282
+ 'm6in',
1283
+ 'm7a',
1284
+ 'm7g',
1285
+ 'm7gd',
1286
+ 'm7i',
1287
+ 'm7i-flex',
1288
+ 'm8g',
1289
+ 'm8gd',
1290
+ 'n1',
1291
+ 'n2',
1292
+ 'n2d',
1293
+ 'n4',
1294
+ 'p3',
1295
+ 'p3dn',
1296
+ 'p4d',
1297
+ 'p4de',
1298
+ 'p5',
1299
+ 'p5e',
1300
+ 'p5en',
1301
+ 'p6-b200',
1302
+ 'r3',
1303
+ 'r4',
1304
+ 'r5',
1305
+ 'r5a',
1306
+ 'r5ad',
1307
+ 'r5b',
1308
+ 'r5d',
1309
+ 'r5dn',
1310
+ 'r5n',
1311
+ 'r6a',
1312
+ 'r6g',
1313
+ 'r6gd',
1314
+ 'r6i',
1315
+ 'r6id',
1316
+ 'r6idn',
1317
+ 'r6in',
1318
+ 'r7a',
1319
+ 'r7g',
1320
+ 'r7gd',
1321
+ 'r7i',
1322
+ 'r7iz',
1323
+ 'r8g',
1324
+ 'r8gd',
1325
+ 't2',
1326
+ 't2a',
1327
+ 't2d',
1328
+ 't3',
1329
+ 't3a',
1330
+ 't4g',
1331
+ 'trn1',
1332
+ 'trn1n',
1333
+ 'u-3tb1',
1334
+ 'u-6tb1',
1335
+ 'u7i-12tb',
1336
+ 'u7i-6tb',
1337
+ 'u7i-8tb',
1338
+ 'u7in-16tb',
1339
+ 'u7in-24tb',
1340
+ 'u7in-32tb',
1341
+ 'vt1',
1342
+ 'x1',
1343
+ 'x1e',
1344
+ 'x2gd',
1345
+ 'x2idn',
1346
+ 'x2iedn',
1347
+ 'x2iezn',
1348
+ 'x4',
1349
+ 'x8g',
1350
+ 'z1d',
1351
+ 'z3'
1352
+ ]
1353
+ },
1354
+ description: 'Allowed values for `cfke.io/instance-family`.'
1355
+ },
1356
+ 'topology.kubernetes.io/region': {
1357
+ type: 'array',
1358
+ items: {
1359
+ type: 'string',
1360
+ enum: [
1361
+ 'africa-south1',
1362
+ 'ap-northeast-1',
1363
+ 'ap-northeast-2',
1364
+ 'ap-northeast-3',
1365
+ 'ap-south-1',
1366
+ 'ap-southeast-1',
1367
+ 'ap-southeast-2',
1368
+ 'ash',
1369
+ 'asia-east1',
1370
+ 'asia-east2',
1371
+ 'asia-northeast1',
1372
+ 'asia-northeast2',
1373
+ 'asia-northeast3',
1374
+ 'asia-south1',
1375
+ 'asia-south2',
1376
+ 'asia-southeast1',
1377
+ 'asia-southeast2',
1378
+ 'australia-southeast1',
1379
+ 'australia-southeast2',
1380
+ 'ca-central-1',
1381
+ 'eu-central-1',
1382
+ 'eu-central-2',
1383
+ 'eu-north-1',
1384
+ 'eu-west-1',
1385
+ 'eu-west-2',
1386
+ 'eu-west-3',
1387
+ 'europe-central2',
1388
+ 'europe-north1',
1389
+ 'europe-southwest1',
1390
+ 'europe-west1',
1391
+ 'europe-west10',
1392
+ 'europe-west12',
1393
+ 'europe-west2',
1394
+ 'europe-west3',
1395
+ 'europe-west4',
1396
+ 'europe-west6',
1397
+ 'europe-west8',
1398
+ 'europe-west9',
1399
+ 'fsn1',
1400
+ 'hel1',
1401
+ 'hil',
1402
+ 'me-central1',
1403
+ 'me-central2',
1404
+ 'me-west1',
1405
+ 'nbg1',
1406
+ 'northamerica-northeast1',
1407
+ 'northamerica-northeast2',
1408
+ 'sa-east-1',
1409
+ 'sin',
1410
+ 'southamerica-east1',
1411
+ 'southamerica-west1',
1412
+ 'us-central1',
1413
+ 'us-east-1',
1414
+ 'us-east-2',
1415
+ 'us-east1',
1416
+ 'us-east4',
1417
+ 'us-east5',
1418
+ 'us-south1',
1419
+ 'us-west-1',
1420
+ 'us-west-2',
1421
+ 'us-west1',
1422
+ 'us-west2',
1423
+ 'us-west3',
1424
+ 'us-west4'
1425
+ ]
1426
+ },
1427
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1428
+ }
1429
+ },
1430
+ additionalProperties: false,
1431
+ description: 'Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.'
1432
+ },
1433
+ scalingProfile: {
1434
+ type: 'string',
1435
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1436
+ example: 'conservative',
1437
+ enum: [
1438
+ 'aggressive',
1439
+ 'conservative'
1440
+ ]
1441
+ },
626
1442
  id: {
627
1443
  type: 'string',
628
1444
  maxLength: 63,
@@ -632,7 +1448,9 @@ export const FleetSchema = {
632
1448
  example: 'new-clouds-fleet'
633
1449
  }
634
1450
  },
635
- required: ['id'],
1451
+ required: [
1452
+ 'id'
1453
+ ],
636
1454
  additionalProperties: false
637
1455
  };
638
1456
  export const FleetUpdateInputSchema = {
@@ -648,7 +1466,6 @@ export const FleetUpdateInputSchema = {
648
1466
  description: 'CPU limit in cores.'
649
1467
  }
650
1468
  },
651
- required: ['cpu'],
652
1469
  additionalProperties: false,
653
1470
  description: 'Limits define a set of bounds for provisioning capacity.'
654
1471
  },
@@ -661,10 +1478,11 @@ export const FleetUpdateInputSchema = {
661
1478
  },
662
1479
  project: {
663
1480
  type: 'string',
664
- description: 'Project GCP Project id to deploy instances into'
1481
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1482
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1483
+ example: 'my-cloudfleet-project'
665
1484
  }
666
1485
  },
667
- required: ['project'],
668
1486
  additionalProperties: false
669
1487
  },
670
1488
  hetzner: {
@@ -676,10 +1494,12 @@ export const FleetUpdateInputSchema = {
676
1494
  },
677
1495
  apiKey: {
678
1496
  type: 'string',
679
- description: 'Hetzner Cloud API key with read / write access'
1497
+ maxLength: 64,
1498
+ minLength: 64,
1499
+ pattern: '^[A-Za-z0-9]+$',
1500
+ description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
680
1501
  }
681
1502
  },
682
- required: ['apiKey'],
683
1503
  additionalProperties: false
684
1504
  },
685
1505
  aws: {
@@ -691,11 +1511,290 @@ export const FleetUpdateInputSchema = {
691
1511
  },
692
1512
  controllerRoleArn: {
693
1513
  type: 'string',
694
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1514
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1515
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1516
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
695
1517
  }
696
1518
  },
697
- required: ['controllerRoleArn'],
698
1519
  additionalProperties: false
1520
+ },
1521
+ constraints: {
1522
+ type: 'object',
1523
+ properties: {
1524
+ 'karpenter.sh/capacity-type': {
1525
+ type: 'array',
1526
+ items: {
1527
+ type: 'string',
1528
+ enum: [
1529
+ 'on-demand',
1530
+ 'spot'
1531
+ ]
1532
+ },
1533
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
1534
+ },
1535
+ 'kubernetes.io/arch': {
1536
+ type: 'array',
1537
+ items: {
1538
+ type: 'string',
1539
+ enum: [
1540
+ 'amd64',
1541
+ 'arm64'
1542
+ ]
1543
+ },
1544
+ description: 'Allowed values for `kubernetes.io/arch`.'
1545
+ },
1546
+ 'cfke.io/instance-family': {
1547
+ type: 'array',
1548
+ items: {
1549
+ type: 'string',
1550
+ enum: [
1551
+ 'a1',
1552
+ 'a2',
1553
+ 'a3',
1554
+ 'a4',
1555
+ 'c1',
1556
+ 'c2',
1557
+ 'c2d',
1558
+ 'c3',
1559
+ 'c3d',
1560
+ 'c4',
1561
+ 'c4a',
1562
+ 'c4d',
1563
+ 'c5',
1564
+ 'c5a',
1565
+ 'c5ad',
1566
+ 'c5d',
1567
+ 'c5n',
1568
+ 'c6a',
1569
+ 'c6g',
1570
+ 'c6gd',
1571
+ 'c6gn',
1572
+ 'c6i',
1573
+ 'c6id',
1574
+ 'c6in',
1575
+ 'c7a',
1576
+ 'c7g',
1577
+ 'c7gd',
1578
+ 'c7gn',
1579
+ 'c7i',
1580
+ 'c7i-flex',
1581
+ 'c8g',
1582
+ 'c8gd',
1583
+ 'cax',
1584
+ 'ccx',
1585
+ 'cpx',
1586
+ 'cx',
1587
+ 'd2',
1588
+ 'd3',
1589
+ 'd3en',
1590
+ 'dl1',
1591
+ 'dl2q',
1592
+ 'e2',
1593
+ 'f1',
1594
+ 'f2',
1595
+ 'g1',
1596
+ 'g2',
1597
+ 'g4ad',
1598
+ 'g4dn',
1599
+ 'g5',
1600
+ 'g5g',
1601
+ 'g6',
1602
+ 'g6e',
1603
+ 'gr6',
1604
+ 'h1',
1605
+ 'h3',
1606
+ 'hpc6a',
1607
+ 'hpc6id',
1608
+ 'hpc7a',
1609
+ 'hpc7g',
1610
+ 'i2',
1611
+ 'i3',
1612
+ 'i3en',
1613
+ 'i4g',
1614
+ 'i4i',
1615
+ 'i7i',
1616
+ 'i7ie',
1617
+ 'i8g',
1618
+ 'im4gn',
1619
+ 'inf1',
1620
+ 'inf2',
1621
+ 'is4gen',
1622
+ 'm1',
1623
+ 'm2',
1624
+ 'm3',
1625
+ 'm4',
1626
+ 'm5',
1627
+ 'm5a',
1628
+ 'm5ad',
1629
+ 'm5d',
1630
+ 'm5dn',
1631
+ 'm5n',
1632
+ 'm5zn',
1633
+ 'm6a',
1634
+ 'm6g',
1635
+ 'm6gd',
1636
+ 'm6i',
1637
+ 'm6id',
1638
+ 'm6idn',
1639
+ 'm6in',
1640
+ 'm7a',
1641
+ 'm7g',
1642
+ 'm7gd',
1643
+ 'm7i',
1644
+ 'm7i-flex',
1645
+ 'm8g',
1646
+ 'm8gd',
1647
+ 'n1',
1648
+ 'n2',
1649
+ 'n2d',
1650
+ 'n4',
1651
+ 'p3',
1652
+ 'p3dn',
1653
+ 'p4d',
1654
+ 'p4de',
1655
+ 'p5',
1656
+ 'p5e',
1657
+ 'p5en',
1658
+ 'p6-b200',
1659
+ 'r3',
1660
+ 'r4',
1661
+ 'r5',
1662
+ 'r5a',
1663
+ 'r5ad',
1664
+ 'r5b',
1665
+ 'r5d',
1666
+ 'r5dn',
1667
+ 'r5n',
1668
+ 'r6a',
1669
+ 'r6g',
1670
+ 'r6gd',
1671
+ 'r6i',
1672
+ 'r6id',
1673
+ 'r6idn',
1674
+ 'r6in',
1675
+ 'r7a',
1676
+ 'r7g',
1677
+ 'r7gd',
1678
+ 'r7i',
1679
+ 'r7iz',
1680
+ 'r8g',
1681
+ 'r8gd',
1682
+ 't2',
1683
+ 't2a',
1684
+ 't2d',
1685
+ 't3',
1686
+ 't3a',
1687
+ 't4g',
1688
+ 'trn1',
1689
+ 'trn1n',
1690
+ 'u-3tb1',
1691
+ 'u-6tb1',
1692
+ 'u7i-12tb',
1693
+ 'u7i-6tb',
1694
+ 'u7i-8tb',
1695
+ 'u7in-16tb',
1696
+ 'u7in-24tb',
1697
+ 'u7in-32tb',
1698
+ 'vt1',
1699
+ 'x1',
1700
+ 'x1e',
1701
+ 'x2gd',
1702
+ 'x2idn',
1703
+ 'x2iedn',
1704
+ 'x2iezn',
1705
+ 'x4',
1706
+ 'x8g',
1707
+ 'z1d',
1708
+ 'z3'
1709
+ ]
1710
+ },
1711
+ description: 'Allowed values for `cfke.io/instance-family`.'
1712
+ },
1713
+ 'topology.kubernetes.io/region': {
1714
+ type: 'array',
1715
+ items: {
1716
+ type: 'string',
1717
+ enum: [
1718
+ 'africa-south1',
1719
+ 'ap-northeast-1',
1720
+ 'ap-northeast-2',
1721
+ 'ap-northeast-3',
1722
+ 'ap-south-1',
1723
+ 'ap-southeast-1',
1724
+ 'ap-southeast-2',
1725
+ 'ash',
1726
+ 'asia-east1',
1727
+ 'asia-east2',
1728
+ 'asia-northeast1',
1729
+ 'asia-northeast2',
1730
+ 'asia-northeast3',
1731
+ 'asia-south1',
1732
+ 'asia-south2',
1733
+ 'asia-southeast1',
1734
+ 'asia-southeast2',
1735
+ 'australia-southeast1',
1736
+ 'australia-southeast2',
1737
+ 'ca-central-1',
1738
+ 'eu-central-1',
1739
+ 'eu-central-2',
1740
+ 'eu-north-1',
1741
+ 'eu-west-1',
1742
+ 'eu-west-2',
1743
+ 'eu-west-3',
1744
+ 'europe-central2',
1745
+ 'europe-north1',
1746
+ 'europe-southwest1',
1747
+ 'europe-west1',
1748
+ 'europe-west10',
1749
+ 'europe-west12',
1750
+ 'europe-west2',
1751
+ 'europe-west3',
1752
+ 'europe-west4',
1753
+ 'europe-west6',
1754
+ 'europe-west8',
1755
+ 'europe-west9',
1756
+ 'fsn1',
1757
+ 'hel1',
1758
+ 'hil',
1759
+ 'me-central1',
1760
+ 'me-central2',
1761
+ 'me-west1',
1762
+ 'nbg1',
1763
+ 'northamerica-northeast1',
1764
+ 'northamerica-northeast2',
1765
+ 'sa-east-1',
1766
+ 'sin',
1767
+ 'southamerica-east1',
1768
+ 'southamerica-west1',
1769
+ 'us-central1',
1770
+ 'us-east-1',
1771
+ 'us-east-2',
1772
+ 'us-east1',
1773
+ 'us-east4',
1774
+ 'us-east5',
1775
+ 'us-south1',
1776
+ 'us-west-1',
1777
+ 'us-west-2',
1778
+ 'us-west1',
1779
+ 'us-west2',
1780
+ 'us-west3',
1781
+ 'us-west4'
1782
+ ]
1783
+ },
1784
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1785
+ }
1786
+ },
1787
+ additionalProperties: false,
1788
+ description: 'Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.'
1789
+ },
1790
+ scalingProfile: {
1791
+ type: 'string',
1792
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1793
+ example: 'conservative',
1794
+ enum: [
1795
+ 'aggressive',
1796
+ 'conservative'
1797
+ ]
699
1798
  }
700
1799
  },
701
1800
  additionalProperties: false
@@ -732,7 +1831,9 @@ export const InviteSchema = {
732
1831
  example: '7kUZnH7nnKUFfvc4NK2KQF'
733
1832
  }
734
1833
  },
735
- required: ['date_created'],
1834
+ required: [
1835
+ 'date_created'
1836
+ ],
736
1837
  additionalProperties: false
737
1838
  };
738
1839
  export const InvoiceSchema = {
@@ -740,23 +1841,18 @@ export const InvoiceSchema = {
740
1841
  properties: {
741
1842
  id: {
742
1843
  type: 'string',
743
- format: 'uuid',
744
- description: 'Unique identifier of the invoice. UUID v4 string in canonical form',
745
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1844
+ description: 'Unique identifier of the invoice.',
1845
+ example: 'in_1234567890xCrwxghOTj1234'
746
1846
  },
747
- organizationId: {
748
- type: 'string',
749
- format: 'uuid',
750
- description: 'Unique identifier of the organization. UUID v4 string in canonical form',
751
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1847
+ number: {
1848
+ type: 'string'
752
1849
  },
753
1850
  status: {
754
1851
  type: 'string',
755
1852
  description: 'Status of the invoice',
756
- example: 'DRAFT',
757
- enum: ['DRAFT', 'COMMITTED', 'VOID']
1853
+ example: 'paid'
758
1854
  },
759
- amount: {
1855
+ total: {
760
1856
  type: 'number',
761
1857
  format: 'float',
762
1858
  description: 'Total amount of the invoice',
@@ -765,413 +1861,189 @@ export const InvoiceSchema = {
765
1861
  currency: {
766
1862
  type: 'string',
767
1863
  description: 'Currency of the invoice',
768
- example: 'USD',
769
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
770
- },
771
- creditAdj: {
772
- type: 'number',
773
- format: 'float',
774
- description: 'Total amount of credit adjustments',
775
- example: 0
1864
+ example: 'usd'
776
1865
  },
777
- refundAdj: {
778
- type: 'number',
779
- format: 'float',
780
- description: 'Total amount of refund adjustments',
781
- example: 0
1866
+ created: {
1867
+ type: 'string',
1868
+ format: 'date-time',
1869
+ description: 'Timestamp when the invoice was issued. ISO 8601 date string in the UTC timezone.',
1870
+ example: '2023-12-20T13:53:32.000Z'
782
1871
  },
783
- invoiceDate: {
1872
+ period_start: {
784
1873
  type: 'string',
785
- description: 'Date of the invoice',
786
- example: '2019-01-01T00:00:00.000Z'
1874
+ format: 'date-time',
1875
+ description: 'Billing period start timestamp. ISO 8601 date string in the UTC timezone.',
1876
+ example: '2023-12-20T13:53:32.000Z'
787
1877
  },
788
- targetDate: {
1878
+ period_end: {
789
1879
  type: 'string',
790
- description: 'Target date of the invoice',
791
- example: '2019-01-01T00:00:00.000Z'
1880
+ format: 'date-time',
1881
+ description: 'Billing period end timestamp. ISO 8601 date string in the UTC timezone.',
1882
+ example: '2023-12-20T13:53:32.000Z'
792
1883
  },
793
- invoiceNumber: {
1884
+ invoice_pdf: {
1885
+ type: 'string'
1886
+ }
1887
+ },
1888
+ required: [
1889
+ 'created',
1890
+ 'period_start',
1891
+ 'period_end'
1892
+ ],
1893
+ additionalProperties: false
1894
+ };
1895
+ export const MarketplaceListingFilesSchema = {
1896
+ type: 'object',
1897
+ properties: {
1898
+ chartYaml: {
794
1899
  type: 'string',
795
- description: 'Number of the invoice',
796
- example: 'INV-0001'
1900
+ description: 'Raw Chart.yaml content from the Helm chart',
1901
+ example: 'apiVersion: v2\nname: nginx-ingress\nversion: 1.18.2-cfke.45\nappVersion: 1.9.4'
797
1902
  },
798
- balance: {
799
- type: 'number',
800
- format: 'float',
801
- description: 'Balance of the invoice',
802
- example: 100
1903
+ valuesYaml: {
1904
+ type: 'string',
1905
+ description: 'Raw values.yaml content from the Helm chart',
1906
+ example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
803
1907
  },
804
- bundleKeys: {
1908
+ valuesSchemaJson: {
1909
+ type: 'string',
1910
+ description: 'JSON schema for values.yaml as a string',
1911
+ example: '{"type":"object","properties":{"replicaCount":{"type":"number"}}}'
1912
+ }
1913
+ },
1914
+ additionalProperties: false
1915
+ };
1916
+ export const MarketplaceListingSchema = {
1917
+ type: 'object',
1918
+ properties: {
1919
+ name: {
805
1920
  type: 'string',
806
- description: 'Bundle keys of the invoice',
807
- example: 'bundleKey1,bundleKey2'
1921
+ description: 'Name of the chart',
1922
+ example: 'nginx-ingress'
808
1923
  },
809
- credits: {
1924
+ versions: {
810
1925
  type: 'array',
811
1926
  items: {
812
- type: 'object',
813
- properties: {
814
- id: {
815
- type: 'string',
816
- format: 'uuid',
817
- description: 'Unique identifier of the invoice item. UUID v4 string in canonical form',
818
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1927
+ type: 'string',
1928
+ pattern: '^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
1929
+ description: 'Specific version of the chart',
1930
+ example: '1.18.2-cfke.45'
1931
+ },
1932
+ description: 'Available versions of the chart'
1933
+ },
1934
+ version_channels: {
1935
+ type: 'array',
1936
+ items: {
1937
+ type: 'string',
1938
+ pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
1939
+ description: 'Version channel pattern',
1940
+ example: '1.18.x-cfke.x'
1941
+ },
1942
+ description: 'Version channels for the chart'
1943
+ },
1944
+ latestVersion: {
1945
+ type: 'string',
1946
+ description: 'Latest version of the chart',
1947
+ example: '1.18.2-cfke.45'
1948
+ },
1949
+ metadata: {
1950
+ type: 'object',
1951
+ properties: {
1952
+ name: {
1953
+ type: 'string',
1954
+ description: 'Chart name from metadata',
1955
+ example: 'nginx-ingress'
1956
+ },
1957
+ version: {
1958
+ type: 'string',
1959
+ description: 'Chart version from metadata',
1960
+ example: '1.18.2-cfke.45'
1961
+ },
1962
+ description: {
1963
+ type: 'string',
1964
+ description: 'Chart description',
1965
+ example: 'NGINX Ingress Controller for Kubernetes'
1966
+ },
1967
+ appVersion: {
1968
+ type: 'string',
1969
+ description: 'Application version',
1970
+ example: '1.9.4'
1971
+ },
1972
+ apiVersion: {
1973
+ type: 'string',
1974
+ description: 'Helm API version',
1975
+ example: 'v2'
1976
+ },
1977
+ keywords: {
1978
+ type: 'array',
1979
+ items: {
1980
+ type: 'string'
819
1981
  },
820
- linkedInvoiceItemId: {
821
- type: 'string',
822
- format: 'uuid',
823
- description: 'Unique identifier of the linked invoice item. UUID v4 string in canonical form',
824
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1982
+ description: 'Chart keywords',
1983
+ example: [
1984
+ 'ingress',
1985
+ 'nginx',
1986
+ 'load-balancer'
1987
+ ]
1988
+ },
1989
+ home: {
1990
+ type: 'string',
1991
+ description: 'Chart home URL',
1992
+ example: 'https://kubernetes.github.io/ingress-nginx/'
1993
+ },
1994
+ icon: {
1995
+ type: 'string',
1996
+ description: 'A URL to an SVG or PNG image to be used as an icon',
1997
+ example: 'https://cloudfleet.ai/images/marketplace/icons/ingress-nginx.png'
1998
+ },
1999
+ sources: {
2000
+ type: 'array',
2001
+ items: {
2002
+ type: 'string'
825
2003
  },
826
- productName: {
827
- type: 'string',
828
- description: 'Name of the product',
829
- example: 'Research team'
2004
+ description: 'Chart source URLs',
2005
+ example: [
2006
+ 'https://github.com/kubernetes/ingress-nginx'
2007
+ ]
2008
+ },
2009
+ maintainers: {
2010
+ type: 'array',
2011
+ items: {
2012
+ type: 'object',
2013
+ properties: {
2014
+ name: {
2015
+ type: 'string',
2016
+ description: 'Maintainer name',
2017
+ example: 'NGINX Team'
2018
+ },
2019
+ email: {
2020
+ type: 'string',
2021
+ description: 'Maintainer email',
2022
+ example: 'support@nginx.org'
2023
+ }
2024
+ },
2025
+ required: [
2026
+ 'name'
2027
+ ],
2028
+ additionalProperties: false
830
2029
  },
831
- planName: {
832
- type: 'string',
833
- description: 'Name of the plan',
834
- example: 'Plan A'
835
- },
836
- phaseName: {
837
- type: 'string',
838
- description: 'Name of the phase',
839
- example: 'Phase A'
840
- },
841
- usageName: {
842
- type: 'string',
843
- description: 'Name of the usage',
844
- example: 'Usage A'
845
- },
846
- prettyProductName: {
847
- type: 'string',
848
- description: 'Pretty name of the product',
849
- example: 'Research team'
850
- },
851
- prettyPlanName: {
852
- type: 'string',
853
- description: 'Pretty name of the plan',
854
- example: 'Plan A'
855
- },
856
- prettyPhaseName: {
857
- type: 'string',
858
- description: 'Pretty name of the phase',
859
- example: 'Phase A'
860
- },
861
- prettyUsageName: {
862
- type: 'string',
863
- description: 'Pretty name of the usage',
864
- example: 'Usage A'
865
- },
866
- itemType: {
867
- type: 'string',
868
- description: 'Type of the invoice item',
869
- example: 'EXTERNAL_CHARGE',
870
- enum: ['EXTERNAL_CHARGE', 'FIXED', 'RECURRING', 'REPAIR_ADJ', 'CBA_ADJ', 'CREDIT_ADJ', 'ITEM_ADJ', 'USAGE', 'TAX', 'PARENT_SUMMARY']
871
- },
872
- description: {
873
- type: 'string',
874
- description: 'Description of the invoice item',
875
- example: 'Description of the invoice item'
876
- },
877
- startDate: {
878
- type: 'string',
879
- description: 'Start date of the invoice item',
880
- example: '2019-01-01T00:00:00.000Z'
881
- },
882
- endDate: {
883
- type: 'string',
884
- description: 'End date of the invoice item',
885
- example: '2019-01-01T00:00:00.000Z'
886
- },
887
- amount: {
888
- type: 'number',
889
- format: 'float',
890
- description: 'Amount of the invoice item',
891
- example: 100
892
- },
893
- rate: {
894
- type: 'number',
895
- format: 'float',
896
- description: 'Rate of the invoice item',
897
- example: 100
898
- },
899
- currency: {
900
- type: 'string',
901
- description: 'Currency of the invoice item',
902
- example: 'USD',
903
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
904
- },
905
- quantity: {
906
- type: 'number',
907
- format: 'float',
908
- description: 'Quantity of the invoice item',
909
- example: 1
910
- },
911
- itemDetails: {
912
- type: 'string',
913
- description: 'Details of the invoice item',
914
- example: 'Details of the invoice item'
915
- },
916
- catalogEffectiveDate: {
917
- type: 'string',
918
- description: 'Effective date of the catalog',
919
- example: '2019-01-01T00:00:00.000Z'
920
- },
921
- childItems: {
922
- type: 'array',
923
- items: {
924
- oneOf: [
925
- {
926
- type: 'array'
927
- },
928
- {
929
- type: 'boolean'
930
- },
931
- {
932
- type: 'number'
933
- },
934
- {
935
- type: 'object',
936
- additionalProperties: true
937
- },
938
- {
939
- type: 'string'
940
- }
941
- ]
942
- },
943
- description: 'Child items of the invoice item'
944
- }
945
- },
946
- additionalProperties: false
947
- },
948
- description: 'Credits of the invoice'
949
- },
950
- items: {
951
- type: 'array',
952
- items: {
953
- type: 'object',
954
- properties: {
955
- id: {
956
- type: 'string',
957
- format: 'uuid',
958
- description: 'Unique identifier of the invoice item. UUID v4 string in canonical form',
959
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
960
- },
961
- linkedInvoiceItemId: {
962
- type: 'string',
963
- format: 'uuid',
964
- description: 'Unique identifier of the linked invoice item. UUID v4 string in canonical form',
965
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
966
- },
967
- productName: {
968
- type: 'string',
969
- description: 'Name of the product',
970
- example: 'Research team'
971
- },
972
- planName: {
973
- type: 'string',
974
- description: 'Name of the plan',
975
- example: 'Plan A'
976
- },
977
- phaseName: {
978
- type: 'string',
979
- description: 'Name of the phase',
980
- example: 'Phase A'
981
- },
982
- usageName: {
983
- type: 'string',
984
- description: 'Name of the usage',
985
- example: 'Usage A'
986
- },
987
- prettyProductName: {
988
- type: 'string',
989
- description: 'Pretty name of the product',
990
- example: 'Research team'
991
- },
992
- prettyPlanName: {
993
- type: 'string',
994
- description: 'Pretty name of the plan',
995
- example: 'Plan A'
996
- },
997
- prettyPhaseName: {
998
- type: 'string',
999
- description: 'Pretty name of the phase',
1000
- example: 'Phase A'
1001
- },
1002
- prettyUsageName: {
1003
- type: 'string',
1004
- description: 'Pretty name of the usage',
1005
- example: 'Usage A'
1006
- },
1007
- itemType: {
1008
- type: 'string',
1009
- description: 'Type of the invoice item',
1010
- example: 'EXTERNAL_CHARGE',
1011
- enum: ['EXTERNAL_CHARGE', 'FIXED', 'RECURRING', 'REPAIR_ADJ', 'CBA_ADJ', 'CREDIT_ADJ', 'ITEM_ADJ', 'USAGE', 'TAX', 'PARENT_SUMMARY']
1012
- },
1013
- description: {
1014
- type: 'string',
1015
- description: 'Description of the invoice item',
1016
- example: 'Description of the invoice item'
1017
- },
1018
- startDate: {
1019
- type: 'string',
1020
- description: 'Start date of the invoice item',
1021
- example: '2019-01-01T00:00:00.000Z'
1022
- },
1023
- endDate: {
1024
- type: 'string',
1025
- description: 'End date of the invoice item',
1026
- example: '2019-01-01T00:00:00.000Z'
1027
- },
1028
- amount: {
1029
- type: 'number',
1030
- format: 'float',
1031
- description: 'Amount of the invoice item',
1032
- example: 100
1033
- },
1034
- rate: {
1035
- type: 'number',
1036
- format: 'float',
1037
- description: 'Rate of the invoice item',
1038
- example: 100
1039
- },
1040
- currency: {
1041
- type: 'string',
1042
- description: 'Currency of the invoice item',
1043
- example: 'USD',
1044
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
1045
- },
1046
- quantity: {
1047
- type: 'number',
1048
- format: 'float',
1049
- description: 'Quantity of the invoice item',
1050
- example: 1
1051
- },
1052
- itemDetails: {
1053
- type: 'string',
1054
- description: 'Details of the invoice item',
1055
- example: 'Details of the invoice item'
1056
- },
1057
- catalogEffectiveDate: {
1058
- type: 'string',
1059
- description: 'Effective date of the catalog',
1060
- example: '2019-01-01T00:00:00.000Z'
1061
- },
1062
- childItems: {
1063
- type: 'array',
1064
- items: {
1065
- oneOf: [
1066
- {
1067
- type: 'array'
1068
- },
1069
- {
1070
- type: 'boolean'
1071
- },
1072
- {
1073
- type: 'number'
1074
- },
1075
- {
1076
- type: 'object',
1077
- additionalProperties: true
1078
- },
1079
- {
1080
- type: 'string'
1081
- }
1082
- ]
1083
- },
1084
- description: 'Child items of the invoice item'
1085
- }
1086
- },
1087
- additionalProperties: false
1088
- },
1089
- description: 'Items of the invoice'
1090
- }
1091
- },
1092
- additionalProperties: false
1093
- };
1094
- export const MarketplaceListingSchema = {
1095
- type: 'object',
1096
- properties: {
1097
- id: {
1098
- type: 'string',
1099
- maxLength: 63,
1100
- minLength: 1,
1101
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1102
- description: 'Id of the chart listing',
1103
- example: 'portworx-enterprise-disaster-recovery-baremetal'
1104
- },
1105
- name: {
1106
- type: 'string',
1107
- description: 'Name of the chart listing',
1108
- example: 'Portworx Enterprise + Disaster Recovery - Baremetal'
1109
- },
1110
- developer: {
1111
- type: 'string',
1112
- description: 'Author of the chart listing',
1113
- example: 'Portworx'
1114
- },
1115
- description: {
1116
- type: 'string',
1117
- description: 'Short description of the chart listing',
1118
- example: 'Run Kubernetes with unmatched scalability, availability, and self-service access to any storage'
1119
- },
1120
- logoUrl: {
1121
- type: 'string',
1122
- description: 'Logo of the chart listing',
1123
- example: 'https://portworx.com/wp-content/themes/portworx/assets/images/header/portworx-logo.png'
1124
- },
1125
- longDescription: {
1126
- type: 'string',
1127
- description: 'Long description of the chart listing',
1128
- example: 'Portworx-Enterprise is the complete multi-cloud ready Kubernetes storage platform for running mission-critical apps in production....'
1129
- },
1130
- categories: {
1131
- type: 'array',
1132
- items: {
1133
- type: 'string',
1134
- example: 'AI & Machine Learning'
2030
+ description: 'Chart maintainers'
2031
+ }
1135
2032
  },
1136
- description: 'Tags of the chart'
1137
- },
1138
- version_channels: {
1139
- type: 'array',
1140
- items: {
1141
- type: 'string',
1142
- pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
1143
- description: 'Version of the chart.',
1144
- example: '2.x.x-cfke.x'
1145
- }
1146
- },
1147
- value_schemas: {
1148
- type: 'array',
1149
- items: {
1150
- type: 'object',
1151
- properties: {
1152
- version: {
1153
- type: 'string',
1154
- pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
1155
- description: 'Version of the chart.',
1156
- example: '2.1.1-cfke.123'
1157
- },
1158
- schema: {
1159
- type: 'string',
1160
- description: 'Schema of the chart values. JSON Schema as string'
1161
- },
1162
- placeholder: {
1163
- type: 'string',
1164
- description: 'Schema of the chart values',
1165
- example: `foo: 1
1166
- bar: example`
1167
- }
1168
- },
1169
- required: ['version', 'schema', 'placeholder'],
1170
- additionalProperties: false
1171
- }
2033
+ required: [
2034
+ 'name',
2035
+ 'version'
2036
+ ],
2037
+ additionalProperties: false,
2038
+ description: 'Chart metadata'
1172
2039
  }
1173
2040
  },
1174
- required: ['id', 'name', 'developer', 'description', 'logoUrl', 'longDescription', 'categories', 'version_channels', 'value_schemas'],
2041
+ required: [
2042
+ 'name',
2043
+ 'versions',
2044
+ 'version_channels',
2045
+ 'latestVersion'
2046
+ ],
1175
2047
  additionalProperties: false
1176
2048
  };
1177
2049
  export const OrganizationCreateInputSchema = {
@@ -1207,7 +2079,13 @@ export const OrganizationCreateInputSchema = {
1207
2079
  description: 'Password for the root account. Must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one number and one special character.'
1208
2080
  }
1209
2081
  },
1210
- required: ['email', 'first_name', 'last_name', 'company_name', 'password'],
2082
+ required: [
2083
+ 'email',
2084
+ 'first_name',
2085
+ 'last_name',
2086
+ 'company_name',
2087
+ 'password'
2088
+ ],
1211
2089
  additionalProperties: false
1212
2090
  };
1213
2091
  export const OrganizationSchema = {
@@ -1267,107 +2145,1000 @@ export const OrganizationSchema = {
1267
2145
  type: 'array',
1268
2146
  items: {
1269
2147
  type: 'string',
1270
- example: 'basic'
2148
+ example: 'basic'
2149
+ },
2150
+ minItems: 0,
2151
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
2152
+ },
2153
+ regions: {
2154
+ type: 'array',
2155
+ items: {
2156
+ type: 'string',
2157
+ example: 'northamerica-central-1'
2158
+ },
2159
+ minItems: 1,
2160
+ description: 'List of Cloudfleet control plane regions available for the organization.'
2161
+ },
2162
+ versions: {
2163
+ type: 'array',
2164
+ items: {
2165
+ type: 'object',
2166
+ properties: {
2167
+ id: {
2168
+ type: 'string',
2169
+ description: 'Id of the control plane version. Used in API calls.',
2170
+ example: '1.33.x-cfke.x'
2171
+ },
2172
+ label: {
2173
+ type: 'string',
2174
+ description: 'Label of the control plane version. Used in frontent UI.',
2175
+ example: '1.33.x (Always latest 1.33 patch version)'
2176
+ }
2177
+ },
2178
+ required: [
2179
+ 'id',
2180
+ 'label'
2181
+ ],
2182
+ additionalProperties: false
2183
+ },
2184
+ minItems: 1,
2185
+ description: 'List of CFKE control plane versions available for the organization.'
2186
+ },
2187
+ cfcr_storage_gb: {
2188
+ type: 'integer',
2189
+ minimum: -1,
2190
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
2191
+ example: 500
2192
+ }
2193
+ },
2194
+ required: [
2195
+ 'basic_clusters_max',
2196
+ 'basic_clusters_available',
2197
+ 'pro_clusters_max',
2198
+ 'pro_clusters_available',
2199
+ 'fleets_max',
2200
+ 'cluster_tiers',
2201
+ 'regions',
2202
+ 'versions',
2203
+ 'cfcr_storage_gb'
2204
+ ],
2205
+ additionalProperties: false,
2206
+ description: 'For security reasons, platform quota is controlled by Cloudfleet and can be updated only by Cloudfleet administrators. Please open a support ticket if you need to change the platform quota.'
2207
+ },
2208
+ status: {
2209
+ type: 'string',
2210
+ description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
2211
+ enum: [
2212
+ 'active',
2213
+ 'closed',
2214
+ 'suspended'
2215
+ ]
2216
+ }
2217
+ },
2218
+ required: [
2219
+ 'id',
2220
+ 'date_created',
2221
+ 'quota',
2222
+ 'status'
2223
+ ],
2224
+ additionalProperties: false
2225
+ };
2226
+ export const PaymentMethodSchema = {
2227
+ type: 'object',
2228
+ properties: {
2229
+ id: {
2230
+ type: 'string',
2231
+ format: 'uuid',
2232
+ description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
2233
+ example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
2234
+ },
2235
+ setup: {
2236
+ type: 'boolean',
2237
+ description: 'Whether organization payment method was set up and ready to use for payments.',
2238
+ example: true
2239
+ },
2240
+ type: {
2241
+ type: 'string',
2242
+ nullable: true,
2243
+ description: 'Payment method type type. Only `card` payments supported at the moment.',
2244
+ example: 'card',
2245
+ enum: [
2246
+ 'card'
2247
+ ]
2248
+ },
2249
+ last4: {
2250
+ type: 'string',
2251
+ nullable: true,
2252
+ description: 'Last 4 digits of the payment card number.',
2253
+ example: '4242'
2254
+ },
2255
+ exp_month: {
2256
+ type: 'integer',
2257
+ minimum: 1,
2258
+ maximum: 12,
2259
+ nullable: true,
2260
+ description: 'Two-digit number representing the card\'s expiration month.',
2261
+ example: '12'
2262
+ },
2263
+ exp_year: {
2264
+ type: 'integer',
2265
+ minimum: 2024,
2266
+ nullable: true,
2267
+ description: 'Four-digit number representing the card\'s expiration year.',
2268
+ example: '2028'
2269
+ },
2270
+ brand: {
2271
+ type: 'string',
2272
+ nullable: true,
2273
+ description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
2274
+ example: 'visa',
2275
+ enum: [
2276
+ 'amex',
2277
+ 'diners',
2278
+ 'discover',
2279
+ 'eftpos_au',
2280
+ 'jcb',
2281
+ 'mastercard',
2282
+ 'unionpay',
2283
+ 'visa',
2284
+ 'unknown'
2285
+ ]
2286
+ }
2287
+ },
2288
+ required: [
2289
+ 'id',
2290
+ 'setup',
2291
+ 'type',
2292
+ 'last4',
2293
+ 'exp_month',
2294
+ 'exp_year',
2295
+ 'brand'
2296
+ ],
2297
+ additionalProperties: false
2298
+ };
2299
+ export const PlatformQuotaSchema = {
2300
+ type: 'object',
2301
+ properties: {
2302
+ basic_clusters_max: {
2303
+ type: 'integer',
2304
+ minimum: 0,
2305
+ description: 'Maximum number of Basic clusters that can be created.',
2306
+ example: 999
2307
+ },
2308
+ basic_clusters_available: {
2309
+ type: 'integer',
2310
+ description: 'Available number of Basic clusters that can be created.',
2311
+ example: 999
2312
+ },
2313
+ pro_clusters_max: {
2314
+ type: 'integer',
2315
+ minimum: 0,
2316
+ description: 'Maximum number of Pro clusters that can be created.',
2317
+ example: 999
2318
+ },
2319
+ pro_clusters_available: {
2320
+ type: 'integer',
2321
+ description: 'Available number of Pro clusters that can be created.',
2322
+ example: 999
2323
+ },
2324
+ fleets_max: {
2325
+ type: 'integer',
2326
+ minimum: 0,
2327
+ description: 'Maximum number of fleets that can be created per cluster.',
2328
+ example: 999
2329
+ },
2330
+ cluster_tiers: {
2331
+ type: 'array',
2332
+ items: {
2333
+ type: 'string',
2334
+ example: 'basic'
2335
+ },
2336
+ minItems: 0,
2337
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
2338
+ },
2339
+ regions: {
2340
+ type: 'array',
2341
+ items: {
2342
+ type: 'string',
2343
+ example: 'northamerica-central-1'
2344
+ },
2345
+ minItems: 1,
2346
+ description: 'List of Cloudfleet control plane regions available for the organization.'
2347
+ },
2348
+ versions: {
2349
+ type: 'array',
2350
+ items: {
2351
+ type: 'object',
2352
+ properties: {
2353
+ id: {
2354
+ type: 'string',
2355
+ description: 'Id of the control plane version. Used in API calls.',
2356
+ example: '1.33.x-cfke.x'
2357
+ },
2358
+ label: {
2359
+ type: 'string',
2360
+ description: 'Label of the control plane version. Used in frontent UI.',
2361
+ example: '1.33.x (Always latest 1.33 patch version)'
2362
+ }
2363
+ },
2364
+ required: [
2365
+ 'id',
2366
+ 'label'
2367
+ ],
2368
+ additionalProperties: false
2369
+ },
2370
+ minItems: 1,
2371
+ description: 'List of CFKE control plane versions available for the organization.'
2372
+ },
2373
+ cfcr_storage_gb: {
2374
+ type: 'integer',
2375
+ minimum: -1,
2376
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
2377
+ example: 500
2378
+ }
2379
+ },
2380
+ required: [
2381
+ 'basic_clusters_max',
2382
+ 'basic_clusters_available',
2383
+ 'pro_clusters_max',
2384
+ 'pro_clusters_available',
2385
+ 'fleets_max',
2386
+ 'cluster_tiers',
2387
+ 'regions',
2388
+ 'versions',
2389
+ 'cfcr_storage_gb'
2390
+ ],
2391
+ additionalProperties: false
2392
+ };
2393
+ export const RegistryRepositorySchema = {
2394
+ type: 'object',
2395
+ properties: {
2396
+ name: {
2397
+ type: 'string',
2398
+ description: 'Repository name.',
2399
+ example: 'my-app'
2400
+ },
2401
+ region: {
2402
+ type: 'string',
2403
+ description: 'Registry region.',
2404
+ example: 'northamerica'
2405
+ },
2406
+ uri: {
2407
+ type: 'string',
2408
+ description: 'Full URI of the repository.',
2409
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
2410
+ }
2411
+ },
2412
+ required: [
2413
+ 'name',
2414
+ 'region',
2415
+ 'uri'
2416
+ ],
2417
+ additionalProperties: false
2418
+ };
2419
+ export const RegistryRepositoryWithTagsSchema = {
2420
+ type: 'object',
2421
+ properties: {
2422
+ name: {
2423
+ type: 'string',
2424
+ description: 'Repository name.',
2425
+ example: 'my-app'
2426
+ },
2427
+ region: {
2428
+ type: 'string',
2429
+ description: 'Registry region.',
2430
+ example: 'northamerica'
2431
+ },
2432
+ uri: {
2433
+ type: 'string',
2434
+ description: 'Full URI of the repository.',
2435
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
2436
+ },
2437
+ tags: {
2438
+ type: 'array',
2439
+ items: {
2440
+ type: 'object',
2441
+ properties: {
2442
+ name: {
2443
+ type: 'string',
2444
+ description: 'Tag name.',
2445
+ example: 'latest'
2446
+ },
2447
+ size: {
2448
+ type: 'number',
2449
+ format: 'float',
2450
+ description: 'Size of the tag in bytes.',
2451
+ example: 123456789
2452
+ },
2453
+ mediaType: {
2454
+ type: 'string',
2455
+ description: 'Media type of the manifest.',
2456
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
2457
+ },
2458
+ platforms: {
2459
+ type: 'array',
2460
+ items: {
2461
+ type: 'string'
2462
+ },
2463
+ description: 'Array of platform strings for multi-arch images (e.g., linux/amd64, linux/arm64).',
2464
+ example: [
2465
+ 'linux/amd64',
2466
+ 'linux/arm64'
2467
+ ]
2468
+ }
2469
+ },
2470
+ required: [
2471
+ 'name',
2472
+ 'size'
2473
+ ],
2474
+ additionalProperties: false
2475
+ },
2476
+ description: 'Array of tags in the repository.'
2477
+ },
2478
+ totalSize: {
2479
+ type: 'number',
2480
+ format: 'float',
2481
+ description: 'Total size of all tags in the repository in bytes.',
2482
+ example: 987654321
2483
+ }
2484
+ },
2485
+ required: [
2486
+ 'name',
2487
+ 'region',
2488
+ 'uri',
2489
+ 'tags',
2490
+ 'totalSize'
2491
+ ],
2492
+ additionalProperties: false
2493
+ };
2494
+ export const RegistryTagSchema = {
2495
+ type: 'object',
2496
+ properties: {
2497
+ name: {
2498
+ type: 'string',
2499
+ description: 'Tag name.',
2500
+ example: 'latest'
2501
+ },
2502
+ digest: {
2503
+ type: 'string',
2504
+ description: 'Manifest digest for pulling by digest.',
2505
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2506
+ },
2507
+ mediaType: {
2508
+ type: 'string',
2509
+ description: 'Media type of the manifest.',
2510
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
2511
+ },
2512
+ config: {
2513
+ type: 'object',
2514
+ properties: {
2515
+ size: {
2516
+ type: 'number',
2517
+ format: 'float',
2518
+ description: 'Size of the config in bytes.',
2519
+ example: 1234
2520
+ }
2521
+ },
2522
+ required: [
2523
+ 'size'
2524
+ ],
2525
+ additionalProperties: false,
2526
+ description: 'Manifest config metadata.'
2527
+ },
2528
+ layers: {
2529
+ type: 'array',
2530
+ items: {
2531
+ type: 'object',
2532
+ properties: {
2533
+ digest: {
2534
+ type: 'string',
2535
+ description: 'Digest of the layer.',
2536
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2537
+ },
2538
+ size: {
2539
+ type: 'number',
2540
+ format: 'float',
2541
+ description: 'Size of the layer in bytes.',
2542
+ example: 5678
2543
+ }
2544
+ },
2545
+ required: [
2546
+ 'size'
2547
+ ],
2548
+ additionalProperties: false
2549
+ },
2550
+ description: 'Array of layer metadata.'
2551
+ },
2552
+ manifests: {
2553
+ type: 'array',
2554
+ items: {
2555
+ type: 'object',
2556
+ properties: {
2557
+ digest: {
2558
+ type: 'string',
2559
+ description: 'Digest of the manifest.',
2560
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2561
+ },
2562
+ platform: {
2563
+ type: 'object',
2564
+ properties: {
2565
+ architecture: {
2566
+ type: 'string',
2567
+ description: 'Architecture of the platform.',
2568
+ example: 'amd64'
2569
+ },
2570
+ os: {
2571
+ type: 'string',
2572
+ description: 'Operating system of the platform.',
2573
+ example: 'linux'
2574
+ },
2575
+ variant: {
2576
+ type: 'string',
2577
+ description: 'Variant of the platform (e.g., v7, v8 for ARM).',
2578
+ example: 'v8'
2579
+ }
2580
+ },
2581
+ required: [
2582
+ 'architecture',
2583
+ 'os'
2584
+ ],
2585
+ additionalProperties: false,
2586
+ description: 'Platform information for the manifest.'
2587
+ },
2588
+ layers: {
2589
+ type: 'array',
2590
+ items: {
2591
+ type: 'object',
2592
+ properties: {
2593
+ digest: {
2594
+ type: 'string',
2595
+ description: 'Digest of the layer.',
2596
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2597
+ },
2598
+ size: {
2599
+ type: 'number',
2600
+ format: 'float',
2601
+ description: 'Size of the layer in bytes.',
2602
+ example: 5678
2603
+ }
2604
+ },
2605
+ required: [
2606
+ 'size'
2607
+ ],
2608
+ additionalProperties: false
2609
+ },
2610
+ description: 'Layers for this platform.'
2611
+ },
2612
+ size: {
2613
+ type: 'number',
2614
+ format: 'float',
2615
+ description: 'Total size of this platform manifest in bytes.',
2616
+ example: 12345678
2617
+ }
2618
+ },
2619
+ required: [
2620
+ 'digest'
2621
+ ],
2622
+ additionalProperties: false
2623
+ },
2624
+ description: 'Array of manifests for multi-arch images.'
2625
+ },
2626
+ size: {
2627
+ type: 'number',
2628
+ format: 'float',
2629
+ description: 'Total size of the tag in bytes.',
2630
+ example: 123456789
2631
+ },
2632
+ region: {
2633
+ type: 'string',
2634
+ description: 'Registry region.',
2635
+ example: 'northamerica'
2636
+ },
2637
+ repository: {
2638
+ type: 'string',
2639
+ description: 'Repository name.',
2640
+ example: 'my-app'
2641
+ },
2642
+ uri: {
2643
+ type: 'string',
2644
+ description: 'Full URI of the tag.',
2645
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app:latest'
2646
+ }
2647
+ },
2648
+ required: [
2649
+ 'name',
2650
+ 'digest',
2651
+ 'size',
2652
+ 'region',
2653
+ 'repository',
2654
+ 'uri'
2655
+ ],
2656
+ additionalProperties: false
2657
+ };
2658
+ export const TicketAttachmentSchema = {
2659
+ type: 'object',
2660
+ properties: {
2661
+ id: {
2662
+ type: 'string',
2663
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2664
+ example: '60c72b2f9f1b2c001f8e4d3c'
2665
+ },
2666
+ filename: {
2667
+ type: 'string',
2668
+ description: 'Original filename as uploaded.',
2669
+ example: 'debug.log'
2670
+ },
2671
+ content_type: {
2672
+ type: 'string',
2673
+ description: 'MIME content type of the attachment.',
2674
+ example: 'text/plain'
2675
+ },
2676
+ size: {
2677
+ type: 'integer',
2678
+ description: 'Size of the attachment in bytes.',
2679
+ example: 12345
2680
+ }
2681
+ },
2682
+ required: [
2683
+ 'id',
2684
+ 'filename',
2685
+ 'content_type',
2686
+ 'size'
2687
+ ],
2688
+ additionalProperties: false
2689
+ };
2690
+ export const TicketCreateInputSchema = {
2691
+ type: 'object',
2692
+ properties: {
2693
+ category: {
2694
+ type: 'string',
2695
+ description: 'Ticket category. Drives auto-assignment and may carry a subcategory in `properties`.',
2696
+ example: 'technical',
2697
+ enum: [
2698
+ 'billing',
2699
+ 'technical',
2700
+ 'general'
2701
+ ]
2702
+ },
2703
+ body: {
2704
+ type: 'string',
2705
+ maxLength: 50000,
2706
+ minLength: 1,
2707
+ pattern: '\\S',
2708
+ description: 'Initial message body in markdown. There is no separate subject — the first message body is the description.',
2709
+ example: 'My cluster cannot reach the registry. Logs attached.'
2710
+ },
2711
+ properties: {
2712
+ type: 'object',
2713
+ additionalProperties: true,
2714
+ description: 'Free-form key/value bag set by the UI (e.g. `subcategory`, `cluster_id`, `cluster_name`, `region`).',
2715
+ example: {
2716
+ subcategory: 'cluster-question',
2717
+ cluster_id: '60c72b2f9f1b2c001f8e4d3a'
2718
+ }
2719
+ }
2720
+ },
2721
+ required: [
2722
+ 'category',
2723
+ 'body'
2724
+ ],
2725
+ additionalProperties: false
2726
+ };
2727
+ export const TicketListResponseSchema = {
2728
+ type: 'object',
2729
+ properties: {
2730
+ items: {
2731
+ type: 'array',
2732
+ items: {
2733
+ type: 'object',
2734
+ properties: {
2735
+ id: {
2736
+ type: 'string',
2737
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
2738
+ example: '60c72b2f9f1b2c001f8e4d3a'
2739
+ },
2740
+ status: {
2741
+ type: 'string',
2742
+ description: 'Current state of the ticket.',
2743
+ example: 'waiting_on_us',
2744
+ enum: [
2745
+ 'waiting_on_us',
2746
+ 'waiting_on_user',
2747
+ 'closed'
2748
+ ]
2749
+ },
2750
+ category: {
2751
+ type: 'string',
2752
+ description: 'Ticket category.',
2753
+ example: 'technical',
2754
+ enum: [
2755
+ 'billing',
2756
+ 'technical',
2757
+ 'general'
2758
+ ]
2759
+ },
2760
+ summary: {
2761
+ type: 'string',
2762
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2763
+ example: 'My cluster cannot reach the registry. Logs attached.'
2764
+ },
2765
+ closed_at: {
2766
+ type: 'string',
2767
+ format: 'date-time',
2768
+ nullable: true,
2769
+ description: 'Closure timestamp. Null while the ticket is open.',
2770
+ example: '2026-05-18T16:08:14.338Z'
2771
+ },
2772
+ date_created: {
2773
+ type: 'string',
2774
+ format: 'date-time',
2775
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
2776
+ example: '2026-05-11T16:08:14.338Z'
2777
+ },
2778
+ date_updated: {
2779
+ type: 'string',
2780
+ format: 'date-time',
2781
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
2782
+ example: '2026-05-11T16:08:14.338Z'
2783
+ },
2784
+ messages: {
2785
+ type: 'array',
2786
+ items: {
2787
+ type: 'object',
2788
+ properties: {
2789
+ id: {
2790
+ type: 'string',
2791
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2792
+ example: '60c72b2f9f1b2c001f8e4d3b'
2793
+ },
2794
+ type: {
2795
+ type: 'string',
2796
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2797
+ example: 'customer_reply',
2798
+ enum: [
2799
+ 'customer_reply',
2800
+ 'agent_reply'
2801
+ ]
2802
+ },
2803
+ body: {
2804
+ type: 'string',
2805
+ description: 'Message body in markdown.',
2806
+ example: 'Thanks — that resolved it on my side.'
2807
+ },
2808
+ author_first_name: {
2809
+ type: 'string',
2810
+ nullable: true,
2811
+ description: 'First name of the author. Null when not provided.',
2812
+ example: 'Jane'
2813
+ },
2814
+ author_last_name: {
2815
+ type: 'string',
2816
+ nullable: true,
2817
+ description: 'Last name of the author. Null when not provided.',
2818
+ example: 'Doe'
2819
+ },
2820
+ attachments: {
2821
+ type: 'array',
2822
+ items: {
2823
+ type: 'object',
2824
+ properties: {
2825
+ id: {
2826
+ type: 'string',
2827
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2828
+ example: '60c72b2f9f1b2c001f8e4d3c'
2829
+ },
2830
+ filename: {
2831
+ type: 'string',
2832
+ description: 'Original filename as uploaded.',
2833
+ example: 'debug.log'
2834
+ },
2835
+ content_type: {
2836
+ type: 'string',
2837
+ description: 'MIME content type of the attachment.',
2838
+ example: 'text/plain'
2839
+ },
2840
+ size: {
2841
+ type: 'integer',
2842
+ description: 'Size of the attachment in bytes.',
2843
+ example: 12345
2844
+ }
2845
+ },
2846
+ required: [
2847
+ 'id',
2848
+ 'filename',
2849
+ 'content_type',
2850
+ 'size'
2851
+ ],
2852
+ additionalProperties: false
2853
+ },
2854
+ description: 'Attachments associated with this message.',
2855
+ example: []
2856
+ },
2857
+ date_created: {
2858
+ type: 'string',
2859
+ format: 'date-time',
2860
+ description: 'Creation date of the message. ISO 8601 UTC.',
2861
+ example: '2026-05-11T16:08:14.338Z'
2862
+ }
2863
+ },
2864
+ required: [
2865
+ 'id',
2866
+ 'type',
2867
+ 'body',
2868
+ 'date_created'
2869
+ ],
2870
+ additionalProperties: false
2871
+ },
2872
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2873
+ }
2874
+ },
2875
+ required: [
2876
+ 'id',
2877
+ 'status',
2878
+ 'category',
2879
+ 'summary',
2880
+ 'date_created',
2881
+ 'date_updated'
2882
+ ],
2883
+ additionalProperties: false
2884
+ },
2885
+ description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2886
+ }
2887
+ },
2888
+ required: [
2889
+ 'items'
2890
+ ],
2891
+ additionalProperties: false
2892
+ };
2893
+ export const TicketMessageInputSchema = {
2894
+ type: 'object',
2895
+ properties: {
2896
+ body: {
2897
+ type: 'string',
2898
+ maxLength: 50000,
2899
+ minLength: 1,
2900
+ pattern: '\\S',
2901
+ description: 'Reply body in markdown.',
2902
+ example: 'Thanks — that resolved it on my side.'
2903
+ }
2904
+ },
2905
+ required: [
2906
+ 'body'
2907
+ ],
2908
+ additionalProperties: false
2909
+ };
2910
+ export const TicketMessageSchema = {
2911
+ type: 'object',
2912
+ properties: {
2913
+ id: {
2914
+ type: 'string',
2915
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2916
+ example: '60c72b2f9f1b2c001f8e4d3b'
2917
+ },
2918
+ type: {
2919
+ type: 'string',
2920
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2921
+ example: 'customer_reply',
2922
+ enum: [
2923
+ 'customer_reply',
2924
+ 'agent_reply'
2925
+ ]
2926
+ },
2927
+ body: {
2928
+ type: 'string',
2929
+ description: 'Message body in markdown.',
2930
+ example: 'Thanks — that resolved it on my side.'
2931
+ },
2932
+ author_first_name: {
2933
+ type: 'string',
2934
+ description: 'First name of the author. Null when not provided.',
2935
+ example: 'Jane'
2936
+ },
2937
+ author_last_name: {
2938
+ type: 'string',
2939
+ description: 'Last name of the author. Null when not provided.',
2940
+ example: 'Doe'
2941
+ },
2942
+ attachments: {
2943
+ type: 'array',
2944
+ items: {
2945
+ type: 'object',
2946
+ properties: {
2947
+ id: {
2948
+ type: 'string',
2949
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2950
+ example: '60c72b2f9f1b2c001f8e4d3c'
1271
2951
  },
1272
- minItems: 0,
1273
- description: 'List of Cloudfleet cluster tiers available for the organization.'
1274
- },
1275
- regions: {
1276
- type: 'array',
1277
- items: {
2952
+ filename: {
1278
2953
  type: 'string',
1279
- example: 'northamerica-central-1'
2954
+ description: 'Original filename as uploaded.',
2955
+ example: 'debug.log'
1280
2956
  },
1281
- minItems: 1,
1282
- description: 'List of Cloudfleet control plane regions available for the organization.'
1283
- },
1284
- versions: {
1285
- type: 'array',
1286
- items: {
1287
- type: 'object',
1288
- properties: {
1289
- id: {
1290
- type: 'string',
1291
- description: 'Id of the control plane version. Used in API calls.',
1292
- example: '1.29.x-cfke.x'
1293
- },
1294
- label: {
1295
- type: 'string',
1296
- description: 'Label of the control plane version. Used in frontent UI.',
1297
- example: '1.29.x (Always latest 1.29 patch version)'
1298
- }
1299
- },
1300
- required: ['id', 'label'],
1301
- additionalProperties: false
2957
+ content_type: {
2958
+ type: 'string',
2959
+ description: 'MIME content type of the attachment.',
2960
+ example: 'text/plain'
1302
2961
  },
1303
- minItems: 1,
1304
- description: 'List of CFKE control plane versions available for the organization.'
1305
- }
2962
+ size: {
2963
+ type: 'integer',
2964
+ description: 'Size of the attachment in bytes.',
2965
+ example: 12345
2966
+ }
2967
+ },
2968
+ required: [
2969
+ 'id',
2970
+ 'filename',
2971
+ 'content_type',
2972
+ 'size'
2973
+ ],
2974
+ additionalProperties: false
1306
2975
  },
1307
- required: ['basic_clusters_max', 'basic_clusters_available', 'pro_clusters_max', 'pro_clusters_available', 'fleets_max', 'cluster_tiers', 'regions', 'versions'],
1308
- additionalProperties: false,
1309
- description: 'For security reasons, platform quota is controlled by Cloudfleet and can be updated only by Cloudfleet administrators. Please open a support ticket if you need to change the platform quota.'
2976
+ description: 'Attachments associated with this message.',
2977
+ example: []
1310
2978
  },
1311
- status: {
2979
+ date_created: {
1312
2980
  type: 'string',
1313
- description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
1314
- enum: ['active', 'closed', 'suspended']
2981
+ format: 'date-time',
2982
+ description: 'Creation date of the message. ISO 8601 UTC.',
2983
+ example: '2026-05-11T16:08:14.338Z'
1315
2984
  }
1316
2985
  },
1317
- required: ['id', 'date_created', 'quota', 'status'],
2986
+ required: [
2987
+ 'id',
2988
+ 'type',
2989
+ 'body',
2990
+ 'date_created'
2991
+ ],
1318
2992
  additionalProperties: false
1319
2993
  };
1320
- export const PaymentMethodSchema = {
2994
+ export const TicketSchema = {
1321
2995
  type: 'object',
1322
2996
  properties: {
1323
2997
  id: {
1324
2998
  type: 'string',
1325
- format: 'uuid',
1326
- description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
1327
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
2999
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
3000
+ example: '60c72b2f9f1b2c001f8e4d3a'
1328
3001
  },
1329
- setup: {
1330
- type: 'boolean',
1331
- description: 'Whether organization payment method was set up and ready to use for payments.',
1332
- example: true
3002
+ status: {
3003
+ type: 'string',
3004
+ description: 'Current state of the ticket.',
3005
+ example: 'waiting_on_us',
3006
+ enum: [
3007
+ 'waiting_on_us',
3008
+ 'waiting_on_user',
3009
+ 'closed'
3010
+ ]
1333
3011
  },
1334
- type: {
3012
+ category: {
1335
3013
  type: 'string',
1336
- nullable: true,
1337
- description: 'Payment method type type. Only `card` payments supported at the moment.',
1338
- example: 'card',
1339
- enum: ['card']
3014
+ description: 'Ticket category.',
3015
+ example: 'technical',
3016
+ enum: [
3017
+ 'billing',
3018
+ 'technical',
3019
+ 'general'
3020
+ ]
1340
3021
  },
1341
- last4: {
3022
+ summary: {
1342
3023
  type: 'string',
1343
- nullable: true,
1344
- description: 'Last 4 digits of the payment card number.',
1345
- example: '4242'
3024
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3025
+ example: 'My cluster cannot reach the registry. Logs attached.'
1346
3026
  },
1347
- exp_month: {
1348
- type: 'integer',
1349
- minimum: 1,
1350
- maximum: 12,
1351
- nullable: true,
1352
- description: "Two-digit number representing the card's expiration month.",
1353
- example: '12'
3027
+ closed_at: {
3028
+ type: 'string',
3029
+ format: 'date-time',
3030
+ description: 'Closure timestamp. Null while the ticket is open.',
3031
+ example: '2026-05-18T16:08:14.338Z'
1354
3032
  },
1355
- exp_year: {
1356
- type: 'integer',
1357
- minimum: 2024,
1358
- nullable: true,
1359
- description: "Four-digit number representing the card's expiration year.",
1360
- example: '2028'
3033
+ date_created: {
3034
+ type: 'string',
3035
+ format: 'date-time',
3036
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
3037
+ example: '2026-05-11T16:08:14.338Z'
1361
3038
  },
1362
- brand: {
3039
+ date_updated: {
1363
3040
  type: 'string',
1364
- nullable: true,
1365
- description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
1366
- example: 'visa',
1367
- enum: ['amex', 'diners', 'discover', 'eftpos_au', 'jcb', 'mastercard', 'unionpay', 'visa', 'unknown']
3041
+ format: 'date-time',
3042
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
3043
+ example: '2026-05-11T16:08:14.338Z'
3044
+ },
3045
+ messages: {
3046
+ type: 'array',
3047
+ items: {
3048
+ type: 'object',
3049
+ properties: {
3050
+ id: {
3051
+ type: 'string',
3052
+ description: 'Unique identifier of the message (Mongo ObjectId).',
3053
+ example: '60c72b2f9f1b2c001f8e4d3b'
3054
+ },
3055
+ type: {
3056
+ type: 'string',
3057
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
3058
+ example: 'customer_reply',
3059
+ enum: [
3060
+ 'customer_reply',
3061
+ 'agent_reply'
3062
+ ]
3063
+ },
3064
+ body: {
3065
+ type: 'string',
3066
+ description: 'Message body in markdown.',
3067
+ example: 'Thanks — that resolved it on my side.'
3068
+ },
3069
+ author_first_name: {
3070
+ type: 'string',
3071
+ description: 'First name of the author. Null when not provided.',
3072
+ example: 'Jane'
3073
+ },
3074
+ author_last_name: {
3075
+ type: 'string',
3076
+ description: 'Last name of the author. Null when not provided.',
3077
+ example: 'Doe'
3078
+ },
3079
+ attachments: {
3080
+ type: 'array',
3081
+ items: {
3082
+ type: 'object',
3083
+ properties: {
3084
+ id: {
3085
+ type: 'string',
3086
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
3087
+ example: '60c72b2f9f1b2c001f8e4d3c'
3088
+ },
3089
+ filename: {
3090
+ type: 'string',
3091
+ description: 'Original filename as uploaded.',
3092
+ example: 'debug.log'
3093
+ },
3094
+ content_type: {
3095
+ type: 'string',
3096
+ description: 'MIME content type of the attachment.',
3097
+ example: 'text/plain'
3098
+ },
3099
+ size: {
3100
+ type: 'integer',
3101
+ description: 'Size of the attachment in bytes.',
3102
+ example: 12345
3103
+ }
3104
+ },
3105
+ required: [
3106
+ 'id',
3107
+ 'filename',
3108
+ 'content_type',
3109
+ 'size'
3110
+ ],
3111
+ additionalProperties: false
3112
+ },
3113
+ description: 'Attachments associated with this message.',
3114
+ example: []
3115
+ },
3116
+ date_created: {
3117
+ type: 'string',
3118
+ format: 'date-time',
3119
+ description: 'Creation date of the message. ISO 8601 UTC.',
3120
+ example: '2026-05-11T16:08:14.338Z'
3121
+ }
3122
+ },
3123
+ required: [
3124
+ 'id',
3125
+ 'type',
3126
+ 'body',
3127
+ 'date_created'
3128
+ ],
3129
+ additionalProperties: false
3130
+ },
3131
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
1368
3132
  }
1369
3133
  },
1370
- required: ['id', 'setup', 'type', 'last4', 'exp_month', 'exp_year', 'brand'],
3134
+ required: [
3135
+ 'id',
3136
+ 'status',
3137
+ 'category',
3138
+ 'summary',
3139
+ 'date_created',
3140
+ 'date_updated'
3141
+ ],
1371
3142
  additionalProperties: false
1372
3143
  };
1373
3144
  export const TokenCreateInputSchema = {
@@ -1385,10 +3156,16 @@ export const TokenCreateInputSchema = {
1385
3156
  type: 'string',
1386
3157
  description: 'Role assumed by the token.',
1387
3158
  example: 'User',
1388
- enum: ['Administrator', 'User']
3159
+ enum: [
3160
+ 'Administrator',
3161
+ 'User'
3162
+ ]
1389
3163
  }
1390
3164
  },
1391
- required: ['name', 'role'],
3165
+ required: [
3166
+ 'name',
3167
+ 'role'
3168
+ ],
1392
3169
  additionalProperties: false
1393
3170
  };
1394
3171
  export const TokenSchema = {
@@ -1406,7 +3183,10 @@ export const TokenSchema = {
1406
3183
  type: 'string',
1407
3184
  description: 'Role assumed by the token.',
1408
3185
  example: 'User',
1409
- enum: ['Administrator', 'User']
3186
+ enum: [
3187
+ 'Administrator',
3188
+ 'User'
3189
+ ]
1410
3190
  },
1411
3191
  id: {
1412
3192
  type: 'string',
@@ -1425,7 +3205,11 @@ export const TokenSchema = {
1425
3205
  example: '2023-12-20T13:53:32.000Z'
1426
3206
  }
1427
3207
  },
1428
- required: ['name', 'role', 'date_created'],
3208
+ required: [
3209
+ 'name',
3210
+ 'role',
3211
+ 'date_created'
3212
+ ],
1429
3213
  additionalProperties: false
1430
3214
  };
1431
3215
  export const TokenUpdateInputSchema = {
@@ -1443,9 +3227,127 @@ export const TokenUpdateInputSchema = {
1443
3227
  type: 'string',
1444
3228
  description: 'Role assumed by the token.',
1445
3229
  example: 'User',
1446
- enum: ['Administrator', 'User']
3230
+ enum: [
3231
+ 'Administrator',
3232
+ 'User'
3233
+ ]
3234
+ }
3235
+ },
3236
+ additionalProperties: false
3237
+ };
3238
+ export const UsageFacetsSchema = {
3239
+ type: 'object',
3240
+ properties: {
3241
+ cluster_id: {
3242
+ type: 'array',
3243
+ items: {
3244
+ type: 'string'
3245
+ },
3246
+ description: 'List of unique cluster IDs',
3247
+ example: [
3248
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3249
+ ]
3250
+ },
3251
+ product: {
3252
+ type: 'array',
3253
+ items: {
3254
+ type: 'string'
3255
+ },
3256
+ description: 'List of unique products',
3257
+ example: [
3258
+ 'cfke_controlplane',
3259
+ 'cfke_connected_nodes'
3260
+ ]
3261
+ }
3262
+ },
3263
+ additionalProperties: false
3264
+ };
3265
+ export const UsageResponseSchema = {
3266
+ type: 'object',
3267
+ properties: {
3268
+ data: {
3269
+ type: 'array',
3270
+ items: {
3271
+ type: 'object',
3272
+ properties: {
3273
+ hour: {
3274
+ type: 'string',
3275
+ description: 'Hour of the usage',
3276
+ example: '2019-01-01T00:00:00.000Z'
3277
+ },
3278
+ cluster_id: {
3279
+ type: 'string',
3280
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
3281
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3282
+ },
3283
+ product: {
3284
+ type: 'string',
3285
+ description: 'The product the usage is associated with',
3286
+ example: 'cfke_controlplane'
3287
+ },
3288
+ value: {
3289
+ type: 'number',
3290
+ format: 'float',
3291
+ description: 'Consumption',
3292
+ example: 4
3293
+ },
3294
+ price: {
3295
+ type: 'number',
3296
+ format: 'float',
3297
+ description: 'Price per unit',
3298
+ example: 0.01
3299
+ },
3300
+ total: {
3301
+ type: 'number',
3302
+ format: 'float',
3303
+ description: 'Total cost'
3304
+ }
3305
+ },
3306
+ required: [
3307
+ 'hour',
3308
+ 'cluster_id',
3309
+ 'product',
3310
+ 'value',
3311
+ 'price',
3312
+ 'total'
3313
+ ],
3314
+ additionalProperties: false
3315
+ },
3316
+ description: 'Usage data'
3317
+ },
3318
+ facets: {
3319
+ type: 'object',
3320
+ properties: {
3321
+ cluster_id: {
3322
+ type: 'array',
3323
+ items: {
3324
+ type: 'string'
3325
+ },
3326
+ description: 'List of unique cluster IDs',
3327
+ example: [
3328
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3329
+ ]
3330
+ },
3331
+ product: {
3332
+ type: 'array',
3333
+ items: {
3334
+ type: 'string'
3335
+ },
3336
+ description: 'List of unique products',
3337
+ example: [
3338
+ 'cfke_controlplane',
3339
+ 'cfke_connected_nodes'
3340
+ ]
3341
+ }
3342
+ },
3343
+ additionalProperties: false,
3344
+ description: 'Facets for filtering'
1447
3345
  }
1448
3346
  },
3347
+ required: [
3348
+ 'data',
3349
+ 'facets'
3350
+ ],
1449
3351
  additionalProperties: false
1450
3352
  };
1451
3353
  export const UsageSchema = {
@@ -1458,90 +3360,40 @@ export const UsageSchema = {
1458
3360
  },
1459
3361
  cluster_id: {
1460
3362
  type: 'string',
1461
- format: 'uuid',
1462
3363
  description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
1463
3364
  example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
1464
3365
  },
1465
- cluster_tier: {
1466
- type: 'string',
1467
- description: 'Tier of the cluster.',
1468
- example: 'pro',
1469
- enum: ['basic', 'pro', '']
1470
- },
1471
3366
  product: {
1472
3367
  type: 'string',
1473
3368
  description: 'The product the usage is associated with',
1474
- example: 'cfke_controlplane',
1475
- enum: ['cfke_controlplane', 'cfke_connected_nodes', 'infra_compute', 'infra_storage', 'infra_loadbalancing', 'infra_traffic', 'cfcr_storage']
1476
- },
1477
- node_name: {
1478
- type: 'string',
1479
- description: 'Name of the Kubernetes node',
1480
- example: 'flexible-moth-956037384'
1481
- },
1482
- sku: {
1483
- type: 'string',
1484
- description: 'SKU of the Kubernetes node',
1485
- example: 'GCP-NORTHAMERICA-NORTHEAST1-A-G1-SMALL-SPOT'
3369
+ example: 'cfke_controlplane'
1486
3370
  },
1487
- cpu: {
1488
- anyOf: [
1489
- {
1490
- type: 'number',
1491
- format: 'float',
1492
- description: 'CPU core count of the node',
1493
- example: 4
1494
- },
1495
- {
1496
- type: 'string',
1497
- enum: ['']
1498
- }
1499
- ]
3371
+ value: {
3372
+ type: 'number',
3373
+ format: 'float',
3374
+ description: 'Consumption',
3375
+ example: 4
1500
3376
  },
1501
3377
  price: {
1502
- anyOf: [
1503
- {
1504
- type: 'number',
1505
- format: 'float',
1506
- description: 'Price',
1507
- example: 4
1508
- },
1509
- {
1510
- type: 'string',
1511
- enum: ['']
1512
- }
1513
- ]
1514
- },
1515
- value: {
1516
- anyOf: [
1517
- {
1518
- type: 'number',
1519
- format: 'float',
1520
- description: 'Value',
1521
- example: 4
1522
- },
1523
- {
1524
- type: 'string',
1525
- enum: ['']
1526
- }
1527
- ]
3378
+ type: 'number',
3379
+ format: 'float',
3380
+ description: 'Price per unit',
3381
+ example: 0.01
1528
3382
  },
1529
3383
  total: {
1530
- anyOf: [
1531
- {
1532
- type: 'number',
1533
- format: 'float',
1534
- description: 'Total',
1535
- example: 4
1536
- },
1537
- {
1538
- type: 'string',
1539
- enum: ['']
1540
- }
1541
- ]
3384
+ type: 'number',
3385
+ format: 'float',
3386
+ description: 'Total cost'
1542
3387
  }
1543
3388
  },
1544
- required: ['cluster_id', 'cluster_tier', 'product', 'node_name', 'sku', 'cpu', 'price', 'value', 'total'],
3389
+ required: [
3390
+ 'hour',
3391
+ 'cluster_id',
3392
+ 'product',
3393
+ 'value',
3394
+ 'price',
3395
+ 'total'
3396
+ ],
1545
3397
  additionalProperties: false
1546
3398
  };
1547
3399
  export const UserCreateInputSchema = {
@@ -1582,16 +3434,28 @@ export const UserCreateInputSchema = {
1582
3434
  type: 'string',
1583
3435
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1584
3436
  example: 'active',
1585
- enum: ['active', 'inactive']
3437
+ enum: [
3438
+ 'active',
3439
+ 'inactive'
3440
+ ]
1586
3441
  },
1587
3442
  role: {
1588
3443
  type: 'string',
1589
- description: "User role. Can be 'Administrator', 'User'.",
3444
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1590
3445
  example: 'User',
1591
- enum: ['Administrator', 'User']
3446
+ enum: [
3447
+ 'Administrator',
3448
+ 'User'
3449
+ ]
1592
3450
  }
1593
3451
  },
1594
- required: ['email', 'first_name', 'last_name', 'code', 'password'],
3452
+ required: [
3453
+ 'email',
3454
+ 'first_name',
3455
+ 'last_name',
3456
+ 'code',
3457
+ 'password'
3458
+ ],
1595
3459
  additionalProperties: false
1596
3460
  };
1597
3461
  export const UserSchema = {
@@ -1619,15 +3483,21 @@ export const UserSchema = {
1619
3483
  },
1620
3484
  role: {
1621
3485
  type: 'string',
1622
- description: "User role. Can be 'Administrator', 'User'.",
3486
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1623
3487
  example: 'User',
1624
- enum: ['Administrator', 'User']
3488
+ enum: [
3489
+ 'Administrator',
3490
+ 'User'
3491
+ ]
1625
3492
  },
1626
3493
  status: {
1627
3494
  type: 'string',
1628
3495
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1629
3496
  example: 'active',
1630
- enum: ['active', 'inactive']
3497
+ enum: [
3498
+ 'active',
3499
+ 'inactive'
3500
+ ]
1631
3501
  },
1632
3502
  id: {
1633
3503
  type: 'string',
@@ -1642,7 +3512,15 @@ export const UserSchema = {
1642
3512
  example: '2023-11-02T16:08:14.338Z'
1643
3513
  }
1644
3514
  },
1645
- required: ['email', 'first_name', 'last_name', 'role', 'status', 'id', 'date_created'],
3515
+ required: [
3516
+ 'email',
3517
+ 'first_name',
3518
+ 'last_name',
3519
+ 'role',
3520
+ 'status',
3521
+ 'id',
3522
+ 'date_created'
3523
+ ],
1646
3524
  additionalProperties: false
1647
3525
  };
1648
3526
  export const UserUpdateInputSchema = {
@@ -1670,15 +3548,21 @@ export const UserUpdateInputSchema = {
1670
3548
  },
1671
3549
  role: {
1672
3550
  type: 'string',
1673
- description: "User role. Can be 'Administrator', 'User'.",
3551
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1674
3552
  example: 'User',
1675
- enum: ['Administrator', 'User']
3553
+ enum: [
3554
+ 'Administrator',
3555
+ 'User'
3556
+ ]
1676
3557
  },
1677
3558
  status: {
1678
3559
  type: 'string',
1679
3560
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1680
3561
  example: 'active',
1681
- enum: ['active', 'inactive']
3562
+ enum: [
3563
+ 'active',
3564
+ 'inactive'
3565
+ ]
1682
3566
  }
1683
3567
  },
1684
3568
  additionalProperties: false