@cloudfleet/sdk 0.0.1-c034297 → 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: [
@@ -1011,7 +1289,8 @@ export const FleetCreateInputSchema = {
1011
1289
  'z3'
1012
1290
  ]
1013
1291
  },
1014
- description: 'Allowed values for `cfke.io/instance-family`.'
1292
+ description: 'Allowed values for `cfke.io/instance-family`.',
1293
+ default: []
1015
1294
  },
1016
1295
  'topology.kubernetes.io/region': {
1017
1296
  type: 'array',
@@ -1084,15 +1363,27 @@ export const FleetCreateInputSchema = {
1084
1363
  'us-west4'
1085
1364
  ]
1086
1365
  },
1087
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1366
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1367
+ default: []
1088
1368
  }
1089
1369
  },
1090
1370
  additionalProperties: false,
1091
- 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
+ }
1092
1383
  },
1093
1384
  scalingProfile: {
1094
1385
  type: 'string',
1095
- 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`).',
1096
1387
  default: 'conservative',
1097
1388
  example: 'conservative',
1098
1389
  enum: [
@@ -1112,7 +1403,8 @@ export const FleetCreateInputSchema = {
1112
1403
  required: [
1113
1404
  'id'
1114
1405
  ],
1115
- 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.'
1116
1408
  };
1117
1409
  export const FleetSchema = {
1118
1410
  type: 'object',
@@ -1382,7 +1674,8 @@ export const FleetSchema = {
1382
1674
  'z3'
1383
1675
  ]
1384
1676
  },
1385
- description: 'Allowed values for `cfke.io/instance-family`.'
1677
+ description: 'Allowed values for `cfke.io/instance-family`.',
1678
+ default: []
1386
1679
  },
1387
1680
  'topology.kubernetes.io/region': {
1388
1681
  type: 'array',
@@ -1455,15 +1748,31 @@ export const FleetSchema = {
1455
1748
  'us-west4'
1456
1749
  ]
1457
1750
  },
1458
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1751
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1752
+ default: []
1459
1753
  }
1460
1754
  },
1755
+ required: [
1756
+ 'karpenter.sh/capacity-type',
1757
+ 'kubernetes.io/arch'
1758
+ ],
1461
1759
  additionalProperties: false,
1462
- 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
+ }
1463
1772
  },
1464
1773
  scalingProfile: {
1465
1774
  type: 'string',
1466
- 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`).',
1467
1776
  default: 'conservative',
1468
1777
  example: 'conservative',
1469
1778
  enum: [
@@ -1478,13 +1787,38 @@ export const FleetSchema = {
1478
1787
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1479
1788
  description: 'Unique identifier of the kubernetes fleet.',
1480
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'
1481
1810
  }
1482
1811
  },
1483
1812
  required: [
1813
+ 'constraints',
1484
1814
  'scalingProfile',
1485
- 'id'
1815
+ 'id',
1816
+ 'ready',
1817
+ 'created_at',
1818
+ 'updated_at'
1486
1819
  ],
1487
- 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.'
1488
1822
  };
1489
1823
  export const FleetUpdateInputSchema = {
1490
1824
  type: 'object',
@@ -1530,8 +1864,8 @@ export const FleetUpdateInputSchema = {
1530
1864
  type: 'string',
1531
1865
  maxLength: 64,
1532
1866
  minLength: 64,
1533
- pattern: '^[A-Za-z0-9]+$',
1534
- 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.'
1535
1869
  }
1536
1870
  },
1537
1871
  required: [
@@ -1570,7 +1904,11 @@ export const FleetUpdateInputSchema = {
1570
1904
  ]
1571
1905
  },
1572
1906
  minItems: 1,
1573
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1907
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1908
+ default: [
1909
+ 'on-demand',
1910
+ 'spot'
1911
+ ]
1574
1912
  },
1575
1913
  'kubernetes.io/arch': {
1576
1914
  type: 'array',
@@ -1582,7 +1920,10 @@ export const FleetUpdateInputSchema = {
1582
1920
  ]
1583
1921
  },
1584
1922
  minItems: 1,
1585
- description: 'Allowed values for `kubernetes.io/arch`.'
1923
+ description: 'Allowed values for `kubernetes.io/arch`.',
1924
+ default: [
1925
+ 'amd64'
1926
+ ]
1586
1927
  },
1587
1928
  'cfke.io/instance-family': {
1588
1929
  type: 'array',
@@ -1749,7 +2090,8 @@ export const FleetUpdateInputSchema = {
1749
2090
  'z3'
1750
2091
  ]
1751
2092
  },
1752
- description: 'Allowed values for `cfke.io/instance-family`.'
2093
+ description: 'Allowed values for `cfke.io/instance-family`.',
2094
+ default: []
1753
2095
  },
1754
2096
  'topology.kubernetes.io/region': {
1755
2097
  type: 'array',
@@ -1822,15 +2164,28 @@ export const FleetUpdateInputSchema = {
1822
2164
  'us-west4'
1823
2165
  ]
1824
2166
  },
1825
- description: 'Allowed values for `topology.kubernetes.io/region`.'
2167
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
2168
+ default: []
1826
2169
  }
1827
2170
  },
1828
2171
  additionalProperties: false,
1829
- 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
+ }
1830
2184
  },
1831
2185
  scalingProfile: {
1832
2186
  type: 'string',
1833
- 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',
1834
2189
  example: 'conservative',
1835
2190
  enum: [
1836
2191
  'aggressive',
@@ -1838,8 +2193,31 @@ export const FleetUpdateInputSchema = {
1838
2193
  ]
1839
2194
  }
1840
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
+ },
1841
2219
  required: [
1842
- 'scalingProfile'
2220
+ 'email'
1843
2221
  ],
1844
2222
  additionalProperties: false
1845
2223
  };
@@ -1873,6 +2251,16 @@ export const InviteSchema = {
1873
2251
  type: 'string',
1874
2252
  description: 'Generated unique invite code.',
1875
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
+ ]
1876
2264
  }
1877
2265
  },
1878
2266
  required: [
@@ -2093,6 +2481,15 @@ export const MarketplaceListingSchema = {
2093
2481
  export const OrganizationCreateInputSchema = {
2094
2482
  type: 'object',
2095
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
+ },
2096
2493
  email: {
2097
2494
  type: 'string',
2098
2495
  format: 'email',
@@ -2101,11 +2498,13 @@ export const OrganizationCreateInputSchema = {
2101
2498
  },
2102
2499
  first_name: {
2103
2500
  type: 'string',
2501
+ minLength: 1,
2104
2502
  description: 'First name of the billing contact person.',
2105
2503
  example: 'John'
2106
2504
  },
2107
2505
  last_name: {
2108
2506
  type: 'string',
2507
+ minLength: 1,
2109
2508
  description: 'Last name of the billing contact person.',
2110
2509
  example: 'Doe'
2111
2510
  },
@@ -2124,6 +2523,7 @@ export const OrganizationCreateInputSchema = {
2124
2523
  }
2125
2524
  },
2126
2525
  required: [
2526
+ 'type',
2127
2527
  'email',
2128
2528
  'first_name',
2129
2529
  'last_name',
@@ -2132,6 +2532,20 @@ export const OrganizationCreateInputSchema = {
2132
2532
  ],
2133
2533
  additionalProperties: false
2134
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
+ };
2135
2549
  export const OrganizationSchema = {
2136
2550
  type: 'object',
2137
2551
  properties: {
@@ -2148,6 +2562,15 @@ export const OrganizationSchema = {
2148
2562
  description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
2149
2563
  example: 'ACME Corp.'
2150
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
+ },
2151
2574
  date_created: {
2152
2575
  type: 'string',
2153
2576
  format: 'date-time',
@@ -2179,6 +2602,17 @@ export const OrganizationSchema = {
2179
2602
  description: 'Available number of Pro clusters that can be created.',
2180
2603
  example: 999
2181
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
+ },
2182
2616
  fleets_max: {
2183
2617
  type: 'integer',
2184
2618
  minimum: 0,
@@ -2198,7 +2632,7 @@ export const OrganizationSchema = {
2198
2632
  type: 'array',
2199
2633
  items: {
2200
2634
  type: 'string',
2201
- example: 'northamerica-central-1'
2635
+ example: 'northamerica-central-1a'
2202
2636
  },
2203
2637
  minItems: 1,
2204
2638
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2240,6 +2674,8 @@ export const OrganizationSchema = {
2240
2674
  'basic_clusters_available',
2241
2675
  'pro_clusters_max',
2242
2676
  'pro_clusters_available',
2677
+ 'enterprise_clusters_max',
2678
+ 'enterprise_clusters_available',
2243
2679
  'fleets_max',
2244
2680
  'cluster_tiers',
2245
2681
  'regions',
@@ -2257,13 +2693,25 @@ export const OrganizationSchema = {
2257
2693
  'closed',
2258
2694
  'suspended'
2259
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
+ ]
2260
2706
  }
2261
2707
  },
2262
2708
  required: [
2263
2709
  'id',
2710
+ 'type',
2264
2711
  'date_created',
2265
2712
  'quota',
2266
- 'status'
2713
+ 'status',
2714
+ 'verification'
2267
2715
  ],
2268
2716
  additionalProperties: false
2269
2717
  };
@@ -2272,28 +2720,23 @@ export const PaymentMethodSchema = {
2272
2720
  properties: {
2273
2721
  id: {
2274
2722
  type: 'string',
2275
- format: 'uuid',
2276
- description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
2277
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
2278
- },
2279
- setup: {
2280
- type: 'boolean',
2281
- description: 'Whether organization payment method was set up and ready to use for payments.',
2282
- 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'
2283
2725
  },
2284
2726
  type: {
2285
2727
  type: 'string',
2286
- nullable: true,
2287
- 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.',
2288
2729
  example: 'card',
2289
2730
  enum: [
2290
- 'card'
2731
+ 'card',
2732
+ 'sepa_debit',
2733
+ 'bank_transfer'
2291
2734
  ]
2292
2735
  },
2293
2736
  last4: {
2294
2737
  type: 'string',
2295
2738
  nullable: true,
2296
- 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.',
2297
2740
  example: '4242'
2298
2741
  },
2299
2742
  exp_month: {
@@ -2301,42 +2744,56 @@ export const PaymentMethodSchema = {
2301
2744
  minimum: 1,
2302
2745
  maximum: 12,
2303
2746
  nullable: true,
2304
- description: 'Two-digit number representing the card\'s expiration month.',
2305
- example: '12'
2747
+ description: 'Two-digit number representing the card\'s expiration month. Null for SEPA Direct Debit and bank transfer.',
2748
+ example: 12
2306
2749
  },
2307
2750
  exp_year: {
2308
2751
  type: 'integer',
2309
- minimum: 2024,
2310
2752
  nullable: true,
2311
- description: 'Four-digit number representing the card\'s expiration year.',
2312
- 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
2313
2755
  },
2314
2756
  brand: {
2315
2757
  type: 'string',
2316
2758
  nullable: true,
2317
- description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
2318
- example: 'visa',
2319
- enum: [
2320
- 'amex',
2321
- 'diners',
2322
- 'discover',
2323
- 'eftpos_au',
2324
- 'jcb',
2325
- 'mastercard',
2326
- 'unionpay',
2327
- 'visa',
2328
- 'unknown'
2329
- ]
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
2330
2784
  }
2331
2785
  },
2332
2786
  required: [
2333
2787
  'id',
2334
- 'setup',
2335
2788
  'type',
2336
2789
  'last4',
2337
2790
  'exp_month',
2338
2791
  'exp_year',
2339
- 'brand'
2792
+ 'brand',
2793
+ 'iban',
2794
+ 'bic',
2795
+ 'account_holder_name',
2796
+ 'is_default'
2340
2797
  ],
2341
2798
  additionalProperties: false
2342
2799
  };
@@ -2365,6 +2822,17 @@ export const PlatformQuotaSchema = {
2365
2822
  description: 'Available number of Pro clusters that can be created.',
2366
2823
  example: 999
2367
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
+ },
2368
2836
  fleets_max: {
2369
2837
  type: 'integer',
2370
2838
  minimum: 0,
@@ -2384,7 +2852,7 @@ export const PlatformQuotaSchema = {
2384
2852
  type: 'array',
2385
2853
  items: {
2386
2854
  type: 'string',
2387
- example: 'northamerica-central-1'
2855
+ example: 'northamerica-central-1a'
2388
2856
  },
2389
2857
  minItems: 1,
2390
2858
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2426,6 +2894,8 @@ export const PlatformQuotaSchema = {
2426
2894
  'basic_clusters_available',
2427
2895
  'pro_clusters_max',
2428
2896
  'pro_clusters_available',
2897
+ 'enterprise_clusters_max',
2898
+ 'enterprise_clusters_available',
2429
2899
  'fleets_max',
2430
2900
  'cluster_tiers',
2431
2901
  'regions',
@@ -2768,172 +3238,6 @@ export const TicketCreateInputSchema = {
2768
3238
  ],
2769
3239
  additionalProperties: false
2770
3240
  };
2771
- export const TicketListResponseSchema = {
2772
- type: 'object',
2773
- properties: {
2774
- items: {
2775
- type: 'array',
2776
- items: {
2777
- type: 'object',
2778
- properties: {
2779
- id: {
2780
- type: 'string',
2781
- description: 'Unique identifier of the ticket (Mongo ObjectId).',
2782
- example: '60c72b2f9f1b2c001f8e4d3a'
2783
- },
2784
- status: {
2785
- type: 'string',
2786
- description: 'Current state of the ticket.',
2787
- example: 'waiting_on_us',
2788
- enum: [
2789
- 'waiting_on_us',
2790
- 'waiting_on_user',
2791
- 'closed'
2792
- ]
2793
- },
2794
- category: {
2795
- type: 'string',
2796
- description: 'Ticket category.',
2797
- example: 'technical',
2798
- enum: [
2799
- 'billing',
2800
- 'technical',
2801
- 'general'
2802
- ]
2803
- },
2804
- summary: {
2805
- type: 'string',
2806
- description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2807
- example: 'My cluster cannot reach the registry. Logs attached.'
2808
- },
2809
- closed_at: {
2810
- type: 'string',
2811
- format: 'date-time',
2812
- nullable: true,
2813
- description: 'Closure timestamp. Null while the ticket is open.',
2814
- example: '2026-05-18T16:08:14.338Z'
2815
- },
2816
- date_created: {
2817
- type: 'string',
2818
- format: 'date-time',
2819
- description: 'Creation date of the ticket. ISO 8601 UTC.',
2820
- example: '2026-05-11T16:08:14.338Z'
2821
- },
2822
- date_updated: {
2823
- type: 'string',
2824
- format: 'date-time',
2825
- description: 'Last update date of the ticket. ISO 8601 UTC.',
2826
- example: '2026-05-11T16:08:14.338Z'
2827
- },
2828
- messages: {
2829
- type: 'array',
2830
- items: {
2831
- type: 'object',
2832
- properties: {
2833
- id: {
2834
- type: 'string',
2835
- description: 'Unique identifier of the message (Mongo ObjectId).',
2836
- example: '60c72b2f9f1b2c001f8e4d3b'
2837
- },
2838
- type: {
2839
- type: 'string',
2840
- description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2841
- example: 'customer_reply',
2842
- enum: [
2843
- 'customer_reply',
2844
- 'agent_reply'
2845
- ]
2846
- },
2847
- body: {
2848
- type: 'string',
2849
- description: 'Message body in markdown.',
2850
- example: 'Thanks — that resolved it on my side.'
2851
- },
2852
- author_first_name: {
2853
- type: 'string',
2854
- nullable: true,
2855
- description: 'First name of the author. Null when not provided.',
2856
- example: 'Jane'
2857
- },
2858
- author_last_name: {
2859
- type: 'string',
2860
- nullable: true,
2861
- description: 'Last name of the author. Null when not provided.',
2862
- example: 'Doe'
2863
- },
2864
- attachments: {
2865
- type: 'array',
2866
- items: {
2867
- type: 'object',
2868
- properties: {
2869
- id: {
2870
- type: 'string',
2871
- description: 'Unique identifier of the attachment (Mongo ObjectId).',
2872
- example: '60c72b2f9f1b2c001f8e4d3c'
2873
- },
2874
- filename: {
2875
- type: 'string',
2876
- description: 'Original filename as uploaded.',
2877
- example: 'debug.log'
2878
- },
2879
- content_type: {
2880
- type: 'string',
2881
- description: 'MIME content type of the attachment.',
2882
- example: 'text/plain'
2883
- },
2884
- size: {
2885
- type: 'integer',
2886
- description: 'Size of the attachment in bytes.',
2887
- example: 12345
2888
- }
2889
- },
2890
- required: [
2891
- 'id',
2892
- 'filename',
2893
- 'content_type',
2894
- 'size'
2895
- ],
2896
- additionalProperties: false
2897
- },
2898
- description: 'Attachments associated with this message.',
2899
- example: []
2900
- },
2901
- date_created: {
2902
- type: 'string',
2903
- format: 'date-time',
2904
- description: 'Creation date of the message. ISO 8601 UTC.',
2905
- example: '2026-05-11T16:08:14.338Z'
2906
- }
2907
- },
2908
- required: [
2909
- 'id',
2910
- 'type',
2911
- 'body',
2912
- 'date_created'
2913
- ],
2914
- additionalProperties: false
2915
- },
2916
- description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2917
- }
2918
- },
2919
- required: [
2920
- 'id',
2921
- 'status',
2922
- 'category',
2923
- 'summary',
2924
- 'date_created',
2925
- 'date_updated'
2926
- ],
2927
- additionalProperties: false
2928
- },
2929
- description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2930
- }
2931
- },
2932
- required: [
2933
- 'items'
2934
- ],
2935
- additionalProperties: false
2936
- };
2937
3241
  export const TicketMessageInputSchema = {
2938
3242
  type: 'object',
2939
3243
  properties: {
@@ -2975,11 +3279,13 @@ export const TicketMessageSchema = {
2975
3279
  },
2976
3280
  author_first_name: {
2977
3281
  type: 'string',
3282
+ nullable: true,
2978
3283
  description: 'First name of the author. Null when not provided.',
2979
3284
  example: 'Jane'
2980
3285
  },
2981
3286
  author_last_name: {
2982
3287
  type: 'string',
3288
+ nullable: true,
2983
3289
  description: 'Last name of the author. Null when not provided.',
2984
3290
  example: 'Doe'
2985
3291
  },
@@ -3071,6 +3377,7 @@ export const TicketSchema = {
3071
3377
  closed_at: {
3072
3378
  type: 'string',
3073
3379
  format: 'date-time',
3380
+ nullable: true,
3074
3381
  description: 'Closure timestamp. Null while the ticket is open.',
3075
3382
  example: '2026-05-18T16:08:14.338Z'
3076
3383
  },
@@ -3295,12 +3602,21 @@ export const UsageFacetsSchema = {
3295
3602
  product: {
3296
3603
  type: 'array',
3297
3604
  items: {
3298
- 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
+ ]
3299
3615
  },
3300
3616
  description: 'List of unique products',
3301
3617
  example: [
3302
- 'cfke_controlplane',
3303
- 'cfke_connected_nodes'
3618
+ 'cfke_controlplane_pro',
3619
+ 'cfke_connected_nodes_pro'
3304
3620
  ]
3305
3621
  }
3306
3622
  },
@@ -3327,7 +3643,16 @@ export const UsageResponseSchema = {
3327
3643
  product: {
3328
3644
  type: 'string',
3329
3645
  description: 'The product the usage is associated with',
3330
- 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
+ ]
3331
3656
  },
3332
3657
  value: {
3333
3658
  type: 'number',
@@ -3375,12 +3700,21 @@ export const UsageResponseSchema = {
3375
3700
  product: {
3376
3701
  type: 'array',
3377
3702
  items: {
3378
- 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
+ ]
3379
3713
  },
3380
3714
  description: 'List of unique products',
3381
3715
  example: [
3382
- 'cfke_controlplane',
3383
- 'cfke_connected_nodes'
3716
+ 'cfke_controlplane_pro',
3717
+ 'cfke_connected_nodes_pro'
3384
3718
  ]
3385
3719
  }
3386
3720
  },
@@ -3410,7 +3744,16 @@ export const UsageSchema = {
3410
3744
  product: {
3411
3745
  type: 'string',
3412
3746
  description: 'The product the usage is associated with',
3413
- 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
+ ]
3414
3757
  },
3415
3758
  value: {
3416
3759
  type: 'number',
@@ -3473,24 +3816,6 @@ export const UserCreateInputSchema = {
3473
3816
  type: 'string',
3474
3817
  minLength: 8,
3475
3818
  description: 'User password. Must be at least 8 characters long.'
3476
- },
3477
- status: {
3478
- type: 'string',
3479
- description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
3480
- example: 'active',
3481
- enum: [
3482
- 'active',
3483
- 'inactive'
3484
- ]
3485
- },
3486
- role: {
3487
- type: 'string',
3488
- description: 'User role. Can be \'Administrator\', \'User\'.',
3489
- example: 'User',
3490
- enum: [
3491
- 'Administrator',
3492
- 'User'
3493
- ]
3494
3819
  }
3495
3820
  },
3496
3821
  required: [