@cloudfleet/sdk 0.12.3 → 1.0.1

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: {
@@ -440,31 +489,118 @@ export const ClusterCreateInputSchema = {
440
489
  tier: {
441
490
  type: 'string',
442
491
  description: 'Tier of the cluster.',
492
+ default: 'basic',
443
493
  example: 'pro',
444
494
  enum: [
445
495
  'basic',
446
- 'pro'
496
+ 'pro',
497
+ 'enterprise'
447
498
  ]
448
499
  },
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
500
  version_channel: {
455
501
  type: 'string',
456
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-]+)*))?$',
457
503
  description: 'Version of the kubernetes cluster.',
458
504
  default: '1.x.x-cfke.x',
459
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',
512
+ enum: [
513
+ 'rapid',
514
+ 'stable',
515
+ 'extended'
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
+ }
460
596
  }
461
597
  },
462
598
  required: [
463
599
  'name',
464
- 'tier',
465
600
  'region'
466
601
  ],
467
- 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.'
468
604
  };
469
605
  export const ClusterJoinInformationSchema = {
470
606
  type: 'object',
@@ -587,17 +723,123 @@ export const ClusterSchema = {
587
723
  tier: {
588
724
  type: 'string',
589
725
  description: 'Tier of the cluster.',
726
+ default: 'basic',
590
727
  example: 'pro',
591
728
  enum: [
592
729
  'basic',
593
- 'pro'
730
+ 'pro',
731
+ 'enterprise'
594
732
  ]
595
733
  },
734
+ version_channel: {
735
+ type: 'string',
736
+ 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-]+)*))?$',
737
+ description: 'Version of the kubernetes cluster.',
738
+ default: '1.x.x-cfke.x',
739
+ example: '1.x.x-cfke.x'
740
+ },
741
+ release_channel: {
742
+ type: 'string',
743
+ description: 'Release channel for the cluster\'s control plane.',
744
+ default: 'rapid',
745
+ example: 'rapid',
746
+ enum: [
747
+ 'rapid',
748
+ 'stable',
749
+ 'extended'
750
+ ]
751
+ },
752
+ features: {
753
+ type: 'object',
754
+ properties: {
755
+ gpu_sharing_strategy: {
756
+ type: 'string',
757
+ description: 'GPU sharing strategy.',
758
+ default: 'none',
759
+ example: 'none',
760
+ enum: [
761
+ 'none',
762
+ 'mps',
763
+ 'time_slicing'
764
+ ]
765
+ },
766
+ gpu_max_shared_clients_per_gpu: {
767
+ type: 'integer',
768
+ minimum: 2,
769
+ maximum: 48,
770
+ description: 'Maximum number of pods that may share a single GPU.',
771
+ default: 4,
772
+ example: 10
773
+ },
774
+ cilium_socket_lb_host_namespace_only: {
775
+ type: 'boolean',
776
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
777
+ example: false
778
+ }
779
+ },
780
+ required: [
781
+ 'gpu_sharing_strategy',
782
+ 'gpu_max_shared_clients_per_gpu',
783
+ 'cilium_socket_lb_host_namespace_only'
784
+ ],
785
+ additionalProperties: false,
786
+ description: 'Cluster feature toggles.',
787
+ default: {
788
+ gpu_sharing_strategy: 'none',
789
+ gpu_max_shared_clients_per_gpu: 4,
790
+ cilium_socket_lb_host_namespace_only: false
791
+ }
792
+ },
596
793
  region: {
597
794
  type: 'string',
598
795
  description: 'Cloudfleet control plane region. This field can not be updated after creation.',
599
796
  example: 'europe-central-1a'
600
797
  },
798
+ networking: {
799
+ type: 'object',
800
+ properties: {
801
+ pod_cidr: {
802
+ type: 'string',
803
+ description: 'CIDR block for pod IPs.',
804
+ default: '10.244.0.0/16'
805
+ },
806
+ service_cidr: {
807
+ type: 'string',
808
+ description: 'CIDR block for service IPs.',
809
+ default: '10.96.0.0/12'
810
+ },
811
+ dual_stack: {
812
+ type: 'boolean',
813
+ description: 'Enable IPv4+IPv6 dual-stack networking.'
814
+ },
815
+ pod_cidr_v6: {
816
+ type: 'string',
817
+ description: 'IPv6 pod CIDR. Requires dual_stack.',
818
+ default: '2001:db8:1:2::/48'
819
+ },
820
+ service_cidr_v6: {
821
+ type: 'string',
822
+ description: 'IPv6 service CIDR. Requires dual_stack.',
823
+ default: '2001:db8:1:1::/112'
824
+ }
825
+ },
826
+ required: [
827
+ 'pod_cidr',
828
+ 'service_cidr',
829
+ 'dual_stack',
830
+ 'pod_cidr_v6',
831
+ 'service_cidr_v6'
832
+ ],
833
+ additionalProperties: false,
834
+ description: 'Cluster networking configuration. Immutable after creation.',
835
+ default: {
836
+ pod_cidr: '10.244.0.0/16',
837
+ service_cidr: '10.96.0.0/12',
838
+ dual_stack: false,
839
+ pod_cidr_v6: '2001:db8:1:2::/48',
840
+ service_cidr_v6: '2001:db8:1:1::/112'
841
+ }
842
+ },
601
843
  id: {
602
844
  type: 'string',
603
845
  format: 'uuid',
@@ -606,16 +848,13 @@ export const ClusterSchema = {
606
848
  },
607
849
  status: {
608
850
  type: 'string',
609
- description: 'Status of the cluster. When creating a new cluster, set to `active`. When deleting a clusters, set to `deleted`.',
610
- example: 'active',
851
+ description: 'Status of the cluster.',
852
+ example: 'deployed',
611
853
  enum: [
612
- 'active',
613
- 'disabled',
614
- 'deleted',
615
854
  'creating',
616
855
  'deployed',
617
- 'failed',
618
- 'updating'
856
+ 'updating',
857
+ 'disabled'
619
858
  ]
620
859
  },
621
860
  endpoint: {
@@ -623,8 +862,8 @@ export const ClusterSchema = {
623
862
  {
624
863
  type: 'string',
625
864
  format: 'uri',
626
- 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)',
627
- example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.cloudfleet.dev:6443'
865
+ 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.',
866
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
628
867
  },
629
868
  {
630
869
  type: 'string',
@@ -639,7 +878,7 @@ export const ClusterSchema = {
639
878
  {
640
879
  type: 'string',
641
880
  format: 'uri',
642
- 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.',
881
+ description: 'Deprecated alias of `endpoint`; retained for backward compatibility.',
643
882
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
644
883
  },
645
884
  {
@@ -674,22 +913,22 @@ export const ClusterSchema = {
674
913
  type: 'boolean',
675
914
  description: 'Indicates if the cluster is ready to be used.',
676
915
  example: true
677
- },
678
- version_channel: {
679
- type: 'string',
680
- 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-]+)*))?$',
681
- description: 'Version of the kubernetes cluster.',
682
- example: '1.x.x-cfke.x'
683
916
  }
684
917
  },
685
918
  required: [
686
919
  'name',
687
920
  'tier',
921
+ 'version_channel',
922
+ 'release_channel',
923
+ 'features',
688
924
  'region',
925
+ 'networking',
689
926
  'id',
690
- 'status'
927
+ 'status',
928
+ 'ready'
691
929
  ],
692
- additionalProperties: false
930
+ additionalProperties: false,
931
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
693
932
  };
694
933
  export const ClusterUpdateInputSchema = {
695
934
  type: 'object',
@@ -705,23 +944,74 @@ export const ClusterUpdateInputSchema = {
705
944
  tier: {
706
945
  type: 'string',
707
946
  description: 'Tier of the cluster.',
947
+ default: 'basic',
708
948
  example: 'pro',
709
949
  enum: [
710
950
  'basic',
711
- 'pro'
951
+ 'pro',
952
+ 'enterprise'
712
953
  ]
713
954
  },
714
955
  version_channel: {
715
956
  type: 'string',
716
957
  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-]+)*))?$',
717
958
  description: 'Version of the kubernetes cluster.',
959
+ default: '1.x.x-cfke.x',
718
960
  example: '1.x.x-cfke.x'
961
+ },
962
+ release_channel: {
963
+ type: 'string',
964
+ description: 'Release channel for the cluster\'s control plane.',
965
+ default: 'rapid',
966
+ example: 'rapid',
967
+ enum: [
968
+ 'rapid',
969
+ 'stable',
970
+ 'extended'
971
+ ]
972
+ },
973
+ features: {
974
+ type: 'object',
975
+ properties: {
976
+ gpu_sharing_strategy: {
977
+ type: 'string',
978
+ description: 'GPU sharing strategy.',
979
+ default: 'none',
980
+ example: 'none',
981
+ enum: [
982
+ 'none',
983
+ 'mps',
984
+ 'time_slicing'
985
+ ]
986
+ },
987
+ gpu_max_shared_clients_per_gpu: {
988
+ type: 'integer',
989
+ minimum: 2,
990
+ maximum: 48,
991
+ description: 'Maximum number of pods that may share a single GPU.',
992
+ default: 4,
993
+ example: 10
994
+ },
995
+ cilium_socket_lb_host_namespace_only: {
996
+ type: 'boolean',
997
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
998
+ example: false
999
+ }
1000
+ },
1001
+ additionalProperties: false,
1002
+ description: 'Cluster feature toggles.',
1003
+ default: {
1004
+ gpu_sharing_strategy: 'none',
1005
+ gpu_max_shared_clients_per_gpu: 4,
1006
+ cilium_socket_lb_host_namespace_only: false
1007
+ }
719
1008
  }
720
1009
  },
721
1010
  required: [
722
- 'tier'
1011
+ 'name'
723
1012
  ],
724
- additionalProperties: false
1013
+ additionalProperties: false,
1014
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
725
1015
  };
726
1016
  export const FleetCreateInputSchema = {
727
1017
  type: 'object',
@@ -767,8 +1057,8 @@ export const FleetCreateInputSchema = {
767
1057
  type: 'string',
768
1058
  maxLength: 64,
769
1059
  minLength: 64,
770
- pattern: '^[A-Za-z0-9]+$',
771
- description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
1060
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
1061
+ 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.'
772
1062
  }
773
1063
  },
774
1064
  required: [
@@ -993,7 +1283,8 @@ export const FleetCreateInputSchema = {
993
1283
  'z3'
994
1284
  ]
995
1285
  },
996
- description: 'Allowed values for `cfke.io/instance-family`.'
1286
+ description: 'Allowed values for `cfke.io/instance-family`.',
1287
+ default: []
997
1288
  },
998
1289
  'topology.kubernetes.io/region': {
999
1290
  type: 'array',
@@ -1066,15 +1357,27 @@ export const FleetCreateInputSchema = {
1066
1357
  'us-west4'
1067
1358
  ]
1068
1359
  },
1069
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1360
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1361
+ default: []
1070
1362
  }
1071
1363
  },
1072
1364
  additionalProperties: false,
1073
- 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.'
1365
+ 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.',
1366
+ default: {
1367
+ 'karpenter.sh/capacity-type': [
1368
+ 'on-demand',
1369
+ 'spot'
1370
+ ],
1371
+ 'kubernetes.io/arch': [
1372
+ 'amd64'
1373
+ ],
1374
+ 'cfke.io/instance-family': [],
1375
+ 'topology.kubernetes.io/region': []
1376
+ }
1074
1377
  },
1075
1378
  scalingProfile: {
1076
1379
  type: 'string',
1077
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1380
+ 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`).',
1078
1381
  default: 'conservative',
1079
1382
  example: 'conservative',
1080
1383
  enum: [
@@ -1094,7 +1397,8 @@ export const FleetCreateInputSchema = {
1094
1397
  required: [
1095
1398
  'id'
1096
1399
  ],
1097
- additionalProperties: false
1400
+ additionalProperties: false,
1401
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1098
1402
  };
1099
1403
  export const FleetSchema = {
1100
1404
  type: 'object',
@@ -1364,7 +1668,8 @@ export const FleetSchema = {
1364
1668
  'z3'
1365
1669
  ]
1366
1670
  },
1367
- description: 'Allowed values for `cfke.io/instance-family`.'
1671
+ description: 'Allowed values for `cfke.io/instance-family`.',
1672
+ default: []
1368
1673
  },
1369
1674
  'topology.kubernetes.io/region': {
1370
1675
  type: 'array',
@@ -1437,15 +1742,31 @@ export const FleetSchema = {
1437
1742
  'us-west4'
1438
1743
  ]
1439
1744
  },
1440
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1745
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1746
+ default: []
1441
1747
  }
1442
1748
  },
1749
+ required: [
1750
+ 'karpenter.sh/capacity-type',
1751
+ 'kubernetes.io/arch'
1752
+ ],
1443
1753
  additionalProperties: false,
1444
- 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.'
1754
+ 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.',
1755
+ default: {
1756
+ 'karpenter.sh/capacity-type': [
1757
+ 'on-demand',
1758
+ 'spot'
1759
+ ],
1760
+ 'kubernetes.io/arch': [
1761
+ 'amd64'
1762
+ ],
1763
+ 'cfke.io/instance-family': [],
1764
+ 'topology.kubernetes.io/region': []
1765
+ }
1445
1766
  },
1446
1767
  scalingProfile: {
1447
1768
  type: 'string',
1448
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1769
+ 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`).',
1449
1770
  default: 'conservative',
1450
1771
  example: 'conservative',
1451
1772
  enum: [
@@ -1460,13 +1781,38 @@ export const FleetSchema = {
1460
1781
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1461
1782
  description: 'Unique identifier of the kubernetes fleet.',
1462
1783
  example: 'new-clouds-fleet'
1784
+ },
1785
+ ready: {
1786
+ type: 'boolean',
1787
+ description: 'Indicates whether the fleet configuration is healthy.',
1788
+ example: true
1789
+ },
1790
+ status_message: {
1791
+ type: 'string',
1792
+ description: 'Human-readable reason the fleet is not ready. Present only when `ready` is false.',
1793
+ example: 'Invalid provider permissions.'
1794
+ },
1795
+ created_at: {
1796
+ type: 'string',
1797
+ description: 'Creation date and time of the fleet.',
1798
+ example: '2024-09-12T09:11:27Z'
1799
+ },
1800
+ updated_at: {
1801
+ type: 'string',
1802
+ description: 'Date and time the fleet was last updated.',
1803
+ example: '2024-09-12T09:11:27Z'
1463
1804
  }
1464
1805
  },
1465
1806
  required: [
1807
+ 'constraints',
1466
1808
  'scalingProfile',
1467
- 'id'
1809
+ 'id',
1810
+ 'ready',
1811
+ 'created_at',
1812
+ 'updated_at'
1468
1813
  ],
1469
- additionalProperties: false
1814
+ additionalProperties: false,
1815
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1470
1816
  };
1471
1817
  export const FleetUpdateInputSchema = {
1472
1818
  type: 'object',
@@ -1512,8 +1858,8 @@ export const FleetUpdateInputSchema = {
1512
1858
  type: 'string',
1513
1859
  maxLength: 64,
1514
1860
  minLength: 64,
1515
- pattern: '^[A-Za-z0-9]+$',
1516
- description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
1861
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
1862
+ 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.'
1517
1863
  }
1518
1864
  },
1519
1865
  required: [
@@ -1552,7 +1898,11 @@ export const FleetUpdateInputSchema = {
1552
1898
  ]
1553
1899
  },
1554
1900
  minItems: 1,
1555
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1901
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1902
+ default: [
1903
+ 'on-demand',
1904
+ 'spot'
1905
+ ]
1556
1906
  },
1557
1907
  'kubernetes.io/arch': {
1558
1908
  type: 'array',
@@ -1564,7 +1914,10 @@ export const FleetUpdateInputSchema = {
1564
1914
  ]
1565
1915
  },
1566
1916
  minItems: 1,
1567
- description: 'Allowed values for `kubernetes.io/arch`.'
1917
+ description: 'Allowed values for `kubernetes.io/arch`.',
1918
+ default: [
1919
+ 'amd64'
1920
+ ]
1568
1921
  },
1569
1922
  'cfke.io/instance-family': {
1570
1923
  type: 'array',
@@ -1731,7 +2084,8 @@ export const FleetUpdateInputSchema = {
1731
2084
  'z3'
1732
2085
  ]
1733
2086
  },
1734
- description: 'Allowed values for `cfke.io/instance-family`.'
2087
+ description: 'Allowed values for `cfke.io/instance-family`.',
2088
+ default: []
1735
2089
  },
1736
2090
  'topology.kubernetes.io/region': {
1737
2091
  type: 'array',
@@ -1804,15 +2158,28 @@ export const FleetUpdateInputSchema = {
1804
2158
  'us-west4'
1805
2159
  ]
1806
2160
  },
1807
- description: 'Allowed values for `topology.kubernetes.io/region`.'
2161
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
2162
+ default: []
1808
2163
  }
1809
2164
  },
1810
2165
  additionalProperties: false,
1811
- 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.'
2166
+ 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.',
2167
+ default: {
2168
+ 'karpenter.sh/capacity-type': [
2169
+ 'on-demand',
2170
+ 'spot'
2171
+ ],
2172
+ 'kubernetes.io/arch': [
2173
+ 'amd64'
2174
+ ],
2175
+ 'cfke.io/instance-family': [],
2176
+ 'topology.kubernetes.io/region': []
2177
+ }
1812
2178
  },
1813
2179
  scalingProfile: {
1814
2180
  type: 'string',
1815
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
2181
+ 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`).',
2182
+ default: 'conservative',
1816
2183
  example: 'conservative',
1817
2184
  enum: [
1818
2185
  'aggressive',
@@ -1820,10 +2187,8 @@ export const FleetUpdateInputSchema = {
1820
2187
  ]
1821
2188
  }
1822
2189
  },
1823
- required: [
1824
- 'scalingProfile'
1825
- ],
1826
- additionalProperties: false
2190
+ additionalProperties: false,
2191
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1827
2192
  };
1828
2193
  export const InviteCreateInputSchema = {
1829
2194
  type: 'object',
@@ -2231,6 +2596,17 @@ export const OrganizationSchema = {
2231
2596
  description: 'Available number of Pro clusters that can be created.',
2232
2597
  example: 999
2233
2598
  },
2599
+ enterprise_clusters_max: {
2600
+ type: 'integer',
2601
+ minimum: 0,
2602
+ description: 'Maximum number of Enterprise clusters that can be created.',
2603
+ example: 999
2604
+ },
2605
+ enterprise_clusters_available: {
2606
+ type: 'integer',
2607
+ description: 'Available number of Enterprise clusters that can be created.',
2608
+ example: 999
2609
+ },
2234
2610
  fleets_max: {
2235
2611
  type: 'integer',
2236
2612
  minimum: 0,
@@ -2292,6 +2668,8 @@ export const OrganizationSchema = {
2292
2668
  'basic_clusters_available',
2293
2669
  'pro_clusters_max',
2294
2670
  'pro_clusters_available',
2671
+ 'enterprise_clusters_max',
2672
+ 'enterprise_clusters_available',
2295
2673
  'fleets_max',
2296
2674
  'cluster_tiers',
2297
2675
  'regions',
@@ -2438,6 +2816,17 @@ export const PlatformQuotaSchema = {
2438
2816
  description: 'Available number of Pro clusters that can be created.',
2439
2817
  example: 999
2440
2818
  },
2819
+ enterprise_clusters_max: {
2820
+ type: 'integer',
2821
+ minimum: 0,
2822
+ description: 'Maximum number of Enterprise clusters that can be created.',
2823
+ example: 999
2824
+ },
2825
+ enterprise_clusters_available: {
2826
+ type: 'integer',
2827
+ description: 'Available number of Enterprise clusters that can be created.',
2828
+ example: 999
2829
+ },
2441
2830
  fleets_max: {
2442
2831
  type: 'integer',
2443
2832
  minimum: 0,
@@ -2499,6 +2888,8 @@ export const PlatformQuotaSchema = {
2499
2888
  'basic_clusters_available',
2500
2889
  'pro_clusters_max',
2501
2890
  'pro_clusters_available',
2891
+ 'enterprise_clusters_max',
2892
+ 'enterprise_clusters_available',
2502
2893
  'fleets_max',
2503
2894
  'cluster_tiers',
2504
2895
  'regions',
@@ -2841,172 +3232,6 @@ export const TicketCreateInputSchema = {
2841
3232
  ],
2842
3233
  additionalProperties: false
2843
3234
  };
2844
- export const TicketListResponseSchema = {
2845
- type: 'object',
2846
- properties: {
2847
- items: {
2848
- type: 'array',
2849
- items: {
2850
- type: 'object',
2851
- properties: {
2852
- id: {
2853
- type: 'string',
2854
- description: 'Unique identifier of the ticket (Mongo ObjectId).',
2855
- example: '60c72b2f9f1b2c001f8e4d3a'
2856
- },
2857
- status: {
2858
- type: 'string',
2859
- description: 'Current state of the ticket.',
2860
- example: 'waiting_on_us',
2861
- enum: [
2862
- 'waiting_on_us',
2863
- 'waiting_on_user',
2864
- 'closed'
2865
- ]
2866
- },
2867
- category: {
2868
- type: 'string',
2869
- description: 'Ticket category.',
2870
- example: 'technical',
2871
- enum: [
2872
- 'billing',
2873
- 'technical',
2874
- 'general'
2875
- ]
2876
- },
2877
- summary: {
2878
- type: 'string',
2879
- description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2880
- example: 'My cluster cannot reach the registry. Logs attached.'
2881
- },
2882
- closed_at: {
2883
- type: 'string',
2884
- format: 'date-time',
2885
- nullable: true,
2886
- description: 'Closure timestamp. Null while the ticket is open.',
2887
- example: '2026-05-18T16:08:14.338Z'
2888
- },
2889
- date_created: {
2890
- type: 'string',
2891
- format: 'date-time',
2892
- description: 'Creation date of the ticket. ISO 8601 UTC.',
2893
- example: '2026-05-11T16:08:14.338Z'
2894
- },
2895
- date_updated: {
2896
- type: 'string',
2897
- format: 'date-time',
2898
- description: 'Last update date of the ticket. ISO 8601 UTC.',
2899
- example: '2026-05-11T16:08:14.338Z'
2900
- },
2901
- messages: {
2902
- type: 'array',
2903
- items: {
2904
- type: 'object',
2905
- properties: {
2906
- id: {
2907
- type: 'string',
2908
- description: 'Unique identifier of the message (Mongo ObjectId).',
2909
- example: '60c72b2f9f1b2c001f8e4d3b'
2910
- },
2911
- type: {
2912
- type: 'string',
2913
- description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2914
- example: 'customer_reply',
2915
- enum: [
2916
- 'customer_reply',
2917
- 'agent_reply'
2918
- ]
2919
- },
2920
- body: {
2921
- type: 'string',
2922
- description: 'Message body in markdown.',
2923
- example: 'Thanks — that resolved it on my side.'
2924
- },
2925
- author_first_name: {
2926
- type: 'string',
2927
- nullable: true,
2928
- description: 'First name of the author. Null when not provided.',
2929
- example: 'Jane'
2930
- },
2931
- author_last_name: {
2932
- type: 'string',
2933
- nullable: true,
2934
- description: 'Last name of the author. Null when not provided.',
2935
- example: 'Doe'
2936
- },
2937
- attachments: {
2938
- type: 'array',
2939
- items: {
2940
- type: 'object',
2941
- properties: {
2942
- id: {
2943
- type: 'string',
2944
- description: 'Unique identifier of the attachment (Mongo ObjectId).',
2945
- example: '60c72b2f9f1b2c001f8e4d3c'
2946
- },
2947
- filename: {
2948
- type: 'string',
2949
- description: 'Original filename as uploaded.',
2950
- example: 'debug.log'
2951
- },
2952
- content_type: {
2953
- type: 'string',
2954
- description: 'MIME content type of the attachment.',
2955
- example: 'text/plain'
2956
- },
2957
- size: {
2958
- type: 'integer',
2959
- description: 'Size of the attachment in bytes.',
2960
- example: 12345
2961
- }
2962
- },
2963
- required: [
2964
- 'id',
2965
- 'filename',
2966
- 'content_type',
2967
- 'size'
2968
- ],
2969
- additionalProperties: false
2970
- },
2971
- description: 'Attachments associated with this message.',
2972
- example: []
2973
- },
2974
- date_created: {
2975
- type: 'string',
2976
- format: 'date-time',
2977
- description: 'Creation date of the message. ISO 8601 UTC.',
2978
- example: '2026-05-11T16:08:14.338Z'
2979
- }
2980
- },
2981
- required: [
2982
- 'id',
2983
- 'type',
2984
- 'body',
2985
- 'date_created'
2986
- ],
2987
- additionalProperties: false
2988
- },
2989
- description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2990
- }
2991
- },
2992
- required: [
2993
- 'id',
2994
- 'status',
2995
- 'category',
2996
- 'summary',
2997
- 'date_created',
2998
- 'date_updated'
2999
- ],
3000
- additionalProperties: false
3001
- },
3002
- description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
3003
- }
3004
- },
3005
- required: [
3006
- 'items'
3007
- ],
3008
- additionalProperties: false
3009
- };
3010
3235
  export const TicketMessageInputSchema = {
3011
3236
  type: 'object',
3012
3237
  properties: {
@@ -3048,11 +3273,13 @@ export const TicketMessageSchema = {
3048
3273
  },
3049
3274
  author_first_name: {
3050
3275
  type: 'string',
3276
+ nullable: true,
3051
3277
  description: 'First name of the author. Null when not provided.',
3052
3278
  example: 'Jane'
3053
3279
  },
3054
3280
  author_last_name: {
3055
3281
  type: 'string',
3282
+ nullable: true,
3056
3283
  description: 'Last name of the author. Null when not provided.',
3057
3284
  example: 'Doe'
3058
3285
  },
@@ -3144,6 +3371,7 @@ export const TicketSchema = {
3144
3371
  closed_at: {
3145
3372
  type: 'string',
3146
3373
  format: 'date-time',
3374
+ nullable: true,
3147
3375
  description: 'Closure timestamp. Null while the ticket is open.',
3148
3376
  example: '2026-05-18T16:08:14.338Z'
3149
3377
  },
@@ -3368,12 +3596,21 @@ export const UsageFacetsSchema = {
3368
3596
  product: {
3369
3597
  type: 'array',
3370
3598
  items: {
3371
- type: 'string'
3599
+ type: 'string',
3600
+ enum: [
3601
+ 'cfke_controlplane_basic',
3602
+ 'cfke_controlplane_pro',
3603
+ 'cfke_controlplane_enterprise',
3604
+ 'cfke_connected_nodes_basic',
3605
+ 'cfke_connected_nodes_pro',
3606
+ 'cfke_connected_nodes_enterprise',
3607
+ 'cfcr_storage'
3608
+ ]
3372
3609
  },
3373
3610
  description: 'List of unique products',
3374
3611
  example: [
3375
- 'cfke_controlplane',
3376
- 'cfke_connected_nodes'
3612
+ 'cfke_controlplane_pro',
3613
+ 'cfke_connected_nodes_pro'
3377
3614
  ]
3378
3615
  }
3379
3616
  },
@@ -3400,7 +3637,16 @@ export const UsageResponseSchema = {
3400
3637
  product: {
3401
3638
  type: 'string',
3402
3639
  description: 'The product the usage is associated with',
3403
- example: 'cfke_controlplane'
3640
+ example: 'cfke_controlplane_pro',
3641
+ enum: [
3642
+ 'cfke_controlplane_basic',
3643
+ 'cfke_controlplane_pro',
3644
+ 'cfke_controlplane_enterprise',
3645
+ 'cfke_connected_nodes_basic',
3646
+ 'cfke_connected_nodes_pro',
3647
+ 'cfke_connected_nodes_enterprise',
3648
+ 'cfcr_storage'
3649
+ ]
3404
3650
  },
3405
3651
  value: {
3406
3652
  type: 'number',
@@ -3448,12 +3694,21 @@ export const UsageResponseSchema = {
3448
3694
  product: {
3449
3695
  type: 'array',
3450
3696
  items: {
3451
- type: 'string'
3697
+ type: 'string',
3698
+ enum: [
3699
+ 'cfke_controlplane_basic',
3700
+ 'cfke_controlplane_pro',
3701
+ 'cfke_controlplane_enterprise',
3702
+ 'cfke_connected_nodes_basic',
3703
+ 'cfke_connected_nodes_pro',
3704
+ 'cfke_connected_nodes_enterprise',
3705
+ 'cfcr_storage'
3706
+ ]
3452
3707
  },
3453
3708
  description: 'List of unique products',
3454
3709
  example: [
3455
- 'cfke_controlplane',
3456
- 'cfke_connected_nodes'
3710
+ 'cfke_controlplane_pro',
3711
+ 'cfke_connected_nodes_pro'
3457
3712
  ]
3458
3713
  }
3459
3714
  },
@@ -3483,7 +3738,16 @@ export const UsageSchema = {
3483
3738
  product: {
3484
3739
  type: 'string',
3485
3740
  description: 'The product the usage is associated with',
3486
- 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
+ ]
3487
3751
  },
3488
3752
  value: {
3489
3753
  type: 'number',