@cloudfleet/sdk 0.0.1-8e8e76c → 0.0.1-8e907c6

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