@cloudfleet/sdk 0.0.1-d940b00 → 0.0.1-da466c0

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 (46) hide show
  1. package/README.md +56 -2
  2. package/dist/@tanstack/react-query.gen.d.ts +420 -626
  3. package/dist/@tanstack/react-query.gen.d.ts.map +1 -1
  4. package/dist/@tanstack/react-query.gen.js +410 -419
  5. package/dist/@tanstack/react-query.gen.js.map +1 -1
  6. package/dist/client/client.gen.d.ts.map +1 -1
  7. package/dist/client/client.gen.js +1 -4
  8. package/dist/client/client.gen.js.map +1 -1
  9. package/dist/client/types.gen.d.ts +1 -1
  10. package/dist/client/types.gen.d.ts.map +1 -1
  11. package/dist/client/utils.gen.d.ts +2 -2
  12. package/dist/client/utils.gen.d.ts.map +1 -1
  13. package/dist/client/utils.gen.js +3 -3
  14. package/dist/client/utils.gen.js.map +1 -1
  15. package/dist/core/params.gen.js +4 -4
  16. package/dist/core/params.gen.js.map +1 -1
  17. package/dist/errors.d.ts +42 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/errors.js +83 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/schemas.gen.d.ts +521 -492
  26. package/dist/schemas.gen.d.ts.map +1 -1
  27. package/dist/schemas.gen.js +719 -583
  28. package/dist/schemas.gen.js.map +1 -1
  29. package/dist/sdk.gen.d.ts +221 -228
  30. package/dist/sdk.gen.d.ts.map +1 -1
  31. package/dist/sdk.gen.js +339 -339
  32. package/dist/sdk.gen.js.map +1 -1
  33. package/dist/services/kubernetes/api.d.ts +18 -55
  34. package/dist/services/kubernetes/api.d.ts.map +1 -1
  35. package/dist/services/kubernetes/api.js +36 -75
  36. package/dist/services/kubernetes/api.js.map +1 -1
  37. package/dist/services/kubernetes/index.d.ts.map +1 -1
  38. package/dist/services/kubernetes/index.js +36 -37
  39. package/dist/services/kubernetes/index.js.map +1 -1
  40. package/dist/types.gen.d.ts +1002 -1056
  41. package/dist/types.gen.d.ts.map +1 -1
  42. package/dist/zod.gen.d.ts +1775 -1563
  43. package/dist/zod.gen.d.ts.map +1 -1
  44. package/dist/zod.gen.js +506 -378
  45. package/dist/zod.gen.js.map +1 -1
  46. package/package.json +10 -15
@@ -93,12 +93,17 @@ export const BillingContactSchema = {
93
93
  'at_vat',
94
94
  'au_abn',
95
95
  'au_arn',
96
+ 'aw_tin',
97
+ 'az_tin',
96
98
  'ba_tin',
97
99
  'bb_tin',
100
+ 'bd_bin',
98
101
  'be_vat',
102
+ 'bf_ifu',
99
103
  'bg_uic',
100
104
  'bg_vat',
101
105
  'bh_vat',
106
+ 'bj_ifu',
102
107
  'bo_tin',
103
108
  'br_cnpj',
104
109
  'br_cpf',
@@ -114,9 +119,11 @@ export const BillingContactSchema = {
114
119
  'ch_uid',
115
120
  'ch_vat',
116
121
  'cl_tin',
122
+ 'cm_niu',
117
123
  'cn_tin',
118
124
  'co_nit',
119
125
  'cr_tin',
126
+ 'cv_nif',
120
127
  'cy_vat',
121
128
  'cz_vat',
122
129
  'de_stn',
@@ -128,6 +135,7 @@ export const BillingContactSchema = {
128
135
  'eg_tin',
129
136
  'es_cif',
130
137
  'es_vat',
138
+ 'et_tin',
131
139
  'eu_oss_vat',
132
140
  'fi_vat',
133
141
  'fr_vat',
@@ -150,11 +158,14 @@ export const BillingContactSchema = {
150
158
  'jp_rn',
151
159
  'jp_trn',
152
160
  'ke_pin',
161
+ 'kg_tin',
153
162
  'kh_tin',
154
163
  'kr_brn',
155
164
  'kz_bin',
165
+ 'la_tin',
156
166
  'li_uid',
157
167
  'li_vat',
168
+ 'lk_vat',
158
169
  'lt_vat',
159
170
  'lu_vat',
160
171
  'lv_vat',
@@ -282,150 +293,6 @@ export const BillingCreditsSchema = {
282
293
  ],
283
294
  additionalProperties: false
284
295
  };
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 (Flux HelmRelease Ready condition reason, e.g. InstallSucceeded, UpgradeFailed, Progressing).',
372
- example: 'InstallSucceeded'
373
- },
374
- version_current: {
375
- type: 'string',
376
- description: 'Current version of the chart deployment.',
377
- example: '2.1.33-cfke.11'
378
- },
379
- created_at: {
380
- type: 'string',
381
- description: 'Creation date and time of the chart deployment.',
382
- example: '2024-09-12T09:11:27Z'
383
- },
384
- updated_at: {
385
- type: 'string',
386
- description: 'Last update date and time of the chart deployment.',
387
- example: '2024-09-12T09:11:27Z'
388
- },
389
- ready: {
390
- type: 'boolean',
391
- description: 'Indicates if the chart deployment is ready to be used.',
392
- example: true
393
- }
394
- },
395
- required: [
396
- 'values',
397
- 'version_channel',
398
- 'name',
399
- 'namespace',
400
- 'chart',
401
- 'status',
402
- 'version_current',
403
- 'created_at',
404
- 'updated_at',
405
- 'ready'
406
- ],
407
- additionalProperties: false
408
- };
409
- export const ChartUpdateInputSchema = {
410
- type: 'object',
411
- properties: {
412
- values: {
413
- type: 'string',
414
- description: 'Values to be used in the chart encoded as a JSON string.'
415
- },
416
- version_channel: {
417
- type: 'string',
418
- 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-]+)*))?$',
419
- description: 'Desired version range or channel for the chart.',
420
- example: '2.x.x-cfke.x'
421
- }
422
- },
423
- required: [
424
- 'values',
425
- 'version_channel'
426
- ],
427
- additionalProperties: false
428
- };
429
296
  export const ClusterCreateInputSchema = {
430
297
  type: 'object',
431
298
  properties: {
@@ -440,17 +307,14 @@ export const ClusterCreateInputSchema = {
440
307
  tier: {
441
308
  type: 'string',
442
309
  description: 'Tier of the cluster.',
310
+ default: 'basic',
443
311
  example: 'pro',
444
312
  enum: [
445
313
  'basic',
446
- 'pro'
314
+ 'pro',
315
+ 'enterprise'
447
316
  ]
448
317
  },
449
- region: {
450
- type: 'string',
451
- description: 'Cloudfleet control plane region. This field can not be updated after creation.',
452
- example: 'europe-central-1a'
453
- },
454
318
  version_channel: {
455
319
  type: 'string',
456
320
  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-]+)*))?$',
@@ -475,6 +339,7 @@ export const ClusterCreateInputSchema = {
475
339
  gpu_sharing_strategy: {
476
340
  type: 'string',
477
341
  description: 'GPU sharing strategy.',
342
+ default: 'none',
478
343
  example: 'none',
479
344
  enum: [
480
345
  'none',
@@ -484,9 +349,10 @@ export const ClusterCreateInputSchema = {
484
349
  },
485
350
  gpu_max_shared_clients_per_gpu: {
486
351
  type: 'integer',
487
- minimum: 1,
352
+ minimum: 2,
488
353
  maximum: 48,
489
354
  description: 'Maximum number of pods that may share a single GPU.',
355
+ default: 4,
490
356
  example: 10
491
357
  },
492
358
  cilium_socket_lb_host_namespace_only: {
@@ -495,62 +361,64 @@ export const ClusterCreateInputSchema = {
495
361
  example: false
496
362
  }
497
363
  },
498
- required: [
499
- 'gpu_sharing_strategy',
500
- 'gpu_max_shared_clients_per_gpu'
501
- ],
502
364
  additionalProperties: false,
503
365
  description: 'Cluster feature toggles.',
504
366
  default: {
505
367
  gpu_sharing_strategy: 'none',
506
- gpu_max_shared_clients_per_gpu: 10,
368
+ gpu_max_shared_clients_per_gpu: 4,
507
369
  cilium_socket_lb_host_namespace_only: false
508
370
  }
509
371
  },
372
+ region: {
373
+ type: 'string',
374
+ description: 'Cloudfleet control plane region. This field can not be updated after creation.',
375
+ example: 'europe-central-1a'
376
+ },
510
377
  networking: {
511
378
  type: 'object',
512
379
  properties: {
513
380
  pod_cidr: {
514
381
  type: 'string',
515
382
  description: 'CIDR block for pod IPs.',
516
- example: '10.244.0.0/16'
383
+ default: '10.244.0.0/16'
517
384
  },
518
385
  service_cidr: {
519
386
  type: 'string',
520
387
  description: 'CIDR block for service IPs.',
521
- example: '10.96.0.0/12'
522
- },
523
- cluster_dns: {
524
- type: 'string',
525
- description: 'CoreDNS service IP.',
526
- example: '10.96.0.10'
388
+ default: '10.96.0.0/12'
527
389
  },
528
390
  dual_stack: {
529
391
  type: 'boolean',
530
- description: 'Enable IPv4+IPv6 dual-stack networking.',
531
- example: false
392
+ description: 'Enable IPv4+IPv6 dual-stack networking.'
532
393
  },
533
394
  pod_cidr_v6: {
534
395
  type: 'string',
535
396
  description: 'IPv6 pod CIDR. Requires dual_stack.',
536
- example: 'fd00:10:244::/56'
397
+ default: '2001:db8:1:2::/48'
537
398
  },
538
399
  service_cidr_v6: {
539
400
  type: 'string',
540
401
  description: 'IPv6 service CIDR. Requires dual_stack.',
541
- example: 'fd00:10:96::/112'
402
+ default: '2001:db8:1:1::/112'
542
403
  }
543
404
  },
544
405
  additionalProperties: false,
545
- description: 'Cluster networking configuration. Immutable after creation.'
406
+ description: 'Cluster networking configuration. Immutable after creation.',
407
+ default: {
408
+ pod_cidr: '10.244.0.0/16',
409
+ service_cidr: '10.96.0.0/12',
410
+ dual_stack: false,
411
+ pod_cidr_v6: '2001:db8:1:2::/48',
412
+ service_cidr_v6: '2001:db8:1:1::/112'
413
+ }
546
414
  }
547
415
  },
548
416
  required: [
549
417
  'name',
550
- 'tier',
551
418
  'region'
552
419
  ],
553
- additionalProperties: false
420
+ additionalProperties: false,
421
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
554
422
  };
555
423
  export const ClusterJoinInformationSchema = {
556
424
  type: 'object',
@@ -581,6 +449,11 @@ export const ClusterJoinInformationSchema = {
581
449
  description: 'Authentication key for the cluster.',
582
450
  example: 'tskey-auth-kBV8wr1dk911CNTRL-...'
583
451
  },
452
+ login_server: {
453
+ type: 'string',
454
+ description: 'Coordination server the node registers against. Empty on data plane v1 clusters, where the node advertises its own tag instead. A non-empty value requires a client that declares the dataplane-v2 capability.',
455
+ example: 'https://415026b6-f00f-44f8-968d-fc6ef4d0fc6d.fabric.europe-central-1a.cfke.io'
456
+ },
584
457
  bootstrap_token: {
585
458
  type: 'string',
586
459
  description: 'Bootstrap token for the cluster.',
@@ -653,6 +526,7 @@ export const ClusterJoinInformationSchema = {
653
526
  'cluster_dns',
654
527
  'pod_cidr',
655
528
  'auth_key',
529
+ 'login_server',
656
530
  'bootstrap_token',
657
531
  'versions',
658
532
  'third_party_api_access_config'
@@ -673,57 +547,25 @@ export const ClusterSchema = {
673
547
  tier: {
674
548
  type: 'string',
675
549
  description: 'Tier of the cluster.',
550
+ default: 'basic',
676
551
  example: 'pro',
677
552
  enum: [
678
553
  'basic',
679
- 'pro'
554
+ 'pro',
555
+ 'enterprise'
680
556
  ]
681
557
  },
682
- region: {
558
+ version_channel: {
683
559
  type: 'string',
684
- description: 'Cloudfleet control plane region. This field can not be updated after creation.',
685
- example: 'europe-central-1a'
686
- },
687
- networking: {
688
- type: 'object',
689
- properties: {
690
- pod_cidr: {
691
- type: 'string',
692
- description: 'CIDR block for pod IPs.',
693
- example: '10.244.0.0/16'
694
- },
695
- service_cidr: {
696
- type: 'string',
697
- description: 'CIDR block for service IPs.',
698
- example: '10.96.0.0/12'
699
- },
700
- cluster_dns: {
701
- type: 'string',
702
- description: 'CoreDNS service IP.',
703
- example: '10.96.0.10'
704
- },
705
- dual_stack: {
706
- type: 'boolean',
707
- description: 'Enable IPv4+IPv6 dual-stack networking.',
708
- example: false
709
- },
710
- pod_cidr_v6: {
711
- type: 'string',
712
- description: 'IPv6 pod CIDR. Requires dual_stack.',
713
- example: 'fd00:10:244::/56'
714
- },
715
- service_cidr_v6: {
716
- type: 'string',
717
- description: 'IPv6 service CIDR. Requires dual_stack.',
718
- example: 'fd00:10:96::/112'
719
- }
720
- },
721
- additionalProperties: false,
722
- description: 'Cluster networking configuration. Immutable after creation.'
560
+ 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-]+)*))?$',
561
+ description: 'Version of the kubernetes cluster.',
562
+ default: '1.x.x-cfke.x',
563
+ example: '1.x.x-cfke.x'
723
564
  },
724
565
  release_channel: {
725
566
  type: 'string',
726
567
  description: 'Release channel for the cluster\'s control plane.',
568
+ default: 'rapid',
727
569
  example: 'rapid',
728
570
  enum: [
729
571
  'rapid',
@@ -737,6 +579,7 @@ export const ClusterSchema = {
737
579
  gpu_sharing_strategy: {
738
580
  type: 'string',
739
581
  description: 'GPU sharing strategy.',
582
+ default: 'none',
740
583
  example: 'none',
741
584
  enum: [
742
585
  'none',
@@ -746,9 +589,10 @@ export const ClusterSchema = {
746
589
  },
747
590
  gpu_max_shared_clients_per_gpu: {
748
591
  type: 'integer',
749
- minimum: 1,
592
+ minimum: 2,
750
593
  maximum: 48,
751
594
  description: 'Maximum number of pods that may share a single GPU.',
595
+ default: 4,
752
596
  example: 10
753
597
  },
754
598
  cilium_socket_lb_host_namespace_only: {
@@ -759,10 +603,66 @@ export const ClusterSchema = {
759
603
  },
760
604
  required: [
761
605
  'gpu_sharing_strategy',
762
- 'gpu_max_shared_clients_per_gpu'
606
+ 'gpu_max_shared_clients_per_gpu',
607
+ 'cilium_socket_lb_host_namespace_only'
763
608
  ],
764
609
  additionalProperties: false,
765
- description: 'Cluster feature toggles.'
610
+ description: 'Cluster feature toggles.',
611
+ default: {
612
+ gpu_sharing_strategy: 'none',
613
+ gpu_max_shared_clients_per_gpu: 4,
614
+ cilium_socket_lb_host_namespace_only: false
615
+ }
616
+ },
617
+ region: {
618
+ type: 'string',
619
+ description: 'Cloudfleet control plane region. This field can not be updated after creation.',
620
+ example: 'europe-central-1a'
621
+ },
622
+ networking: {
623
+ type: 'object',
624
+ properties: {
625
+ pod_cidr: {
626
+ type: 'string',
627
+ description: 'CIDR block for pod IPs.',
628
+ default: '10.244.0.0/16'
629
+ },
630
+ service_cidr: {
631
+ type: 'string',
632
+ description: 'CIDR block for service IPs.',
633
+ default: '10.96.0.0/12'
634
+ },
635
+ dual_stack: {
636
+ type: 'boolean',
637
+ description: 'Enable IPv4+IPv6 dual-stack networking.'
638
+ },
639
+ pod_cidr_v6: {
640
+ type: 'string',
641
+ description: 'IPv6 pod CIDR. Requires dual_stack.',
642
+ default: '2001:db8:1:2::/48'
643
+ },
644
+ service_cidr_v6: {
645
+ type: 'string',
646
+ description: 'IPv6 service CIDR. Requires dual_stack.',
647
+ default: '2001:db8:1:1::/112'
648
+ }
649
+ },
650
+ required: [
651
+ 'pod_cidr',
652
+ 'service_cidr',
653
+ 'dual_stack',
654
+ 'pod_cidr_v6',
655
+ 'service_cidr_v6'
656
+ ],
657
+ additionalProperties: false,
658
+ description: 'Cluster networking configuration. Immutable after creation.',
659
+ default: {
660
+ pod_cidr: '10.244.0.0/16',
661
+ service_cidr: '10.96.0.0/12',
662
+ dual_stack: false,
663
+ pod_cidr_v6: '2001:db8:1:2::/48',
664
+ service_cidr_v6: '2001:db8:1:1::/112'
665
+ }
766
666
  },
767
667
  id: {
768
668
  type: 'string',
@@ -837,22 +737,22 @@ export const ClusterSchema = {
837
737
  type: 'boolean',
838
738
  description: 'Indicates if the cluster is ready to be used.',
839
739
  example: true
840
- },
841
- version_channel: {
842
- type: 'string',
843
- 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-]+)*))?$',
844
- description: 'Version of the kubernetes cluster.',
845
- example: '1.x.x-cfke.x'
846
740
  }
847
741
  },
848
742
  required: [
849
743
  'name',
850
744
  'tier',
745
+ 'version_channel',
746
+ 'release_channel',
747
+ 'features',
851
748
  'region',
749
+ 'networking',
852
750
  'id',
853
- 'status'
751
+ 'status',
752
+ 'ready'
854
753
  ],
855
- additionalProperties: false
754
+ additionalProperties: false,
755
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
856
756
  };
857
757
  export const ClusterUpdateInputSchema = {
858
758
  type: 'object',
@@ -868,21 +768,25 @@ export const ClusterUpdateInputSchema = {
868
768
  tier: {
869
769
  type: 'string',
870
770
  description: 'Tier of the cluster.',
771
+ default: 'basic',
871
772
  example: 'pro',
872
773
  enum: [
873
774
  'basic',
874
- 'pro'
775
+ 'pro',
776
+ 'enterprise'
875
777
  ]
876
778
  },
877
779
  version_channel: {
878
780
  type: 'string',
879
781
  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-]+)*))?$',
880
782
  description: 'Version of the kubernetes cluster.',
783
+ default: '1.x.x-cfke.x',
881
784
  example: '1.x.x-cfke.x'
882
785
  },
883
786
  release_channel: {
884
787
  type: 'string',
885
788
  description: 'Release channel for the cluster\'s control plane.',
789
+ default: 'rapid',
886
790
  example: 'rapid',
887
791
  enum: [
888
792
  'rapid',
@@ -896,6 +800,7 @@ export const ClusterUpdateInputSchema = {
896
800
  gpu_sharing_strategy: {
897
801
  type: 'string',
898
802
  description: 'GPU sharing strategy.',
803
+ default: 'none',
899
804
  example: 'none',
900
805
  enum: [
901
806
  'none',
@@ -905,9 +810,10 @@ export const ClusterUpdateInputSchema = {
905
810
  },
906
811
  gpu_max_shared_clients_per_gpu: {
907
812
  type: 'integer',
908
- minimum: 1,
813
+ minimum: 2,
909
814
  maximum: 48,
910
815
  description: 'Maximum number of pods that may share a single GPU.',
816
+ default: 4,
911
817
  example: 10
912
818
  },
913
819
  cilium_socket_lb_host_namespace_only: {
@@ -916,16 +822,84 @@ export const ClusterUpdateInputSchema = {
916
822
  example: false
917
823
  }
918
824
  },
919
- required: [
920
- 'gpu_sharing_strategy',
921
- 'gpu_max_shared_clients_per_gpu'
922
- ],
923
825
  additionalProperties: false,
924
- description: 'Cluster feature toggles.'
826
+ description: 'Cluster feature toggles.',
827
+ default: {
828
+ gpu_sharing_strategy: 'none',
829
+ gpu_max_shared_clients_per_gpu: 4,
830
+ cilium_socket_lb_host_namespace_only: false
831
+ }
832
+ }
833
+ },
834
+ required: [
835
+ 'name'
836
+ ],
837
+ additionalProperties: false,
838
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
839
+ };
840
+ export const FeedbackCreateInputSchema = {
841
+ type: 'object',
842
+ properties: {
843
+ sentiment: {
844
+ type: 'string',
845
+ description: 'Overall sentiment: positive, neutral or negative.',
846
+ example: 'negative',
847
+ enum: [
848
+ 'positive',
849
+ 'neutral',
850
+ 'negative'
851
+ ]
852
+ },
853
+ message: {
854
+ type: 'string',
855
+ maxLength: 2000,
856
+ minLength: 1,
857
+ description: 'What was useful, confusing, wrong or missing.',
858
+ example: 'The error for a missing kubeconfig does not say which path it looked in.'
859
+ },
860
+ context: {
861
+ type: 'string',
862
+ maxLength: 2000,
863
+ description: 'What you were trying to do when it happened.',
864
+ example: 'Connecting kubectl to a new cluster.'
865
+ },
866
+ source: {
867
+ type: 'string',
868
+ description: 'Where the feedback was sent from: cli, mcp, plugin, console or api. Defaults to api.',
869
+ default: 'api',
870
+ example: 'cli',
871
+ enum: [
872
+ 'cli',
873
+ 'mcp',
874
+ 'plugin',
875
+ 'console',
876
+ 'api'
877
+ ]
878
+ },
879
+ client: {
880
+ type: 'string',
881
+ maxLength: 100,
882
+ description: 'Name and version of the sending client.',
883
+ example: 'cloudfleet-plugin-claude/0.5.0'
925
884
  }
926
885
  },
927
886
  required: [
928
- 'tier'
887
+ 'sentiment',
888
+ 'message'
889
+ ],
890
+ additionalProperties: false
891
+ };
892
+ export const FeedbackSchema = {
893
+ type: 'object',
894
+ properties: {
895
+ id: {
896
+ type: 'string',
897
+ description: 'Unique identifier of the feedback entry (Mongo ObjectId).',
898
+ example: '60c72b2f9f1b2c001f8e4d3a'
899
+ }
900
+ },
901
+ required: [
902
+ 'id'
929
903
  ],
930
904
  additionalProperties: false
931
905
  };
@@ -973,8 +947,8 @@ export const FleetCreateInputSchema = {
973
947
  type: 'string',
974
948
  maxLength: 64,
975
949
  minLength: 64,
976
- pattern: '^[A-Za-z0-9]+$',
977
- description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
950
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
951
+ description: 'Hetzner Cloud API token with read/write access (64 alphanumeric characters). Write-only: reads return a redacted placeholder, never the token. Omit the field, or send the placeholder back unchanged, to keep the existing key. Send a new value to rotate it.'
978
952
  }
979
953
  },
980
954
  required: [
@@ -1199,7 +1173,8 @@ export const FleetCreateInputSchema = {
1199
1173
  'z3'
1200
1174
  ]
1201
1175
  },
1202
- description: 'Allowed values for `cfke.io/instance-family`.'
1176
+ description: 'Allowed values for `cfke.io/instance-family`.',
1177
+ default: []
1203
1178
  },
1204
1179
  'topology.kubernetes.io/region': {
1205
1180
  type: 'array',
@@ -1272,15 +1247,27 @@ export const FleetCreateInputSchema = {
1272
1247
  'us-west4'
1273
1248
  ]
1274
1249
  },
1275
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1250
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1251
+ default: []
1276
1252
  }
1277
1253
  },
1278
1254
  additionalProperties: false,
1279
- 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.'
1255
+ 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.',
1256
+ default: {
1257
+ 'karpenter.sh/capacity-type': [
1258
+ 'on-demand',
1259
+ 'spot'
1260
+ ],
1261
+ 'kubernetes.io/arch': [
1262
+ 'amd64'
1263
+ ],
1264
+ 'cfke.io/instance-family': [],
1265
+ 'topology.kubernetes.io/region': []
1266
+ }
1280
1267
  },
1281
1268
  scalingProfile: {
1282
1269
  type: 'string',
1283
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1270
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet. Full-overwrite: omit to reset to the default (`conservative`).',
1284
1271
  default: 'conservative',
1285
1272
  example: 'conservative',
1286
1273
  enum: [
@@ -1288,6 +1275,44 @@ export const FleetCreateInputSchema = {
1288
1275
  'conservative'
1289
1276
  ]
1290
1277
  },
1278
+ taints: {
1279
+ type: 'array',
1280
+ items: {
1281
+ type: 'object',
1282
+ properties: {
1283
+ key: {
1284
+ type: 'string',
1285
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
1286
+ example: 'dedicated'
1287
+ },
1288
+ value: {
1289
+ type: 'string',
1290
+ maxLength: 63,
1291
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
1292
+ description: 'Taint value. Optional.',
1293
+ example: 'ci'
1294
+ },
1295
+ effect: {
1296
+ type: 'string',
1297
+ description: 'Taint effect.',
1298
+ example: 'NoSchedule',
1299
+ enum: [
1300
+ 'NoSchedule',
1301
+ 'PreferNoSchedule',
1302
+ 'NoExecute'
1303
+ ]
1304
+ }
1305
+ },
1306
+ required: [
1307
+ 'key',
1308
+ 'effect'
1309
+ ],
1310
+ additionalProperties: false
1311
+ },
1312
+ maxItems: 50,
1313
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
1314
+ default: []
1315
+ },
1291
1316
  id: {
1292
1317
  type: 'string',
1293
1318
  maxLength: 63,
@@ -1300,7 +1325,8 @@ export const FleetCreateInputSchema = {
1300
1325
  required: [
1301
1326
  'id'
1302
1327
  ],
1303
- additionalProperties: false
1328
+ additionalProperties: false,
1329
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1304
1330
  };
1305
1331
  export const FleetSchema = {
1306
1332
  type: 'object',
@@ -1570,7 +1596,8 @@ export const FleetSchema = {
1570
1596
  'z3'
1571
1597
  ]
1572
1598
  },
1573
- description: 'Allowed values for `cfke.io/instance-family`.'
1599
+ description: 'Allowed values for `cfke.io/instance-family`.',
1600
+ default: []
1574
1601
  },
1575
1602
  'topology.kubernetes.io/region': {
1576
1603
  type: 'array',
@@ -1643,15 +1670,31 @@ export const FleetSchema = {
1643
1670
  'us-west4'
1644
1671
  ]
1645
1672
  },
1646
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1673
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1674
+ default: []
1647
1675
  }
1648
1676
  },
1677
+ required: [
1678
+ 'karpenter.sh/capacity-type',
1679
+ 'kubernetes.io/arch'
1680
+ ],
1649
1681
  additionalProperties: false,
1650
- 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.'
1682
+ 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.',
1683
+ default: {
1684
+ 'karpenter.sh/capacity-type': [
1685
+ 'on-demand',
1686
+ 'spot'
1687
+ ],
1688
+ 'kubernetes.io/arch': [
1689
+ 'amd64'
1690
+ ],
1691
+ 'cfke.io/instance-family': [],
1692
+ 'topology.kubernetes.io/region': []
1693
+ }
1651
1694
  },
1652
1695
  scalingProfile: {
1653
1696
  type: 'string',
1654
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1697
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet. Full-overwrite: omit to reset to the default (`conservative`).',
1655
1698
  default: 'conservative',
1656
1699
  example: 'conservative',
1657
1700
  enum: [
@@ -1659,6 +1702,44 @@ export const FleetSchema = {
1659
1702
  'conservative'
1660
1703
  ]
1661
1704
  },
1705
+ taints: {
1706
+ type: 'array',
1707
+ items: {
1708
+ type: 'object',
1709
+ properties: {
1710
+ key: {
1711
+ type: 'string',
1712
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
1713
+ example: 'dedicated'
1714
+ },
1715
+ value: {
1716
+ type: 'string',
1717
+ maxLength: 63,
1718
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
1719
+ description: 'Taint value. Optional.',
1720
+ example: 'ci'
1721
+ },
1722
+ effect: {
1723
+ type: 'string',
1724
+ description: 'Taint effect.',
1725
+ example: 'NoSchedule',
1726
+ enum: [
1727
+ 'NoSchedule',
1728
+ 'PreferNoSchedule',
1729
+ 'NoExecute'
1730
+ ]
1731
+ }
1732
+ },
1733
+ required: [
1734
+ 'key',
1735
+ 'effect'
1736
+ ],
1737
+ additionalProperties: false
1738
+ },
1739
+ maxItems: 50,
1740
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
1741
+ default: []
1742
+ },
1662
1743
  id: {
1663
1744
  type: 'string',
1664
1745
  maxLength: 63,
@@ -1689,13 +1770,16 @@ export const FleetSchema = {
1689
1770
  }
1690
1771
  },
1691
1772
  required: [
1773
+ 'constraints',
1692
1774
  'scalingProfile',
1775
+ 'taints',
1693
1776
  'id',
1694
1777
  'ready',
1695
1778
  'created_at',
1696
1779
  'updated_at'
1697
1780
  ],
1698
- additionalProperties: false
1781
+ additionalProperties: false,
1782
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1699
1783
  };
1700
1784
  export const FleetUpdateInputSchema = {
1701
1785
  type: 'object',
@@ -1741,8 +1825,8 @@ export const FleetUpdateInputSchema = {
1741
1825
  type: 'string',
1742
1826
  maxLength: 64,
1743
1827
  minLength: 64,
1744
- pattern: '^[A-Za-z0-9]+$',
1745
- description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
1828
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
1829
+ description: 'Hetzner Cloud API token with read/write access (64 alphanumeric characters). Write-only: reads return a redacted placeholder, never the token. Omit the field, or send the placeholder back unchanged, to keep the existing key. Send a new value to rotate it.'
1746
1830
  }
1747
1831
  },
1748
1832
  required: [
@@ -1781,7 +1865,11 @@ export const FleetUpdateInputSchema = {
1781
1865
  ]
1782
1866
  },
1783
1867
  minItems: 1,
1784
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1868
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1869
+ default: [
1870
+ 'on-demand',
1871
+ 'spot'
1872
+ ]
1785
1873
  },
1786
1874
  'kubernetes.io/arch': {
1787
1875
  type: 'array',
@@ -1793,7 +1881,10 @@ export const FleetUpdateInputSchema = {
1793
1881
  ]
1794
1882
  },
1795
1883
  minItems: 1,
1796
- description: 'Allowed values for `kubernetes.io/arch`.'
1884
+ description: 'Allowed values for `kubernetes.io/arch`.',
1885
+ default: [
1886
+ 'amd64'
1887
+ ]
1797
1888
  },
1798
1889
  'cfke.io/instance-family': {
1799
1890
  type: 'array',
@@ -1960,7 +2051,8 @@ export const FleetUpdateInputSchema = {
1960
2051
  'z3'
1961
2052
  ]
1962
2053
  },
1963
- description: 'Allowed values for `cfke.io/instance-family`.'
2054
+ description: 'Allowed values for `cfke.io/instance-family`.',
2055
+ default: []
1964
2056
  },
1965
2057
  'topology.kubernetes.io/region': {
1966
2058
  type: 'array',
@@ -2033,26 +2125,75 @@ export const FleetUpdateInputSchema = {
2033
2125
  'us-west4'
2034
2126
  ]
2035
2127
  },
2036
- description: 'Allowed values for `topology.kubernetes.io/region`.'
2128
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
2129
+ default: []
2037
2130
  }
2038
2131
  },
2039
2132
  additionalProperties: false,
2040
- 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.'
2133
+ 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.',
2134
+ default: {
2135
+ 'karpenter.sh/capacity-type': [
2136
+ 'on-demand',
2137
+ 'spot'
2138
+ ],
2139
+ 'kubernetes.io/arch': [
2140
+ 'amd64'
2141
+ ],
2142
+ 'cfke.io/instance-family': [],
2143
+ 'topology.kubernetes.io/region': []
2144
+ }
2041
2145
  },
2042
2146
  scalingProfile: {
2043
2147
  type: 'string',
2044
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
2148
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet. Full-overwrite: omit to reset to the default (`conservative`).',
2149
+ default: 'conservative',
2045
2150
  example: 'conservative',
2046
2151
  enum: [
2047
2152
  'aggressive',
2048
2153
  'conservative'
2049
2154
  ]
2155
+ },
2156
+ taints: {
2157
+ type: 'array',
2158
+ items: {
2159
+ type: 'object',
2160
+ properties: {
2161
+ key: {
2162
+ type: 'string',
2163
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
2164
+ example: 'dedicated'
2165
+ },
2166
+ value: {
2167
+ type: 'string',
2168
+ maxLength: 63,
2169
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
2170
+ description: 'Taint value. Optional.',
2171
+ example: 'ci'
2172
+ },
2173
+ effect: {
2174
+ type: 'string',
2175
+ description: 'Taint effect.',
2176
+ example: 'NoSchedule',
2177
+ enum: [
2178
+ 'NoSchedule',
2179
+ 'PreferNoSchedule',
2180
+ 'NoExecute'
2181
+ ]
2182
+ }
2183
+ },
2184
+ required: [
2185
+ 'key',
2186
+ 'effect'
2187
+ ],
2188
+ additionalProperties: false
2189
+ },
2190
+ maxItems: 50,
2191
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
2192
+ default: []
2050
2193
  }
2051
2194
  },
2052
- required: [
2053
- 'scalingProfile'
2054
- ],
2055
- additionalProperties: false
2195
+ additionalProperties: false,
2196
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
2056
2197
  };
2057
2198
  export const InviteCreateInputSchema = {
2058
2199
  type: 'object',
@@ -2122,7 +2263,171 @@ export const InviteSchema = {
2122
2263
  }
2123
2264
  },
2124
2265
  required: [
2125
- 'date_created'
2266
+ 'date_created'
2267
+ ],
2268
+ additionalProperties: false
2269
+ };
2270
+ export const InvoicePaymentAttemptSchema = {
2271
+ type: 'object',
2272
+ properties: {
2273
+ invoice_id: {
2274
+ type: 'string',
2275
+ description: 'Identifier of the invoice.',
2276
+ example: 'in_1234567890xCrwxghOTj1234'
2277
+ },
2278
+ number: {
2279
+ type: 'string',
2280
+ nullable: true,
2281
+ description: 'Invoice number. Null if the invoice has no number.',
2282
+ example: 'CF-0042'
2283
+ },
2284
+ amount: {
2285
+ type: 'number',
2286
+ format: 'float',
2287
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2288
+ example: 4200
2289
+ },
2290
+ currency: {
2291
+ type: 'string',
2292
+ description: 'Currency of the invoice.',
2293
+ example: 'eur'
2294
+ },
2295
+ status: {
2296
+ type: 'string',
2297
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2298
+ example: 'paid',
2299
+ enum: [
2300
+ 'paid',
2301
+ 'processing',
2302
+ 'requires_action',
2303
+ 'failed'
2304
+ ]
2305
+ },
2306
+ client_secret: {
2307
+ type: 'string',
2308
+ nullable: true,
2309
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2310
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
2311
+ },
2312
+ failure_code: {
2313
+ type: 'string',
2314
+ nullable: true,
2315
+ description: 'Decline code. Set only when `status` is `failed`.',
2316
+ example: 'insufficient_funds'
2317
+ },
2318
+ failure_message: {
2319
+ type: 'string',
2320
+ nullable: true,
2321
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2322
+ example: 'Your card has insufficient funds.'
2323
+ }
2324
+ },
2325
+ required: [
2326
+ 'invoice_id',
2327
+ 'number',
2328
+ 'amount',
2329
+ 'currency',
2330
+ 'status',
2331
+ 'client_secret',
2332
+ 'failure_code',
2333
+ 'failure_message'
2334
+ ],
2335
+ additionalProperties: false
2336
+ };
2337
+ export const InvoicePaymentResultSchema = {
2338
+ type: 'object',
2339
+ properties: {
2340
+ code: {
2341
+ type: 'string',
2342
+ description: 'Overall outcome: `paid` (nothing outstanding), `processing` (all accepted, not yet settled), `action_required` (one or more await customer authentication), `partially_paid`, `failed`, `nothing_due`, or `bank_transfer_due` (the organization pays by bank transfer; nothing was charged).',
2343
+ example: 'partially_paid',
2344
+ enum: [
2345
+ 'paid',
2346
+ 'processing',
2347
+ 'action_required',
2348
+ 'partially_paid',
2349
+ 'failed',
2350
+ 'nothing_due',
2351
+ 'bank_transfer_due'
2352
+ ]
2353
+ },
2354
+ message: {
2355
+ type: 'string',
2356
+ description: 'Summary of the outcome, suitable for display.',
2357
+ example: '1 of 2 open invoices was paid. Invoice CF-0043 was declined: Your card has insufficient funds.'
2358
+ },
2359
+ results: {
2360
+ type: 'array',
2361
+ items: {
2362
+ type: 'object',
2363
+ properties: {
2364
+ invoice_id: {
2365
+ type: 'string',
2366
+ description: 'Identifier of the invoice.',
2367
+ example: 'in_1234567890xCrwxghOTj1234'
2368
+ },
2369
+ number: {
2370
+ type: 'string',
2371
+ description: 'Invoice number. Null if the invoice has no number.',
2372
+ example: 'CF-0042'
2373
+ },
2374
+ amount: {
2375
+ type: 'number',
2376
+ format: 'float',
2377
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2378
+ example: 4200
2379
+ },
2380
+ currency: {
2381
+ type: 'string',
2382
+ description: 'Currency of the invoice.',
2383
+ example: 'eur'
2384
+ },
2385
+ status: {
2386
+ type: 'string',
2387
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2388
+ example: 'paid',
2389
+ enum: [
2390
+ 'paid',
2391
+ 'processing',
2392
+ 'requires_action',
2393
+ 'failed'
2394
+ ]
2395
+ },
2396
+ client_secret: {
2397
+ type: 'string',
2398
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2399
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
2400
+ },
2401
+ failure_code: {
2402
+ type: 'string',
2403
+ description: 'Decline code. Set only when `status` is `failed`.',
2404
+ example: 'insufficient_funds'
2405
+ },
2406
+ failure_message: {
2407
+ type: 'string',
2408
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2409
+ example: 'Your card has insufficient funds.'
2410
+ }
2411
+ },
2412
+ required: [
2413
+ 'invoice_id',
2414
+ 'number',
2415
+ 'amount',
2416
+ 'currency',
2417
+ 'status',
2418
+ 'client_secret',
2419
+ 'failure_code',
2420
+ 'failure_message'
2421
+ ],
2422
+ additionalProperties: false
2423
+ },
2424
+ description: 'One entry per invoice charged, oldest first.'
2425
+ }
2426
+ },
2427
+ required: [
2428
+ 'code',
2429
+ 'message',
2430
+ 'results'
2126
2431
  ],
2127
2432
  additionalProperties: false
2128
2433
  };
@@ -2182,160 +2487,6 @@ export const InvoiceSchema = {
2182
2487
  ],
2183
2488
  additionalProperties: false
2184
2489
  };
2185
- export const MarketplaceListingFilesSchema = {
2186
- type: 'object',
2187
- properties: {
2188
- chartYaml: {
2189
- type: 'string',
2190
- description: 'Raw Chart.yaml content from the Helm chart',
2191
- example: 'apiVersion: v2\nname: nginx-ingress\nversion: 1.18.2-cfke.45\nappVersion: 1.9.4'
2192
- },
2193
- valuesYaml: {
2194
- type: 'string',
2195
- description: 'Raw values.yaml content from the Helm chart',
2196
- example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
2197
- },
2198
- valuesSchemaJson: {
2199
- type: 'string',
2200
- description: 'JSON schema for values.yaml as a string',
2201
- example: '{"type":"object","properties":{"replicaCount":{"type":"number"}}}'
2202
- }
2203
- },
2204
- additionalProperties: false
2205
- };
2206
- export const MarketplaceListingSchema = {
2207
- type: 'object',
2208
- properties: {
2209
- name: {
2210
- type: 'string',
2211
- description: 'Name of the chart',
2212
- example: 'nginx-ingress'
2213
- },
2214
- versions: {
2215
- type: 'array',
2216
- items: {
2217
- type: 'string',
2218
- 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-]+)*))?$',
2219
- description: 'Specific version of the chart',
2220
- example: '1.18.2-cfke.45'
2221
- },
2222
- description: 'Available versions of the chart'
2223
- },
2224
- version_channels: {
2225
- type: 'array',
2226
- items: {
2227
- type: 'string',
2228
- 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-]+)*))?$',
2229
- description: 'Version channel pattern',
2230
- example: '1.18.x-cfke.x'
2231
- },
2232
- description: 'Version channels for the chart'
2233
- },
2234
- latestVersion: {
2235
- type: 'string',
2236
- description: 'Latest version of the chart',
2237
- example: '1.18.2-cfke.45'
2238
- },
2239
- metadata: {
2240
- type: 'object',
2241
- properties: {
2242
- name: {
2243
- type: 'string',
2244
- description: 'Chart name from metadata',
2245
- example: 'nginx-ingress'
2246
- },
2247
- version: {
2248
- type: 'string',
2249
- description: 'Chart version from metadata',
2250
- example: '1.18.2-cfke.45'
2251
- },
2252
- description: {
2253
- type: 'string',
2254
- description: 'Chart description',
2255
- example: 'NGINX Ingress Controller for Kubernetes'
2256
- },
2257
- appVersion: {
2258
- type: 'string',
2259
- description: 'Application version',
2260
- example: '1.9.4'
2261
- },
2262
- apiVersion: {
2263
- type: 'string',
2264
- description: 'Helm API version',
2265
- example: 'v2'
2266
- },
2267
- keywords: {
2268
- type: 'array',
2269
- items: {
2270
- type: 'string'
2271
- },
2272
- description: 'Chart keywords',
2273
- example: [
2274
- 'ingress',
2275
- 'nginx',
2276
- 'load-balancer'
2277
- ]
2278
- },
2279
- home: {
2280
- type: 'string',
2281
- description: 'Chart home URL',
2282
- example: 'https://kubernetes.github.io/ingress-nginx/'
2283
- },
2284
- icon: {
2285
- type: 'string',
2286
- description: 'A URL to an SVG or PNG image to be used as an icon',
2287
- example: 'https://cloudfleet.ai/images/marketplace/icons/ingress-nginx.png'
2288
- },
2289
- sources: {
2290
- type: 'array',
2291
- items: {
2292
- type: 'string'
2293
- },
2294
- description: 'Chart source URLs',
2295
- example: [
2296
- 'https://github.com/kubernetes/ingress-nginx'
2297
- ]
2298
- },
2299
- maintainers: {
2300
- type: 'array',
2301
- items: {
2302
- type: 'object',
2303
- properties: {
2304
- name: {
2305
- type: 'string',
2306
- description: 'Maintainer name',
2307
- example: 'NGINX Team'
2308
- },
2309
- email: {
2310
- type: 'string',
2311
- description: 'Maintainer email',
2312
- example: 'support@nginx.org'
2313
- }
2314
- },
2315
- required: [
2316
- 'name'
2317
- ],
2318
- additionalProperties: false
2319
- },
2320
- description: 'Chart maintainers'
2321
- }
2322
- },
2323
- required: [
2324
- 'name',
2325
- 'version'
2326
- ],
2327
- additionalProperties: false,
2328
- description: 'Chart metadata'
2329
- }
2330
- },
2331
- required: [
2332
- 'name',
2333
- 'versions',
2334
- 'version_channels',
2335
- 'latestVersion'
2336
- ],
2337
- additionalProperties: false
2338
- };
2339
2490
  export const OrganizationCreateInputSchema = {
2340
2491
  type: 'object',
2341
2492
  properties: {
@@ -2460,6 +2611,17 @@ export const OrganizationSchema = {
2460
2611
  description: 'Available number of Pro clusters that can be created.',
2461
2612
  example: 999
2462
2613
  },
2614
+ enterprise_clusters_max: {
2615
+ type: 'integer',
2616
+ minimum: 0,
2617
+ description: 'Maximum number of Enterprise clusters that can be created.',
2618
+ example: 999
2619
+ },
2620
+ enterprise_clusters_available: {
2621
+ type: 'integer',
2622
+ description: 'Available number of Enterprise clusters that can be created.',
2623
+ example: 999
2624
+ },
2463
2625
  fleets_max: {
2464
2626
  type: 'integer',
2465
2627
  minimum: 0,
@@ -2521,6 +2683,8 @@ export const OrganizationSchema = {
2521
2683
  'basic_clusters_available',
2522
2684
  'pro_clusters_max',
2523
2685
  'pro_clusters_available',
2686
+ 'enterprise_clusters_max',
2687
+ 'enterprise_clusters_available',
2524
2688
  'fleets_max',
2525
2689
  'cluster_tiers',
2526
2690
  'regions',
@@ -2667,6 +2831,17 @@ export const PlatformQuotaSchema = {
2667
2831
  description: 'Available number of Pro clusters that can be created.',
2668
2832
  example: 999
2669
2833
  },
2834
+ enterprise_clusters_max: {
2835
+ type: 'integer',
2836
+ minimum: 0,
2837
+ description: 'Maximum number of Enterprise clusters that can be created.',
2838
+ example: 999
2839
+ },
2840
+ enterprise_clusters_available: {
2841
+ type: 'integer',
2842
+ description: 'Available number of Enterprise clusters that can be created.',
2843
+ example: 999
2844
+ },
2670
2845
  fleets_max: {
2671
2846
  type: 'integer',
2672
2847
  minimum: 0,
@@ -2728,6 +2903,8 @@ export const PlatformQuotaSchema = {
2728
2903
  'basic_clusters_available',
2729
2904
  'pro_clusters_max',
2730
2905
  'pro_clusters_available',
2906
+ 'enterprise_clusters_max',
2907
+ 'enterprise_clusters_available',
2731
2908
  'fleets_max',
2732
2909
  'cluster_tiers',
2733
2910
  'regions',
@@ -3001,6 +3178,73 @@ export const RegistryTagSchema = {
3001
3178
  ],
3002
3179
  additionalProperties: false
3003
3180
  };
3181
+ export const RoadmapItemCreateInputSchema = {
3182
+ type: 'object',
3183
+ properties: {
3184
+ text: {
3185
+ type: 'string',
3186
+ maxLength: 500,
3187
+ minLength: 1,
3188
+ description: 'Your suggestion in one or two sentences. It is reviewed before it appears on the roadmap.',
3189
+ example: 'Support for ARM nodes on Hetzner.'
3190
+ }
3191
+ },
3192
+ required: [
3193
+ 'text'
3194
+ ],
3195
+ additionalProperties: false
3196
+ };
3197
+ export const RoadmapItemSchema = {
3198
+ type: 'object',
3199
+ properties: {
3200
+ id: {
3201
+ type: 'string',
3202
+ description: 'Unique identifier of the roadmap item (Mongo ObjectId).',
3203
+ example: '60c72b2f9f1b2c001f8e4d3a'
3204
+ },
3205
+ text: {
3206
+ type: 'string',
3207
+ description: 'Short description of the roadmap item.',
3208
+ example: 'Support for ARM nodes on Hetzner.'
3209
+ },
3210
+ vote: {
3211
+ type: 'integer',
3212
+ nullable: true,
3213
+ description: 'The caller\'s vote on this item: -1 (down), 1 (up), 2 (double up), or null if the caller has not voted.',
3214
+ example: 1,
3215
+ enum: [
3216
+ -1,
3217
+ 1,
3218
+ 2
3219
+ ]
3220
+ }
3221
+ },
3222
+ required: [
3223
+ 'id',
3224
+ 'text',
3225
+ 'vote'
3226
+ ],
3227
+ additionalProperties: false
3228
+ };
3229
+ export const RoadmapVoteInputSchema = {
3230
+ type: 'object',
3231
+ properties: {
3232
+ value: {
3233
+ type: 'integer',
3234
+ description: 'Vote value: -1 (down), 1 (up), or 2 (double up).',
3235
+ example: 1,
3236
+ enum: [
3237
+ -1,
3238
+ 1,
3239
+ 2
3240
+ ]
3241
+ }
3242
+ },
3243
+ required: [
3244
+ 'value'
3245
+ ],
3246
+ additionalProperties: false
3247
+ };
3004
3248
  export const TicketAttachmentSchema = {
3005
3249
  type: 'object',
3006
3250
  properties: {
@@ -3062,6 +3306,11 @@ export const TicketCreateInputSchema = {
3062
3306
  subcategory: 'cluster-question',
3063
3307
  cluster_id: '60c72b2f9f1b2c001f8e4d3a'
3064
3308
  }
3309
+ },
3310
+ grant_support_access: {
3311
+ type: 'boolean',
3312
+ description: 'Grant Cloudfleet support staff access to the organization\'s resources while the ticket is open. Access cannot be revoked; it ends when the ticket is closed.',
3313
+ example: true
3065
3314
  }
3066
3315
  },
3067
3316
  required: [
@@ -3070,172 +3319,6 @@ export const TicketCreateInputSchema = {
3070
3319
  ],
3071
3320
  additionalProperties: false
3072
3321
  };
3073
- export const TicketListResponseSchema = {
3074
- type: 'object',
3075
- properties: {
3076
- items: {
3077
- type: 'array',
3078
- items: {
3079
- type: 'object',
3080
- properties: {
3081
- id: {
3082
- type: 'string',
3083
- description: 'Unique identifier of the ticket (Mongo ObjectId).',
3084
- example: '60c72b2f9f1b2c001f8e4d3a'
3085
- },
3086
- status: {
3087
- type: 'string',
3088
- description: 'Current state of the ticket.',
3089
- example: 'waiting_on_us',
3090
- enum: [
3091
- 'waiting_on_us',
3092
- 'waiting_on_user',
3093
- 'closed'
3094
- ]
3095
- },
3096
- category: {
3097
- type: 'string',
3098
- description: 'Ticket category.',
3099
- example: 'technical',
3100
- enum: [
3101
- 'billing',
3102
- 'technical',
3103
- 'general'
3104
- ]
3105
- },
3106
- summary: {
3107
- type: 'string',
3108
- description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3109
- example: 'My cluster cannot reach the registry. Logs attached.'
3110
- },
3111
- closed_at: {
3112
- type: 'string',
3113
- format: 'date-time',
3114
- nullable: true,
3115
- description: 'Closure timestamp. Null while the ticket is open.',
3116
- example: '2026-05-18T16:08:14.338Z'
3117
- },
3118
- date_created: {
3119
- type: 'string',
3120
- format: 'date-time',
3121
- description: 'Creation date of the ticket. ISO 8601 UTC.',
3122
- example: '2026-05-11T16:08:14.338Z'
3123
- },
3124
- date_updated: {
3125
- type: 'string',
3126
- format: 'date-time',
3127
- description: 'Last update date of the ticket. ISO 8601 UTC.',
3128
- example: '2026-05-11T16:08:14.338Z'
3129
- },
3130
- messages: {
3131
- type: 'array',
3132
- items: {
3133
- type: 'object',
3134
- properties: {
3135
- id: {
3136
- type: 'string',
3137
- description: 'Unique identifier of the message (Mongo ObjectId).',
3138
- example: '60c72b2f9f1b2c001f8e4d3b'
3139
- },
3140
- type: {
3141
- type: 'string',
3142
- description: 'Message type. Internal notes are filtered out of customer-facing responses.',
3143
- example: 'customer_reply',
3144
- enum: [
3145
- 'customer_reply',
3146
- 'agent_reply'
3147
- ]
3148
- },
3149
- body: {
3150
- type: 'string',
3151
- description: 'Message body in markdown.',
3152
- example: 'Thanks — that resolved it on my side.'
3153
- },
3154
- author_first_name: {
3155
- type: 'string',
3156
- nullable: true,
3157
- description: 'First name of the author. Null when not provided.',
3158
- example: 'Jane'
3159
- },
3160
- author_last_name: {
3161
- type: 'string',
3162
- nullable: true,
3163
- description: 'Last name of the author. Null when not provided.',
3164
- example: 'Doe'
3165
- },
3166
- attachments: {
3167
- type: 'array',
3168
- items: {
3169
- type: 'object',
3170
- properties: {
3171
- id: {
3172
- type: 'string',
3173
- description: 'Unique identifier of the attachment (Mongo ObjectId).',
3174
- example: '60c72b2f9f1b2c001f8e4d3c'
3175
- },
3176
- filename: {
3177
- type: 'string',
3178
- description: 'Original filename as uploaded.',
3179
- example: 'debug.log'
3180
- },
3181
- content_type: {
3182
- type: 'string',
3183
- description: 'MIME content type of the attachment.',
3184
- example: 'text/plain'
3185
- },
3186
- size: {
3187
- type: 'integer',
3188
- description: 'Size of the attachment in bytes.',
3189
- example: 12345
3190
- }
3191
- },
3192
- required: [
3193
- 'id',
3194
- 'filename',
3195
- 'content_type',
3196
- 'size'
3197
- ],
3198
- additionalProperties: false
3199
- },
3200
- description: 'Attachments associated with this message.',
3201
- example: []
3202
- },
3203
- date_created: {
3204
- type: 'string',
3205
- format: 'date-time',
3206
- description: 'Creation date of the message. ISO 8601 UTC.',
3207
- example: '2026-05-11T16:08:14.338Z'
3208
- }
3209
- },
3210
- required: [
3211
- 'id',
3212
- 'type',
3213
- 'body',
3214
- 'date_created'
3215
- ],
3216
- additionalProperties: false
3217
- },
3218
- description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
3219
- }
3220
- },
3221
- required: [
3222
- 'id',
3223
- 'status',
3224
- 'category',
3225
- 'summary',
3226
- 'date_created',
3227
- 'date_updated'
3228
- ],
3229
- additionalProperties: false
3230
- },
3231
- description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
3232
- }
3233
- },
3234
- required: [
3235
- 'items'
3236
- ],
3237
- additionalProperties: false
3238
- };
3239
3322
  export const TicketMessageInputSchema = {
3240
3323
  type: 'object',
3241
3324
  properties: {
@@ -3277,11 +3360,13 @@ export const TicketMessageSchema = {
3277
3360
  },
3278
3361
  author_first_name: {
3279
3362
  type: 'string',
3363
+ nullable: true,
3280
3364
  description: 'First name of the author. Null when not provided.',
3281
3365
  example: 'Jane'
3282
3366
  },
3283
3367
  author_last_name: {
3284
3368
  type: 'string',
3369
+ nullable: true,
3285
3370
  description: 'Last name of the author. Null when not provided.',
3286
3371
  example: 'Doe'
3287
3372
  },
@@ -3370,9 +3455,22 @@ export const TicketSchema = {
3370
3455
  description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3371
3456
  example: 'My cluster cannot reach the registry. Logs attached.'
3372
3457
  },
3458
+ support_access_granted: {
3459
+ type: 'boolean',
3460
+ description: 'Whether Cloudfleet support staff currently have access to the organization\'s resources. True once access is granted and until the ticket is closed.',
3461
+ example: true
3462
+ },
3463
+ support_access_granted_at: {
3464
+ type: 'string',
3465
+ format: 'date-time',
3466
+ nullable: true,
3467
+ description: 'When support access was granted. Null if it never was. Kept after the ticket is closed.',
3468
+ example: '2026-05-11T16:08:14.338Z'
3469
+ },
3373
3470
  closed_at: {
3374
3471
  type: 'string',
3375
3472
  format: 'date-time',
3473
+ nullable: true,
3376
3474
  description: 'Closure timestamp. Null while the ticket is open.',
3377
3475
  example: '2026-05-18T16:08:14.338Z'
3378
3476
  },
@@ -3482,6 +3580,8 @@ export const TicketSchema = {
3482
3580
  'status',
3483
3581
  'category',
3484
3582
  'summary',
3583
+ 'support_access_granted',
3584
+ 'support_access_granted_at',
3485
3585
  'date_created',
3486
3586
  'date_updated'
3487
3587
  ],
@@ -3597,12 +3697,21 @@ export const UsageFacetsSchema = {
3597
3697
  product: {
3598
3698
  type: 'array',
3599
3699
  items: {
3600
- type: 'string'
3700
+ type: 'string',
3701
+ enum: [
3702
+ 'cfke_controlplane_basic',
3703
+ 'cfke_controlplane_pro',
3704
+ 'cfke_controlplane_enterprise',
3705
+ 'cfke_connected_nodes_basic',
3706
+ 'cfke_connected_nodes_pro',
3707
+ 'cfke_connected_nodes_enterprise',
3708
+ 'cfcr_storage'
3709
+ ]
3601
3710
  },
3602
3711
  description: 'List of unique products',
3603
3712
  example: [
3604
- 'cfke_controlplane',
3605
- 'cfke_connected_nodes'
3713
+ 'cfke_controlplane_pro',
3714
+ 'cfke_connected_nodes_pro'
3606
3715
  ]
3607
3716
  }
3608
3717
  },
@@ -3629,7 +3738,16 @@ export const UsageResponseSchema = {
3629
3738
  product: {
3630
3739
  type: 'string',
3631
3740
  description: 'The product the usage is associated with',
3632
- example: 'cfke_controlplane'
3741
+ example: 'cfke_controlplane_pro',
3742
+ enum: [
3743
+ 'cfke_controlplane_basic',
3744
+ 'cfke_controlplane_pro',
3745
+ 'cfke_controlplane_enterprise',
3746
+ 'cfke_connected_nodes_basic',
3747
+ 'cfke_connected_nodes_pro',
3748
+ 'cfke_connected_nodes_enterprise',
3749
+ 'cfcr_storage'
3750
+ ]
3633
3751
  },
3634
3752
  value: {
3635
3753
  type: 'number',
@@ -3677,12 +3795,21 @@ export const UsageResponseSchema = {
3677
3795
  product: {
3678
3796
  type: 'array',
3679
3797
  items: {
3680
- type: 'string'
3798
+ type: 'string',
3799
+ enum: [
3800
+ 'cfke_controlplane_basic',
3801
+ 'cfke_controlplane_pro',
3802
+ 'cfke_controlplane_enterprise',
3803
+ 'cfke_connected_nodes_basic',
3804
+ 'cfke_connected_nodes_pro',
3805
+ 'cfke_connected_nodes_enterprise',
3806
+ 'cfcr_storage'
3807
+ ]
3681
3808
  },
3682
3809
  description: 'List of unique products',
3683
3810
  example: [
3684
- 'cfke_controlplane',
3685
- 'cfke_connected_nodes'
3811
+ 'cfke_controlplane_pro',
3812
+ 'cfke_connected_nodes_pro'
3686
3813
  ]
3687
3814
  }
3688
3815
  },
@@ -3712,7 +3839,16 @@ export const UsageSchema = {
3712
3839
  product: {
3713
3840
  type: 'string',
3714
3841
  description: 'The product the usage is associated with',
3715
- example: 'cfke_controlplane'
3842
+ example: 'cfke_controlplane_pro',
3843
+ enum: [
3844
+ 'cfke_controlplane_basic',
3845
+ 'cfke_controlplane_pro',
3846
+ 'cfke_controlplane_enterprise',
3847
+ 'cfke_connected_nodes_basic',
3848
+ 'cfke_connected_nodes_pro',
3849
+ 'cfke_connected_nodes_enterprise',
3850
+ 'cfcr_storage'
3851
+ ]
3716
3852
  },
3717
3853
  value: {
3718
3854
  type: 'number',