@cloudfleet/sdk 0.0.1-c144916 → 0.0.1-c229303

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,7 +1,65 @@
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: {
54
+ type: {
55
+ type: 'string',
56
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
57
+ example: 'business',
58
+ enum: [
59
+ 'business',
60
+ 'personal'
61
+ ]
62
+ },
5
63
  company: {
6
64
  type: 'string',
7
65
  maxLength: 120,
@@ -207,6 +265,7 @@ export const BillingContactSchema = {
207
265
  }
208
266
  },
209
267
  required: [
268
+ 'type',
210
269
  'email',
211
270
  'individual_name'
212
271
  ],
@@ -358,24 +417,8 @@ export const ChartSchema = {
358
417
  },
359
418
  status: {
360
419
  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
- ]
420
+ description: 'Status of the chart deployment (Flux HelmRelease Ready condition reason, e.g. InstallSucceeded, UpgradeFailed, Progressing).',
421
+ example: 'InstallSucceeded'
379
422
  },
380
423
  version_current: {
381
424
  type: 'string',
@@ -446,22 +489,12 @@ export const ClusterCreateInputSchema = {
446
489
  tier: {
447
490
  type: 'string',
448
491
  description: 'Tier of the cluster.',
492
+ default: 'basic',
449
493
  example: 'pro',
450
494
  enum: [
451
495
  'basic',
452
- 'pro'
453
- ]
454
- },
455
- region: {
456
- 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'
496
+ 'pro',
497
+ 'enterprise'
465
498
  ]
466
499
  },
467
500
  version_channel: {
@@ -469,20 +502,105 @@ export const ClusterCreateInputSchema = {
469
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-]+)*))?$',
470
503
  description: 'Version of the kubernetes cluster.',
471
504
  default: '1.x.x-cfke.x',
472
- 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',
473
512
  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'
513
+ 'rapid',
514
+ 'stable',
515
+ 'extended'
478
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
+ }
479
596
  }
480
597
  },
481
598
  required: [
482
599
  'name',
483
- 'tier'
600
+ 'region'
484
601
  ],
485
- 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.'
486
604
  };
487
605
  export const ClusterJoinInformationSchema = {
488
606
  type: 'object',
@@ -503,11 +621,21 @@ export const ClusterJoinInformationSchema = {
503
621
  description: 'Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.',
504
622
  example: '10.96.0.10'
505
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
+ },
506
629
  auth_key: {
507
630
  type: 'string',
508
631
  description: 'Authentication key for the cluster.',
509
632
  example: 'tskey-auth-kBV8wr1dk911CNTRL-...'
510
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
+ },
511
639
  bootstrap_token: {
512
640
  type: 'string',
513
641
  description: 'Bootstrap token for the cluster.',
@@ -578,7 +706,9 @@ export const ClusterJoinInformationSchema = {
578
706
  'certificate_authority',
579
707
  'endpoint',
580
708
  'cluster_dns',
709
+ 'pod_cidr',
581
710
  'auth_key',
711
+ 'login_server',
582
712
  'bootstrap_token',
583
713
  'versions',
584
714
  'third_party_api_access_config'
@@ -599,24 +729,123 @@ export const ClusterSchema = {
599
729
  tier: {
600
730
  type: 'string',
601
731
  description: 'Tier of the cluster.',
732
+ default: 'basic',
602
733
  example: 'pro',
603
734
  enum: [
604
735
  'basic',
605
- 'pro'
736
+ 'pro',
737
+ 'enterprise'
606
738
  ]
607
739
  },
608
- 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: {
609
748
  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',
749
+ description: 'Release channel for the cluster\'s control plane.',
750
+ default: 'rapid',
751
+ example: 'rapid',
613
752
  enum: [
614
- 'staging-1a',
615
- 'northamerica-central-1',
616
- 'europe-central-1a',
617
- 'northamerica-central-1a'
753
+ 'rapid',
754
+ 'stable',
755
+ 'extended'
618
756
  ]
619
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
+ },
620
849
  id: {
621
850
  type: 'string',
622
851
  format: 'uuid',
@@ -625,16 +854,13 @@ export const ClusterSchema = {
625
854
  },
626
855
  status: {
627
856
  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',
857
+ description: 'Status of the cluster.',
858
+ example: 'deployed',
630
859
  enum: [
631
- 'active',
632
- 'disabled',
633
- 'deleted',
634
860
  'creating',
635
861
  'deployed',
636
- 'failed',
637
- 'updating'
862
+ 'updating',
863
+ 'disabled'
638
864
  ]
639
865
  },
640
866
  endpoint: {
@@ -642,8 +868,8 @@ export const ClusterSchema = {
642
868
  {
643
869
  type: 'string',
644
870
  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'
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'
647
873
  },
648
874
  {
649
875
  type: 'string',
@@ -658,7 +884,7 @@ export const ClusterSchema = {
658
884
  {
659
885
  type: 'string',
660
886
  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.',
887
+ description: 'Deprecated alias of `endpoint`; retained for backward compatibility.',
662
888
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
663
889
  },
664
890
  {
@@ -693,21 +919,22 @@ export const ClusterSchema = {
693
919
  type: 'boolean',
694
920
  description: 'Indicates if the cluster is ready to be used.',
695
921
  example: true
696
- },
697
- version_channel: {
698
- type: 'string',
699
- pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
700
- description: 'Version of the kubernetes cluster.',
701
- example: '1.x.x-cfke.x'
702
922
  }
703
923
  },
704
924
  required: [
705
925
  'name',
706
926
  'tier',
927
+ 'version_channel',
928
+ 'release_channel',
929
+ 'features',
930
+ 'region',
931
+ 'networking',
707
932
  'id',
708
- 'status'
933
+ 'status',
934
+ 'ready'
709
935
  ],
710
- 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.'
711
938
  };
712
939
  export const ClusterUpdateInputSchema = {
713
940
  type: 'object',
@@ -723,23 +950,74 @@ export const ClusterUpdateInputSchema = {
723
950
  tier: {
724
951
  type: 'string',
725
952
  description: 'Tier of the cluster.',
953
+ default: 'basic',
726
954
  example: 'pro',
727
955
  enum: [
728
956
  'basic',
729
- 'pro'
957
+ 'pro',
958
+ 'enterprise'
730
959
  ]
731
960
  },
732
961
  version_channel: {
733
962
  type: 'string',
734
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-]+)*))?$',
735
964
  description: 'Version of the kubernetes cluster.',
965
+ default: '1.x.x-cfke.x',
736
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
+ }
737
1014
  }
738
1015
  },
739
1016
  required: [
740
- 'tier'
1017
+ 'name'
741
1018
  ],
742
- 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.'
743
1021
  };
744
1022
  export const FleetCreateInputSchema = {
745
1023
  type: 'object',
@@ -785,8 +1063,8 @@ export const FleetCreateInputSchema = {
785
1063
  type: 'string',
786
1064
  maxLength: 64,
787
1065
  minLength: 64,
788
- pattern: '^[A-Za-z0-9]+$',
789
- 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.'
790
1068
  }
791
1069
  },
792
1070
  required: [
@@ -824,7 +1102,12 @@ export const FleetCreateInputSchema = {
824
1102
  'spot'
825
1103
  ]
826
1104
  },
827
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1105
+ minItems: 1,
1106
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1107
+ default: [
1108
+ 'on-demand',
1109
+ 'spot'
1110
+ ]
828
1111
  },
829
1112
  'kubernetes.io/arch': {
830
1113
  type: 'array',
@@ -835,7 +1118,11 @@ export const FleetCreateInputSchema = {
835
1118
  'arm64'
836
1119
  ]
837
1120
  },
838
- description: 'Allowed values for `kubernetes.io/arch`.'
1121
+ minItems: 1,
1122
+ description: 'Allowed values for `kubernetes.io/arch`.',
1123
+ default: [
1124
+ 'amd64'
1125
+ ]
839
1126
  },
840
1127
  'cfke.io/instance-family': {
841
1128
  type: 'array',
@@ -1002,7 +1289,8 @@ export const FleetCreateInputSchema = {
1002
1289
  'z3'
1003
1290
  ]
1004
1291
  },
1005
- description: 'Allowed values for `cfke.io/instance-family`.'
1292
+ description: 'Allowed values for `cfke.io/instance-family`.',
1293
+ default: []
1006
1294
  },
1007
1295
  'topology.kubernetes.io/region': {
1008
1296
  type: 'array',
@@ -1075,15 +1363,27 @@ export const FleetCreateInputSchema = {
1075
1363
  'us-west4'
1076
1364
  ]
1077
1365
  },
1078
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1366
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1367
+ default: []
1079
1368
  }
1080
1369
  },
1081
1370
  additionalProperties: false,
1082
- 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
+ }
1083
1383
  },
1084
1384
  scalingProfile: {
1085
1385
  type: 'string',
1086
- 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`).',
1087
1387
  default: 'conservative',
1088
1388
  example: 'conservative',
1089
1389
  enum: [
@@ -1103,7 +1403,8 @@ export const FleetCreateInputSchema = {
1103
1403
  required: [
1104
1404
  'id'
1105
1405
  ],
1106
- 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.'
1107
1408
  };
1108
1409
  export const FleetSchema = {
1109
1410
  type: 'object',
@@ -1186,7 +1487,12 @@ export const FleetSchema = {
1186
1487
  'spot'
1187
1488
  ]
1188
1489
  },
1189
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1490
+ minItems: 1,
1491
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1492
+ default: [
1493
+ 'on-demand',
1494
+ 'spot'
1495
+ ]
1190
1496
  },
1191
1497
  'kubernetes.io/arch': {
1192
1498
  type: 'array',
@@ -1197,7 +1503,11 @@ export const FleetSchema = {
1197
1503
  'arm64'
1198
1504
  ]
1199
1505
  },
1200
- description: 'Allowed values for `kubernetes.io/arch`.'
1506
+ minItems: 1,
1507
+ description: 'Allowed values for `kubernetes.io/arch`.',
1508
+ default: [
1509
+ 'amd64'
1510
+ ]
1201
1511
  },
1202
1512
  'cfke.io/instance-family': {
1203
1513
  type: 'array',
@@ -1364,7 +1674,8 @@ export const FleetSchema = {
1364
1674
  'z3'
1365
1675
  ]
1366
1676
  },
1367
- description: 'Allowed values for `cfke.io/instance-family`.'
1677
+ description: 'Allowed values for `cfke.io/instance-family`.',
1678
+ default: []
1368
1679
  },
1369
1680
  'topology.kubernetes.io/region': {
1370
1681
  type: 'array',
@@ -1437,15 +1748,31 @@ export const FleetSchema = {
1437
1748
  'us-west4'
1438
1749
  ]
1439
1750
  },
1440
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1751
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1752
+ default: []
1441
1753
  }
1442
1754
  },
1755
+ required: [
1756
+ 'karpenter.sh/capacity-type',
1757
+ 'kubernetes.io/arch'
1758
+ ],
1443
1759
  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.'
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
+ }
1445
1772
  },
1446
1773
  scalingProfile: {
1447
1774
  type: 'string',
1448
- 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`).',
1449
1776
  default: 'conservative',
1450
1777
  example: 'conservative',
1451
1778
  enum: [
@@ -1460,13 +1787,38 @@ export const FleetSchema = {
1460
1787
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1461
1788
  description: 'Unique identifier of the kubernetes fleet.',
1462
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'
1463
1810
  }
1464
1811
  },
1465
1812
  required: [
1813
+ 'constraints',
1466
1814
  'scalingProfile',
1467
- 'id'
1815
+ 'id',
1816
+ 'ready',
1817
+ 'created_at',
1818
+ 'updated_at'
1468
1819
  ],
1469
- 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.'
1470
1822
  };
1471
1823
  export const FleetUpdateInputSchema = {
1472
1824
  type: 'object',
@@ -1512,8 +1864,8 @@ export const FleetUpdateInputSchema = {
1512
1864
  type: 'string',
1513
1865
  maxLength: 64,
1514
1866
  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.'
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.'
1517
1869
  }
1518
1870
  },
1519
1871
  required: [
@@ -1551,7 +1903,12 @@ export const FleetUpdateInputSchema = {
1551
1903
  'spot'
1552
1904
  ]
1553
1905
  },
1554
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1906
+ minItems: 1,
1907
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1908
+ default: [
1909
+ 'on-demand',
1910
+ 'spot'
1911
+ ]
1555
1912
  },
1556
1913
  'kubernetes.io/arch': {
1557
1914
  type: 'array',
@@ -1562,7 +1919,11 @@ export const FleetUpdateInputSchema = {
1562
1919
  'arm64'
1563
1920
  ]
1564
1921
  },
1565
- description: 'Allowed values for `kubernetes.io/arch`.'
1922
+ minItems: 1,
1923
+ description: 'Allowed values for `kubernetes.io/arch`.',
1924
+ default: [
1925
+ 'amd64'
1926
+ ]
1566
1927
  },
1567
1928
  'cfke.io/instance-family': {
1568
1929
  type: 'array',
@@ -1729,7 +2090,8 @@ export const FleetUpdateInputSchema = {
1729
2090
  'z3'
1730
2091
  ]
1731
2092
  },
1732
- description: 'Allowed values for `cfke.io/instance-family`.'
2093
+ description: 'Allowed values for `cfke.io/instance-family`.',
2094
+ default: []
1733
2095
  },
1734
2096
  'topology.kubernetes.io/region': {
1735
2097
  type: 'array',
@@ -1802,15 +2164,28 @@ export const FleetUpdateInputSchema = {
1802
2164
  'us-west4'
1803
2165
  ]
1804
2166
  },
1805
- description: 'Allowed values for `topology.kubernetes.io/region`.'
2167
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
2168
+ default: []
1806
2169
  }
1807
2170
  },
1808
2171
  additionalProperties: false,
1809
- 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
+ }
1810
2184
  },
1811
2185
  scalingProfile: {
1812
2186
  type: 'string',
1813
- 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',
1814
2189
  example: 'conservative',
1815
2190
  enum: [
1816
2191
  'aggressive',
@@ -1818,8 +2193,31 @@ export const FleetUpdateInputSchema = {
1818
2193
  ]
1819
2194
  }
1820
2195
  },
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.'
2198
+ };
2199
+ export const InviteCreateInputSchema = {
2200
+ type: 'object',
2201
+ properties: {
2202
+ email: {
2203
+ type: 'string',
2204
+ format: 'email',
2205
+ description: 'Email address of the user to invite.',
2206
+ example: 'email@example.com'
2207
+ },
2208
+ role: {
2209
+ type: 'string',
2210
+ description: 'Role the invited user will be assigned on redemption. Can be \'Administrator\' or \'User\'.',
2211
+ default: 'User',
2212
+ example: 'User',
2213
+ enum: [
2214
+ 'Administrator',
2215
+ 'User'
2216
+ ]
2217
+ }
2218
+ },
1821
2219
  required: [
1822
- 'scalingProfile'
2220
+ 'email'
1823
2221
  ],
1824
2222
  additionalProperties: false
1825
2223
  };
@@ -1853,6 +2251,16 @@ export const InviteSchema = {
1853
2251
  type: 'string',
1854
2252
  description: 'Generated unique invite code.',
1855
2253
  example: '7kUZnH7nnKUFfvc4NK2KQF'
2254
+ },
2255
+ role: {
2256
+ type: 'string',
2257
+ description: 'Role the invited user will be assigned on redemption. Can be \'Administrator\' or \'User\'.',
2258
+ default: 'User',
2259
+ example: 'User',
2260
+ enum: [
2261
+ 'Administrator',
2262
+ 'User'
2263
+ ]
1856
2264
  }
1857
2265
  },
1858
2266
  required: [
@@ -2073,6 +2481,15 @@ export const MarketplaceListingSchema = {
2073
2481
  export const OrganizationCreateInputSchema = {
2074
2482
  type: 'object',
2075
2483
  properties: {
2484
+ type: {
2485
+ type: 'string',
2486
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2487
+ example: 'business',
2488
+ enum: [
2489
+ 'business',
2490
+ 'personal'
2491
+ ]
2492
+ },
2076
2493
  email: {
2077
2494
  type: 'string',
2078
2495
  format: 'email',
@@ -2081,11 +2498,13 @@ export const OrganizationCreateInputSchema = {
2081
2498
  },
2082
2499
  first_name: {
2083
2500
  type: 'string',
2501
+ minLength: 1,
2084
2502
  description: 'First name of the billing contact person.',
2085
2503
  example: 'John'
2086
2504
  },
2087
2505
  last_name: {
2088
2506
  type: 'string',
2507
+ minLength: 1,
2089
2508
  description: 'Last name of the billing contact person.',
2090
2509
  example: 'Doe'
2091
2510
  },
@@ -2104,6 +2523,7 @@ export const OrganizationCreateInputSchema = {
2104
2523
  }
2105
2524
  },
2106
2525
  required: [
2526
+ 'type',
2107
2527
  'email',
2108
2528
  'first_name',
2109
2529
  'last_name',
@@ -2112,6 +2532,20 @@ export const OrganizationCreateInputSchema = {
2112
2532
  ],
2113
2533
  additionalProperties: false
2114
2534
  };
2535
+ export const OrganizationCreateOutputSchema = {
2536
+ type: 'object',
2537
+ properties: {
2538
+ id: {
2539
+ type: 'string',
2540
+ description: 'Unique identifier of the newly created organization. Generated by the API and safe to use for client-side tracking immediately.',
2541
+ example: 'organization-id'
2542
+ }
2543
+ },
2544
+ required: [
2545
+ 'id'
2546
+ ],
2547
+ additionalProperties: false
2548
+ };
2115
2549
  export const OrganizationSchema = {
2116
2550
  type: 'object',
2117
2551
  properties: {
@@ -2128,6 +2562,15 @@ export const OrganizationSchema = {
2128
2562
  description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
2129
2563
  example: 'ACME Corp.'
2130
2564
  },
2565
+ type: {
2566
+ type: 'string',
2567
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2568
+ example: 'business',
2569
+ enum: [
2570
+ 'business',
2571
+ 'personal'
2572
+ ]
2573
+ },
2131
2574
  date_created: {
2132
2575
  type: 'string',
2133
2576
  format: 'date-time',
@@ -2159,6 +2602,17 @@ export const OrganizationSchema = {
2159
2602
  description: 'Available number of Pro clusters that can be created.',
2160
2603
  example: 999
2161
2604
  },
2605
+ enterprise_clusters_max: {
2606
+ type: 'integer',
2607
+ minimum: 0,
2608
+ description: 'Maximum number of Enterprise clusters that can be created.',
2609
+ example: 999
2610
+ },
2611
+ enterprise_clusters_available: {
2612
+ type: 'integer',
2613
+ description: 'Available number of Enterprise clusters that can be created.',
2614
+ example: 999
2615
+ },
2162
2616
  fleets_max: {
2163
2617
  type: 'integer',
2164
2618
  minimum: 0,
@@ -2178,7 +2632,7 @@ export const OrganizationSchema = {
2178
2632
  type: 'array',
2179
2633
  items: {
2180
2634
  type: 'string',
2181
- example: 'northamerica-central-1'
2635
+ example: 'northamerica-central-1a'
2182
2636
  },
2183
2637
  minItems: 1,
2184
2638
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2220,6 +2674,8 @@ export const OrganizationSchema = {
2220
2674
  'basic_clusters_available',
2221
2675
  'pro_clusters_max',
2222
2676
  'pro_clusters_available',
2677
+ 'enterprise_clusters_max',
2678
+ 'enterprise_clusters_available',
2223
2679
  'fleets_max',
2224
2680
  'cluster_tiers',
2225
2681
  'regions',
@@ -2237,13 +2693,25 @@ export const OrganizationSchema = {
2237
2693
  'closed',
2238
2694
  'suspended'
2239
2695
  ]
2696
+ },
2697
+ verification: {
2698
+ type: 'string',
2699
+ 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.',
2700
+ example: 'verified',
2701
+ enum: [
2702
+ 'none',
2703
+ 'submitted',
2704
+ 'verified'
2705
+ ]
2240
2706
  }
2241
2707
  },
2242
2708
  required: [
2243
2709
  'id',
2710
+ 'type',
2244
2711
  'date_created',
2245
2712
  'quota',
2246
- 'status'
2713
+ 'status',
2714
+ 'verification'
2247
2715
  ],
2248
2716
  additionalProperties: false
2249
2717
  };
@@ -2252,28 +2720,23 @@ export const PaymentMethodSchema = {
2252
2720
  properties: {
2253
2721
  id: {
2254
2722
  type: 'string',
2255
- format: 'uuid',
2256
- description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
2257
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
2258
- },
2259
- setup: {
2260
- type: 'boolean',
2261
- description: 'Whether organization payment method was set up and ready to use for payments.',
2262
- example: true
2723
+ 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.',
2724
+ example: 'pm_1MtwBwLkdIwHu7ix28a3tqPa'
2263
2725
  },
2264
2726
  type: {
2265
2727
  type: 'string',
2266
- nullable: true,
2267
- description: 'Payment method type type. Only `card` payments supported at the moment.',
2728
+ description: 'Payment method type. `card`, `sepa_debit` for SEPA Direct Debit (business accounts only), or `bank_transfer` for paying invoices by bank transfer.',
2268
2729
  example: 'card',
2269
2730
  enum: [
2270
- 'card'
2731
+ 'card',
2732
+ 'sepa_debit',
2733
+ 'bank_transfer'
2271
2734
  ]
2272
2735
  },
2273
2736
  last4: {
2274
2737
  type: 'string',
2275
2738
  nullable: true,
2276
- description: 'Last 4 digits of the payment card number.',
2739
+ 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.',
2277
2740
  example: '4242'
2278
2741
  },
2279
2742
  exp_month: {
@@ -2281,42 +2744,56 @@ export const PaymentMethodSchema = {
2281
2744
  minimum: 1,
2282
2745
  maximum: 12,
2283
2746
  nullable: true,
2284
- description: 'Two-digit number representing the card\'s expiration month.',
2285
- example: '12'
2747
+ description: 'Two-digit number representing the card\'s expiration month. Null for SEPA Direct Debit and bank transfer.',
2748
+ example: 12
2286
2749
  },
2287
2750
  exp_year: {
2288
2751
  type: 'integer',
2289
- minimum: 2024,
2290
2752
  nullable: true,
2291
- description: 'Four-digit number representing the card\'s expiration year.',
2292
- example: '2028'
2753
+ 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.',
2754
+ example: 2028
2293
2755
  },
2294
2756
  brand: {
2295
2757
  type: 'string',
2296
2758
  nullable: true,
2297
- description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
2298
- example: 'visa',
2299
- enum: [
2300
- 'amex',
2301
- 'diners',
2302
- 'discover',
2303
- 'eftpos_au',
2304
- 'jcb',
2305
- 'mastercard',
2306
- 'unionpay',
2307
- 'visa',
2308
- 'unknown'
2309
- ]
2759
+ 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.',
2760
+ example: 'visa'
2761
+ },
2762
+ iban: {
2763
+ type: 'string',
2764
+ nullable: true,
2765
+ 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.',
2766
+ example: 'DE11243015658023127510'
2767
+ },
2768
+ bic: {
2769
+ type: 'string',
2770
+ nullable: true,
2771
+ description: 'BIC/SWIFT of the destination bank for bank transfers. Set only for `bank_transfer`; null otherwise.',
2772
+ example: 'SOGEDEFFXXX'
2773
+ },
2774
+ account_holder_name: {
2775
+ type: 'string',
2776
+ nullable: true,
2777
+ description: 'Account holder name of the destination bank account for bank transfers. Set only for `bank_transfer`; null otherwise.',
2778
+ example: 'Cloudfleet GmbH'
2779
+ },
2780
+ is_default: {
2781
+ type: 'boolean',
2782
+ 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).',
2783
+ example: true
2310
2784
  }
2311
2785
  },
2312
2786
  required: [
2313
2787
  'id',
2314
- 'setup',
2315
2788
  'type',
2316
2789
  'last4',
2317
2790
  'exp_month',
2318
2791
  'exp_year',
2319
- 'brand'
2792
+ 'brand',
2793
+ 'iban',
2794
+ 'bic',
2795
+ 'account_holder_name',
2796
+ 'is_default'
2320
2797
  ],
2321
2798
  additionalProperties: false
2322
2799
  };
@@ -2345,6 +2822,17 @@ export const PlatformQuotaSchema = {
2345
2822
  description: 'Available number of Pro clusters that can be created.',
2346
2823
  example: 999
2347
2824
  },
2825
+ enterprise_clusters_max: {
2826
+ type: 'integer',
2827
+ minimum: 0,
2828
+ description: 'Maximum number of Enterprise clusters that can be created.',
2829
+ example: 999
2830
+ },
2831
+ enterprise_clusters_available: {
2832
+ type: 'integer',
2833
+ description: 'Available number of Enterprise clusters that can be created.',
2834
+ example: 999
2835
+ },
2348
2836
  fleets_max: {
2349
2837
  type: 'integer',
2350
2838
  minimum: 0,
@@ -2364,7 +2852,7 @@ export const PlatformQuotaSchema = {
2364
2852
  type: 'array',
2365
2853
  items: {
2366
2854
  type: 'string',
2367
- example: 'northamerica-central-1'
2855
+ example: 'northamerica-central-1a'
2368
2856
  },
2369
2857
  minItems: 1,
2370
2858
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2406,6 +2894,8 @@ export const PlatformQuotaSchema = {
2406
2894
  'basic_clusters_available',
2407
2895
  'pro_clusters_max',
2408
2896
  'pro_clusters_available',
2897
+ 'enterprise_clusters_max',
2898
+ 'enterprise_clusters_available',
2409
2899
  'fleets_max',
2410
2900
  'cluster_tiers',
2411
2901
  'regions',
@@ -2748,172 +3238,6 @@ export const TicketCreateInputSchema = {
2748
3238
  ],
2749
3239
  additionalProperties: false
2750
3240
  };
2751
- export const TicketListResponseSchema = {
2752
- type: 'object',
2753
- properties: {
2754
- items: {
2755
- type: 'array',
2756
- items: {
2757
- type: 'object',
2758
- properties: {
2759
- id: {
2760
- type: 'string',
2761
- description: 'Unique identifier of the ticket (Mongo ObjectId).',
2762
- example: '60c72b2f9f1b2c001f8e4d3a'
2763
- },
2764
- status: {
2765
- type: 'string',
2766
- description: 'Current state of the ticket.',
2767
- example: 'waiting_on_us',
2768
- enum: [
2769
- 'waiting_on_us',
2770
- 'waiting_on_user',
2771
- 'closed'
2772
- ]
2773
- },
2774
- category: {
2775
- type: 'string',
2776
- description: 'Ticket category.',
2777
- example: 'technical',
2778
- enum: [
2779
- 'billing',
2780
- 'technical',
2781
- 'general'
2782
- ]
2783
- },
2784
- summary: {
2785
- type: 'string',
2786
- description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2787
- example: 'My cluster cannot reach the registry. Logs attached.'
2788
- },
2789
- closed_at: {
2790
- type: 'string',
2791
- format: 'date-time',
2792
- nullable: true,
2793
- description: 'Closure timestamp. Null while the ticket is open.',
2794
- example: '2026-05-18T16:08:14.338Z'
2795
- },
2796
- date_created: {
2797
- type: 'string',
2798
- format: 'date-time',
2799
- description: 'Creation date of the ticket. ISO 8601 UTC.',
2800
- example: '2026-05-11T16:08:14.338Z'
2801
- },
2802
- date_updated: {
2803
- type: 'string',
2804
- format: 'date-time',
2805
- description: 'Last update date of the ticket. ISO 8601 UTC.',
2806
- example: '2026-05-11T16:08:14.338Z'
2807
- },
2808
- messages: {
2809
- type: 'array',
2810
- items: {
2811
- type: 'object',
2812
- properties: {
2813
- id: {
2814
- type: 'string',
2815
- description: 'Unique identifier of the message (Mongo ObjectId).',
2816
- example: '60c72b2f9f1b2c001f8e4d3b'
2817
- },
2818
- type: {
2819
- type: 'string',
2820
- description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2821
- example: 'customer_reply',
2822
- enum: [
2823
- 'customer_reply',
2824
- 'agent_reply'
2825
- ]
2826
- },
2827
- body: {
2828
- type: 'string',
2829
- description: 'Message body in markdown.',
2830
- example: 'Thanks — that resolved it on my side.'
2831
- },
2832
- author_first_name: {
2833
- type: 'string',
2834
- nullable: true,
2835
- description: 'First name of the author. Null when not provided.',
2836
- example: 'Jane'
2837
- },
2838
- author_last_name: {
2839
- type: 'string',
2840
- nullable: true,
2841
- description: 'Last name of the author. Null when not provided.',
2842
- example: 'Doe'
2843
- },
2844
- attachments: {
2845
- type: 'array',
2846
- items: {
2847
- type: 'object',
2848
- properties: {
2849
- id: {
2850
- type: 'string',
2851
- description: 'Unique identifier of the attachment (Mongo ObjectId).',
2852
- example: '60c72b2f9f1b2c001f8e4d3c'
2853
- },
2854
- filename: {
2855
- type: 'string',
2856
- description: 'Original filename as uploaded.',
2857
- example: 'debug.log'
2858
- },
2859
- content_type: {
2860
- type: 'string',
2861
- description: 'MIME content type of the attachment.',
2862
- example: 'text/plain'
2863
- },
2864
- size: {
2865
- type: 'integer',
2866
- description: 'Size of the attachment in bytes.',
2867
- example: 12345
2868
- }
2869
- },
2870
- required: [
2871
- 'id',
2872
- 'filename',
2873
- 'content_type',
2874
- 'size'
2875
- ],
2876
- additionalProperties: false
2877
- },
2878
- description: 'Attachments associated with this message.',
2879
- example: []
2880
- },
2881
- date_created: {
2882
- type: 'string',
2883
- format: 'date-time',
2884
- description: 'Creation date of the message. ISO 8601 UTC.',
2885
- example: '2026-05-11T16:08:14.338Z'
2886
- }
2887
- },
2888
- required: [
2889
- 'id',
2890
- 'type',
2891
- 'body',
2892
- 'date_created'
2893
- ],
2894
- additionalProperties: false
2895
- },
2896
- description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2897
- }
2898
- },
2899
- required: [
2900
- 'id',
2901
- 'status',
2902
- 'category',
2903
- 'summary',
2904
- 'date_created',
2905
- 'date_updated'
2906
- ],
2907
- additionalProperties: false
2908
- },
2909
- description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2910
- }
2911
- },
2912
- required: [
2913
- 'items'
2914
- ],
2915
- additionalProperties: false
2916
- };
2917
3241
  export const TicketMessageInputSchema = {
2918
3242
  type: 'object',
2919
3243
  properties: {
@@ -2955,11 +3279,13 @@ export const TicketMessageSchema = {
2955
3279
  },
2956
3280
  author_first_name: {
2957
3281
  type: 'string',
3282
+ nullable: true,
2958
3283
  description: 'First name of the author. Null when not provided.',
2959
3284
  example: 'Jane'
2960
3285
  },
2961
3286
  author_last_name: {
2962
3287
  type: 'string',
3288
+ nullable: true,
2963
3289
  description: 'Last name of the author. Null when not provided.',
2964
3290
  example: 'Doe'
2965
3291
  },
@@ -3051,6 +3377,7 @@ export const TicketSchema = {
3051
3377
  closed_at: {
3052
3378
  type: 'string',
3053
3379
  format: 'date-time',
3380
+ nullable: true,
3054
3381
  description: 'Closure timestamp. Null while the ticket is open.',
3055
3382
  example: '2026-05-18T16:08:14.338Z'
3056
3383
  },
@@ -3275,12 +3602,21 @@ export const UsageFacetsSchema = {
3275
3602
  product: {
3276
3603
  type: 'array',
3277
3604
  items: {
3278
- type: 'string'
3605
+ type: 'string',
3606
+ enum: [
3607
+ 'cfke_controlplane_basic',
3608
+ 'cfke_controlplane_pro',
3609
+ 'cfke_controlplane_enterprise',
3610
+ 'cfke_connected_nodes_basic',
3611
+ 'cfke_connected_nodes_pro',
3612
+ 'cfke_connected_nodes_enterprise',
3613
+ 'cfcr_storage'
3614
+ ]
3279
3615
  },
3280
3616
  description: 'List of unique products',
3281
3617
  example: [
3282
- 'cfke_controlplane',
3283
- 'cfke_connected_nodes'
3618
+ 'cfke_controlplane_pro',
3619
+ 'cfke_connected_nodes_pro'
3284
3620
  ]
3285
3621
  }
3286
3622
  },
@@ -3307,7 +3643,16 @@ export const UsageResponseSchema = {
3307
3643
  product: {
3308
3644
  type: 'string',
3309
3645
  description: 'The product the usage is associated with',
3310
- example: 'cfke_controlplane'
3646
+ example: 'cfke_controlplane_pro',
3647
+ enum: [
3648
+ 'cfke_controlplane_basic',
3649
+ 'cfke_controlplane_pro',
3650
+ 'cfke_controlplane_enterprise',
3651
+ 'cfke_connected_nodes_basic',
3652
+ 'cfke_connected_nodes_pro',
3653
+ 'cfke_connected_nodes_enterprise',
3654
+ 'cfcr_storage'
3655
+ ]
3311
3656
  },
3312
3657
  value: {
3313
3658
  type: 'number',
@@ -3355,12 +3700,21 @@ export const UsageResponseSchema = {
3355
3700
  product: {
3356
3701
  type: 'array',
3357
3702
  items: {
3358
- type: 'string'
3703
+ type: 'string',
3704
+ enum: [
3705
+ 'cfke_controlplane_basic',
3706
+ 'cfke_controlplane_pro',
3707
+ 'cfke_controlplane_enterprise',
3708
+ 'cfke_connected_nodes_basic',
3709
+ 'cfke_connected_nodes_pro',
3710
+ 'cfke_connected_nodes_enterprise',
3711
+ 'cfcr_storage'
3712
+ ]
3359
3713
  },
3360
3714
  description: 'List of unique products',
3361
3715
  example: [
3362
- 'cfke_controlplane',
3363
- 'cfke_connected_nodes'
3716
+ 'cfke_controlplane_pro',
3717
+ 'cfke_connected_nodes_pro'
3364
3718
  ]
3365
3719
  }
3366
3720
  },
@@ -3390,7 +3744,16 @@ export const UsageSchema = {
3390
3744
  product: {
3391
3745
  type: 'string',
3392
3746
  description: 'The product the usage is associated with',
3393
- example: 'cfke_controlplane'
3747
+ example: 'cfke_controlplane_pro',
3748
+ enum: [
3749
+ 'cfke_controlplane_basic',
3750
+ 'cfke_controlplane_pro',
3751
+ 'cfke_controlplane_enterprise',
3752
+ 'cfke_connected_nodes_basic',
3753
+ 'cfke_connected_nodes_pro',
3754
+ 'cfke_connected_nodes_enterprise',
3755
+ 'cfcr_storage'
3756
+ ]
3394
3757
  },
3395
3758
  value: {
3396
3759
  type: 'number',
@@ -3453,24 +3816,6 @@ export const UserCreateInputSchema = {
3453
3816
  type: 'string',
3454
3817
  minLength: 8,
3455
3818
  description: 'User password. Must be at least 8 characters long.'
3456
- },
3457
- status: {
3458
- type: 'string',
3459
- description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
3460
- example: 'active',
3461
- enum: [
3462
- 'active',
3463
- 'inactive'
3464
- ]
3465
- },
3466
- role: {
3467
- type: 'string',
3468
- description: 'User role. Can be \'Administrator\', \'User\'.',
3469
- example: 'User',
3470
- enum: [
3471
- 'Administrator',
3472
- 'User'
3473
- ]
3474
3819
  }
3475
3820
  },
3476
3821
  required: [