@cloudfleet/sdk 0.0.1-82e92ad → 0.0.1-84adc67

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.
@@ -2,6 +2,15 @@
2
2
  export const BillingContactSchema = {
3
3
  type: 'object',
4
4
  properties: {
5
+ type: {
6
+ type: 'string',
7
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
8
+ example: 'business',
9
+ enum: [
10
+ 'business',
11
+ 'personal'
12
+ ]
13
+ },
5
14
  company: {
6
15
  type: 'string',
7
16
  maxLength: 120,
@@ -207,6 +216,7 @@ export const BillingContactSchema = {
207
216
  }
208
217
  },
209
218
  required: [
219
+ 'type',
210
220
  'email',
211
221
  'individual_name'
212
222
  ],
@@ -358,24 +368,8 @@ export const ChartSchema = {
358
368
  },
359
369
  status: {
360
370
  type: 'string',
361
- description: 'Status of the chart deployment.',
362
- example: 'active',
363
- enum: [
364
- 'InstallSucceeded',
365
- 'InstallFailed',
366
- 'UpgradeSucceeded',
367
- 'UpgradeFailed',
368
- 'TestSucceeded',
369
- 'TestFailed',
370
- 'RollbackSucceeded',
371
- 'RollbackFailed',
372
- 'UninstallSucceeded',
373
- 'UninstallFailed',
374
- 'ArtifactFailed',
375
- 'DependencyNotReady',
376
- 'Progressing',
377
- 'SourceNotReady'
378
- ]
371
+ description: 'Status of the chart deployment (Flux HelmRelease Ready condition reason, e.g. InstallSucceeded, UpgradeFailed, Progressing).',
372
+ example: 'InstallSucceeded'
379
373
  },
380
374
  version_current: {
381
375
  type: 'string',
@@ -454,33 +448,107 @@ export const ClusterCreateInputSchema = {
454
448
  },
455
449
  region: {
456
450
  type: 'string',
457
- description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
458
- default: 'staging-1a',
459
- example: 'northamerica-central-1a',
460
- enum: [
461
- 'staging-1a',
462
- 'northamerica-central-1',
463
- 'europe-central-1a',
464
- 'northamerica-central-1a'
465
- ]
451
+ description: 'Cloudfleet control plane region. This field can not be updated after creation.',
452
+ example: 'europe-central-1a'
466
453
  },
467
454
  version_channel: {
468
455
  type: 'string',
469
456
  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-]+)*))?$',
470
457
  description: 'Version of the kubernetes cluster.',
471
458
  default: '1.x.x-cfke.x',
472
- example: '1.x.x-cfke.x',
459
+ example: '1.x.x-cfke.x'
460
+ },
461
+ release_channel: {
462
+ type: 'string',
463
+ description: 'Release channel for the cluster\'s control plane.',
464
+ default: 'rapid',
465
+ example: 'rapid',
473
466
  enum: [
474
- '1.x.x-cfke.x',
475
- '1.31.x-cfke.x',
476
- '1.32.x-cfke.x',
477
- '1.33.x-cfke.x'
467
+ 'rapid',
468
+ 'stable',
469
+ 'extended'
478
470
  ]
471
+ },
472
+ features: {
473
+ type: 'object',
474
+ properties: {
475
+ gpu_sharing_strategy: {
476
+ type: 'string',
477
+ description: 'GPU sharing strategy.',
478
+ example: 'none',
479
+ enum: [
480
+ 'none',
481
+ 'mps',
482
+ 'time_slicing'
483
+ ]
484
+ },
485
+ gpu_max_shared_clients_per_gpu: {
486
+ type: 'integer',
487
+ minimum: 1,
488
+ maximum: 48,
489
+ description: 'Maximum number of pods that may share a single GPU.',
490
+ example: 10
491
+ },
492
+ cilium_socket_lb_host_namespace_only: {
493
+ type: 'boolean',
494
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
495
+ example: false
496
+ }
497
+ },
498
+ required: [
499
+ 'gpu_sharing_strategy',
500
+ 'gpu_max_shared_clients_per_gpu'
501
+ ],
502
+ additionalProperties: false,
503
+ description: 'Cluster feature toggles.',
504
+ default: {
505
+ gpu_sharing_strategy: 'none',
506
+ gpu_max_shared_clients_per_gpu: 10,
507
+ cilium_socket_lb_host_namespace_only: false
508
+ }
509
+ },
510
+ networking: {
511
+ type: 'object',
512
+ properties: {
513
+ pod_cidr: {
514
+ type: 'string',
515
+ description: 'CIDR block for pod IPs.',
516
+ example: '10.244.0.0/16'
517
+ },
518
+ service_cidr: {
519
+ type: 'string',
520
+ 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'
527
+ },
528
+ dual_stack: {
529
+ type: 'boolean',
530
+ description: 'Enable IPv4+IPv6 dual-stack networking.',
531
+ example: false
532
+ },
533
+ pod_cidr_v6: {
534
+ type: 'string',
535
+ description: 'IPv6 pod CIDR. Requires dual_stack.',
536
+ example: 'fd00:10:244::/56'
537
+ },
538
+ service_cidr_v6: {
539
+ type: 'string',
540
+ description: 'IPv6 service CIDR. Requires dual_stack.',
541
+ example: 'fd00:10:96::/112'
542
+ }
543
+ },
544
+ additionalProperties: false,
545
+ description: 'Cluster networking configuration. Immutable after creation.'
479
546
  }
480
547
  },
481
548
  required: [
482
549
  'name',
483
- 'tier'
550
+ 'tier',
551
+ 'region'
484
552
  ],
485
553
  additionalProperties: false
486
554
  };
@@ -503,6 +571,11 @@ export const ClusterJoinInformationSchema = {
503
571
  description: 'Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.',
504
572
  example: '10.96.0.10'
505
573
  },
574
+ pod_cidr: {
575
+ type: 'string',
576
+ description: 'Pod CIDR for the cluster. Used to configure iptables rules on nodes to prevent Tailscale routing loops.',
577
+ example: '10.244.0.0/16'
578
+ },
506
579
  auth_key: {
507
580
  type: 'string',
508
581
  description: 'Authentication key for the cluster.',
@@ -578,6 +651,7 @@ export const ClusterJoinInformationSchema = {
578
651
  'certificate_authority',
579
652
  'endpoint',
580
653
  'cluster_dns',
654
+ 'pod_cidr',
581
655
  'auth_key',
582
656
  'bootstrap_token',
583
657
  'versions',
@@ -607,16 +681,89 @@ export const ClusterSchema = {
607
681
  },
608
682
  region: {
609
683
  type: 'string',
610
- description: 'Cloudfleet control plane region. One of "staging-1a", "northamerica-central-1", "europe-central-1a", "northamerica-central-1a". This field can not be updated after creation.',
611
- default: 'staging-1a',
612
- example: 'northamerica-central-1a',
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.'
723
+ },
724
+ release_channel: {
725
+ type: 'string',
726
+ description: 'Release channel for the cluster\'s control plane.',
727
+ example: 'rapid',
613
728
  enum: [
614
- 'staging-1a',
615
- 'northamerica-central-1',
616
- 'europe-central-1a',
617
- 'northamerica-central-1a'
729
+ 'rapid',
730
+ 'stable',
731
+ 'extended'
618
732
  ]
619
733
  },
734
+ features: {
735
+ type: 'object',
736
+ properties: {
737
+ gpu_sharing_strategy: {
738
+ type: 'string',
739
+ description: 'GPU sharing strategy.',
740
+ example: 'none',
741
+ enum: [
742
+ 'none',
743
+ 'mps',
744
+ 'time_slicing'
745
+ ]
746
+ },
747
+ gpu_max_shared_clients_per_gpu: {
748
+ type: 'integer',
749
+ minimum: 1,
750
+ maximum: 48,
751
+ description: 'Maximum number of pods that may share a single GPU.',
752
+ example: 10
753
+ },
754
+ cilium_socket_lb_host_namespace_only: {
755
+ type: 'boolean',
756
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
757
+ example: false
758
+ }
759
+ },
760
+ required: [
761
+ 'gpu_sharing_strategy',
762
+ 'gpu_max_shared_clients_per_gpu'
763
+ ],
764
+ additionalProperties: false,
765
+ description: 'Cluster feature toggles.'
766
+ },
620
767
  id: {
621
768
  type: 'string',
622
769
  format: 'uuid',
@@ -625,16 +772,13 @@ export const ClusterSchema = {
625
772
  },
626
773
  status: {
627
774
  type: 'string',
628
- description: 'Status of the cluster. When creating a new cluster, set to `active`. When deleting a clusters, set to `deleted`.',
629
- example: 'active',
775
+ description: 'Status of the cluster.',
776
+ example: 'deployed',
630
777
  enum: [
631
- 'active',
632
- 'disabled',
633
- 'deleted',
634
778
  'creating',
635
779
  'deployed',
636
- 'failed',
637
- 'updating'
780
+ 'updating',
781
+ 'disabled'
638
782
  ]
639
783
  },
640
784
  endpoint: {
@@ -642,8 +786,8 @@ export const ClusterSchema = {
642
786
  {
643
787
  type: 'string',
644
788
  format: 'uri',
645
- description: 'URL signed by the private CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster. (Deprecated, use endpoint_public instead)',
646
- example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.cloudfleet.dev:6443'
789
+ 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.',
790
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
647
791
  },
648
792
  {
649
793
  type: 'string',
@@ -658,7 +802,7 @@ export const ClusterSchema = {
658
802
  {
659
803
  type: 'string',
660
804
  format: 'uri',
661
- description: 'URL signed by a public CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
805
+ description: 'Deprecated alias of `endpoint`; retained for backward compatibility.',
662
806
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
663
807
  },
664
808
  {
@@ -704,6 +848,7 @@ export const ClusterSchema = {
704
848
  required: [
705
849
  'name',
706
850
  'tier',
851
+ 'region',
707
852
  'id',
708
853
  'status'
709
854
  ],
@@ -734,6 +879,49 @@ export const ClusterUpdateInputSchema = {
734
879
  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-]+)*))?$',
735
880
  description: 'Version of the kubernetes cluster.',
736
881
  example: '1.x.x-cfke.x'
882
+ },
883
+ release_channel: {
884
+ type: 'string',
885
+ description: 'Release channel for the cluster\'s control plane.',
886
+ example: 'rapid',
887
+ enum: [
888
+ 'rapid',
889
+ 'stable',
890
+ 'extended'
891
+ ]
892
+ },
893
+ features: {
894
+ type: 'object',
895
+ properties: {
896
+ gpu_sharing_strategy: {
897
+ type: 'string',
898
+ description: 'GPU sharing strategy.',
899
+ example: 'none',
900
+ enum: [
901
+ 'none',
902
+ 'mps',
903
+ 'time_slicing'
904
+ ]
905
+ },
906
+ gpu_max_shared_clients_per_gpu: {
907
+ type: 'integer',
908
+ minimum: 1,
909
+ maximum: 48,
910
+ description: 'Maximum number of pods that may share a single GPU.',
911
+ example: 10
912
+ },
913
+ cilium_socket_lb_host_namespace_only: {
914
+ type: 'boolean',
915
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
916
+ example: false
917
+ }
918
+ },
919
+ required: [
920
+ 'gpu_sharing_strategy',
921
+ 'gpu_max_shared_clients_per_gpu'
922
+ ],
923
+ additionalProperties: false,
924
+ description: 'Cluster feature toggles.'
737
925
  }
738
926
  },
739
927
  required: [
@@ -748,15 +936,12 @@ export const FleetCreateInputSchema = {
748
936
  type: 'object',
749
937
  properties: {
750
938
  cpu: {
751
- type: 'number',
752
- format: 'float',
939
+ type: 'integer',
753
940
  minimum: 0,
754
- description: 'CPU limit in cores.'
941
+ maximum: 100000,
942
+ description: 'CPU limit in cores. Maximum 100,000.'
755
943
  }
756
944
  },
757
- required: [
758
- 'cpu'
759
- ],
760
945
  additionalProperties: false,
761
946
  description: 'Limits define a set of bounds for provisioning capacity.'
762
947
  },
@@ -764,16 +949,17 @@ export const FleetCreateInputSchema = {
764
949
  type: 'object',
765
950
  properties: {
766
951
  enabled: {
767
- type: 'boolean',
768
- default: true
952
+ type: 'boolean'
769
953
  },
770
954
  project: {
771
955
  type: 'string',
772
- description: 'Project GCP Project id to deploy instances into'
956
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
957
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
958
+ example: 'my-cloudfleet-project'
773
959
  }
774
960
  },
775
961
  required: [
776
- 'project'
962
+ 'enabled'
777
963
  ],
778
964
  additionalProperties: false
779
965
  },
@@ -781,16 +967,18 @@ export const FleetCreateInputSchema = {
781
967
  type: 'object',
782
968
  properties: {
783
969
  enabled: {
784
- type: 'boolean',
785
- default: true
970
+ type: 'boolean'
786
971
  },
787
972
  apiKey: {
788
973
  type: 'string',
789
- description: 'Hetzner Cloud API key with read / write access'
974
+ maxLength: 64,
975
+ 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.'
790
978
  }
791
979
  },
792
980
  required: [
793
- 'apiKey'
981
+ 'enabled'
794
982
  ],
795
983
  additionalProperties: false
796
984
  },
@@ -798,19 +986,308 @@ export const FleetCreateInputSchema = {
798
986
  type: 'object',
799
987
  properties: {
800
988
  enabled: {
801
- type: 'boolean',
802
- default: true
989
+ type: 'boolean'
803
990
  },
804
991
  controllerRoleArn: {
805
992
  type: 'string',
806
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
993
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
994
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
995
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
807
996
  }
808
997
  },
809
998
  required: [
810
- 'controllerRoleArn'
999
+ 'enabled'
811
1000
  ],
812
1001
  additionalProperties: false
813
1002
  },
1003
+ constraints: {
1004
+ type: 'object',
1005
+ properties: {
1006
+ 'karpenter.sh/capacity-type': {
1007
+ type: 'array',
1008
+ items: {
1009
+ type: 'string',
1010
+ enum: [
1011
+ 'on-demand',
1012
+ 'spot'
1013
+ ]
1014
+ },
1015
+ minItems: 1,
1016
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1017
+ default: [
1018
+ 'on-demand',
1019
+ 'spot'
1020
+ ]
1021
+ },
1022
+ 'kubernetes.io/arch': {
1023
+ type: 'array',
1024
+ items: {
1025
+ type: 'string',
1026
+ enum: [
1027
+ 'amd64',
1028
+ 'arm64'
1029
+ ]
1030
+ },
1031
+ minItems: 1,
1032
+ description: 'Allowed values for `kubernetes.io/arch`.',
1033
+ default: [
1034
+ 'amd64'
1035
+ ]
1036
+ },
1037
+ 'cfke.io/instance-family': {
1038
+ type: 'array',
1039
+ items: {
1040
+ type: 'string',
1041
+ enum: [
1042
+ 'a1',
1043
+ 'a2',
1044
+ 'a3',
1045
+ 'a4',
1046
+ 'c1',
1047
+ 'c2',
1048
+ 'c2d',
1049
+ 'c3',
1050
+ 'c3d',
1051
+ 'c4',
1052
+ 'c4a',
1053
+ 'c4d',
1054
+ 'c5',
1055
+ 'c5a',
1056
+ 'c5ad',
1057
+ 'c5d',
1058
+ 'c5n',
1059
+ 'c6a',
1060
+ 'c6g',
1061
+ 'c6gd',
1062
+ 'c6gn',
1063
+ 'c6i',
1064
+ 'c6id',
1065
+ 'c6in',
1066
+ 'c7a',
1067
+ 'c7g',
1068
+ 'c7gd',
1069
+ 'c7gn',
1070
+ 'c7i',
1071
+ 'c7i-flex',
1072
+ 'c8g',
1073
+ 'c8gd',
1074
+ 'cax',
1075
+ 'ccx',
1076
+ 'cpx',
1077
+ 'cx',
1078
+ 'd2',
1079
+ 'd3',
1080
+ 'd3en',
1081
+ 'dl1',
1082
+ 'dl2q',
1083
+ 'e2',
1084
+ 'f1',
1085
+ 'f2',
1086
+ 'g1',
1087
+ 'g2',
1088
+ 'g4ad',
1089
+ 'g4dn',
1090
+ 'g5',
1091
+ 'g5g',
1092
+ 'g6',
1093
+ 'g6e',
1094
+ 'gr6',
1095
+ 'h1',
1096
+ 'h3',
1097
+ 'hpc6a',
1098
+ 'hpc6id',
1099
+ 'hpc7a',
1100
+ 'hpc7g',
1101
+ 'i2',
1102
+ 'i3',
1103
+ 'i3en',
1104
+ 'i4g',
1105
+ 'i4i',
1106
+ 'i7i',
1107
+ 'i7ie',
1108
+ 'i8g',
1109
+ 'im4gn',
1110
+ 'inf1',
1111
+ 'inf2',
1112
+ 'is4gen',
1113
+ 'm1',
1114
+ 'm2',
1115
+ 'm3',
1116
+ 'm4',
1117
+ 'm5',
1118
+ 'm5a',
1119
+ 'm5ad',
1120
+ 'm5d',
1121
+ 'm5dn',
1122
+ 'm5n',
1123
+ 'm5zn',
1124
+ 'm6a',
1125
+ 'm6g',
1126
+ 'm6gd',
1127
+ 'm6i',
1128
+ 'm6id',
1129
+ 'm6idn',
1130
+ 'm6in',
1131
+ 'm7a',
1132
+ 'm7g',
1133
+ 'm7gd',
1134
+ 'm7i',
1135
+ 'm7i-flex',
1136
+ 'm8g',
1137
+ 'm8gd',
1138
+ 'n1',
1139
+ 'n2',
1140
+ 'n2d',
1141
+ 'n4',
1142
+ 'p3',
1143
+ 'p3dn',
1144
+ 'p4d',
1145
+ 'p4de',
1146
+ 'p5',
1147
+ 'p5e',
1148
+ 'p5en',
1149
+ 'p6-b200',
1150
+ 'r3',
1151
+ 'r4',
1152
+ 'r5',
1153
+ 'r5a',
1154
+ 'r5ad',
1155
+ 'r5b',
1156
+ 'r5d',
1157
+ 'r5dn',
1158
+ 'r5n',
1159
+ 'r6a',
1160
+ 'r6g',
1161
+ 'r6gd',
1162
+ 'r6i',
1163
+ 'r6id',
1164
+ 'r6idn',
1165
+ 'r6in',
1166
+ 'r7a',
1167
+ 'r7g',
1168
+ 'r7gd',
1169
+ 'r7i',
1170
+ 'r7iz',
1171
+ 'r8g',
1172
+ 'r8gd',
1173
+ 't2',
1174
+ 't2a',
1175
+ 't2d',
1176
+ 't3',
1177
+ 't3a',
1178
+ 't4g',
1179
+ 'trn1',
1180
+ 'trn1n',
1181
+ 'u-3tb1',
1182
+ 'u-6tb1',
1183
+ 'u7i-12tb',
1184
+ 'u7i-6tb',
1185
+ 'u7i-8tb',
1186
+ 'u7in-16tb',
1187
+ 'u7in-24tb',
1188
+ 'u7in-32tb',
1189
+ 'vt1',
1190
+ 'x1',
1191
+ 'x1e',
1192
+ 'x2gd',
1193
+ 'x2idn',
1194
+ 'x2iedn',
1195
+ 'x2iezn',
1196
+ 'x4',
1197
+ 'x8g',
1198
+ 'z1d',
1199
+ 'z3'
1200
+ ]
1201
+ },
1202
+ description: 'Allowed values for `cfke.io/instance-family`.'
1203
+ },
1204
+ 'topology.kubernetes.io/region': {
1205
+ type: 'array',
1206
+ items: {
1207
+ type: 'string',
1208
+ enum: [
1209
+ 'africa-south1',
1210
+ 'ap-northeast-1',
1211
+ 'ap-northeast-2',
1212
+ 'ap-northeast-3',
1213
+ 'ap-south-1',
1214
+ 'ap-southeast-1',
1215
+ 'ap-southeast-2',
1216
+ 'ash',
1217
+ 'asia-east1',
1218
+ 'asia-east2',
1219
+ 'asia-northeast1',
1220
+ 'asia-northeast2',
1221
+ 'asia-northeast3',
1222
+ 'asia-south1',
1223
+ 'asia-south2',
1224
+ 'asia-southeast1',
1225
+ 'asia-southeast2',
1226
+ 'australia-southeast1',
1227
+ 'australia-southeast2',
1228
+ 'ca-central-1',
1229
+ 'eu-central-1',
1230
+ 'eu-central-2',
1231
+ 'eu-north-1',
1232
+ 'eu-west-1',
1233
+ 'eu-west-2',
1234
+ 'eu-west-3',
1235
+ 'europe-central2',
1236
+ 'europe-north1',
1237
+ 'europe-southwest1',
1238
+ 'europe-west1',
1239
+ 'europe-west10',
1240
+ 'europe-west12',
1241
+ 'europe-west2',
1242
+ 'europe-west3',
1243
+ 'europe-west4',
1244
+ 'europe-west6',
1245
+ 'europe-west8',
1246
+ 'europe-west9',
1247
+ 'fsn1',
1248
+ 'hel1',
1249
+ 'hil',
1250
+ 'me-central1',
1251
+ 'me-central2',
1252
+ 'me-west1',
1253
+ 'nbg1',
1254
+ 'northamerica-northeast1',
1255
+ 'northamerica-northeast2',
1256
+ 'sa-east-1',
1257
+ 'sin',
1258
+ 'southamerica-east1',
1259
+ 'southamerica-west1',
1260
+ 'us-central1',
1261
+ 'us-east-1',
1262
+ 'us-east-2',
1263
+ 'us-east1',
1264
+ 'us-east4',
1265
+ 'us-east5',
1266
+ 'us-south1',
1267
+ 'us-west-1',
1268
+ 'us-west-2',
1269
+ 'us-west1',
1270
+ 'us-west2',
1271
+ 'us-west3',
1272
+ 'us-west4'
1273
+ ]
1274
+ },
1275
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1276
+ }
1277
+ },
1278
+ 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.'
1280
+ },
1281
+ scalingProfile: {
1282
+ type: 'string',
1283
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1284
+ default: 'conservative',
1285
+ example: 'conservative',
1286
+ enum: [
1287
+ 'aggressive',
1288
+ 'conservative'
1289
+ ]
1290
+ },
814
1291
  id: {
815
1292
  type: 'string',
816
1293
  maxLength: 63,
@@ -832,15 +1309,12 @@ export const FleetSchema = {
832
1309
  type: 'object',
833
1310
  properties: {
834
1311
  cpu: {
835
- type: 'number',
836
- format: 'float',
1312
+ type: 'integer',
837
1313
  minimum: 0,
838
- description: 'CPU limit in cores.'
1314
+ maximum: 100000,
1315
+ description: 'CPU limit in cores. Maximum 100,000.'
839
1316
  }
840
1317
  },
841
- required: [
842
- 'cpu'
843
- ],
844
1318
  additionalProperties: false,
845
1319
  description: 'Limits define a set of bounds for provisioning capacity.'
846
1320
  },
@@ -848,16 +1322,17 @@ export const FleetSchema = {
848
1322
  type: 'object',
849
1323
  properties: {
850
1324
  enabled: {
851
- type: 'boolean',
852
- default: true
1325
+ type: 'boolean'
853
1326
  },
854
1327
  project: {
855
1328
  type: 'string',
856
- description: 'Project GCP Project id to deploy instances into'
1329
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1330
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1331
+ example: 'my-cloudfleet-project'
857
1332
  }
858
1333
  },
859
1334
  required: [
860
- 'project'
1335
+ 'enabled'
861
1336
  ],
862
1337
  additionalProperties: false
863
1338
  },
@@ -865,16 +1340,16 @@ export const FleetSchema = {
865
1340
  type: 'object',
866
1341
  properties: {
867
1342
  enabled: {
868
- type: 'boolean',
869
- default: true
1343
+ type: 'boolean'
870
1344
  },
871
1345
  apiKey: {
872
1346
  type: 'string',
873
- description: 'Hetzner Cloud API key with read / write access'
1347
+ pattern: '^\\*{64}$',
1348
+ description: 'Redacted Hetzner API token. Returned as 64 asterisks when a token is configured; omitted otherwise. The real value is never echoed by the API.'
874
1349
  }
875
1350
  },
876
1351
  required: [
877
- 'apiKey'
1352
+ 'enabled'
878
1353
  ],
879
1354
  additionalProperties: false
880
1355
  },
@@ -882,19 +1357,308 @@ export const FleetSchema = {
882
1357
  type: 'object',
883
1358
  properties: {
884
1359
  enabled: {
885
- type: 'boolean',
886
- default: true
1360
+ type: 'boolean'
887
1361
  },
888
1362
  controllerRoleArn: {
889
1363
  type: 'string',
890
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1364
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1365
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1366
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
891
1367
  }
892
1368
  },
893
1369
  required: [
894
- 'controllerRoleArn'
1370
+ 'enabled'
895
1371
  ],
896
1372
  additionalProperties: false
897
1373
  },
1374
+ constraints: {
1375
+ type: 'object',
1376
+ properties: {
1377
+ 'karpenter.sh/capacity-type': {
1378
+ type: 'array',
1379
+ items: {
1380
+ type: 'string',
1381
+ enum: [
1382
+ 'on-demand',
1383
+ 'spot'
1384
+ ]
1385
+ },
1386
+ minItems: 1,
1387
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1388
+ default: [
1389
+ 'on-demand',
1390
+ 'spot'
1391
+ ]
1392
+ },
1393
+ 'kubernetes.io/arch': {
1394
+ type: 'array',
1395
+ items: {
1396
+ type: 'string',
1397
+ enum: [
1398
+ 'amd64',
1399
+ 'arm64'
1400
+ ]
1401
+ },
1402
+ minItems: 1,
1403
+ description: 'Allowed values for `kubernetes.io/arch`.',
1404
+ default: [
1405
+ 'amd64'
1406
+ ]
1407
+ },
1408
+ 'cfke.io/instance-family': {
1409
+ type: 'array',
1410
+ items: {
1411
+ type: 'string',
1412
+ enum: [
1413
+ 'a1',
1414
+ 'a2',
1415
+ 'a3',
1416
+ 'a4',
1417
+ 'c1',
1418
+ 'c2',
1419
+ 'c2d',
1420
+ 'c3',
1421
+ 'c3d',
1422
+ 'c4',
1423
+ 'c4a',
1424
+ 'c4d',
1425
+ 'c5',
1426
+ 'c5a',
1427
+ 'c5ad',
1428
+ 'c5d',
1429
+ 'c5n',
1430
+ 'c6a',
1431
+ 'c6g',
1432
+ 'c6gd',
1433
+ 'c6gn',
1434
+ 'c6i',
1435
+ 'c6id',
1436
+ 'c6in',
1437
+ 'c7a',
1438
+ 'c7g',
1439
+ 'c7gd',
1440
+ 'c7gn',
1441
+ 'c7i',
1442
+ 'c7i-flex',
1443
+ 'c8g',
1444
+ 'c8gd',
1445
+ 'cax',
1446
+ 'ccx',
1447
+ 'cpx',
1448
+ 'cx',
1449
+ 'd2',
1450
+ 'd3',
1451
+ 'd3en',
1452
+ 'dl1',
1453
+ 'dl2q',
1454
+ 'e2',
1455
+ 'f1',
1456
+ 'f2',
1457
+ 'g1',
1458
+ 'g2',
1459
+ 'g4ad',
1460
+ 'g4dn',
1461
+ 'g5',
1462
+ 'g5g',
1463
+ 'g6',
1464
+ 'g6e',
1465
+ 'gr6',
1466
+ 'h1',
1467
+ 'h3',
1468
+ 'hpc6a',
1469
+ 'hpc6id',
1470
+ 'hpc7a',
1471
+ 'hpc7g',
1472
+ 'i2',
1473
+ 'i3',
1474
+ 'i3en',
1475
+ 'i4g',
1476
+ 'i4i',
1477
+ 'i7i',
1478
+ 'i7ie',
1479
+ 'i8g',
1480
+ 'im4gn',
1481
+ 'inf1',
1482
+ 'inf2',
1483
+ 'is4gen',
1484
+ 'm1',
1485
+ 'm2',
1486
+ 'm3',
1487
+ 'm4',
1488
+ 'm5',
1489
+ 'm5a',
1490
+ 'm5ad',
1491
+ 'm5d',
1492
+ 'm5dn',
1493
+ 'm5n',
1494
+ 'm5zn',
1495
+ 'm6a',
1496
+ 'm6g',
1497
+ 'm6gd',
1498
+ 'm6i',
1499
+ 'm6id',
1500
+ 'm6idn',
1501
+ 'm6in',
1502
+ 'm7a',
1503
+ 'm7g',
1504
+ 'm7gd',
1505
+ 'm7i',
1506
+ 'm7i-flex',
1507
+ 'm8g',
1508
+ 'm8gd',
1509
+ 'n1',
1510
+ 'n2',
1511
+ 'n2d',
1512
+ 'n4',
1513
+ 'p3',
1514
+ 'p3dn',
1515
+ 'p4d',
1516
+ 'p4de',
1517
+ 'p5',
1518
+ 'p5e',
1519
+ 'p5en',
1520
+ 'p6-b200',
1521
+ 'r3',
1522
+ 'r4',
1523
+ 'r5',
1524
+ 'r5a',
1525
+ 'r5ad',
1526
+ 'r5b',
1527
+ 'r5d',
1528
+ 'r5dn',
1529
+ 'r5n',
1530
+ 'r6a',
1531
+ 'r6g',
1532
+ 'r6gd',
1533
+ 'r6i',
1534
+ 'r6id',
1535
+ 'r6idn',
1536
+ 'r6in',
1537
+ 'r7a',
1538
+ 'r7g',
1539
+ 'r7gd',
1540
+ 'r7i',
1541
+ 'r7iz',
1542
+ 'r8g',
1543
+ 'r8gd',
1544
+ 't2',
1545
+ 't2a',
1546
+ 't2d',
1547
+ 't3',
1548
+ 't3a',
1549
+ 't4g',
1550
+ 'trn1',
1551
+ 'trn1n',
1552
+ 'u-3tb1',
1553
+ 'u-6tb1',
1554
+ 'u7i-12tb',
1555
+ 'u7i-6tb',
1556
+ 'u7i-8tb',
1557
+ 'u7in-16tb',
1558
+ 'u7in-24tb',
1559
+ 'u7in-32tb',
1560
+ 'vt1',
1561
+ 'x1',
1562
+ 'x1e',
1563
+ 'x2gd',
1564
+ 'x2idn',
1565
+ 'x2iedn',
1566
+ 'x2iezn',
1567
+ 'x4',
1568
+ 'x8g',
1569
+ 'z1d',
1570
+ 'z3'
1571
+ ]
1572
+ },
1573
+ description: 'Allowed values for `cfke.io/instance-family`.'
1574
+ },
1575
+ 'topology.kubernetes.io/region': {
1576
+ type: 'array',
1577
+ items: {
1578
+ type: 'string',
1579
+ enum: [
1580
+ 'africa-south1',
1581
+ 'ap-northeast-1',
1582
+ 'ap-northeast-2',
1583
+ 'ap-northeast-3',
1584
+ 'ap-south-1',
1585
+ 'ap-southeast-1',
1586
+ 'ap-southeast-2',
1587
+ 'ash',
1588
+ 'asia-east1',
1589
+ 'asia-east2',
1590
+ 'asia-northeast1',
1591
+ 'asia-northeast2',
1592
+ 'asia-northeast3',
1593
+ 'asia-south1',
1594
+ 'asia-south2',
1595
+ 'asia-southeast1',
1596
+ 'asia-southeast2',
1597
+ 'australia-southeast1',
1598
+ 'australia-southeast2',
1599
+ 'ca-central-1',
1600
+ 'eu-central-1',
1601
+ 'eu-central-2',
1602
+ 'eu-north-1',
1603
+ 'eu-west-1',
1604
+ 'eu-west-2',
1605
+ 'eu-west-3',
1606
+ 'europe-central2',
1607
+ 'europe-north1',
1608
+ 'europe-southwest1',
1609
+ 'europe-west1',
1610
+ 'europe-west10',
1611
+ 'europe-west12',
1612
+ 'europe-west2',
1613
+ 'europe-west3',
1614
+ 'europe-west4',
1615
+ 'europe-west6',
1616
+ 'europe-west8',
1617
+ 'europe-west9',
1618
+ 'fsn1',
1619
+ 'hel1',
1620
+ 'hil',
1621
+ 'me-central1',
1622
+ 'me-central2',
1623
+ 'me-west1',
1624
+ 'nbg1',
1625
+ 'northamerica-northeast1',
1626
+ 'northamerica-northeast2',
1627
+ 'sa-east-1',
1628
+ 'sin',
1629
+ 'southamerica-east1',
1630
+ 'southamerica-west1',
1631
+ 'us-central1',
1632
+ 'us-east-1',
1633
+ 'us-east-2',
1634
+ 'us-east1',
1635
+ 'us-east4',
1636
+ 'us-east5',
1637
+ 'us-south1',
1638
+ 'us-west-1',
1639
+ 'us-west-2',
1640
+ 'us-west1',
1641
+ 'us-west2',
1642
+ 'us-west3',
1643
+ 'us-west4'
1644
+ ]
1645
+ },
1646
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1647
+ }
1648
+ },
1649
+ 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.'
1651
+ },
1652
+ scalingProfile: {
1653
+ type: 'string',
1654
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1655
+ default: 'conservative',
1656
+ example: 'conservative',
1657
+ enum: [
1658
+ 'aggressive',
1659
+ 'conservative'
1660
+ ]
1661
+ },
898
1662
  id: {
899
1663
  type: 'string',
900
1664
  maxLength: 63,
@@ -902,10 +1666,34 @@ export const FleetSchema = {
902
1666
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
903
1667
  description: 'Unique identifier of the kubernetes fleet.',
904
1668
  example: 'new-clouds-fleet'
1669
+ },
1670
+ ready: {
1671
+ type: 'boolean',
1672
+ description: 'Indicates whether the fleet configuration is healthy.',
1673
+ example: true
1674
+ },
1675
+ status_message: {
1676
+ type: 'string',
1677
+ description: 'Human-readable reason the fleet is not ready. Present only when `ready` is false.',
1678
+ example: 'Invalid provider permissions.'
1679
+ },
1680
+ created_at: {
1681
+ type: 'string',
1682
+ description: 'Creation date and time of the fleet.',
1683
+ example: '2024-09-12T09:11:27Z'
1684
+ },
1685
+ updated_at: {
1686
+ type: 'string',
1687
+ description: 'Date and time the fleet was last updated.',
1688
+ example: '2024-09-12T09:11:27Z'
905
1689
  }
906
1690
  },
907
1691
  required: [
908
- 'id'
1692
+ 'scalingProfile',
1693
+ 'id',
1694
+ 'ready',
1695
+ 'created_at',
1696
+ 'updated_at'
909
1697
  ],
910
1698
  additionalProperties: false
911
1699
  };
@@ -916,15 +1704,12 @@ export const FleetUpdateInputSchema = {
916
1704
  type: 'object',
917
1705
  properties: {
918
1706
  cpu: {
919
- type: 'number',
920
- format: 'float',
1707
+ type: 'integer',
921
1708
  minimum: 0,
922
- description: 'CPU limit in cores.'
1709
+ maximum: 100000,
1710
+ description: 'CPU limit in cores. Maximum 100,000.'
923
1711
  }
924
1712
  },
925
- required: [
926
- 'cpu'
927
- ],
928
1713
  additionalProperties: false,
929
1714
  description: 'Limits define a set of bounds for provisioning capacity.'
930
1715
  },
@@ -932,16 +1717,17 @@ export const FleetUpdateInputSchema = {
932
1717
  type: 'object',
933
1718
  properties: {
934
1719
  enabled: {
935
- type: 'boolean',
936
- default: true
1720
+ type: 'boolean'
937
1721
  },
938
1722
  project: {
939
1723
  type: 'string',
940
- description: 'Project GCP Project id to deploy instances into'
1724
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1725
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1726
+ example: 'my-cloudfleet-project'
941
1727
  }
942
1728
  },
943
1729
  required: [
944
- 'project'
1730
+ 'enabled'
945
1731
  ],
946
1732
  additionalProperties: false
947
1733
  },
@@ -949,16 +1735,18 @@ export const FleetUpdateInputSchema = {
949
1735
  type: 'object',
950
1736
  properties: {
951
1737
  enabled: {
952
- type: 'boolean',
953
- default: true
1738
+ type: 'boolean'
954
1739
  },
955
1740
  apiKey: {
956
1741
  type: 'string',
957
- description: 'Hetzner Cloud API key with read / write access'
1742
+ maxLength: 64,
1743
+ 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.'
958
1746
  }
959
1747
  },
960
1748
  required: [
961
- 'apiKey'
1749
+ 'enabled'
962
1750
  ],
963
1751
  additionalProperties: false
964
1752
  },
@@ -966,20 +1754,329 @@ export const FleetUpdateInputSchema = {
966
1754
  type: 'object',
967
1755
  properties: {
968
1756
  enabled: {
969
- type: 'boolean',
970
- default: true
1757
+ type: 'boolean'
971
1758
  },
972
1759
  controllerRoleArn: {
973
1760
  type: 'string',
974
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1761
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1762
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1763
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
975
1764
  }
976
1765
  },
977
1766
  required: [
978
- 'controllerRoleArn'
1767
+ 'enabled'
979
1768
  ],
980
1769
  additionalProperties: false
1770
+ },
1771
+ constraints: {
1772
+ type: 'object',
1773
+ properties: {
1774
+ 'karpenter.sh/capacity-type': {
1775
+ type: 'array',
1776
+ items: {
1777
+ type: 'string',
1778
+ enum: [
1779
+ 'on-demand',
1780
+ 'spot'
1781
+ ]
1782
+ },
1783
+ minItems: 1,
1784
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
1785
+ },
1786
+ 'kubernetes.io/arch': {
1787
+ type: 'array',
1788
+ items: {
1789
+ type: 'string',
1790
+ enum: [
1791
+ 'amd64',
1792
+ 'arm64'
1793
+ ]
1794
+ },
1795
+ minItems: 1,
1796
+ description: 'Allowed values for `kubernetes.io/arch`.'
1797
+ },
1798
+ 'cfke.io/instance-family': {
1799
+ type: 'array',
1800
+ items: {
1801
+ type: 'string',
1802
+ enum: [
1803
+ 'a1',
1804
+ 'a2',
1805
+ 'a3',
1806
+ 'a4',
1807
+ 'c1',
1808
+ 'c2',
1809
+ 'c2d',
1810
+ 'c3',
1811
+ 'c3d',
1812
+ 'c4',
1813
+ 'c4a',
1814
+ 'c4d',
1815
+ 'c5',
1816
+ 'c5a',
1817
+ 'c5ad',
1818
+ 'c5d',
1819
+ 'c5n',
1820
+ 'c6a',
1821
+ 'c6g',
1822
+ 'c6gd',
1823
+ 'c6gn',
1824
+ 'c6i',
1825
+ 'c6id',
1826
+ 'c6in',
1827
+ 'c7a',
1828
+ 'c7g',
1829
+ 'c7gd',
1830
+ 'c7gn',
1831
+ 'c7i',
1832
+ 'c7i-flex',
1833
+ 'c8g',
1834
+ 'c8gd',
1835
+ 'cax',
1836
+ 'ccx',
1837
+ 'cpx',
1838
+ 'cx',
1839
+ 'd2',
1840
+ 'd3',
1841
+ 'd3en',
1842
+ 'dl1',
1843
+ 'dl2q',
1844
+ 'e2',
1845
+ 'f1',
1846
+ 'f2',
1847
+ 'g1',
1848
+ 'g2',
1849
+ 'g4ad',
1850
+ 'g4dn',
1851
+ 'g5',
1852
+ 'g5g',
1853
+ 'g6',
1854
+ 'g6e',
1855
+ 'gr6',
1856
+ 'h1',
1857
+ 'h3',
1858
+ 'hpc6a',
1859
+ 'hpc6id',
1860
+ 'hpc7a',
1861
+ 'hpc7g',
1862
+ 'i2',
1863
+ 'i3',
1864
+ 'i3en',
1865
+ 'i4g',
1866
+ 'i4i',
1867
+ 'i7i',
1868
+ 'i7ie',
1869
+ 'i8g',
1870
+ 'im4gn',
1871
+ 'inf1',
1872
+ 'inf2',
1873
+ 'is4gen',
1874
+ 'm1',
1875
+ 'm2',
1876
+ 'm3',
1877
+ 'm4',
1878
+ 'm5',
1879
+ 'm5a',
1880
+ 'm5ad',
1881
+ 'm5d',
1882
+ 'm5dn',
1883
+ 'm5n',
1884
+ 'm5zn',
1885
+ 'm6a',
1886
+ 'm6g',
1887
+ 'm6gd',
1888
+ 'm6i',
1889
+ 'm6id',
1890
+ 'm6idn',
1891
+ 'm6in',
1892
+ 'm7a',
1893
+ 'm7g',
1894
+ 'm7gd',
1895
+ 'm7i',
1896
+ 'm7i-flex',
1897
+ 'm8g',
1898
+ 'm8gd',
1899
+ 'n1',
1900
+ 'n2',
1901
+ 'n2d',
1902
+ 'n4',
1903
+ 'p3',
1904
+ 'p3dn',
1905
+ 'p4d',
1906
+ 'p4de',
1907
+ 'p5',
1908
+ 'p5e',
1909
+ 'p5en',
1910
+ 'p6-b200',
1911
+ 'r3',
1912
+ 'r4',
1913
+ 'r5',
1914
+ 'r5a',
1915
+ 'r5ad',
1916
+ 'r5b',
1917
+ 'r5d',
1918
+ 'r5dn',
1919
+ 'r5n',
1920
+ 'r6a',
1921
+ 'r6g',
1922
+ 'r6gd',
1923
+ 'r6i',
1924
+ 'r6id',
1925
+ 'r6idn',
1926
+ 'r6in',
1927
+ 'r7a',
1928
+ 'r7g',
1929
+ 'r7gd',
1930
+ 'r7i',
1931
+ 'r7iz',
1932
+ 'r8g',
1933
+ 'r8gd',
1934
+ 't2',
1935
+ 't2a',
1936
+ 't2d',
1937
+ 't3',
1938
+ 't3a',
1939
+ 't4g',
1940
+ 'trn1',
1941
+ 'trn1n',
1942
+ 'u-3tb1',
1943
+ 'u-6tb1',
1944
+ 'u7i-12tb',
1945
+ 'u7i-6tb',
1946
+ 'u7i-8tb',
1947
+ 'u7in-16tb',
1948
+ 'u7in-24tb',
1949
+ 'u7in-32tb',
1950
+ 'vt1',
1951
+ 'x1',
1952
+ 'x1e',
1953
+ 'x2gd',
1954
+ 'x2idn',
1955
+ 'x2iedn',
1956
+ 'x2iezn',
1957
+ 'x4',
1958
+ 'x8g',
1959
+ 'z1d',
1960
+ 'z3'
1961
+ ]
1962
+ },
1963
+ description: 'Allowed values for `cfke.io/instance-family`.'
1964
+ },
1965
+ 'topology.kubernetes.io/region': {
1966
+ type: 'array',
1967
+ items: {
1968
+ type: 'string',
1969
+ enum: [
1970
+ 'africa-south1',
1971
+ 'ap-northeast-1',
1972
+ 'ap-northeast-2',
1973
+ 'ap-northeast-3',
1974
+ 'ap-south-1',
1975
+ 'ap-southeast-1',
1976
+ 'ap-southeast-2',
1977
+ 'ash',
1978
+ 'asia-east1',
1979
+ 'asia-east2',
1980
+ 'asia-northeast1',
1981
+ 'asia-northeast2',
1982
+ 'asia-northeast3',
1983
+ 'asia-south1',
1984
+ 'asia-south2',
1985
+ 'asia-southeast1',
1986
+ 'asia-southeast2',
1987
+ 'australia-southeast1',
1988
+ 'australia-southeast2',
1989
+ 'ca-central-1',
1990
+ 'eu-central-1',
1991
+ 'eu-central-2',
1992
+ 'eu-north-1',
1993
+ 'eu-west-1',
1994
+ 'eu-west-2',
1995
+ 'eu-west-3',
1996
+ 'europe-central2',
1997
+ 'europe-north1',
1998
+ 'europe-southwest1',
1999
+ 'europe-west1',
2000
+ 'europe-west10',
2001
+ 'europe-west12',
2002
+ 'europe-west2',
2003
+ 'europe-west3',
2004
+ 'europe-west4',
2005
+ 'europe-west6',
2006
+ 'europe-west8',
2007
+ 'europe-west9',
2008
+ 'fsn1',
2009
+ 'hel1',
2010
+ 'hil',
2011
+ 'me-central1',
2012
+ 'me-central2',
2013
+ 'me-west1',
2014
+ 'nbg1',
2015
+ 'northamerica-northeast1',
2016
+ 'northamerica-northeast2',
2017
+ 'sa-east-1',
2018
+ 'sin',
2019
+ 'southamerica-east1',
2020
+ 'southamerica-west1',
2021
+ 'us-central1',
2022
+ 'us-east-1',
2023
+ 'us-east-2',
2024
+ 'us-east1',
2025
+ 'us-east4',
2026
+ 'us-east5',
2027
+ 'us-south1',
2028
+ 'us-west-1',
2029
+ 'us-west-2',
2030
+ 'us-west1',
2031
+ 'us-west2',
2032
+ 'us-west3',
2033
+ 'us-west4'
2034
+ ]
2035
+ },
2036
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
2037
+ }
2038
+ },
2039
+ 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.'
2041
+ },
2042
+ scalingProfile: {
2043
+ type: 'string',
2044
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
2045
+ example: 'conservative',
2046
+ enum: [
2047
+ 'aggressive',
2048
+ 'conservative'
2049
+ ]
981
2050
  }
982
2051
  },
2052
+ required: [
2053
+ 'scalingProfile'
2054
+ ],
2055
+ additionalProperties: false
2056
+ };
2057
+ export const InviteCreateInputSchema = {
2058
+ type: 'object',
2059
+ properties: {
2060
+ email: {
2061
+ type: 'string',
2062
+ format: 'email',
2063
+ description: 'Email address of the user to invite.',
2064
+ example: 'email@example.com'
2065
+ },
2066
+ role: {
2067
+ type: 'string',
2068
+ description: 'Role the invited user will be assigned on redemption. Can be \'Administrator\' or \'User\'.',
2069
+ default: 'User',
2070
+ example: 'User',
2071
+ enum: [
2072
+ 'Administrator',
2073
+ 'User'
2074
+ ]
2075
+ }
2076
+ },
2077
+ required: [
2078
+ 'email'
2079
+ ],
983
2080
  additionalProperties: false
984
2081
  };
985
2082
  export const InviteSchema = {
@@ -1012,6 +2109,16 @@ export const InviteSchema = {
1012
2109
  type: 'string',
1013
2110
  description: 'Generated unique invite code.',
1014
2111
  example: '7kUZnH7nnKUFfvc4NK2KQF'
2112
+ },
2113
+ role: {
2114
+ type: 'string',
2115
+ description: 'Role the invited user will be assigned on redemption. Can be \'Administrator\' or \'User\'.',
2116
+ default: 'User',
2117
+ example: 'User',
2118
+ enum: [
2119
+ 'Administrator',
2120
+ 'User'
2121
+ ]
1015
2122
  }
1016
2123
  },
1017
2124
  required: [
@@ -1232,6 +2339,15 @@ export const MarketplaceListingSchema = {
1232
2339
  export const OrganizationCreateInputSchema = {
1233
2340
  type: 'object',
1234
2341
  properties: {
2342
+ type: {
2343
+ type: 'string',
2344
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2345
+ example: 'business',
2346
+ enum: [
2347
+ 'business',
2348
+ 'personal'
2349
+ ]
2350
+ },
1235
2351
  email: {
1236
2352
  type: 'string',
1237
2353
  format: 'email',
@@ -1240,11 +2356,13 @@ export const OrganizationCreateInputSchema = {
1240
2356
  },
1241
2357
  first_name: {
1242
2358
  type: 'string',
2359
+ minLength: 1,
1243
2360
  description: 'First name of the billing contact person.',
1244
2361
  example: 'John'
1245
2362
  },
1246
2363
  last_name: {
1247
2364
  type: 'string',
2365
+ minLength: 1,
1248
2366
  description: 'Last name of the billing contact person.',
1249
2367
  example: 'Doe'
1250
2368
  },
@@ -1263,6 +2381,7 @@ export const OrganizationCreateInputSchema = {
1263
2381
  }
1264
2382
  },
1265
2383
  required: [
2384
+ 'type',
1266
2385
  'email',
1267
2386
  'first_name',
1268
2387
  'last_name',
@@ -1271,6 +2390,20 @@ export const OrganizationCreateInputSchema = {
1271
2390
  ],
1272
2391
  additionalProperties: false
1273
2392
  };
2393
+ export const OrganizationCreateOutputSchema = {
2394
+ type: 'object',
2395
+ properties: {
2396
+ id: {
2397
+ type: 'string',
2398
+ description: 'Unique identifier of the newly created organization. Generated by the API and safe to use for client-side tracking immediately.',
2399
+ example: 'organization-id'
2400
+ }
2401
+ },
2402
+ required: [
2403
+ 'id'
2404
+ ],
2405
+ additionalProperties: false
2406
+ };
1274
2407
  export const OrganizationSchema = {
1275
2408
  type: 'object',
1276
2409
  properties: {
@@ -1287,6 +2420,15 @@ export const OrganizationSchema = {
1287
2420
  description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
1288
2421
  example: 'ACME Corp.'
1289
2422
  },
2423
+ type: {
2424
+ type: 'string',
2425
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2426
+ example: 'business',
2427
+ enum: [
2428
+ 'business',
2429
+ 'personal'
2430
+ ]
2431
+ },
1290
2432
  date_created: {
1291
2433
  type: 'string',
1292
2434
  format: 'date-time',
@@ -1337,7 +2479,7 @@ export const OrganizationSchema = {
1337
2479
  type: 'array',
1338
2480
  items: {
1339
2481
  type: 'string',
1340
- example: 'northamerica-central-1'
2482
+ example: 'northamerica-central-1a'
1341
2483
  },
1342
2484
  minItems: 1,
1343
2485
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -1396,13 +2538,25 @@ export const OrganizationSchema = {
1396
2538
  'closed',
1397
2539
  'suspended'
1398
2540
  ]
2541
+ },
2542
+ verification: {
2543
+ type: 'string',
2544
+ description: 'Verification status of the organization, which determines the assigned quota. `none` when billing information is incomplete, `submitted` when billing information is complete but the organization is not yet verified, `verified` when the organization is verified.',
2545
+ example: 'verified',
2546
+ enum: [
2547
+ 'none',
2548
+ 'submitted',
2549
+ 'verified'
2550
+ ]
1399
2551
  }
1400
2552
  },
1401
2553
  required: [
1402
2554
  'id',
2555
+ 'type',
1403
2556
  'date_created',
1404
2557
  'quota',
1405
- 'status'
2558
+ 'status',
2559
+ 'verification'
1406
2560
  ],
1407
2561
  additionalProperties: false
1408
2562
  };
@@ -1411,28 +2565,23 @@ export const PaymentMethodSchema = {
1411
2565
  properties: {
1412
2566
  id: {
1413
2567
  type: 'string',
1414
- format: 'uuid',
1415
- description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
1416
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
1417
- },
1418
- setup: {
1419
- type: 'boolean',
1420
- description: 'Whether organization payment method was set up and ready to use for payments.',
1421
- example: true
2568
+ description: 'Payment method identifier. Stripe payment method id for cards/SEPA; the constant `bank_transfer` for the invoice/bank-transfer method. Used to set as default or delete the payment method.',
2569
+ example: 'pm_1MtwBwLkdIwHu7ix28a3tqPa'
1422
2570
  },
1423
2571
  type: {
1424
2572
  type: 'string',
1425
- nullable: true,
1426
- description: 'Payment method type type. Only `card` payments supported at the moment.',
2573
+ description: 'Payment method type. `card`, `sepa_debit` for SEPA Direct Debit (business accounts only), or `bank_transfer` for paying invoices by bank transfer.',
1427
2574
  example: 'card',
1428
2575
  enum: [
1429
- 'card'
2576
+ 'card',
2577
+ 'sepa_debit',
2578
+ 'bank_transfer'
1430
2579
  ]
1431
2580
  },
1432
2581
  last4: {
1433
2582
  type: 'string',
1434
2583
  nullable: true,
1435
- description: 'Last 4 digits of the payment card number.',
2584
+ description: 'Last 4 digits of the payment card number, of the bank account (IBAN) for SEPA Direct Debit, or of the destination IBAN for bank transfer.',
1436
2585
  example: '4242'
1437
2586
  },
1438
2587
  exp_month: {
@@ -1440,42 +2589,56 @@ export const PaymentMethodSchema = {
1440
2589
  minimum: 1,
1441
2590
  maximum: 12,
1442
2591
  nullable: true,
1443
- description: 'Two-digit number representing the card\'s expiration month.',
1444
- example: '12'
2592
+ description: 'Two-digit number representing the card\'s expiration month. Null for SEPA Direct Debit and bank transfer.',
2593
+ example: 12
1445
2594
  },
1446
2595
  exp_year: {
1447
2596
  type: 'integer',
1448
- minimum: 2024,
1449
2597
  nullable: true,
1450
- description: 'Four-digit number representing the card\'s expiration year.',
1451
- example: '2028'
2598
+ description: 'Four-digit number representing the card\'s expiration year. May be in the past for an expired card still on file. Null for SEPA Direct Debit and bank transfer.',
2599
+ example: 2028
1452
2600
  },
1453
2601
  brand: {
1454
2602
  type: 'string',
1455
2603
  nullable: true,
1456
- description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
1457
- example: 'visa',
1458
- enum: [
1459
- 'amex',
1460
- 'diners',
1461
- 'discover',
1462
- 'eftpos_au',
1463
- 'jcb',
1464
- 'mastercard',
1465
- 'unionpay',
1466
- 'visa',
1467
- 'unknown'
1468
- ]
2604
+ description: 'Payment card brand as reported by Stripe, e.g. `visa`, `mastercard`, `amex`, `cartes_bancaires`, or `unknown`. Null for SEPA Direct Debit and bank transfer.',
2605
+ example: 'visa'
2606
+ },
2607
+ iban: {
2608
+ type: 'string',
2609
+ nullable: true,
2610
+ description: 'Full destination IBAN to send bank transfers to. Set only for `bank_transfer`; null otherwise. This is Cloudfleet\'s virtual receiving account, shown in full so the customer can pay into it.',
2611
+ example: 'DE11243015658023127510'
2612
+ },
2613
+ bic: {
2614
+ type: 'string',
2615
+ nullable: true,
2616
+ description: 'BIC/SWIFT of the destination bank for bank transfers. Set only for `bank_transfer`; null otherwise.',
2617
+ example: 'SOGEDEFFXXX'
2618
+ },
2619
+ account_holder_name: {
2620
+ type: 'string',
2621
+ nullable: true,
2622
+ description: 'Account holder name of the destination bank account for bank transfers. Set only for `bank_transfer`; null otherwise.',
2623
+ example: 'Cloudfleet GmbH'
2624
+ },
2625
+ is_default: {
2626
+ type: 'boolean',
2627
+ description: 'Whether this payment method is the default used for invoices and active subscriptions. Always false for `bank_transfer` (it cannot be a Stripe default payment method).',
2628
+ example: true
1469
2629
  }
1470
2630
  },
1471
2631
  required: [
1472
2632
  'id',
1473
- 'setup',
1474
2633
  'type',
1475
2634
  'last4',
1476
2635
  'exp_month',
1477
2636
  'exp_year',
1478
- 'brand'
2637
+ 'brand',
2638
+ 'iban',
2639
+ 'bic',
2640
+ 'account_holder_name',
2641
+ 'is_default'
1479
2642
  ],
1480
2643
  additionalProperties: false
1481
2644
  };
@@ -1523,7 +2686,7 @@ export const PlatformQuotaSchema = {
1523
2686
  type: 'array',
1524
2687
  items: {
1525
2688
  type: 'string',
1526
- example: 'northamerica-central-1'
2689
+ example: 'northamerica-central-1a'
1527
2690
  },
1528
2691
  minItems: 1,
1529
2692
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2612,24 +3775,6 @@ export const UserCreateInputSchema = {
2612
3775
  type: 'string',
2613
3776
  minLength: 8,
2614
3777
  description: 'User password. Must be at least 8 characters long.'
2615
- },
2616
- status: {
2617
- type: 'string',
2618
- description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
2619
- example: 'active',
2620
- enum: [
2621
- 'active',
2622
- 'inactive'
2623
- ]
2624
- },
2625
- role: {
2626
- type: 'string',
2627
- description: 'User role. Can be \'Administrator\', \'User\'.',
2628
- example: 'User',
2629
- enum: [
2630
- 'Administrator',
2631
- 'User'
2632
- ]
2633
3778
  }
2634
3779
  },
2635
3780
  required: [