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

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.
@@ -1,4 +1,53 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
+ export const BasicPriceConsentInputSchema = {
3
+ type: 'object',
4
+ properties: {
5
+ decision: {
6
+ type: 'string',
7
+ description: 'The administrator\'s decision on the new Basic price. `accepted` continues to paid billing when the signup credit runs out; `rejected` opts out (clusters are suspended, never charged). A `rejected` org can later be flipped back to `accepted`.',
8
+ example: 'accepted',
9
+ enum: [
10
+ 'accepted',
11
+ 'rejected'
12
+ ]
13
+ }
14
+ },
15
+ required: [
16
+ 'decision'
17
+ ],
18
+ additionalProperties: false
19
+ };
20
+ export const BasicPriceConsentSchema = {
21
+ type: 'object',
22
+ properties: {
23
+ status: {
24
+ type: 'string',
25
+ description: 'Consent status for the new Basic price. `not_applicable` when the organization is not in scope for the migration. `pending` when the organization must opt in but no admin has decided yet. `accepted` / `rejected` reflect the recorded decision.',
26
+ example: 'pending',
27
+ enum: [
28
+ 'not_applicable',
29
+ 'pending',
30
+ 'accepted',
31
+ 'rejected'
32
+ ]
33
+ },
34
+ decided_at: {
35
+ type: 'string',
36
+ format: 'date-time',
37
+ description: 'When the current decision was recorded. Absent while `not_applicable` or `pending`.',
38
+ example: '2026-09-05T10:12:00.000Z'
39
+ },
40
+ decided_by: {
41
+ type: 'string',
42
+ description: 'User id of the administrator who recorded the current decision. Absent while `not_applicable` or `pending`.',
43
+ example: '2b7a5c9e-1f4d-4a1b-9c3e-8d2f6a0b1c2d'
44
+ }
45
+ },
46
+ required: [
47
+ 'status'
48
+ ],
49
+ additionalProperties: false
50
+ };
2
51
  export const BillingContactSchema = {
3
52
  type: 'object',
4
53
  properties: {
@@ -368,24 +417,8 @@ export const ChartSchema = {
368
417
  },
369
418
  status: {
370
419
  type: 'string',
371
- description: 'Status of the chart deployment.',
372
- example: 'active',
373
- enum: [
374
- 'InstallSucceeded',
375
- 'InstallFailed',
376
- 'UpgradeSucceeded',
377
- 'UpgradeFailed',
378
- 'TestSucceeded',
379
- 'TestFailed',
380
- 'RollbackSucceeded',
381
- 'RollbackFailed',
382
- 'UninstallSucceeded',
383
- 'UninstallFailed',
384
- 'ArtifactFailed',
385
- 'DependencyNotReady',
386
- 'Progressing',
387
- 'SourceNotReady'
388
- ]
420
+ description: 'Status of the chart deployment (Flux HelmRelease Ready condition reason, e.g. InstallSucceeded, UpgradeFailed, Progressing).',
421
+ example: 'InstallSucceeded'
389
422
  },
390
423
  version_current: {
391
424
  type: 'string',
@@ -456,22 +489,12 @@ export const ClusterCreateInputSchema = {
456
489
  tier: {
457
490
  type: 'string',
458
491
  description: 'Tier of the cluster.',
492
+ default: 'basic',
459
493
  example: 'pro',
460
494
  enum: [
461
495
  'basic',
462
- 'pro'
463
- ]
464
- },
465
- region: {
466
- type: 'string',
467
- description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
468
- default: 'staging-1a',
469
- example: 'northamerica-central-1a',
470
- enum: [
471
- 'staging-1a',
472
- 'northamerica-central-1',
473
- 'europe-central-1a',
474
- 'northamerica-central-1a'
496
+ 'pro',
497
+ 'enterprise'
475
498
  ]
476
499
  },
477
500
  version_channel: {
@@ -479,20 +502,105 @@ export const ClusterCreateInputSchema = {
479
502
  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-]+)*))?$',
480
503
  description: 'Version of the kubernetes cluster.',
481
504
  default: '1.x.x-cfke.x',
482
- example: '1.x.x-cfke.x',
505
+ example: '1.x.x-cfke.x'
506
+ },
507
+ release_channel: {
508
+ type: 'string',
509
+ description: 'Release channel for the cluster\'s control plane.',
510
+ default: 'rapid',
511
+ example: 'rapid',
483
512
  enum: [
484
- '1.x.x-cfke.x',
485
- '1.31.x-cfke.x',
486
- '1.32.x-cfke.x',
487
- '1.33.x-cfke.x'
513
+ 'rapid',
514
+ 'stable',
515
+ 'extended'
488
516
  ]
517
+ },
518
+ features: {
519
+ type: 'object',
520
+ properties: {
521
+ gpu_sharing_strategy: {
522
+ type: 'string',
523
+ description: 'GPU sharing strategy.',
524
+ default: 'none',
525
+ example: 'none',
526
+ enum: [
527
+ 'none',
528
+ 'mps',
529
+ 'time_slicing'
530
+ ]
531
+ },
532
+ gpu_max_shared_clients_per_gpu: {
533
+ type: 'integer',
534
+ minimum: 2,
535
+ maximum: 48,
536
+ description: 'Maximum number of pods that may share a single GPU.',
537
+ default: 4,
538
+ example: 10
539
+ },
540
+ cilium_socket_lb_host_namespace_only: {
541
+ type: 'boolean',
542
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
543
+ example: false
544
+ }
545
+ },
546
+ additionalProperties: false,
547
+ description: 'Cluster feature toggles.',
548
+ default: {
549
+ gpu_sharing_strategy: 'none',
550
+ gpu_max_shared_clients_per_gpu: 4,
551
+ cilium_socket_lb_host_namespace_only: false
552
+ }
553
+ },
554
+ region: {
555
+ type: 'string',
556
+ description: 'Cloudfleet control plane region. This field can not be updated after creation.',
557
+ example: 'europe-central-1a'
558
+ },
559
+ networking: {
560
+ type: 'object',
561
+ properties: {
562
+ pod_cidr: {
563
+ type: 'string',
564
+ description: 'CIDR block for pod IPs.',
565
+ default: '10.244.0.0/16'
566
+ },
567
+ service_cidr: {
568
+ type: 'string',
569
+ description: 'CIDR block for service IPs.',
570
+ default: '10.96.0.0/12'
571
+ },
572
+ dual_stack: {
573
+ type: 'boolean',
574
+ description: 'Enable IPv4+IPv6 dual-stack networking.'
575
+ },
576
+ pod_cidr_v6: {
577
+ type: 'string',
578
+ description: 'IPv6 pod CIDR. Requires dual_stack.',
579
+ default: '2001:db8:1:2::/48'
580
+ },
581
+ service_cidr_v6: {
582
+ type: 'string',
583
+ description: 'IPv6 service CIDR. Requires dual_stack.',
584
+ default: '2001:db8:1:1::/112'
585
+ }
586
+ },
587
+ additionalProperties: false,
588
+ description: 'Cluster networking configuration. Immutable after creation.',
589
+ default: {
590
+ pod_cidr: '10.244.0.0/16',
591
+ service_cidr: '10.96.0.0/12',
592
+ dual_stack: false,
593
+ pod_cidr_v6: '2001:db8:1:2::/48',
594
+ service_cidr_v6: '2001:db8:1:1::/112'
595
+ }
489
596
  }
490
597
  },
491
598
  required: [
492
599
  'name',
493
- 'tier'
600
+ 'region'
494
601
  ],
495
- additionalProperties: false
602
+ additionalProperties: false,
603
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
496
604
  };
497
605
  export const ClusterJoinInformationSchema = {
498
606
  type: 'object',
@@ -513,11 +621,21 @@ export const ClusterJoinInformationSchema = {
513
621
  description: 'Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.',
514
622
  example: '10.96.0.10'
515
623
  },
624
+ pod_cidr: {
625
+ type: 'string',
626
+ description: 'Pod CIDR for the cluster. Used to configure iptables rules on nodes to prevent Tailscale routing loops.',
627
+ example: '10.244.0.0/16'
628
+ },
516
629
  auth_key: {
517
630
  type: 'string',
518
631
  description: 'Authentication key for the cluster.',
519
632
  example: 'tskey-auth-kBV8wr1dk911CNTRL-...'
520
633
  },
634
+ login_server: {
635
+ type: 'string',
636
+ 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.',
637
+ example: 'https://415026b6-f00f-44f8-968d-fc6ef4d0fc6d.fabric.europe-central-1a.cfke.io'
638
+ },
521
639
  bootstrap_token: {
522
640
  type: 'string',
523
641
  description: 'Bootstrap token for the cluster.',
@@ -588,7 +706,9 @@ export const ClusterJoinInformationSchema = {
588
706
  'certificate_authority',
589
707
  'endpoint',
590
708
  'cluster_dns',
709
+ 'pod_cidr',
591
710
  'auth_key',
711
+ 'login_server',
592
712
  'bootstrap_token',
593
713
  'versions',
594
714
  'third_party_api_access_config'
@@ -609,24 +729,123 @@ export const ClusterSchema = {
609
729
  tier: {
610
730
  type: 'string',
611
731
  description: 'Tier of the cluster.',
732
+ default: 'basic',
612
733
  example: 'pro',
613
734
  enum: [
614
735
  'basic',
615
- 'pro'
736
+ 'pro',
737
+ 'enterprise'
616
738
  ]
617
739
  },
618
- region: {
740
+ version_channel: {
741
+ type: 'string',
742
+ 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-]+)*))?$',
743
+ description: 'Version of the kubernetes cluster.',
744
+ default: '1.x.x-cfke.x',
745
+ example: '1.x.x-cfke.x'
746
+ },
747
+ release_channel: {
619
748
  type: 'string',
620
- description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
621
- default: 'staging-1a',
622
- example: 'northamerica-central-1a',
749
+ description: 'Release channel for the cluster\'s control plane.',
750
+ default: 'rapid',
751
+ example: 'rapid',
623
752
  enum: [
624
- 'staging-1a',
625
- 'northamerica-central-1',
626
- 'europe-central-1a',
627
- 'northamerica-central-1a'
753
+ 'rapid',
754
+ 'stable',
755
+ 'extended'
628
756
  ]
629
757
  },
758
+ features: {
759
+ type: 'object',
760
+ properties: {
761
+ gpu_sharing_strategy: {
762
+ type: 'string',
763
+ description: 'GPU sharing strategy.',
764
+ default: 'none',
765
+ example: 'none',
766
+ enum: [
767
+ 'none',
768
+ 'mps',
769
+ 'time_slicing'
770
+ ]
771
+ },
772
+ gpu_max_shared_clients_per_gpu: {
773
+ type: 'integer',
774
+ minimum: 2,
775
+ maximum: 48,
776
+ description: 'Maximum number of pods that may share a single GPU.',
777
+ default: 4,
778
+ example: 10
779
+ },
780
+ cilium_socket_lb_host_namespace_only: {
781
+ type: 'boolean',
782
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
783
+ example: false
784
+ }
785
+ },
786
+ required: [
787
+ 'gpu_sharing_strategy',
788
+ 'gpu_max_shared_clients_per_gpu',
789
+ 'cilium_socket_lb_host_namespace_only'
790
+ ],
791
+ additionalProperties: false,
792
+ description: 'Cluster feature toggles.',
793
+ default: {
794
+ gpu_sharing_strategy: 'none',
795
+ gpu_max_shared_clients_per_gpu: 4,
796
+ cilium_socket_lb_host_namespace_only: false
797
+ }
798
+ },
799
+ region: {
800
+ type: 'string',
801
+ description: 'Cloudfleet control plane region. This field can not be updated after creation.',
802
+ example: 'europe-central-1a'
803
+ },
804
+ networking: {
805
+ type: 'object',
806
+ properties: {
807
+ pod_cidr: {
808
+ type: 'string',
809
+ description: 'CIDR block for pod IPs.',
810
+ default: '10.244.0.0/16'
811
+ },
812
+ service_cidr: {
813
+ type: 'string',
814
+ description: 'CIDR block for service IPs.',
815
+ default: '10.96.0.0/12'
816
+ },
817
+ dual_stack: {
818
+ type: 'boolean',
819
+ description: 'Enable IPv4+IPv6 dual-stack networking.'
820
+ },
821
+ pod_cidr_v6: {
822
+ type: 'string',
823
+ description: 'IPv6 pod CIDR. Requires dual_stack.',
824
+ default: '2001:db8:1:2::/48'
825
+ },
826
+ service_cidr_v6: {
827
+ type: 'string',
828
+ description: 'IPv6 service CIDR. Requires dual_stack.',
829
+ default: '2001:db8:1:1::/112'
830
+ }
831
+ },
832
+ required: [
833
+ 'pod_cidr',
834
+ 'service_cidr',
835
+ 'dual_stack',
836
+ 'pod_cidr_v6',
837
+ 'service_cidr_v6'
838
+ ],
839
+ additionalProperties: false,
840
+ description: 'Cluster networking configuration. Immutable after creation.',
841
+ default: {
842
+ pod_cidr: '10.244.0.0/16',
843
+ service_cidr: '10.96.0.0/12',
844
+ dual_stack: false,
845
+ pod_cidr_v6: '2001:db8:1:2::/48',
846
+ service_cidr_v6: '2001:db8:1:1::/112'
847
+ }
848
+ },
630
849
  id: {
631
850
  type: 'string',
632
851
  format: 'uuid',
@@ -635,16 +854,13 @@ export const ClusterSchema = {
635
854
  },
636
855
  status: {
637
856
  type: 'string',
638
- description: 'Status of the cluster. When creating a new cluster, set to `active`. When deleting a clusters, set to `deleted`.',
639
- example: 'active',
857
+ description: 'Status of the cluster.',
858
+ example: 'deployed',
640
859
  enum: [
641
- 'active',
642
- 'disabled',
643
- 'deleted',
644
860
  'creating',
645
861
  'deployed',
646
- 'failed',
647
- 'updating'
862
+ 'updating',
863
+ 'disabled'
648
864
  ]
649
865
  },
650
866
  endpoint: {
@@ -652,8 +868,8 @@ export const ClusterSchema = {
652
868
  {
653
869
  type: 'string',
654
870
  format: 'uri',
655
- description: 'URL signed by the private CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster. (Deprecated, use endpoint_public instead)',
656
- example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.cloudfleet.dev:6443'
871
+ 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.',
872
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
657
873
  },
658
874
  {
659
875
  type: 'string',
@@ -668,7 +884,7 @@ export const ClusterSchema = {
668
884
  {
669
885
  type: 'string',
670
886
  format: 'uri',
671
- description: 'URL signed by a public CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
887
+ description: 'Deprecated alias of `endpoint`; retained for backward compatibility.',
672
888
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
673
889
  },
674
890
  {
@@ -703,21 +919,22 @@ export const ClusterSchema = {
703
919
  type: 'boolean',
704
920
  description: 'Indicates if the cluster is ready to be used.',
705
921
  example: true
706
- },
707
- version_channel: {
708
- type: 'string',
709
- pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
710
- description: 'Version of the kubernetes cluster.',
711
- example: '1.x.x-cfke.x'
712
922
  }
713
923
  },
714
924
  required: [
715
925
  'name',
716
926
  'tier',
927
+ 'version_channel',
928
+ 'release_channel',
929
+ 'features',
930
+ 'region',
931
+ 'networking',
717
932
  'id',
718
- 'status'
933
+ 'status',
934
+ 'ready'
719
935
  ],
720
- additionalProperties: false
936
+ additionalProperties: false,
937
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
721
938
  };
722
939
  export const ClusterUpdateInputSchema = {
723
940
  type: 'object',
@@ -733,23 +950,74 @@ export const ClusterUpdateInputSchema = {
733
950
  tier: {
734
951
  type: 'string',
735
952
  description: 'Tier of the cluster.',
953
+ default: 'basic',
736
954
  example: 'pro',
737
955
  enum: [
738
956
  'basic',
739
- 'pro'
957
+ 'pro',
958
+ 'enterprise'
740
959
  ]
741
960
  },
742
961
  version_channel: {
743
962
  type: 'string',
744
963
  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-]+)*))?$',
745
964
  description: 'Version of the kubernetes cluster.',
965
+ default: '1.x.x-cfke.x',
746
966
  example: '1.x.x-cfke.x'
967
+ },
968
+ release_channel: {
969
+ type: 'string',
970
+ description: 'Release channel for the cluster\'s control plane.',
971
+ default: 'rapid',
972
+ example: 'rapid',
973
+ enum: [
974
+ 'rapid',
975
+ 'stable',
976
+ 'extended'
977
+ ]
978
+ },
979
+ features: {
980
+ type: 'object',
981
+ properties: {
982
+ gpu_sharing_strategy: {
983
+ type: 'string',
984
+ description: 'GPU sharing strategy.',
985
+ default: 'none',
986
+ example: 'none',
987
+ enum: [
988
+ 'none',
989
+ 'mps',
990
+ 'time_slicing'
991
+ ]
992
+ },
993
+ gpu_max_shared_clients_per_gpu: {
994
+ type: 'integer',
995
+ minimum: 2,
996
+ maximum: 48,
997
+ description: 'Maximum number of pods that may share a single GPU.',
998
+ default: 4,
999
+ example: 10
1000
+ },
1001
+ cilium_socket_lb_host_namespace_only: {
1002
+ type: 'boolean',
1003
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
1004
+ example: false
1005
+ }
1006
+ },
1007
+ additionalProperties: false,
1008
+ description: 'Cluster feature toggles.',
1009
+ default: {
1010
+ gpu_sharing_strategy: 'none',
1011
+ gpu_max_shared_clients_per_gpu: 4,
1012
+ cilium_socket_lb_host_namespace_only: false
1013
+ }
747
1014
  }
748
1015
  },
749
1016
  required: [
750
- 'tier'
1017
+ 'name'
751
1018
  ],
752
- additionalProperties: false
1019
+ additionalProperties: false,
1020
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
753
1021
  };
754
1022
  export const FleetCreateInputSchema = {
755
1023
  type: 'object',
@@ -795,8 +1063,8 @@ export const FleetCreateInputSchema = {
795
1063
  type: 'string',
796
1064
  maxLength: 64,
797
1065
  minLength: 64,
798
- pattern: '^[A-Za-z0-9]+$',
799
- description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
1066
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
1067
+ 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.'
800
1068
  }
801
1069
  },
802
1070
  required: [
@@ -1021,7 +1289,8 @@ export const FleetCreateInputSchema = {
1021
1289
  'z3'
1022
1290
  ]
1023
1291
  },
1024
- description: 'Allowed values for `cfke.io/instance-family`.'
1292
+ description: 'Allowed values for `cfke.io/instance-family`.',
1293
+ default: []
1025
1294
  },
1026
1295
  'topology.kubernetes.io/region': {
1027
1296
  type: 'array',
@@ -1094,15 +1363,27 @@ export const FleetCreateInputSchema = {
1094
1363
  'us-west4'
1095
1364
  ]
1096
1365
  },
1097
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1366
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1367
+ default: []
1098
1368
  }
1099
1369
  },
1100
1370
  additionalProperties: false,
1101
- description: 'Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.'
1371
+ 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.',
1372
+ default: {
1373
+ 'karpenter.sh/capacity-type': [
1374
+ 'on-demand',
1375
+ 'spot'
1376
+ ],
1377
+ 'kubernetes.io/arch': [
1378
+ 'amd64'
1379
+ ],
1380
+ 'cfke.io/instance-family': [],
1381
+ 'topology.kubernetes.io/region': []
1382
+ }
1102
1383
  },
1103
1384
  scalingProfile: {
1104
1385
  type: 'string',
1105
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1386
+ 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`).',
1106
1387
  default: 'conservative',
1107
1388
  example: 'conservative',
1108
1389
  enum: [
@@ -1122,7 +1403,8 @@ export const FleetCreateInputSchema = {
1122
1403
  required: [
1123
1404
  'id'
1124
1405
  ],
1125
- additionalProperties: false
1406
+ additionalProperties: false,
1407
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1126
1408
  };
1127
1409
  export const FleetSchema = {
1128
1410
  type: 'object',
@@ -1392,7 +1674,8 @@ export const FleetSchema = {
1392
1674
  'z3'
1393
1675
  ]
1394
1676
  },
1395
- description: 'Allowed values for `cfke.io/instance-family`.'
1677
+ description: 'Allowed values for `cfke.io/instance-family`.',
1678
+ default: []
1396
1679
  },
1397
1680
  'topology.kubernetes.io/region': {
1398
1681
  type: 'array',
@@ -1465,15 +1748,31 @@ export const FleetSchema = {
1465
1748
  'us-west4'
1466
1749
  ]
1467
1750
  },
1468
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1751
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1752
+ default: []
1469
1753
  }
1470
1754
  },
1755
+ required: [
1756
+ 'karpenter.sh/capacity-type',
1757
+ 'kubernetes.io/arch'
1758
+ ],
1471
1759
  additionalProperties: false,
1472
- description: 'Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.'
1760
+ 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.',
1761
+ default: {
1762
+ 'karpenter.sh/capacity-type': [
1763
+ 'on-demand',
1764
+ 'spot'
1765
+ ],
1766
+ 'kubernetes.io/arch': [
1767
+ 'amd64'
1768
+ ],
1769
+ 'cfke.io/instance-family': [],
1770
+ 'topology.kubernetes.io/region': []
1771
+ }
1473
1772
  },
1474
1773
  scalingProfile: {
1475
1774
  type: 'string',
1476
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1775
+ 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`).',
1477
1776
  default: 'conservative',
1478
1777
  example: 'conservative',
1479
1778
  enum: [
@@ -1488,13 +1787,38 @@ export const FleetSchema = {
1488
1787
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1489
1788
  description: 'Unique identifier of the kubernetes fleet.',
1490
1789
  example: 'new-clouds-fleet'
1790
+ },
1791
+ ready: {
1792
+ type: 'boolean',
1793
+ description: 'Indicates whether the fleet configuration is healthy.',
1794
+ example: true
1795
+ },
1796
+ status_message: {
1797
+ type: 'string',
1798
+ description: 'Human-readable reason the fleet is not ready. Present only when `ready` is false.',
1799
+ example: 'Invalid provider permissions.'
1800
+ },
1801
+ created_at: {
1802
+ type: 'string',
1803
+ description: 'Creation date and time of the fleet.',
1804
+ example: '2024-09-12T09:11:27Z'
1805
+ },
1806
+ updated_at: {
1807
+ type: 'string',
1808
+ description: 'Date and time the fleet was last updated.',
1809
+ example: '2024-09-12T09:11:27Z'
1491
1810
  }
1492
1811
  },
1493
1812
  required: [
1813
+ 'constraints',
1494
1814
  'scalingProfile',
1495
- 'id'
1815
+ 'id',
1816
+ 'ready',
1817
+ 'created_at',
1818
+ 'updated_at'
1496
1819
  ],
1497
- additionalProperties: false
1820
+ additionalProperties: false,
1821
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1498
1822
  };
1499
1823
  export const FleetUpdateInputSchema = {
1500
1824
  type: 'object',
@@ -1540,8 +1864,8 @@ export const FleetUpdateInputSchema = {
1540
1864
  type: 'string',
1541
1865
  maxLength: 64,
1542
1866
  minLength: 64,
1543
- pattern: '^[A-Za-z0-9]+$',
1544
- description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
1867
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
1868
+ 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.'
1545
1869
  }
1546
1870
  },
1547
1871
  required: [
@@ -1580,7 +1904,11 @@ export const FleetUpdateInputSchema = {
1580
1904
  ]
1581
1905
  },
1582
1906
  minItems: 1,
1583
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1907
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1908
+ default: [
1909
+ 'on-demand',
1910
+ 'spot'
1911
+ ]
1584
1912
  },
1585
1913
  'kubernetes.io/arch': {
1586
1914
  type: 'array',
@@ -1592,7 +1920,10 @@ export const FleetUpdateInputSchema = {
1592
1920
  ]
1593
1921
  },
1594
1922
  minItems: 1,
1595
- description: 'Allowed values for `kubernetes.io/arch`.'
1923
+ description: 'Allowed values for `kubernetes.io/arch`.',
1924
+ default: [
1925
+ 'amd64'
1926
+ ]
1596
1927
  },
1597
1928
  'cfke.io/instance-family': {
1598
1929
  type: 'array',
@@ -1759,7 +2090,8 @@ export const FleetUpdateInputSchema = {
1759
2090
  'z3'
1760
2091
  ]
1761
2092
  },
1762
- description: 'Allowed values for `cfke.io/instance-family`.'
2093
+ description: 'Allowed values for `cfke.io/instance-family`.',
2094
+ default: []
1763
2095
  },
1764
2096
  'topology.kubernetes.io/region': {
1765
2097
  type: 'array',
@@ -1832,15 +2164,28 @@ export const FleetUpdateInputSchema = {
1832
2164
  'us-west4'
1833
2165
  ]
1834
2166
  },
1835
- description: 'Allowed values for `topology.kubernetes.io/region`.'
2167
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
2168
+ default: []
1836
2169
  }
1837
2170
  },
1838
2171
  additionalProperties: false,
1839
- description: 'Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.'
2172
+ 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.',
2173
+ default: {
2174
+ 'karpenter.sh/capacity-type': [
2175
+ 'on-demand',
2176
+ 'spot'
2177
+ ],
2178
+ 'kubernetes.io/arch': [
2179
+ 'amd64'
2180
+ ],
2181
+ 'cfke.io/instance-family': [],
2182
+ 'topology.kubernetes.io/region': []
2183
+ }
1840
2184
  },
1841
2185
  scalingProfile: {
1842
2186
  type: 'string',
1843
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
2187
+ 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`).',
2188
+ default: 'conservative',
1844
2189
  example: 'conservative',
1845
2190
  enum: [
1846
2191
  'aggressive',
@@ -1848,10 +2193,8 @@ export const FleetUpdateInputSchema = {
1848
2193
  ]
1849
2194
  }
1850
2195
  },
1851
- required: [
1852
- 'scalingProfile'
1853
- ],
1854
- additionalProperties: false
2196
+ additionalProperties: false,
2197
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1855
2198
  };
1856
2199
  export const InviteCreateInputSchema = {
1857
2200
  type: 'object',
@@ -1925,6 +2268,170 @@ export const InviteSchema = {
1925
2268
  ],
1926
2269
  additionalProperties: false
1927
2270
  };
2271
+ export const InvoicePaymentAttemptSchema = {
2272
+ type: 'object',
2273
+ properties: {
2274
+ invoice_id: {
2275
+ type: 'string',
2276
+ description: 'Identifier of the invoice.',
2277
+ example: 'in_1234567890xCrwxghOTj1234'
2278
+ },
2279
+ number: {
2280
+ type: 'string',
2281
+ nullable: true,
2282
+ description: 'Invoice number. Null if the invoice has no number.',
2283
+ example: 'CF-0042'
2284
+ },
2285
+ amount: {
2286
+ type: 'number',
2287
+ format: 'float',
2288
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2289
+ example: 4200
2290
+ },
2291
+ currency: {
2292
+ type: 'string',
2293
+ description: 'Currency of the invoice.',
2294
+ example: 'eur'
2295
+ },
2296
+ status: {
2297
+ type: 'string',
2298
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2299
+ example: 'paid',
2300
+ enum: [
2301
+ 'paid',
2302
+ 'processing',
2303
+ 'requires_action',
2304
+ 'failed'
2305
+ ]
2306
+ },
2307
+ client_secret: {
2308
+ type: 'string',
2309
+ nullable: true,
2310
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2311
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
2312
+ },
2313
+ failure_code: {
2314
+ type: 'string',
2315
+ nullable: true,
2316
+ description: 'Decline code. Set only when `status` is `failed`.',
2317
+ example: 'insufficient_funds'
2318
+ },
2319
+ failure_message: {
2320
+ type: 'string',
2321
+ nullable: true,
2322
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2323
+ example: 'Your card has insufficient funds.'
2324
+ }
2325
+ },
2326
+ required: [
2327
+ 'invoice_id',
2328
+ 'number',
2329
+ 'amount',
2330
+ 'currency',
2331
+ 'status',
2332
+ 'client_secret',
2333
+ 'failure_code',
2334
+ 'failure_message'
2335
+ ],
2336
+ additionalProperties: false
2337
+ };
2338
+ export const InvoicePaymentResultSchema = {
2339
+ type: 'object',
2340
+ properties: {
2341
+ code: {
2342
+ type: 'string',
2343
+ 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).',
2344
+ example: 'partially_paid',
2345
+ enum: [
2346
+ 'paid',
2347
+ 'processing',
2348
+ 'action_required',
2349
+ 'partially_paid',
2350
+ 'failed',
2351
+ 'nothing_due',
2352
+ 'bank_transfer_due'
2353
+ ]
2354
+ },
2355
+ message: {
2356
+ type: 'string',
2357
+ description: 'Summary of the outcome, suitable for display.',
2358
+ example: '1 of 2 open invoices was paid. Invoice CF-0043 was declined: Your card has insufficient funds.'
2359
+ },
2360
+ results: {
2361
+ type: 'array',
2362
+ items: {
2363
+ type: 'object',
2364
+ properties: {
2365
+ invoice_id: {
2366
+ type: 'string',
2367
+ description: 'Identifier of the invoice.',
2368
+ example: 'in_1234567890xCrwxghOTj1234'
2369
+ },
2370
+ number: {
2371
+ type: 'string',
2372
+ description: 'Invoice number. Null if the invoice has no number.',
2373
+ example: 'CF-0042'
2374
+ },
2375
+ amount: {
2376
+ type: 'number',
2377
+ format: 'float',
2378
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2379
+ example: 4200
2380
+ },
2381
+ currency: {
2382
+ type: 'string',
2383
+ description: 'Currency of the invoice.',
2384
+ example: 'eur'
2385
+ },
2386
+ status: {
2387
+ type: 'string',
2388
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2389
+ example: 'paid',
2390
+ enum: [
2391
+ 'paid',
2392
+ 'processing',
2393
+ 'requires_action',
2394
+ 'failed'
2395
+ ]
2396
+ },
2397
+ client_secret: {
2398
+ type: 'string',
2399
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2400
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
2401
+ },
2402
+ failure_code: {
2403
+ type: 'string',
2404
+ description: 'Decline code. Set only when `status` is `failed`.',
2405
+ example: 'insufficient_funds'
2406
+ },
2407
+ failure_message: {
2408
+ type: 'string',
2409
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2410
+ example: 'Your card has insufficient funds.'
2411
+ }
2412
+ },
2413
+ required: [
2414
+ 'invoice_id',
2415
+ 'number',
2416
+ 'amount',
2417
+ 'currency',
2418
+ 'status',
2419
+ 'client_secret',
2420
+ 'failure_code',
2421
+ 'failure_message'
2422
+ ],
2423
+ additionalProperties: false
2424
+ },
2425
+ description: 'One entry per invoice charged, oldest first.'
2426
+ }
2427
+ },
2428
+ required: [
2429
+ 'code',
2430
+ 'message',
2431
+ 'results'
2432
+ ],
2433
+ additionalProperties: false
2434
+ };
1928
2435
  export const InvoiceSchema = {
1929
2436
  type: 'object',
1930
2437
  properties: {
@@ -2259,6 +2766,17 @@ export const OrganizationSchema = {
2259
2766
  description: 'Available number of Pro clusters that can be created.',
2260
2767
  example: 999
2261
2768
  },
2769
+ enterprise_clusters_max: {
2770
+ type: 'integer',
2771
+ minimum: 0,
2772
+ description: 'Maximum number of Enterprise clusters that can be created.',
2773
+ example: 999
2774
+ },
2775
+ enterprise_clusters_available: {
2776
+ type: 'integer',
2777
+ description: 'Available number of Enterprise clusters that can be created.',
2778
+ example: 999
2779
+ },
2262
2780
  fleets_max: {
2263
2781
  type: 'integer',
2264
2782
  minimum: 0,
@@ -2278,7 +2796,7 @@ export const OrganizationSchema = {
2278
2796
  type: 'array',
2279
2797
  items: {
2280
2798
  type: 'string',
2281
- example: 'northamerica-central-1'
2799
+ example: 'northamerica-central-1a'
2282
2800
  },
2283
2801
  minItems: 1,
2284
2802
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2320,6 +2838,8 @@ export const OrganizationSchema = {
2320
2838
  'basic_clusters_available',
2321
2839
  'pro_clusters_max',
2322
2840
  'pro_clusters_available',
2841
+ 'enterprise_clusters_max',
2842
+ 'enterprise_clusters_available',
2323
2843
  'fleets_max',
2324
2844
  'cluster_tiers',
2325
2845
  'regions',
@@ -2466,6 +2986,17 @@ export const PlatformQuotaSchema = {
2466
2986
  description: 'Available number of Pro clusters that can be created.',
2467
2987
  example: 999
2468
2988
  },
2989
+ enterprise_clusters_max: {
2990
+ type: 'integer',
2991
+ minimum: 0,
2992
+ description: 'Maximum number of Enterprise clusters that can be created.',
2993
+ example: 999
2994
+ },
2995
+ enterprise_clusters_available: {
2996
+ type: 'integer',
2997
+ description: 'Available number of Enterprise clusters that can be created.',
2998
+ example: 999
2999
+ },
2469
3000
  fleets_max: {
2470
3001
  type: 'integer',
2471
3002
  minimum: 0,
@@ -2485,7 +3016,7 @@ export const PlatformQuotaSchema = {
2485
3016
  type: 'array',
2486
3017
  items: {
2487
3018
  type: 'string',
2488
- example: 'northamerica-central-1'
3019
+ example: 'northamerica-central-1a'
2489
3020
  },
2490
3021
  minItems: 1,
2491
3022
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2527,6 +3058,8 @@ export const PlatformQuotaSchema = {
2527
3058
  'basic_clusters_available',
2528
3059
  'pro_clusters_max',
2529
3060
  'pro_clusters_available',
3061
+ 'enterprise_clusters_max',
3062
+ 'enterprise_clusters_available',
2530
3063
  'fleets_max',
2531
3064
  'cluster_tiers',
2532
3065
  'regions',
@@ -2869,172 +3402,6 @@ export const TicketCreateInputSchema = {
2869
3402
  ],
2870
3403
  additionalProperties: false
2871
3404
  };
2872
- export const TicketListResponseSchema = {
2873
- type: 'object',
2874
- properties: {
2875
- items: {
2876
- type: 'array',
2877
- items: {
2878
- type: 'object',
2879
- properties: {
2880
- id: {
2881
- type: 'string',
2882
- description: 'Unique identifier of the ticket (Mongo ObjectId).',
2883
- example: '60c72b2f9f1b2c001f8e4d3a'
2884
- },
2885
- status: {
2886
- type: 'string',
2887
- description: 'Current state of the ticket.',
2888
- example: 'waiting_on_us',
2889
- enum: [
2890
- 'waiting_on_us',
2891
- 'waiting_on_user',
2892
- 'closed'
2893
- ]
2894
- },
2895
- category: {
2896
- type: 'string',
2897
- description: 'Ticket category.',
2898
- example: 'technical',
2899
- enum: [
2900
- 'billing',
2901
- 'technical',
2902
- 'general'
2903
- ]
2904
- },
2905
- summary: {
2906
- type: 'string',
2907
- description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2908
- example: 'My cluster cannot reach the registry. Logs attached.'
2909
- },
2910
- closed_at: {
2911
- type: 'string',
2912
- format: 'date-time',
2913
- nullable: true,
2914
- description: 'Closure timestamp. Null while the ticket is open.',
2915
- example: '2026-05-18T16:08:14.338Z'
2916
- },
2917
- date_created: {
2918
- type: 'string',
2919
- format: 'date-time',
2920
- description: 'Creation date of the ticket. ISO 8601 UTC.',
2921
- example: '2026-05-11T16:08:14.338Z'
2922
- },
2923
- date_updated: {
2924
- type: 'string',
2925
- format: 'date-time',
2926
- description: 'Last update date of the ticket. ISO 8601 UTC.',
2927
- example: '2026-05-11T16:08:14.338Z'
2928
- },
2929
- messages: {
2930
- type: 'array',
2931
- items: {
2932
- type: 'object',
2933
- properties: {
2934
- id: {
2935
- type: 'string',
2936
- description: 'Unique identifier of the message (Mongo ObjectId).',
2937
- example: '60c72b2f9f1b2c001f8e4d3b'
2938
- },
2939
- type: {
2940
- type: 'string',
2941
- description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2942
- example: 'customer_reply',
2943
- enum: [
2944
- 'customer_reply',
2945
- 'agent_reply'
2946
- ]
2947
- },
2948
- body: {
2949
- type: 'string',
2950
- description: 'Message body in markdown.',
2951
- example: 'Thanks — that resolved it on my side.'
2952
- },
2953
- author_first_name: {
2954
- type: 'string',
2955
- nullable: true,
2956
- description: 'First name of the author. Null when not provided.',
2957
- example: 'Jane'
2958
- },
2959
- author_last_name: {
2960
- type: 'string',
2961
- nullable: true,
2962
- description: 'Last name of the author. Null when not provided.',
2963
- example: 'Doe'
2964
- },
2965
- attachments: {
2966
- type: 'array',
2967
- items: {
2968
- type: 'object',
2969
- properties: {
2970
- id: {
2971
- type: 'string',
2972
- description: 'Unique identifier of the attachment (Mongo ObjectId).',
2973
- example: '60c72b2f9f1b2c001f8e4d3c'
2974
- },
2975
- filename: {
2976
- type: 'string',
2977
- description: 'Original filename as uploaded.',
2978
- example: 'debug.log'
2979
- },
2980
- content_type: {
2981
- type: 'string',
2982
- description: 'MIME content type of the attachment.',
2983
- example: 'text/plain'
2984
- },
2985
- size: {
2986
- type: 'integer',
2987
- description: 'Size of the attachment in bytes.',
2988
- example: 12345
2989
- }
2990
- },
2991
- required: [
2992
- 'id',
2993
- 'filename',
2994
- 'content_type',
2995
- 'size'
2996
- ],
2997
- additionalProperties: false
2998
- },
2999
- description: 'Attachments associated with this message.',
3000
- example: []
3001
- },
3002
- date_created: {
3003
- type: 'string',
3004
- format: 'date-time',
3005
- description: 'Creation date of the message. ISO 8601 UTC.',
3006
- example: '2026-05-11T16:08:14.338Z'
3007
- }
3008
- },
3009
- required: [
3010
- 'id',
3011
- 'type',
3012
- 'body',
3013
- 'date_created'
3014
- ],
3015
- additionalProperties: false
3016
- },
3017
- description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
3018
- }
3019
- },
3020
- required: [
3021
- 'id',
3022
- 'status',
3023
- 'category',
3024
- 'summary',
3025
- 'date_created',
3026
- 'date_updated'
3027
- ],
3028
- additionalProperties: false
3029
- },
3030
- description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
3031
- }
3032
- },
3033
- required: [
3034
- 'items'
3035
- ],
3036
- additionalProperties: false
3037
- };
3038
3405
  export const TicketMessageInputSchema = {
3039
3406
  type: 'object',
3040
3407
  properties: {
@@ -3076,11 +3443,13 @@ export const TicketMessageSchema = {
3076
3443
  },
3077
3444
  author_first_name: {
3078
3445
  type: 'string',
3446
+ nullable: true,
3079
3447
  description: 'First name of the author. Null when not provided.',
3080
3448
  example: 'Jane'
3081
3449
  },
3082
3450
  author_last_name: {
3083
3451
  type: 'string',
3452
+ nullable: true,
3084
3453
  description: 'Last name of the author. Null when not provided.',
3085
3454
  example: 'Doe'
3086
3455
  },
@@ -3172,6 +3541,7 @@ export const TicketSchema = {
3172
3541
  closed_at: {
3173
3542
  type: 'string',
3174
3543
  format: 'date-time',
3544
+ nullable: true,
3175
3545
  description: 'Closure timestamp. Null while the ticket is open.',
3176
3546
  example: '2026-05-18T16:08:14.338Z'
3177
3547
  },
@@ -3396,12 +3766,21 @@ export const UsageFacetsSchema = {
3396
3766
  product: {
3397
3767
  type: 'array',
3398
3768
  items: {
3399
- type: 'string'
3769
+ type: 'string',
3770
+ enum: [
3771
+ 'cfke_controlplane_basic',
3772
+ 'cfke_controlplane_pro',
3773
+ 'cfke_controlplane_enterprise',
3774
+ 'cfke_connected_nodes_basic',
3775
+ 'cfke_connected_nodes_pro',
3776
+ 'cfke_connected_nodes_enterprise',
3777
+ 'cfcr_storage'
3778
+ ]
3400
3779
  },
3401
3780
  description: 'List of unique products',
3402
3781
  example: [
3403
- 'cfke_controlplane',
3404
- 'cfke_connected_nodes'
3782
+ 'cfke_controlplane_pro',
3783
+ 'cfke_connected_nodes_pro'
3405
3784
  ]
3406
3785
  }
3407
3786
  },
@@ -3428,7 +3807,16 @@ export const UsageResponseSchema = {
3428
3807
  product: {
3429
3808
  type: 'string',
3430
3809
  description: 'The product the usage is associated with',
3431
- example: 'cfke_controlplane'
3810
+ example: 'cfke_controlplane_pro',
3811
+ enum: [
3812
+ 'cfke_controlplane_basic',
3813
+ 'cfke_controlplane_pro',
3814
+ 'cfke_controlplane_enterprise',
3815
+ 'cfke_connected_nodes_basic',
3816
+ 'cfke_connected_nodes_pro',
3817
+ 'cfke_connected_nodes_enterprise',
3818
+ 'cfcr_storage'
3819
+ ]
3432
3820
  },
3433
3821
  value: {
3434
3822
  type: 'number',
@@ -3476,12 +3864,21 @@ export const UsageResponseSchema = {
3476
3864
  product: {
3477
3865
  type: 'array',
3478
3866
  items: {
3479
- type: 'string'
3867
+ type: 'string',
3868
+ enum: [
3869
+ 'cfke_controlplane_basic',
3870
+ 'cfke_controlplane_pro',
3871
+ 'cfke_controlplane_enterprise',
3872
+ 'cfke_connected_nodes_basic',
3873
+ 'cfke_connected_nodes_pro',
3874
+ 'cfke_connected_nodes_enterprise',
3875
+ 'cfcr_storage'
3876
+ ]
3480
3877
  },
3481
3878
  description: 'List of unique products',
3482
3879
  example: [
3483
- 'cfke_controlplane',
3484
- 'cfke_connected_nodes'
3880
+ 'cfke_controlplane_pro',
3881
+ 'cfke_connected_nodes_pro'
3485
3882
  ]
3486
3883
  }
3487
3884
  },
@@ -3511,7 +3908,16 @@ export const UsageSchema = {
3511
3908
  product: {
3512
3909
  type: 'string',
3513
3910
  description: 'The product the usage is associated with',
3514
- example: 'cfke_controlplane'
3911
+ example: 'cfke_controlplane_pro',
3912
+ enum: [
3913
+ 'cfke_controlplane_basic',
3914
+ 'cfke_controlplane_pro',
3915
+ 'cfke_controlplane_enterprise',
3916
+ 'cfke_connected_nodes_basic',
3917
+ 'cfke_connected_nodes_pro',
3918
+ 'cfke_connected_nodes_enterprise',
3919
+ 'cfcr_storage'
3920
+ ]
3515
3921
  },
3516
3922
  value: {
3517
3923
  type: 'number',