@cloudfleet/sdk 0.0.1-523e444 → 0.0.1-55a31fe

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 (60) hide show
  1. package/dist/@tanstack/react-query.gen.d.ts +1125 -0
  2. package/dist/@tanstack/react-query.gen.d.ts.map +1 -0
  3. package/dist/@tanstack/react-query.gen.js +1129 -0
  4. package/dist/@tanstack/react-query.gen.js.map +1 -0
  5. package/dist/client/client.gen.d.ts.map +1 -1
  6. package/dist/client/client.gen.js +113 -98
  7. package/dist/client/client.gen.js.map +1 -1
  8. package/dist/client/index.d.ts +1 -1
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js.map +1 -1
  11. package/dist/client/types.gen.d.ts +9 -13
  12. package/dist/client/types.gen.d.ts.map +1 -1
  13. package/dist/client/utils.gen.d.ts +6 -2
  14. package/dist/client/utils.gen.d.ts.map +1 -1
  15. package/dist/client/utils.gen.js +10 -12
  16. package/dist/client/utils.gen.js.map +1 -1
  17. package/dist/client.gen.d.ts.map +1 -1
  18. package/dist/client.gen.js +1 -3
  19. package/dist/client.gen.js.map +1 -1
  20. package/dist/core/auth.gen.d.ts.map +1 -1
  21. package/dist/core/auth.gen.js.map +1 -1
  22. package/dist/core/bodySerializer.gen.d.ts +16 -8
  23. package/dist/core/bodySerializer.gen.d.ts.map +1 -1
  24. package/dist/core/bodySerializer.gen.js +1 -1
  25. package/dist/core/bodySerializer.gen.js.map +1 -1
  26. package/dist/core/params.gen.d.ts +10 -0
  27. package/dist/core/params.gen.d.ts.map +1 -1
  28. package/dist/core/params.gen.js +18 -6
  29. package/dist/core/params.gen.js.map +1 -1
  30. package/dist/core/pathSerializer.gen.d.ts.map +1 -1
  31. package/dist/core/pathSerializer.gen.js +3 -11
  32. package/dist/core/pathSerializer.gen.js.map +1 -1
  33. package/dist/core/queryKeySerializer.gen.d.ts.map +1 -1
  34. package/dist/core/queryKeySerializer.gen.js +4 -11
  35. package/dist/core/queryKeySerializer.gen.js.map +1 -1
  36. package/dist/core/serverSentEvents.gen.d.ts +1 -1
  37. package/dist/core/serverSentEvents.gen.d.ts.map +1 -1
  38. package/dist/core/serverSentEvents.gen.js +6 -9
  39. package/dist/core/serverSentEvents.gen.js.map +1 -1
  40. package/dist/core/types.gen.d.ts +1 -1
  41. package/dist/core/types.gen.d.ts.map +1 -1
  42. package/dist/core/utils.gen.d.ts.map +1 -1
  43. package/dist/core/utils.gen.js +1 -1
  44. package/dist/core/utils.gen.js.map +1 -1
  45. package/dist/schemas.gen.d.ts +972 -132
  46. package/dist/schemas.gen.d.ts.map +1 -1
  47. package/dist/schemas.gen.js +1633 -262
  48. package/dist/schemas.gen.js.map +1 -1
  49. package/dist/sdk.gen.d.ts +85 -7
  50. package/dist/sdk.gen.d.ts.map +1 -1
  51. package/dist/sdk.gen.js +158 -127
  52. package/dist/sdk.gen.js.map +1 -1
  53. package/dist/services/kubernetes/api.d.ts +8 -8
  54. package/dist/types.gen.d.ts +904 -57
  55. package/dist/types.gen.d.ts.map +1 -1
  56. package/dist/zod.gen.d.ts +899 -617
  57. package/dist/zod.gen.d.ts.map +1 -1
  58. package/dist/zod.gen.js +495 -457
  59. package/dist/zod.gen.js.map +1 -1
  60. package/package.json +28 -5
@@ -74,10 +74,142 @@ export const BillingContactSchema = {
74
74
  nullable: true,
75
75
  description: 'Type of the tax ID.',
76
76
  example: 'de_vat',
77
- enum: ['ad_nrt', 'ae_trn', 'al_tin', 'am_tin', 'ao_tin', 'ar_cuit', 'at_vat', 'au_abn', 'au_arn', 'ba_tin', 'bb_tin', 'be_vat', 'bg_uic', 'bg_vat', 'bh_vat', 'bo_tin', 'br_cnpj', 'br_cpf', 'bs_tin', 'by_tin', 'ca_bn', 'ca_gst_hst', 'ca_pst_bc', 'ca_pst_mb', 'ca_pst_sk', 'ca_qst', 'cd_nif', 'ch_uid', 'ch_vat', 'cl_tin', 'cn_tin', 'co_nit', 'cr_tin', 'cy_vat', 'cz_vat', 'de_stn', 'de_vat', 'dk_vat', 'do_rcn', 'ec_ruc', 'ee_vat', 'eg_tin', 'es_cif', 'es_vat', 'eu_oss_vat', 'fi_vat', 'fr_vat', 'gb_vat', 'ge_vat', 'gn_nif', 'gr_vat', 'hk_br', 'hr_oib', 'hr_vat', 'hu_tin', 'hu_vat', 'id_npwp', 'ie_vat', 'il_vat', 'in_gst', 'is_vat', 'it_vat', 'jp_cn', 'jp_rn', 'jp_trn', 'ke_pin', 'kh_tin', 'kr_brn', 'kz_bin', 'li_uid', 'li_vat', 'lt_vat', 'lu_vat', 'lv_vat', 'ma_vat', 'md_vat', 'me_pib', 'mk_vat', 'mr_nif', 'mt_vat', 'mx_rfc', 'my_frp', 'my_itn', 'my_sst', 'ng_tin', 'nl_vat', 'no_vat', 'no_voec', 'np_pan', 'nz_gst', 'om_vat', 'pe_ruc', 'ph_tin', 'pl_vat', 'pt_vat', 'ro_tin', 'ro_vat', 'rs_pib', 'ru_inn', 'ru_kpp', 'sa_vat', 'se_vat', 'sg_gst', 'sg_uen', 'si_tin', 'si_vat', 'sk_vat', 'sn_ninea', 'sr_fin', 'sv_nit', 'th_vat', 'tj_tin', 'tr_tin', 'tw_vat', 'tz_vat', 'ua_vat', 'ug_tin', 'us_ein', 'uy_ruc', 'uz_tin', 'uz_vat', 've_rif', 'vn_tin', 'xi_vat', 'za_vat', 'zm_tin', 'zw_tin', '']
77
+ enum: [
78
+ 'ad_nrt',
79
+ 'ae_trn',
80
+ 'al_tin',
81
+ 'am_tin',
82
+ 'ao_tin',
83
+ 'ar_cuit',
84
+ 'at_vat',
85
+ 'au_abn',
86
+ 'au_arn',
87
+ 'ba_tin',
88
+ 'bb_tin',
89
+ 'be_vat',
90
+ 'bg_uic',
91
+ 'bg_vat',
92
+ 'bh_vat',
93
+ 'bo_tin',
94
+ 'br_cnpj',
95
+ 'br_cpf',
96
+ 'bs_tin',
97
+ 'by_tin',
98
+ 'ca_bn',
99
+ 'ca_gst_hst',
100
+ 'ca_pst_bc',
101
+ 'ca_pst_mb',
102
+ 'ca_pst_sk',
103
+ 'ca_qst',
104
+ 'cd_nif',
105
+ 'ch_uid',
106
+ 'ch_vat',
107
+ 'cl_tin',
108
+ 'cn_tin',
109
+ 'co_nit',
110
+ 'cr_tin',
111
+ 'cy_vat',
112
+ 'cz_vat',
113
+ 'de_stn',
114
+ 'de_vat',
115
+ 'dk_vat',
116
+ 'do_rcn',
117
+ 'ec_ruc',
118
+ 'ee_vat',
119
+ 'eg_tin',
120
+ 'es_cif',
121
+ 'es_vat',
122
+ 'eu_oss_vat',
123
+ 'fi_vat',
124
+ 'fr_vat',
125
+ 'gb_vat',
126
+ 'ge_vat',
127
+ 'gn_nif',
128
+ 'gr_vat',
129
+ 'hk_br',
130
+ 'hr_oib',
131
+ 'hr_vat',
132
+ 'hu_tin',
133
+ 'hu_vat',
134
+ 'id_npwp',
135
+ 'ie_vat',
136
+ 'il_vat',
137
+ 'in_gst',
138
+ 'is_vat',
139
+ 'it_vat',
140
+ 'jp_cn',
141
+ 'jp_rn',
142
+ 'jp_trn',
143
+ 'ke_pin',
144
+ 'kh_tin',
145
+ 'kr_brn',
146
+ 'kz_bin',
147
+ 'li_uid',
148
+ 'li_vat',
149
+ 'lt_vat',
150
+ 'lu_vat',
151
+ 'lv_vat',
152
+ 'ma_vat',
153
+ 'md_vat',
154
+ 'me_pib',
155
+ 'mk_vat',
156
+ 'mr_nif',
157
+ 'mt_vat',
158
+ 'mx_rfc',
159
+ 'my_frp',
160
+ 'my_itn',
161
+ 'my_sst',
162
+ 'ng_tin',
163
+ 'nl_vat',
164
+ 'no_vat',
165
+ 'no_voec',
166
+ 'np_pan',
167
+ 'nz_gst',
168
+ 'om_vat',
169
+ 'pe_ruc',
170
+ 'ph_tin',
171
+ 'pl_vat',
172
+ 'pt_vat',
173
+ 'ro_tin',
174
+ 'ro_vat',
175
+ 'rs_pib',
176
+ 'ru_inn',
177
+ 'ru_kpp',
178
+ 'sa_vat',
179
+ 'se_vat',
180
+ 'sg_gst',
181
+ 'sg_uen',
182
+ 'si_tin',
183
+ 'si_vat',
184
+ 'sk_vat',
185
+ 'sn_ninea',
186
+ 'sr_fin',
187
+ 'sv_nit',
188
+ 'th_vat',
189
+ 'tj_tin',
190
+ 'tr_tin',
191
+ 'tw_vat',
192
+ 'tz_vat',
193
+ 'ua_vat',
194
+ 'ug_tin',
195
+ 'us_ein',
196
+ 'uy_ruc',
197
+ 'uz_tin',
198
+ 'uz_vat',
199
+ 've_rif',
200
+ 'vn_tin',
201
+ 'xi_vat',
202
+ 'za_vat',
203
+ 'zm_tin',
204
+ 'zw_tin',
205
+ ''
206
+ ]
78
207
  }
79
208
  },
80
- required: ['email', 'individual_name'],
209
+ required: [
210
+ 'email',
211
+ 'individual_name'
212
+ ],
81
213
  additionalProperties: false
82
214
  };
83
215
  export const BillingCreditsSchema = {
@@ -92,7 +224,10 @@ export const BillingCreditsSchema = {
92
224
  type: 'string',
93
225
  description: 'Type of the promotional code.',
94
226
  example: 'credit',
95
- enum: ['credit', 'discount']
227
+ enum: [
228
+ 'credit',
229
+ 'discount'
230
+ ]
96
231
  },
97
232
  date_start: {
98
233
  type: 'string',
@@ -129,7 +264,12 @@ export const BillingCreditsSchema = {
129
264
  example: 8
130
265
  }
131
266
  },
132
- required: ['type', 'date_start', 'code', 'value_total'],
267
+ required: [
268
+ 'type',
269
+ 'date_start',
270
+ 'code',
271
+ 'value_total'
272
+ ],
133
273
  additionalProperties: false
134
274
  };
135
275
  export const ChartCreateInputSchema = {
@@ -170,7 +310,13 @@ export const ChartCreateInputSchema = {
170
310
  example: 'postgresql'
171
311
  }
172
312
  },
173
- required: ['values', 'version_channel', 'name', 'namespace', 'chart'],
313
+ required: [
314
+ 'values',
315
+ 'version_channel',
316
+ 'name',
317
+ 'namespace',
318
+ 'chart'
319
+ ],
174
320
  additionalProperties: false
175
321
  };
176
322
  export const ChartSchema = {
@@ -214,7 +360,22 @@ export const ChartSchema = {
214
360
  type: 'string',
215
361
  description: 'Status of the chart deployment.',
216
362
  example: 'active',
217
- enum: ['InstallSucceeded', 'InstallFailed', 'UpgradeSucceeded', 'UpgradeFailed', 'TestSucceeded', 'TestFailed', 'RollbackSucceeded', 'RollbackFailed', 'UninstallSucceeded', 'UninstallFailed', 'ArtifactFailed', 'DependencyNotReady', 'Progressing', 'SourceNotReady']
363
+ enum: [
364
+ 'InstallSucceeded',
365
+ 'InstallFailed',
366
+ 'UpgradeSucceeded',
367
+ 'UpgradeFailed',
368
+ 'TestSucceeded',
369
+ 'TestFailed',
370
+ 'RollbackSucceeded',
371
+ 'RollbackFailed',
372
+ 'UninstallSucceeded',
373
+ 'UninstallFailed',
374
+ 'ArtifactFailed',
375
+ 'DependencyNotReady',
376
+ 'Progressing',
377
+ 'SourceNotReady'
378
+ ]
218
379
  },
219
380
  version_current: {
220
381
  type: 'string',
@@ -237,7 +398,18 @@ export const ChartSchema = {
237
398
  example: true
238
399
  }
239
400
  },
240
- required: ['values', 'version_channel', 'name', 'namespace', 'chart', 'status', 'version_current', 'created_at', 'updated_at', 'ready'],
401
+ required: [
402
+ 'values',
403
+ 'version_channel',
404
+ 'name',
405
+ 'namespace',
406
+ 'chart',
407
+ 'status',
408
+ 'version_current',
409
+ 'created_at',
410
+ 'updated_at',
411
+ 'ready'
412
+ ],
241
413
  additionalProperties: false
242
414
  };
243
415
  export const ChartUpdateInputSchema = {
@@ -254,7 +426,10 @@ export const ChartUpdateInputSchema = {
254
426
  example: '2.x.x-cfke.x'
255
427
  }
256
428
  },
257
- required: ['values', 'version_channel'],
429
+ required: [
430
+ 'values',
431
+ 'version_channel'
432
+ ],
258
433
  additionalProperties: false
259
434
  };
260
435
  export const ClusterCreateInputSchema = {
@@ -272,24 +447,41 @@ export const ClusterCreateInputSchema = {
272
447
  type: 'string',
273
448
  description: 'Tier of the cluster.',
274
449
  example: 'pro',
275
- enum: ['basic', 'pro']
450
+ enum: [
451
+ 'basic',
452
+ 'pro'
453
+ ]
276
454
  },
277
455
  region: {
278
456
  type: 'string',
279
- description: 'Cloudfleet control plane region. One of "staging", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
280
- default: 'staging',
457
+ description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
458
+ default: 'staging-1a',
281
459
  example: 'northamerica-central-1a',
282
- enum: ['staging', 'northamerica-central-1', 'europe-central-1a', 'northamerica-central-1a']
460
+ enum: [
461
+ 'staging-1a',
462
+ 'northamerica-central-1',
463
+ 'europe-central-1a',
464
+ 'northamerica-central-1a'
465
+ ]
283
466
  },
284
467
  version_channel: {
285
468
  type: 'string',
286
469
  pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
287
470
  description: 'Version of the kubernetes cluster.',
288
471
  default: '1.x.x-cfke.x',
289
- example: '1.29.x-cfke.x'
472
+ example: '1.x.x-cfke.x',
473
+ enum: [
474
+ '1.x.x-cfke.x',
475
+ '1.31.x-cfke.x',
476
+ '1.32.x-cfke.x',
477
+ '1.33.x-cfke.x'
478
+ ]
290
479
  }
291
480
  },
292
- required: ['name', 'tier'],
481
+ required: [
482
+ 'name',
483
+ 'tier'
484
+ ],
293
485
  additionalProperties: false
294
486
  };
295
487
  export const ClusterJoinInformationSchema = {
@@ -298,8 +490,7 @@ export const ClusterJoinInformationSchema = {
298
490
  certificate_authority: {
299
491
  type: 'string',
300
492
  description: 'Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.',
301
- example: `-----BEGIN CERTIFICATE-----
302
- MIIC0DCCAbigAwIBAgI...`
493
+ example: '-----BEGIN CERTIFICATE-----\nMIIC0DCCAbigAwIBAgI...'
303
494
  },
304
495
  endpoint: {
305
496
  type: 'string',
@@ -307,6 +498,11 @@ MIIC0DCCAbigAwIBAgI...`
307
498
  description: 'Internal URL of the Kubernetes cluster control plane. This is the endpoint that kubelet uses to connect to the cluster.',
308
499
  example: 'https://10.31.64.7:6443'
309
500
  },
501
+ cluster_dns: {
502
+ type: 'string',
503
+ description: 'Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.',
504
+ example: '10.96.0.10'
505
+ },
310
506
  auth_key: {
311
507
  type: 'string',
312
508
  description: 'Authentication key for the cluster.',
@@ -323,7 +519,7 @@ MIIC0DCCAbigAwIBAgI...`
323
519
  kubernetes: {
324
520
  type: 'string',
325
521
  description: 'Kubernetes version of the cluster.',
326
- example: '1.29.3'
522
+ example: '1.33.7'
327
523
  },
328
524
  tailscale: {
329
525
  type: 'string',
@@ -341,7 +537,12 @@ MIIC0DCCAbigAwIBAgI...`
341
537
  example: '565.0.0'
342
538
  }
343
539
  },
344
- required: ['kubernetes', 'tailscale', 'containerd', 'nvidia_driver'],
540
+ required: [
541
+ 'kubernetes',
542
+ 'tailscale',
543
+ 'containerd',
544
+ 'nvidia_driver'
545
+ ],
345
546
  additionalProperties: false,
346
547
  description: 'Versions of the different components of the cluster.'
347
548
  },
@@ -364,12 +565,24 @@ MIIC0DCCAbigAwIBAgI...`
364
565
  example: '//iam.googleapis.com/projects/89014267864/locations/global/workloadIdentityPools/cfke/providers/oidc'
365
566
  }
366
567
  },
367
- required: ['metadata_url', 'aws_role_arn', 'gcp_workload_identity_provider'],
568
+ required: [
569
+ 'metadata_url',
570
+ 'aws_role_arn',
571
+ 'gcp_workload_identity_provider'
572
+ ],
368
573
  additionalProperties: false,
369
- description: "OIDC Information for hosts to access to third party API's."
574
+ description: 'OIDC Information for hosts to access to third party API\'s.'
370
575
  }
371
576
  },
372
- required: ['certificate_authority', 'endpoint', 'auth_key', 'bootstrap_token', 'versions', 'third_party_api_access_config'],
577
+ required: [
578
+ 'certificate_authority',
579
+ 'endpoint',
580
+ 'cluster_dns',
581
+ 'auth_key',
582
+ 'bootstrap_token',
583
+ 'versions',
584
+ 'third_party_api_access_config'
585
+ ],
373
586
  additionalProperties: false
374
587
  };
375
588
  export const ClusterSchema = {
@@ -387,21 +600,22 @@ export const ClusterSchema = {
387
600
  type: 'string',
388
601
  description: 'Tier of the cluster.',
389
602
  example: 'pro',
390
- enum: ['basic', 'pro']
603
+ enum: [
604
+ 'basic',
605
+ 'pro'
606
+ ]
391
607
  },
392
608
  region: {
393
609
  type: 'string',
394
- description: 'Cloudfleet control plane region. One of "staging", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
395
- default: 'staging',
610
+ description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
611
+ default: 'staging-1a',
396
612
  example: 'northamerica-central-1a',
397
- enum: ['staging', 'northamerica-central-1', 'europe-central-1a', 'northamerica-central-1a']
398
- },
399
- version_channel: {
400
- type: 'string',
401
- 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-]+)*))?$',
402
- description: 'Version of the kubernetes cluster.',
403
- default: '1.x.x-cfke.x',
404
- example: '1.29.x-cfke.x'
613
+ enum: [
614
+ 'staging-1a',
615
+ 'northamerica-central-1',
616
+ 'europe-central-1a',
617
+ 'northamerica-central-1a'
618
+ ]
405
619
  },
406
620
  id: {
407
621
  type: 'string',
@@ -413,32 +627,57 @@ export const ClusterSchema = {
413
627
  type: 'string',
414
628
  description: 'Status of the cluster. When creating a new cluster, set to `active`. When deleting a clusters, set to `deleted`.',
415
629
  example: 'active',
416
- enum: ['active', 'disabled', 'deleted', 'creating', 'deployed', 'failed', 'updating']
630
+ enum: [
631
+ 'active',
632
+ 'disabled',
633
+ 'deleted',
634
+ 'creating',
635
+ 'deployed',
636
+ 'failed',
637
+ 'updating'
638
+ ]
417
639
  },
418
640
  endpoint: {
419
641
  anyOf: [
420
642
  {
421
643
  type: 'string',
422
644
  format: 'uri',
423
- description: 'URL of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
645
+ description: 'URL signed by the private CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster. (Deprecated, use endpoint_public instead)',
424
646
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.cloudfleet.dev:6443'
425
647
  },
426
648
  {
427
649
  type: 'string',
428
- enum: ['']
650
+ enum: [
651
+ ''
652
+ ]
653
+ }
654
+ ]
655
+ },
656
+ endpoint_public: {
657
+ anyOf: [
658
+ {
659
+ type: 'string',
660
+ format: 'uri',
661
+ description: 'URL signed by a public CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
662
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
663
+ },
664
+ {
665
+ type: 'string',
666
+ enum: [
667
+ ''
668
+ ]
429
669
  }
430
670
  ]
431
671
  },
432
672
  certificate_ca: {
433
673
  type: 'string',
434
674
  description: 'Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.',
435
- example: `-----BEGIN CERTIFICATE-----
436
- MIIC0DCCAbigAwIBAgI...`
675
+ example: '-----BEGIN CERTIFICATE-----\nMIIC0DCCAbigAwIBAgI...'
437
676
  },
438
677
  version_current: {
439
678
  type: 'string',
440
679
  description: 'Current version of the cluster.',
441
- example: '1.29.3-cfke.52'
680
+ example: '1.33.7-cfke.264'
442
681
  },
443
682
  created_at: {
444
683
  type: 'string',
@@ -454,9 +693,20 @@ MIIC0DCCAbigAwIBAgI...`
454
693
  type: 'boolean',
455
694
  description: 'Indicates if the cluster is ready to be used.',
456
695
  example: true
696
+ },
697
+ version_channel: {
698
+ type: 'string',
699
+ pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
700
+ description: 'Version of the kubernetes cluster.',
701
+ example: '1.x.x-cfke.x'
457
702
  }
458
703
  },
459
- required: ['name', 'tier', 'id', 'status'],
704
+ required: [
705
+ 'name',
706
+ 'tier',
707
+ 'id',
708
+ 'status'
709
+ ],
460
710
  additionalProperties: false
461
711
  };
462
712
  export const ClusterUpdateInputSchema = {
@@ -474,16 +724,21 @@ export const ClusterUpdateInputSchema = {
474
724
  type: 'string',
475
725
  description: 'Tier of the cluster.',
476
726
  example: 'pro',
477
- enum: ['basic', 'pro']
727
+ enum: [
728
+ 'basic',
729
+ 'pro'
730
+ ]
478
731
  },
479
732
  version_channel: {
480
733
  type: 'string',
481
734
  pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
482
735
  description: 'Version of the kubernetes cluster.',
483
- example: '1.29.x-cfke.x'
736
+ example: '1.x.x-cfke.x'
484
737
  }
485
738
  },
486
- required: ['tier'],
739
+ required: [
740
+ 'tier'
741
+ ],
487
742
  additionalProperties: false
488
743
  };
489
744
  export const FleetCreateInputSchema = {
@@ -499,7 +754,9 @@ export const FleetCreateInputSchema = {
499
754
  description: 'CPU limit in cores.'
500
755
  }
501
756
  },
502
- required: ['cpu'],
757
+ required: [
758
+ 'cpu'
759
+ ],
503
760
  additionalProperties: false,
504
761
  description: 'Limits define a set of bounds for provisioning capacity.'
505
762
  },
@@ -515,7 +772,9 @@ export const FleetCreateInputSchema = {
515
772
  description: 'Project GCP Project id to deploy instances into'
516
773
  }
517
774
  },
518
- required: ['project'],
775
+ required: [
776
+ 'project'
777
+ ],
519
778
  additionalProperties: false
520
779
  },
521
780
  hetzner: {
@@ -530,7 +789,9 @@ export const FleetCreateInputSchema = {
530
789
  description: 'Hetzner Cloud API key with read / write access'
531
790
  }
532
791
  },
533
- required: ['apiKey'],
792
+ required: [
793
+ 'apiKey'
794
+ ],
534
795
  additionalProperties: false
535
796
  },
536
797
  aws: {
@@ -545,7 +806,9 @@ export const FleetCreateInputSchema = {
545
806
  description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
546
807
  }
547
808
  },
548
- required: ['controllerRoleArn'],
809
+ required: [
810
+ 'controllerRoleArn'
811
+ ],
549
812
  additionalProperties: false
550
813
  },
551
814
  id: {
@@ -557,7 +820,9 @@ export const FleetCreateInputSchema = {
557
820
  example: 'new-clouds-fleet'
558
821
  }
559
822
  },
560
- required: ['id'],
823
+ required: [
824
+ 'id'
825
+ ],
561
826
  additionalProperties: false
562
827
  };
563
828
  export const FleetSchema = {
@@ -573,7 +838,9 @@ export const FleetSchema = {
573
838
  description: 'CPU limit in cores.'
574
839
  }
575
840
  },
576
- required: ['cpu'],
841
+ required: [
842
+ 'cpu'
843
+ ],
577
844
  additionalProperties: false,
578
845
  description: 'Limits define a set of bounds for provisioning capacity.'
579
846
  },
@@ -589,7 +856,9 @@ export const FleetSchema = {
589
856
  description: 'Project GCP Project id to deploy instances into'
590
857
  }
591
858
  },
592
- required: ['project'],
859
+ required: [
860
+ 'project'
861
+ ],
593
862
  additionalProperties: false
594
863
  },
595
864
  hetzner: {
@@ -604,7 +873,9 @@ export const FleetSchema = {
604
873
  description: 'Hetzner Cloud API key with read / write access'
605
874
  }
606
875
  },
607
- required: ['apiKey'],
876
+ required: [
877
+ 'apiKey'
878
+ ],
608
879
  additionalProperties: false
609
880
  },
610
881
  aws: {
@@ -619,7 +890,9 @@ export const FleetSchema = {
619
890
  description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
620
891
  }
621
892
  },
622
- required: ['controllerRoleArn'],
893
+ required: [
894
+ 'controllerRoleArn'
895
+ ],
623
896
  additionalProperties: false
624
897
  },
625
898
  id: {
@@ -631,7 +904,9 @@ export const FleetSchema = {
631
904
  example: 'new-clouds-fleet'
632
905
  }
633
906
  },
634
- required: ['id'],
907
+ required: [
908
+ 'id'
909
+ ],
635
910
  additionalProperties: false
636
911
  };
637
912
  export const FleetUpdateInputSchema = {
@@ -647,7 +922,9 @@ export const FleetUpdateInputSchema = {
647
922
  description: 'CPU limit in cores.'
648
923
  }
649
924
  },
650
- required: ['cpu'],
925
+ required: [
926
+ 'cpu'
927
+ ],
651
928
  additionalProperties: false,
652
929
  description: 'Limits define a set of bounds for provisioning capacity.'
653
930
  },
@@ -663,7 +940,9 @@ export const FleetUpdateInputSchema = {
663
940
  description: 'Project GCP Project id to deploy instances into'
664
941
  }
665
942
  },
666
- required: ['project'],
943
+ required: [
944
+ 'project'
945
+ ],
667
946
  additionalProperties: false
668
947
  },
669
948
  hetzner: {
@@ -678,7 +957,9 @@ export const FleetUpdateInputSchema = {
678
957
  description: 'Hetzner Cloud API key with read / write access'
679
958
  }
680
959
  },
681
- required: ['apiKey'],
960
+ required: [
961
+ 'apiKey'
962
+ ],
682
963
  additionalProperties: false
683
964
  },
684
965
  aws: {
@@ -693,7 +974,9 @@ export const FleetUpdateInputSchema = {
693
974
  description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
694
975
  }
695
976
  },
696
- required: ['controllerRoleArn'],
977
+ required: [
978
+ 'controllerRoleArn'
979
+ ],
697
980
  additionalProperties: false
698
981
  }
699
982
  },
@@ -731,7 +1014,9 @@ export const InviteSchema = {
731
1014
  example: '7kUZnH7nnKUFfvc4NK2KQF'
732
1015
  }
733
1016
  },
734
- required: ['date_created'],
1017
+ required: [
1018
+ 'date_created'
1019
+ ],
735
1020
  additionalProperties: false
736
1021
  };
737
1022
  export const InvoiceSchema = {
@@ -739,9 +1024,8 @@ export const InvoiceSchema = {
739
1024
  properties: {
740
1025
  id: {
741
1026
  type: 'string',
742
- format: 'uuid',
743
- description: 'Unique identifier of the invoice. UUID v4 string in canonical form',
744
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1027
+ description: 'Unique identifier of the invoice.',
1028
+ example: 'in_1234567890xCrwxghOTj1234'
745
1029
  },
746
1030
  number: {
747
1031
  type: 'string'
@@ -784,90 +1068,165 @@ export const InvoiceSchema = {
784
1068
  type: 'string'
785
1069
  }
786
1070
  },
787
- required: ['created', 'period_start', 'period_end'],
1071
+ required: [
1072
+ 'created',
1073
+ 'period_start',
1074
+ 'period_end'
1075
+ ],
788
1076
  additionalProperties: false
789
1077
  };
790
- export const MarketplaceListingSchema = {
1078
+ export const MarketplaceListingFilesSchema = {
791
1079
  type: 'object',
792
1080
  properties: {
793
- id: {
794
- type: 'string',
795
- maxLength: 63,
796
- minLength: 1,
797
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
798
- description: 'Id of the chart listing',
799
- example: 'portworx-enterprise-disaster-recovery-baremetal'
800
- },
801
- name: {
802
- type: 'string',
803
- description: 'Name of the chart listing',
804
- example: 'Portworx Enterprise + Disaster Recovery - Baremetal'
805
- },
806
- developer: {
1081
+ chartYaml: {
807
1082
  type: 'string',
808
- description: 'Author of the chart listing',
809
- example: 'Portworx'
1083
+ description: 'Raw Chart.yaml content from the Helm chart',
1084
+ example: 'apiVersion: v2\nname: nginx-ingress\nversion: 1.18.2-cfke.45\nappVersion: 1.9.4'
810
1085
  },
811
- description: {
1086
+ valuesYaml: {
812
1087
  type: 'string',
813
- description: 'Short description of the chart listing',
814
- example: 'Run Kubernetes with unmatched scalability, availability, and self-service access to any storage'
1088
+ description: 'Raw values.yaml content from the Helm chart',
1089
+ example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
815
1090
  },
816
- logoUrl: {
1091
+ valuesSchemaJson: {
817
1092
  type: 'string',
818
- description: 'Logo of the chart listing',
819
- example: 'https://portworx.com/wp-content/themes/portworx/assets/images/header/portworx-logo.png'
820
- },
821
- longDescription: {
1093
+ description: 'JSON schema for values.yaml as a string',
1094
+ example: '{"type":"object","properties":{"replicaCount":{"type":"number"}}}'
1095
+ }
1096
+ },
1097
+ additionalProperties: false
1098
+ };
1099
+ export const MarketplaceListingSchema = {
1100
+ type: 'object',
1101
+ properties: {
1102
+ name: {
822
1103
  type: 'string',
823
- description: 'Long description of the chart listing',
824
- example: 'Portworx-Enterprise is the complete multi-cloud ready Kubernetes storage platform for running mission-critical apps in production....'
1104
+ description: 'Name of the chart',
1105
+ example: 'nginx-ingress'
825
1106
  },
826
- categories: {
1107
+ versions: {
827
1108
  type: 'array',
828
1109
  items: {
829
1110
  type: 'string',
830
- example: 'AI & Machine Learning'
1111
+ 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-]+)*))?$',
1112
+ description: 'Specific version of the chart',
1113
+ example: '1.18.2-cfke.45'
831
1114
  },
832
- description: 'Tags of the chart'
1115
+ description: 'Available versions of the chart'
833
1116
  },
834
1117
  version_channels: {
835
1118
  type: 'array',
836
1119
  items: {
837
1120
  type: 'string',
838
1121
  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-]+)*))?$',
839
- description: 'Version of the chart.',
840
- example: '2.x.x-cfke.x'
841
- }
1122
+ description: 'Version channel pattern',
1123
+ example: '1.18.x-cfke.x'
1124
+ },
1125
+ description: 'Version channels for the chart'
842
1126
  },
843
- value_schemas: {
844
- type: 'array',
845
- items: {
846
- type: 'object',
847
- properties: {
848
- version: {
849
- type: 'string',
850
- 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-]+)*))?$',
851
- description: 'Version of the chart.',
852
- example: '2.1.1-cfke.123'
1127
+ latestVersion: {
1128
+ type: 'string',
1129
+ description: 'Latest version of the chart',
1130
+ example: '1.18.2-cfke.45'
1131
+ },
1132
+ metadata: {
1133
+ type: 'object',
1134
+ properties: {
1135
+ name: {
1136
+ type: 'string',
1137
+ description: 'Chart name from metadata',
1138
+ example: 'nginx-ingress'
1139
+ },
1140
+ version: {
1141
+ type: 'string',
1142
+ description: 'Chart version from metadata',
1143
+ example: '1.18.2-cfke.45'
1144
+ },
1145
+ description: {
1146
+ type: 'string',
1147
+ description: 'Chart description',
1148
+ example: 'NGINX Ingress Controller for Kubernetes'
1149
+ },
1150
+ appVersion: {
1151
+ type: 'string',
1152
+ description: 'Application version',
1153
+ example: '1.9.4'
1154
+ },
1155
+ apiVersion: {
1156
+ type: 'string',
1157
+ description: 'Helm API version',
1158
+ example: 'v2'
1159
+ },
1160
+ keywords: {
1161
+ type: 'array',
1162
+ items: {
1163
+ type: 'string'
853
1164
  },
854
- schema: {
855
- type: 'string',
856
- description: 'Schema of the chart values. JSON Schema as string'
1165
+ description: 'Chart keywords',
1166
+ example: [
1167
+ 'ingress',
1168
+ 'nginx',
1169
+ 'load-balancer'
1170
+ ]
1171
+ },
1172
+ home: {
1173
+ type: 'string',
1174
+ description: 'Chart home URL',
1175
+ example: 'https://kubernetes.github.io/ingress-nginx/'
1176
+ },
1177
+ icon: {
1178
+ type: 'string',
1179
+ description: 'A URL to an SVG or PNG image to be used as an icon',
1180
+ example: 'https://cloudfleet.ai/images/marketplace/icons/ingress-nginx.png'
1181
+ },
1182
+ sources: {
1183
+ type: 'array',
1184
+ items: {
1185
+ type: 'string'
857
1186
  },
858
- placeholder: {
859
- type: 'string',
860
- description: 'Schema of the chart values',
861
- example: `foo: 1
862
- bar: example`
863
- }
1187
+ description: 'Chart source URLs',
1188
+ example: [
1189
+ 'https://github.com/kubernetes/ingress-nginx'
1190
+ ]
864
1191
  },
865
- required: ['version', 'schema', 'placeholder'],
866
- additionalProperties: false
867
- }
1192
+ maintainers: {
1193
+ type: 'array',
1194
+ items: {
1195
+ type: 'object',
1196
+ properties: {
1197
+ name: {
1198
+ type: 'string',
1199
+ description: 'Maintainer name',
1200
+ example: 'NGINX Team'
1201
+ },
1202
+ email: {
1203
+ type: 'string',
1204
+ description: 'Maintainer email',
1205
+ example: 'support@nginx.org'
1206
+ }
1207
+ },
1208
+ required: [
1209
+ 'name'
1210
+ ],
1211
+ additionalProperties: false
1212
+ },
1213
+ description: 'Chart maintainers'
1214
+ }
1215
+ },
1216
+ required: [
1217
+ 'name',
1218
+ 'version'
1219
+ ],
1220
+ additionalProperties: false,
1221
+ description: 'Chart metadata'
868
1222
  }
869
1223
  },
870
- required: ['id', 'name', 'developer', 'description', 'logoUrl', 'longDescription', 'categories', 'version_channels', 'value_schemas'],
1224
+ required: [
1225
+ 'name',
1226
+ 'versions',
1227
+ 'version_channels',
1228
+ 'latestVersion'
1229
+ ],
871
1230
  additionalProperties: false
872
1231
  };
873
1232
  export const OrganizationCreateInputSchema = {
@@ -903,7 +1262,13 @@ export const OrganizationCreateInputSchema = {
903
1262
  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.'
904
1263
  }
905
1264
  },
906
- required: ['email', 'first_name', 'last_name', 'company_name', 'password'],
1265
+ required: [
1266
+ 'email',
1267
+ 'first_name',
1268
+ 'last_name',
1269
+ 'company_name',
1270
+ 'password'
1271
+ ],
907
1272
  additionalProperties: false
908
1273
  };
909
1274
  export const OrganizationSchema = {
@@ -985,32 +1350,60 @@ export const OrganizationSchema = {
985
1350
  id: {
986
1351
  type: 'string',
987
1352
  description: 'Id of the control plane version. Used in API calls.',
988
- example: '1.29.x-cfke.x'
1353
+ example: '1.33.x-cfke.x'
989
1354
  },
990
1355
  label: {
991
1356
  type: 'string',
992
1357
  description: 'Label of the control plane version. Used in frontent UI.',
993
- example: '1.29.x (Always latest 1.29 patch version)'
1358
+ example: '1.33.x (Always latest 1.33 patch version)'
994
1359
  }
995
1360
  },
996
- required: ['id', 'label'],
1361
+ required: [
1362
+ 'id',
1363
+ 'label'
1364
+ ],
997
1365
  additionalProperties: false
998
1366
  },
999
1367
  minItems: 1,
1000
1368
  description: 'List of CFKE control plane versions available for the organization.'
1369
+ },
1370
+ cfcr_storage_gb: {
1371
+ type: 'integer',
1372
+ minimum: -1,
1373
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
1374
+ example: 500
1001
1375
  }
1002
1376
  },
1003
- required: ['basic_clusters_max', 'basic_clusters_available', 'pro_clusters_max', 'pro_clusters_available', 'fleets_max', 'cluster_tiers', 'regions', 'versions'],
1377
+ required: [
1378
+ 'basic_clusters_max',
1379
+ 'basic_clusters_available',
1380
+ 'pro_clusters_max',
1381
+ 'pro_clusters_available',
1382
+ 'fleets_max',
1383
+ 'cluster_tiers',
1384
+ 'regions',
1385
+ 'versions',
1386
+ 'cfcr_storage_gb'
1387
+ ],
1004
1388
  additionalProperties: false,
1005
1389
  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.'
1006
1390
  },
1007
1391
  status: {
1008
1392
  type: 'string',
1009
1393
  description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
1010
- enum: ['active', 'closed', 'suspended']
1394
+ enum: [
1395
+ 'active',
1396
+ 'closed',
1397
+ 'suspended'
1398
+ ]
1011
1399
  }
1012
1400
  },
1013
- required: ['id', 'date_created', 'quota', 'status'],
1401
+ required: [
1402
+ 'id',
1403
+ 'date_created',
1404
+ 'quota',
1405
+ 'status'
1406
+ ],
1014
1407
  additionalProperties: false
1015
1408
  };
1016
1409
  export const PaymentMethodSchema = {
@@ -1032,7 +1425,9 @@ export const PaymentMethodSchema = {
1032
1425
  nullable: true,
1033
1426
  description: 'Payment method type type. Only `card` payments supported at the moment.',
1034
1427
  example: 'card',
1035
- enum: ['card']
1428
+ enum: [
1429
+ 'card'
1430
+ ]
1036
1431
  },
1037
1432
  last4: {
1038
1433
  type: 'string',
@@ -1045,14 +1440,14 @@ export const PaymentMethodSchema = {
1045
1440
  minimum: 1,
1046
1441
  maximum: 12,
1047
1442
  nullable: true,
1048
- description: "Two-digit number representing the card's expiration month.",
1443
+ description: 'Two-digit number representing the card\'s expiration month.',
1049
1444
  example: '12'
1050
1445
  },
1051
1446
  exp_year: {
1052
1447
  type: 'integer',
1053
1448
  minimum: 2024,
1054
1449
  nullable: true,
1055
- description: "Four-digit number representing the card's expiration year.",
1450
+ description: 'Four-digit number representing the card\'s expiration year.',
1056
1451
  example: '2028'
1057
1452
  },
1058
1453
  brand: {
@@ -1060,184 +1455,1128 @@ export const PaymentMethodSchema = {
1060
1455
  nullable: true,
1061
1456
  description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
1062
1457
  example: 'visa',
1063
- enum: ['amex', 'diners', 'discover', 'eftpos_au', 'jcb', 'mastercard', 'unionpay', 'visa', 'unknown']
1458
+ enum: [
1459
+ 'amex',
1460
+ 'diners',
1461
+ 'discover',
1462
+ 'eftpos_au',
1463
+ 'jcb',
1464
+ 'mastercard',
1465
+ 'unionpay',
1466
+ 'visa',
1467
+ 'unknown'
1468
+ ]
1064
1469
  }
1065
1470
  },
1066
- required: ['id', 'setup', 'type', 'last4', 'exp_month', 'exp_year', 'brand'],
1471
+ required: [
1472
+ 'id',
1473
+ 'setup',
1474
+ 'type',
1475
+ 'last4',
1476
+ 'exp_month',
1477
+ 'exp_year',
1478
+ 'brand'
1479
+ ],
1067
1480
  additionalProperties: false
1068
1481
  };
1069
- export const TokenCreateInputSchema = {
1482
+ export const PlatformQuotaSchema = {
1070
1483
  type: 'object',
1071
1484
  properties: {
1072
- name: {
1073
- type: 'string',
1074
- maxLength: 63,
1075
- minLength: 1,
1076
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1077
- description: 'Human readable access token name.',
1078
- example: 'deployment-token'
1485
+ basic_clusters_max: {
1486
+ type: 'integer',
1487
+ minimum: 0,
1488
+ description: 'Maximum number of Basic clusters that can be created.',
1489
+ example: 999
1079
1490
  },
1080
- role: {
1081
- type: 'string',
1082
- description: 'Role assumed by the token.',
1083
- example: 'User',
1084
- enum: ['Administrator', 'User']
1491
+ basic_clusters_available: {
1492
+ type: 'integer',
1493
+ description: 'Available number of Basic clusters that can be created.',
1494
+ example: 999
1495
+ },
1496
+ pro_clusters_max: {
1497
+ type: 'integer',
1498
+ minimum: 0,
1499
+ description: 'Maximum number of Pro clusters that can be created.',
1500
+ example: 999
1501
+ },
1502
+ pro_clusters_available: {
1503
+ type: 'integer',
1504
+ description: 'Available number of Pro clusters that can be created.',
1505
+ example: 999
1506
+ },
1507
+ fleets_max: {
1508
+ type: 'integer',
1509
+ minimum: 0,
1510
+ description: 'Maximum number of fleets that can be created per cluster.',
1511
+ example: 999
1512
+ },
1513
+ cluster_tiers: {
1514
+ type: 'array',
1515
+ items: {
1516
+ type: 'string',
1517
+ example: 'basic'
1518
+ },
1519
+ minItems: 0,
1520
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
1521
+ },
1522
+ regions: {
1523
+ type: 'array',
1524
+ items: {
1525
+ type: 'string',
1526
+ example: 'northamerica-central-1'
1527
+ },
1528
+ minItems: 1,
1529
+ description: 'List of Cloudfleet control plane regions available for the organization.'
1530
+ },
1531
+ versions: {
1532
+ type: 'array',
1533
+ items: {
1534
+ type: 'object',
1535
+ properties: {
1536
+ id: {
1537
+ type: 'string',
1538
+ description: 'Id of the control plane version. Used in API calls.',
1539
+ example: '1.33.x-cfke.x'
1540
+ },
1541
+ label: {
1542
+ type: 'string',
1543
+ description: 'Label of the control plane version. Used in frontent UI.',
1544
+ example: '1.33.x (Always latest 1.33 patch version)'
1545
+ }
1546
+ },
1547
+ required: [
1548
+ 'id',
1549
+ 'label'
1550
+ ],
1551
+ additionalProperties: false
1552
+ },
1553
+ minItems: 1,
1554
+ description: 'List of CFKE control plane versions available for the organization.'
1555
+ },
1556
+ cfcr_storage_gb: {
1557
+ type: 'integer',
1558
+ minimum: -1,
1559
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
1560
+ example: 500
1085
1561
  }
1086
1562
  },
1087
- required: ['name', 'role'],
1563
+ required: [
1564
+ 'basic_clusters_max',
1565
+ 'basic_clusters_available',
1566
+ 'pro_clusters_max',
1567
+ 'pro_clusters_available',
1568
+ 'fleets_max',
1569
+ 'cluster_tiers',
1570
+ 'regions',
1571
+ 'versions',
1572
+ 'cfcr_storage_gb'
1573
+ ],
1088
1574
  additionalProperties: false
1089
1575
  };
1090
- export const TokenSchema = {
1576
+ export const RegistryRepositorySchema = {
1091
1577
  type: 'object',
1092
1578
  properties: {
1093
1579
  name: {
1094
1580
  type: 'string',
1095
- maxLength: 63,
1096
- minLength: 1,
1097
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1098
- description: 'Human readable access token name.',
1099
- example: 'deployment-token'
1100
- },
1101
- role: {
1102
- type: 'string',
1103
- description: 'Role assumed by the token.',
1104
- example: 'User',
1105
- enum: ['Administrator', 'User']
1106
- },
1107
- id: {
1108
- type: 'string',
1109
- description: 'Generated unique identifier of the access token.',
1110
- example: '7kUZnH7nnKUFfvc4NK2KQF'
1581
+ description: 'Repository name.',
1582
+ example: 'my-app'
1111
1583
  },
1112
- secret: {
1584
+ region: {
1113
1585
  type: 'string',
1114
- description: 'Access token secret. Unmasked only during creation.',
1115
- example: 'vq4SCMBsrgmBxbax80WDXuXoFNZAckI8'
1586
+ description: 'Registry region.',
1587
+ example: 'northamerica'
1116
1588
  },
1117
- date_created: {
1589
+ uri: {
1118
1590
  type: 'string',
1119
- format: 'date-time',
1120
- description: 'Creation date of the access token. ISO 8601 date string in UTC timezone',
1121
- example: '2023-12-20T13:53:32.000Z'
1591
+ description: 'Full URI of the repository.',
1592
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
1122
1593
  }
1123
1594
  },
1124
- required: ['name', 'role', 'date_created'],
1595
+ required: [
1596
+ 'name',
1597
+ 'region',
1598
+ 'uri'
1599
+ ],
1125
1600
  additionalProperties: false
1126
1601
  };
1127
- export const TokenUpdateInputSchema = {
1602
+ export const RegistryRepositoryWithTagsSchema = {
1128
1603
  type: 'object',
1129
1604
  properties: {
1130
1605
  name: {
1131
1606
  type: 'string',
1132
- maxLength: 63,
1133
- minLength: 1,
1134
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1135
- description: 'Human readable access token name.',
1136
- example: 'deployment-token'
1607
+ description: 'Repository name.',
1608
+ example: 'my-app'
1137
1609
  },
1138
- role: {
1610
+ region: {
1139
1611
  type: 'string',
1140
- description: 'Role assumed by the token.',
1141
- example: 'User',
1142
- enum: ['Administrator', 'User']
1612
+ description: 'Registry region.',
1613
+ example: 'northamerica'
1614
+ },
1615
+ uri: {
1616
+ type: 'string',
1617
+ description: 'Full URI of the repository.',
1618
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
1619
+ },
1620
+ tags: {
1621
+ type: 'array',
1622
+ items: {
1623
+ type: 'object',
1624
+ properties: {
1625
+ name: {
1626
+ type: 'string',
1627
+ description: 'Tag name.',
1628
+ example: 'latest'
1629
+ },
1630
+ size: {
1631
+ type: 'number',
1632
+ format: 'float',
1633
+ description: 'Size of the tag in bytes.',
1634
+ example: 123456789
1635
+ },
1636
+ mediaType: {
1637
+ type: 'string',
1638
+ description: 'Media type of the manifest.',
1639
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1640
+ },
1641
+ platforms: {
1642
+ type: 'array',
1643
+ items: {
1644
+ type: 'string'
1645
+ },
1646
+ description: 'Array of platform strings for multi-arch images (e.g., linux/amd64, linux/arm64).',
1647
+ example: [
1648
+ 'linux/amd64',
1649
+ 'linux/arm64'
1650
+ ]
1651
+ }
1652
+ },
1653
+ required: [
1654
+ 'name',
1655
+ 'size'
1656
+ ],
1657
+ additionalProperties: false
1658
+ },
1659
+ description: 'Array of tags in the repository.'
1660
+ },
1661
+ totalSize: {
1662
+ type: 'number',
1663
+ format: 'float',
1664
+ description: 'Total size of all tags in the repository in bytes.',
1665
+ example: 987654321
1143
1666
  }
1144
1667
  },
1668
+ required: [
1669
+ 'name',
1670
+ 'region',
1671
+ 'uri',
1672
+ 'tags',
1673
+ 'totalSize'
1674
+ ],
1145
1675
  additionalProperties: false
1146
1676
  };
1147
- export const UsageSchema = {
1677
+ export const RegistryTagSchema = {
1148
1678
  type: 'object',
1149
1679
  properties: {
1150
- hour: {
1151
- type: 'string',
1152
- description: 'Hour of the usage',
1153
- example: '2019-01-01T00:00:00.000Z'
1154
- },
1155
- cluster_id: {
1156
- type: 'string',
1157
- format: 'uuid',
1158
- description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
1159
- example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
1160
- },
1161
- cluster_tier: {
1162
- type: 'string',
1163
- description: 'Tier of the cluster.',
1164
- example: 'pro',
1165
- enum: ['basic', 'pro', '']
1166
- },
1167
- product: {
1680
+ name: {
1168
1681
  type: 'string',
1169
- description: 'The product the usage is associated with',
1170
- example: 'cfke_controlplane',
1171
- enum: ['cfke_controlplane', 'cfke_connected_nodes', 'infra_compute', 'infra_storage', 'infra_loadbalancing', 'infra_traffic', 'cfcr_storage']
1682
+ description: 'Tag name.',
1683
+ example: 'latest'
1172
1684
  },
1173
- node_name: {
1685
+ digest: {
1174
1686
  type: 'string',
1175
- description: 'Name of the Kubernetes node',
1176
- example: 'flexible-moth-956037384'
1687
+ description: 'Manifest digest for pulling by digest.',
1688
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1177
1689
  },
1178
- sku: {
1690
+ mediaType: {
1179
1691
  type: 'string',
1180
- description: 'SKU of the Kubernetes node',
1181
- example: 'GCP-NORTHAMERICA-NORTHEAST1-A-G1-SMALL-SPOT'
1692
+ description: 'Media type of the manifest.',
1693
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1182
1694
  },
1183
- cpu: {
1184
- anyOf: [
1185
- {
1695
+ config: {
1696
+ type: 'object',
1697
+ properties: {
1698
+ size: {
1186
1699
  type: 'number',
1187
1700
  format: 'float',
1188
- description: 'CPU core count of the node',
1189
- example: 4
1190
- },
1191
- {
1192
- type: 'string',
1193
- enum: ['']
1701
+ description: 'Size of the config in bytes.',
1702
+ example: 1234
1194
1703
  }
1195
- ]
1704
+ },
1705
+ required: [
1706
+ 'size'
1707
+ ],
1708
+ additionalProperties: false,
1709
+ description: 'Manifest config metadata.'
1196
1710
  },
1197
- price: {
1198
- anyOf: [
1199
- {
1200
- type: 'number',
1201
- format: 'float',
1202
- description: 'Price',
1203
- example: 4
1711
+ layers: {
1712
+ type: 'array',
1713
+ items: {
1714
+ type: 'object',
1715
+ properties: {
1716
+ digest: {
1717
+ type: 'string',
1718
+ description: 'Digest of the layer.',
1719
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1720
+ },
1721
+ size: {
1722
+ type: 'number',
1723
+ format: 'float',
1724
+ description: 'Size of the layer in bytes.',
1725
+ example: 5678
1726
+ }
1204
1727
  },
1205
- {
1206
- type: 'string',
1207
- enum: ['']
1208
- }
1209
- ]
1728
+ required: [
1729
+ 'size'
1730
+ ],
1731
+ additionalProperties: false
1732
+ },
1733
+ description: 'Array of layer metadata.'
1210
1734
  },
1211
- value: {
1212
- anyOf: [
1213
- {
1214
- type: 'number',
1215
- format: 'float',
1216
- description: 'Value',
1217
- example: 4
1735
+ manifests: {
1736
+ type: 'array',
1737
+ items: {
1738
+ type: 'object',
1739
+ properties: {
1740
+ digest: {
1741
+ type: 'string',
1742
+ description: 'Digest of the manifest.',
1743
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1744
+ },
1745
+ platform: {
1746
+ type: 'object',
1747
+ properties: {
1748
+ architecture: {
1749
+ type: 'string',
1750
+ description: 'Architecture of the platform.',
1751
+ example: 'amd64'
1752
+ },
1753
+ os: {
1754
+ type: 'string',
1755
+ description: 'Operating system of the platform.',
1756
+ example: 'linux'
1757
+ },
1758
+ variant: {
1759
+ type: 'string',
1760
+ description: 'Variant of the platform (e.g., v7, v8 for ARM).',
1761
+ example: 'v8'
1762
+ }
1763
+ },
1764
+ required: [
1765
+ 'architecture',
1766
+ 'os'
1767
+ ],
1768
+ additionalProperties: false,
1769
+ description: 'Platform information for the manifest.'
1770
+ },
1771
+ layers: {
1772
+ type: 'array',
1773
+ items: {
1774
+ type: 'object',
1775
+ properties: {
1776
+ digest: {
1777
+ type: 'string',
1778
+ description: 'Digest of the layer.',
1779
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1780
+ },
1781
+ size: {
1782
+ type: 'number',
1783
+ format: 'float',
1784
+ description: 'Size of the layer in bytes.',
1785
+ example: 5678
1786
+ }
1787
+ },
1788
+ required: [
1789
+ 'size'
1790
+ ],
1791
+ additionalProperties: false
1792
+ },
1793
+ description: 'Layers for this platform.'
1794
+ },
1795
+ size: {
1796
+ type: 'number',
1797
+ format: 'float',
1798
+ description: 'Total size of this platform manifest in bytes.',
1799
+ example: 12345678
1800
+ }
1218
1801
  },
1219
- {
1220
- type: 'string',
1221
- enum: ['']
1222
- }
1802
+ required: [
1803
+ 'digest'
1804
+ ],
1805
+ additionalProperties: false
1806
+ },
1807
+ description: 'Array of manifests for multi-arch images.'
1808
+ },
1809
+ size: {
1810
+ type: 'number',
1811
+ format: 'float',
1812
+ description: 'Total size of the tag in bytes.',
1813
+ example: 123456789
1814
+ },
1815
+ region: {
1816
+ type: 'string',
1817
+ description: 'Registry region.',
1818
+ example: 'northamerica'
1819
+ },
1820
+ repository: {
1821
+ type: 'string',
1822
+ description: 'Repository name.',
1823
+ example: 'my-app'
1824
+ },
1825
+ uri: {
1826
+ type: 'string',
1827
+ description: 'Full URI of the tag.',
1828
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app:latest'
1829
+ }
1830
+ },
1831
+ required: [
1832
+ 'name',
1833
+ 'digest',
1834
+ 'size',
1835
+ 'region',
1836
+ 'repository',
1837
+ 'uri'
1838
+ ],
1839
+ additionalProperties: false
1840
+ };
1841
+ export const TicketAttachmentSchema = {
1842
+ type: 'object',
1843
+ properties: {
1844
+ id: {
1845
+ type: 'string',
1846
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
1847
+ example: '60c72b2f9f1b2c001f8e4d3c'
1848
+ },
1849
+ filename: {
1850
+ type: 'string',
1851
+ description: 'Original filename as uploaded.',
1852
+ example: 'debug.log'
1853
+ },
1854
+ content_type: {
1855
+ type: 'string',
1856
+ description: 'MIME content type of the attachment.',
1857
+ example: 'text/plain'
1858
+ },
1859
+ size: {
1860
+ type: 'integer',
1861
+ description: 'Size of the attachment in bytes.',
1862
+ example: 12345
1863
+ }
1864
+ },
1865
+ required: [
1866
+ 'id',
1867
+ 'filename',
1868
+ 'content_type',
1869
+ 'size'
1870
+ ],
1871
+ additionalProperties: false
1872
+ };
1873
+ export const TicketCreateInputSchema = {
1874
+ type: 'object',
1875
+ properties: {
1876
+ category: {
1877
+ type: 'string',
1878
+ description: 'Ticket category. Drives auto-assignment and may carry a subcategory in `properties`.',
1879
+ example: 'technical',
1880
+ enum: [
1881
+ 'billing',
1882
+ 'technical',
1883
+ 'general'
1223
1884
  ]
1224
1885
  },
1225
- total: {
1226
- anyOf: [
1227
- {
1228
- type: 'number',
1229
- format: 'float',
1230
- description: 'Total',
1231
- example: 4
1886
+ body: {
1887
+ type: 'string',
1888
+ maxLength: 50000,
1889
+ minLength: 1,
1890
+ pattern: '\\S',
1891
+ description: 'Initial message body in markdown. There is no separate subject — the first message body is the description.',
1892
+ example: 'My cluster cannot reach the registry. Logs attached.'
1893
+ },
1894
+ properties: {
1895
+ type: 'object',
1896
+ additionalProperties: true,
1897
+ description: 'Free-form key/value bag set by the UI (e.g. `subcategory`, `cluster_id`, `cluster_name`, `region`).',
1898
+ example: {
1899
+ subcategory: 'cluster-question',
1900
+ cluster_id: '60c72b2f9f1b2c001f8e4d3a'
1901
+ }
1902
+ }
1903
+ },
1904
+ required: [
1905
+ 'category',
1906
+ 'body'
1907
+ ],
1908
+ additionalProperties: false
1909
+ };
1910
+ export const TicketListResponseSchema = {
1911
+ type: 'object',
1912
+ properties: {
1913
+ items: {
1914
+ type: 'array',
1915
+ items: {
1916
+ type: 'object',
1917
+ properties: {
1918
+ id: {
1919
+ type: 'string',
1920
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
1921
+ example: '60c72b2f9f1b2c001f8e4d3a'
1922
+ },
1923
+ status: {
1924
+ type: 'string',
1925
+ description: 'Current state of the ticket.',
1926
+ example: 'waiting_on_us',
1927
+ enum: [
1928
+ 'waiting_on_us',
1929
+ 'waiting_on_user',
1930
+ 'closed'
1931
+ ]
1932
+ },
1933
+ category: {
1934
+ type: 'string',
1935
+ description: 'Ticket category.',
1936
+ example: 'technical',
1937
+ enum: [
1938
+ 'billing',
1939
+ 'technical',
1940
+ 'general'
1941
+ ]
1942
+ },
1943
+ summary: {
1944
+ type: 'string',
1945
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
1946
+ example: 'My cluster cannot reach the registry. Logs attached.'
1947
+ },
1948
+ closed_at: {
1949
+ type: 'string',
1950
+ format: 'date-time',
1951
+ nullable: true,
1952
+ description: 'Closure timestamp. Null while the ticket is open.',
1953
+ example: '2026-05-18T16:08:14.338Z'
1954
+ },
1955
+ date_created: {
1956
+ type: 'string',
1957
+ format: 'date-time',
1958
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
1959
+ example: '2026-05-11T16:08:14.338Z'
1960
+ },
1961
+ date_updated: {
1962
+ type: 'string',
1963
+ format: 'date-time',
1964
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
1965
+ example: '2026-05-11T16:08:14.338Z'
1966
+ },
1967
+ messages: {
1968
+ type: 'array',
1969
+ items: {
1970
+ type: 'object',
1971
+ properties: {
1972
+ id: {
1973
+ type: 'string',
1974
+ description: 'Unique identifier of the message (Mongo ObjectId).',
1975
+ example: '60c72b2f9f1b2c001f8e4d3b'
1976
+ },
1977
+ type: {
1978
+ type: 'string',
1979
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
1980
+ example: 'customer_reply',
1981
+ enum: [
1982
+ 'customer_reply',
1983
+ 'agent_reply'
1984
+ ]
1985
+ },
1986
+ body: {
1987
+ type: 'string',
1988
+ description: 'Message body in markdown.',
1989
+ example: 'Thanks — that resolved it on my side.'
1990
+ },
1991
+ author_first_name: {
1992
+ type: 'string',
1993
+ nullable: true,
1994
+ description: 'First name of the author. Null when not provided.',
1995
+ example: 'Jane'
1996
+ },
1997
+ author_last_name: {
1998
+ type: 'string',
1999
+ nullable: true,
2000
+ description: 'Last name of the author. Null when not provided.',
2001
+ example: 'Doe'
2002
+ },
2003
+ attachments: {
2004
+ type: 'array',
2005
+ items: {
2006
+ type: 'object',
2007
+ properties: {
2008
+ id: {
2009
+ type: 'string',
2010
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2011
+ example: '60c72b2f9f1b2c001f8e4d3c'
2012
+ },
2013
+ filename: {
2014
+ type: 'string',
2015
+ description: 'Original filename as uploaded.',
2016
+ example: 'debug.log'
2017
+ },
2018
+ content_type: {
2019
+ type: 'string',
2020
+ description: 'MIME content type of the attachment.',
2021
+ example: 'text/plain'
2022
+ },
2023
+ size: {
2024
+ type: 'integer',
2025
+ description: 'Size of the attachment in bytes.',
2026
+ example: 12345
2027
+ }
2028
+ },
2029
+ required: [
2030
+ 'id',
2031
+ 'filename',
2032
+ 'content_type',
2033
+ 'size'
2034
+ ],
2035
+ additionalProperties: false
2036
+ },
2037
+ description: 'Attachments associated with this message.',
2038
+ example: []
2039
+ },
2040
+ date_created: {
2041
+ type: 'string',
2042
+ format: 'date-time',
2043
+ description: 'Creation date of the message. ISO 8601 UTC.',
2044
+ example: '2026-05-11T16:08:14.338Z'
2045
+ }
2046
+ },
2047
+ required: [
2048
+ 'id',
2049
+ 'type',
2050
+ 'body',
2051
+ 'date_created'
2052
+ ],
2053
+ additionalProperties: false
2054
+ },
2055
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2056
+ }
1232
2057
  },
1233
- {
1234
- type: 'string',
1235
- enum: ['']
1236
- }
2058
+ required: [
2059
+ 'id',
2060
+ 'status',
2061
+ 'category',
2062
+ 'summary',
2063
+ 'date_created',
2064
+ 'date_updated'
2065
+ ],
2066
+ additionalProperties: false
2067
+ },
2068
+ description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2069
+ }
2070
+ },
2071
+ required: [
2072
+ 'items'
2073
+ ],
2074
+ additionalProperties: false
2075
+ };
2076
+ export const TicketMessageInputSchema = {
2077
+ type: 'object',
2078
+ properties: {
2079
+ body: {
2080
+ type: 'string',
2081
+ maxLength: 50000,
2082
+ minLength: 1,
2083
+ pattern: '\\S',
2084
+ description: 'Reply body in markdown.',
2085
+ example: 'Thanks — that resolved it on my side.'
2086
+ }
2087
+ },
2088
+ required: [
2089
+ 'body'
2090
+ ],
2091
+ additionalProperties: false
2092
+ };
2093
+ export const TicketMessageSchema = {
2094
+ type: 'object',
2095
+ properties: {
2096
+ id: {
2097
+ type: 'string',
2098
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2099
+ example: '60c72b2f9f1b2c001f8e4d3b'
2100
+ },
2101
+ type: {
2102
+ type: 'string',
2103
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2104
+ example: 'customer_reply',
2105
+ enum: [
2106
+ 'customer_reply',
2107
+ 'agent_reply'
1237
2108
  ]
2109
+ },
2110
+ body: {
2111
+ type: 'string',
2112
+ description: 'Message body in markdown.',
2113
+ example: 'Thanks — that resolved it on my side.'
2114
+ },
2115
+ author_first_name: {
2116
+ type: 'string',
2117
+ description: 'First name of the author. Null when not provided.',
2118
+ example: 'Jane'
2119
+ },
2120
+ author_last_name: {
2121
+ type: 'string',
2122
+ description: 'Last name of the author. Null when not provided.',
2123
+ example: 'Doe'
2124
+ },
2125
+ attachments: {
2126
+ type: 'array',
2127
+ items: {
2128
+ type: 'object',
2129
+ properties: {
2130
+ id: {
2131
+ type: 'string',
2132
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2133
+ example: '60c72b2f9f1b2c001f8e4d3c'
2134
+ },
2135
+ filename: {
2136
+ type: 'string',
2137
+ description: 'Original filename as uploaded.',
2138
+ example: 'debug.log'
2139
+ },
2140
+ content_type: {
2141
+ type: 'string',
2142
+ description: 'MIME content type of the attachment.',
2143
+ example: 'text/plain'
2144
+ },
2145
+ size: {
2146
+ type: 'integer',
2147
+ description: 'Size of the attachment in bytes.',
2148
+ example: 12345
2149
+ }
2150
+ },
2151
+ required: [
2152
+ 'id',
2153
+ 'filename',
2154
+ 'content_type',
2155
+ 'size'
2156
+ ],
2157
+ additionalProperties: false
2158
+ },
2159
+ description: 'Attachments associated with this message.',
2160
+ example: []
2161
+ },
2162
+ date_created: {
2163
+ type: 'string',
2164
+ format: 'date-time',
2165
+ description: 'Creation date of the message. ISO 8601 UTC.',
2166
+ example: '2026-05-11T16:08:14.338Z'
1238
2167
  }
1239
2168
  },
1240
- required: ['cluster_id', 'cluster_tier', 'product', 'node_name', 'sku', 'cpu', 'price', 'value', 'total'],
2169
+ required: [
2170
+ 'id',
2171
+ 'type',
2172
+ 'body',
2173
+ 'date_created'
2174
+ ],
2175
+ additionalProperties: false
2176
+ };
2177
+ export const TicketSchema = {
2178
+ type: 'object',
2179
+ properties: {
2180
+ id: {
2181
+ type: 'string',
2182
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
2183
+ example: '60c72b2f9f1b2c001f8e4d3a'
2184
+ },
2185
+ status: {
2186
+ type: 'string',
2187
+ description: 'Current state of the ticket.',
2188
+ example: 'waiting_on_us',
2189
+ enum: [
2190
+ 'waiting_on_us',
2191
+ 'waiting_on_user',
2192
+ 'closed'
2193
+ ]
2194
+ },
2195
+ category: {
2196
+ type: 'string',
2197
+ description: 'Ticket category.',
2198
+ example: 'technical',
2199
+ enum: [
2200
+ 'billing',
2201
+ 'technical',
2202
+ 'general'
2203
+ ]
2204
+ },
2205
+ summary: {
2206
+ type: 'string',
2207
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2208
+ example: 'My cluster cannot reach the registry. Logs attached.'
2209
+ },
2210
+ closed_at: {
2211
+ type: 'string',
2212
+ format: 'date-time',
2213
+ description: 'Closure timestamp. Null while the ticket is open.',
2214
+ example: '2026-05-18T16:08:14.338Z'
2215
+ },
2216
+ date_created: {
2217
+ type: 'string',
2218
+ format: 'date-time',
2219
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
2220
+ example: '2026-05-11T16:08:14.338Z'
2221
+ },
2222
+ date_updated: {
2223
+ type: 'string',
2224
+ format: 'date-time',
2225
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
2226
+ example: '2026-05-11T16:08:14.338Z'
2227
+ },
2228
+ messages: {
2229
+ type: 'array',
2230
+ items: {
2231
+ type: 'object',
2232
+ properties: {
2233
+ id: {
2234
+ type: 'string',
2235
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2236
+ example: '60c72b2f9f1b2c001f8e4d3b'
2237
+ },
2238
+ type: {
2239
+ type: 'string',
2240
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2241
+ example: 'customer_reply',
2242
+ enum: [
2243
+ 'customer_reply',
2244
+ 'agent_reply'
2245
+ ]
2246
+ },
2247
+ body: {
2248
+ type: 'string',
2249
+ description: 'Message body in markdown.',
2250
+ example: 'Thanks — that resolved it on my side.'
2251
+ },
2252
+ author_first_name: {
2253
+ type: 'string',
2254
+ description: 'First name of the author. Null when not provided.',
2255
+ example: 'Jane'
2256
+ },
2257
+ author_last_name: {
2258
+ type: 'string',
2259
+ description: 'Last name of the author. Null when not provided.',
2260
+ example: 'Doe'
2261
+ },
2262
+ attachments: {
2263
+ type: 'array',
2264
+ items: {
2265
+ type: 'object',
2266
+ properties: {
2267
+ id: {
2268
+ type: 'string',
2269
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2270
+ example: '60c72b2f9f1b2c001f8e4d3c'
2271
+ },
2272
+ filename: {
2273
+ type: 'string',
2274
+ description: 'Original filename as uploaded.',
2275
+ example: 'debug.log'
2276
+ },
2277
+ content_type: {
2278
+ type: 'string',
2279
+ description: 'MIME content type of the attachment.',
2280
+ example: 'text/plain'
2281
+ },
2282
+ size: {
2283
+ type: 'integer',
2284
+ description: 'Size of the attachment in bytes.',
2285
+ example: 12345
2286
+ }
2287
+ },
2288
+ required: [
2289
+ 'id',
2290
+ 'filename',
2291
+ 'content_type',
2292
+ 'size'
2293
+ ],
2294
+ additionalProperties: false
2295
+ },
2296
+ description: 'Attachments associated with this message.',
2297
+ example: []
2298
+ },
2299
+ date_created: {
2300
+ type: 'string',
2301
+ format: 'date-time',
2302
+ description: 'Creation date of the message. ISO 8601 UTC.',
2303
+ example: '2026-05-11T16:08:14.338Z'
2304
+ }
2305
+ },
2306
+ required: [
2307
+ 'id',
2308
+ 'type',
2309
+ 'body',
2310
+ 'date_created'
2311
+ ],
2312
+ additionalProperties: false
2313
+ },
2314
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2315
+ }
2316
+ },
2317
+ required: [
2318
+ 'id',
2319
+ 'status',
2320
+ 'category',
2321
+ 'summary',
2322
+ 'date_created',
2323
+ 'date_updated'
2324
+ ],
2325
+ additionalProperties: false
2326
+ };
2327
+ export const TokenCreateInputSchema = {
2328
+ type: 'object',
2329
+ properties: {
2330
+ name: {
2331
+ type: 'string',
2332
+ maxLength: 63,
2333
+ minLength: 1,
2334
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
2335
+ description: 'Human readable access token name.',
2336
+ example: 'deployment-token'
2337
+ },
2338
+ role: {
2339
+ type: 'string',
2340
+ description: 'Role assumed by the token.',
2341
+ example: 'User',
2342
+ enum: [
2343
+ 'Administrator',
2344
+ 'User'
2345
+ ]
2346
+ }
2347
+ },
2348
+ required: [
2349
+ 'name',
2350
+ 'role'
2351
+ ],
2352
+ additionalProperties: false
2353
+ };
2354
+ export const TokenSchema = {
2355
+ type: 'object',
2356
+ properties: {
2357
+ name: {
2358
+ type: 'string',
2359
+ maxLength: 63,
2360
+ minLength: 1,
2361
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
2362
+ description: 'Human readable access token name.',
2363
+ example: 'deployment-token'
2364
+ },
2365
+ role: {
2366
+ type: 'string',
2367
+ description: 'Role assumed by the token.',
2368
+ example: 'User',
2369
+ enum: [
2370
+ 'Administrator',
2371
+ 'User'
2372
+ ]
2373
+ },
2374
+ id: {
2375
+ type: 'string',
2376
+ description: 'Generated unique identifier of the access token.',
2377
+ example: '7kUZnH7nnKUFfvc4NK2KQF'
2378
+ },
2379
+ secret: {
2380
+ type: 'string',
2381
+ description: 'Access token secret. Unmasked only during creation.',
2382
+ example: 'vq4SCMBsrgmBxbax80WDXuXoFNZAckI8'
2383
+ },
2384
+ date_created: {
2385
+ type: 'string',
2386
+ format: 'date-time',
2387
+ description: 'Creation date of the access token. ISO 8601 date string in UTC timezone',
2388
+ example: '2023-12-20T13:53:32.000Z'
2389
+ }
2390
+ },
2391
+ required: [
2392
+ 'name',
2393
+ 'role',
2394
+ 'date_created'
2395
+ ],
2396
+ additionalProperties: false
2397
+ };
2398
+ export const TokenUpdateInputSchema = {
2399
+ type: 'object',
2400
+ properties: {
2401
+ name: {
2402
+ type: 'string',
2403
+ maxLength: 63,
2404
+ minLength: 1,
2405
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
2406
+ description: 'Human readable access token name.',
2407
+ example: 'deployment-token'
2408
+ },
2409
+ role: {
2410
+ type: 'string',
2411
+ description: 'Role assumed by the token.',
2412
+ example: 'User',
2413
+ enum: [
2414
+ 'Administrator',
2415
+ 'User'
2416
+ ]
2417
+ }
2418
+ },
2419
+ additionalProperties: false
2420
+ };
2421
+ export const UsageFacetsSchema = {
2422
+ type: 'object',
2423
+ properties: {
2424
+ cluster_id: {
2425
+ type: 'array',
2426
+ items: {
2427
+ type: 'string'
2428
+ },
2429
+ description: 'List of unique cluster IDs',
2430
+ example: [
2431
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
2432
+ ]
2433
+ },
2434
+ product: {
2435
+ type: 'array',
2436
+ items: {
2437
+ type: 'string'
2438
+ },
2439
+ description: 'List of unique products',
2440
+ example: [
2441
+ 'cfke_controlplane',
2442
+ 'cfke_connected_nodes'
2443
+ ]
2444
+ }
2445
+ },
2446
+ additionalProperties: false
2447
+ };
2448
+ export const UsageResponseSchema = {
2449
+ type: 'object',
2450
+ properties: {
2451
+ data: {
2452
+ type: 'array',
2453
+ items: {
2454
+ type: 'object',
2455
+ properties: {
2456
+ hour: {
2457
+ type: 'string',
2458
+ description: 'Hour of the usage',
2459
+ example: '2019-01-01T00:00:00.000Z'
2460
+ },
2461
+ cluster_id: {
2462
+ type: 'string',
2463
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
2464
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
2465
+ },
2466
+ product: {
2467
+ type: 'string',
2468
+ description: 'The product the usage is associated with',
2469
+ example: 'cfke_controlplane'
2470
+ },
2471
+ value: {
2472
+ type: 'number',
2473
+ format: 'float',
2474
+ description: 'Consumption',
2475
+ example: 4
2476
+ },
2477
+ price: {
2478
+ type: 'number',
2479
+ format: 'float',
2480
+ description: 'Price per unit',
2481
+ example: 0.01
2482
+ },
2483
+ total: {
2484
+ type: 'number',
2485
+ format: 'float',
2486
+ description: 'Total cost'
2487
+ }
2488
+ },
2489
+ required: [
2490
+ 'hour',
2491
+ 'cluster_id',
2492
+ 'product',
2493
+ 'value',
2494
+ 'price',
2495
+ 'total'
2496
+ ],
2497
+ additionalProperties: false
2498
+ },
2499
+ description: 'Usage data'
2500
+ },
2501
+ facets: {
2502
+ type: 'object',
2503
+ properties: {
2504
+ cluster_id: {
2505
+ type: 'array',
2506
+ items: {
2507
+ type: 'string'
2508
+ },
2509
+ description: 'List of unique cluster IDs',
2510
+ example: [
2511
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
2512
+ ]
2513
+ },
2514
+ product: {
2515
+ type: 'array',
2516
+ items: {
2517
+ type: 'string'
2518
+ },
2519
+ description: 'List of unique products',
2520
+ example: [
2521
+ 'cfke_controlplane',
2522
+ 'cfke_connected_nodes'
2523
+ ]
2524
+ }
2525
+ },
2526
+ additionalProperties: false,
2527
+ description: 'Facets for filtering'
2528
+ }
2529
+ },
2530
+ required: [
2531
+ 'data',
2532
+ 'facets'
2533
+ ],
2534
+ additionalProperties: false
2535
+ };
2536
+ export const UsageSchema = {
2537
+ type: 'object',
2538
+ properties: {
2539
+ hour: {
2540
+ type: 'string',
2541
+ description: 'Hour of the usage',
2542
+ example: '2019-01-01T00:00:00.000Z'
2543
+ },
2544
+ cluster_id: {
2545
+ type: 'string',
2546
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
2547
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
2548
+ },
2549
+ product: {
2550
+ type: 'string',
2551
+ description: 'The product the usage is associated with',
2552
+ example: 'cfke_controlplane'
2553
+ },
2554
+ value: {
2555
+ type: 'number',
2556
+ format: 'float',
2557
+ description: 'Consumption',
2558
+ example: 4
2559
+ },
2560
+ price: {
2561
+ type: 'number',
2562
+ format: 'float',
2563
+ description: 'Price per unit',
2564
+ example: 0.01
2565
+ },
2566
+ total: {
2567
+ type: 'number',
2568
+ format: 'float',
2569
+ description: 'Total cost'
2570
+ }
2571
+ },
2572
+ required: [
2573
+ 'hour',
2574
+ 'cluster_id',
2575
+ 'product',
2576
+ 'value',
2577
+ 'price',
2578
+ 'total'
2579
+ ],
1241
2580
  additionalProperties: false
1242
2581
  };
1243
2582
  export const UserCreateInputSchema = {
@@ -1278,16 +2617,28 @@ export const UserCreateInputSchema = {
1278
2617
  type: 'string',
1279
2618
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1280
2619
  example: 'active',
1281
- enum: ['active', 'inactive']
2620
+ enum: [
2621
+ 'active',
2622
+ 'inactive'
2623
+ ]
1282
2624
  },
1283
2625
  role: {
1284
2626
  type: 'string',
1285
- description: "User role. Can be 'Administrator', 'User'.",
2627
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1286
2628
  example: 'User',
1287
- enum: ['Administrator', 'User']
2629
+ enum: [
2630
+ 'Administrator',
2631
+ 'User'
2632
+ ]
1288
2633
  }
1289
2634
  },
1290
- required: ['email', 'first_name', 'last_name', 'code', 'password'],
2635
+ required: [
2636
+ 'email',
2637
+ 'first_name',
2638
+ 'last_name',
2639
+ 'code',
2640
+ 'password'
2641
+ ],
1291
2642
  additionalProperties: false
1292
2643
  };
1293
2644
  export const UserSchema = {
@@ -1315,15 +2666,21 @@ export const UserSchema = {
1315
2666
  },
1316
2667
  role: {
1317
2668
  type: 'string',
1318
- description: "User role. Can be 'Administrator', 'User'.",
2669
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1319
2670
  example: 'User',
1320
- enum: ['Administrator', 'User']
2671
+ enum: [
2672
+ 'Administrator',
2673
+ 'User'
2674
+ ]
1321
2675
  },
1322
2676
  status: {
1323
2677
  type: 'string',
1324
2678
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1325
2679
  example: 'active',
1326
- enum: ['active', 'inactive']
2680
+ enum: [
2681
+ 'active',
2682
+ 'inactive'
2683
+ ]
1327
2684
  },
1328
2685
  id: {
1329
2686
  type: 'string',
@@ -1338,7 +2695,15 @@ export const UserSchema = {
1338
2695
  example: '2023-11-02T16:08:14.338Z'
1339
2696
  }
1340
2697
  },
1341
- required: ['email', 'first_name', 'last_name', 'role', 'status', 'id', 'date_created'],
2698
+ required: [
2699
+ 'email',
2700
+ 'first_name',
2701
+ 'last_name',
2702
+ 'role',
2703
+ 'status',
2704
+ 'id',
2705
+ 'date_created'
2706
+ ],
1342
2707
  additionalProperties: false
1343
2708
  };
1344
2709
  export const UserUpdateInputSchema = {
@@ -1366,15 +2731,21 @@ export const UserUpdateInputSchema = {
1366
2731
  },
1367
2732
  role: {
1368
2733
  type: 'string',
1369
- description: "User role. Can be 'Administrator', 'User'.",
2734
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1370
2735
  example: 'User',
1371
- enum: ['Administrator', 'User']
2736
+ enum: [
2737
+ 'Administrator',
2738
+ 'User'
2739
+ ]
1372
2740
  },
1373
2741
  status: {
1374
2742
  type: 'string',
1375
2743
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1376
2744
  example: 'active',
1377
- enum: ['active', 'inactive']
2745
+ enum: [
2746
+ 'active',
2747
+ 'inactive'
2748
+ ]
1378
2749
  }
1379
2750
  },
1380
2751
  additionalProperties: false