@cloudfleet/sdk 0.0.1-017af9f → 0.0.1-019156c

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.
Files changed (46) hide show
  1. package/README.md +56 -2
  2. package/dist/@tanstack/react-query.gen.d.ts +432 -614
  3. package/dist/@tanstack/react-query.gen.d.ts.map +1 -1
  4. package/dist/@tanstack/react-query.gen.js +431 -404
  5. package/dist/@tanstack/react-query.gen.js.map +1 -1
  6. package/dist/client/client.gen.d.ts.map +1 -1
  7. package/dist/client/client.gen.js +1 -4
  8. package/dist/client/client.gen.js.map +1 -1
  9. package/dist/client/types.gen.d.ts +1 -1
  10. package/dist/client/types.gen.d.ts.map +1 -1
  11. package/dist/client/utils.gen.d.ts +2 -2
  12. package/dist/client/utils.gen.d.ts.map +1 -1
  13. package/dist/client/utils.gen.js +3 -3
  14. package/dist/client/utils.gen.js.map +1 -1
  15. package/dist/core/params.gen.js +4 -4
  16. package/dist/core/params.gen.js.map +1 -1
  17. package/dist/errors.d.ts +42 -0
  18. package/dist/errors.d.ts.map +1 -0
  19. package/dist/errors.js +83 -0
  20. package/dist/errors.js.map +1 -0
  21. package/dist/index.d.ts +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/schemas.gen.d.ts +832 -515
  26. package/dist/schemas.gen.d.ts.map +1 -1
  27. package/dist/schemas.gen.js +1126 -661
  28. package/dist/schemas.gen.js.map +1 -1
  29. package/dist/sdk.gen.d.ts +226 -221
  30. package/dist/sdk.gen.d.ts.map +1 -1
  31. package/dist/sdk.gen.js +340 -324
  32. package/dist/sdk.gen.js.map +1 -1
  33. package/dist/services/kubernetes/api.d.ts +18 -55
  34. package/dist/services/kubernetes/api.d.ts.map +1 -1
  35. package/dist/services/kubernetes/api.js +36 -75
  36. package/dist/services/kubernetes/api.js.map +1 -1
  37. package/dist/services/kubernetes/index.d.ts.map +1 -1
  38. package/dist/services/kubernetes/index.js +36 -37
  39. package/dist/services/kubernetes/index.js.map +1 -1
  40. package/dist/types.gen.d.ts +1281 -1017
  41. package/dist/types.gen.d.ts.map +1 -1
  42. package/dist/zod.gen.d.ts +1937 -1588
  43. package/dist/zod.gen.d.ts.map +1 -1
  44. package/dist/zod.gen.js +609 -416
  45. package/dist/zod.gen.js.map +1 -1
  46. package/package.json +10 -15
@@ -2,6 +2,15 @@
2
2
  export const BillingContactSchema = {
3
3
  type: 'object',
4
4
  properties: {
5
+ type: {
6
+ type: 'string',
7
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
8
+ example: 'business',
9
+ enum: [
10
+ 'business',
11
+ 'personal'
12
+ ]
13
+ },
5
14
  company: {
6
15
  type: 'string',
7
16
  maxLength: 120,
@@ -84,12 +93,17 @@ export const BillingContactSchema = {
84
93
  'at_vat',
85
94
  'au_abn',
86
95
  'au_arn',
96
+ 'aw_tin',
97
+ 'az_tin',
87
98
  'ba_tin',
88
99
  'bb_tin',
100
+ 'bd_bin',
89
101
  'be_vat',
102
+ 'bf_ifu',
90
103
  'bg_uic',
91
104
  'bg_vat',
92
105
  'bh_vat',
106
+ 'bj_ifu',
93
107
  'bo_tin',
94
108
  'br_cnpj',
95
109
  'br_cpf',
@@ -105,9 +119,11 @@ export const BillingContactSchema = {
105
119
  'ch_uid',
106
120
  'ch_vat',
107
121
  'cl_tin',
122
+ 'cm_niu',
108
123
  'cn_tin',
109
124
  'co_nit',
110
125
  'cr_tin',
126
+ 'cv_nif',
111
127
  'cy_vat',
112
128
  'cz_vat',
113
129
  'de_stn',
@@ -119,6 +135,7 @@ export const BillingContactSchema = {
119
135
  'eg_tin',
120
136
  'es_cif',
121
137
  'es_vat',
138
+ 'et_tin',
122
139
  'eu_oss_vat',
123
140
  'fi_vat',
124
141
  'fr_vat',
@@ -141,11 +158,14 @@ export const BillingContactSchema = {
141
158
  'jp_rn',
142
159
  'jp_trn',
143
160
  'ke_pin',
161
+ 'kg_tin',
144
162
  'kh_tin',
145
163
  'kr_brn',
146
164
  'kz_bin',
165
+ 'la_tin',
147
166
  'li_uid',
148
167
  'li_vat',
168
+ 'lk_vat',
149
169
  'lt_vat',
150
170
  'lu_vat',
151
171
  'lv_vat',
@@ -207,6 +227,7 @@ export const BillingContactSchema = {
207
227
  }
208
228
  },
209
229
  required: [
230
+ 'type',
210
231
  'email',
211
232
  'individual_name'
212
233
  ],
@@ -272,166 +293,6 @@ export const BillingCreditsSchema = {
272
293
  ],
273
294
  additionalProperties: false
274
295
  };
275
- export const ChartCreateInputSchema = {
276
- type: 'object',
277
- properties: {
278
- values: {
279
- type: 'string',
280
- description: 'Values to be used in the chart encoded as a JSON string.'
281
- },
282
- version_channel: {
283
- type: 'string',
284
- 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-]+)*))?$',
285
- description: 'Desired version range or channel for the chart.',
286
- example: '2.x.x-cfke.x'
287
- },
288
- name: {
289
- type: 'string',
290
- maxLength: 63,
291
- minLength: 1,
292
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
293
- description: 'Unique identifier of the chart deployment aka name of the helm release.',
294
- example: 'postgresql-0'
295
- },
296
- namespace: {
297
- type: 'string',
298
- maxLength: 63,
299
- minLength: 1,
300
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
301
- description: 'Namespace of the chart deployment',
302
- example: 'default'
303
- },
304
- chart: {
305
- type: 'string',
306
- maxLength: 63,
307
- minLength: 1,
308
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
309
- description: 'Name of the chart listing',
310
- example: 'postgresql'
311
- }
312
- },
313
- required: [
314
- 'values',
315
- 'version_channel',
316
- 'name',
317
- 'namespace',
318
- 'chart'
319
- ],
320
- additionalProperties: false
321
- };
322
- export const ChartSchema = {
323
- type: 'object',
324
- properties: {
325
- values: {
326
- type: 'string',
327
- description: 'Values to be used in the chart encoded as a JSON string.'
328
- },
329
- version_channel: {
330
- type: 'string',
331
- 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-]+)*))?$',
332
- description: 'Desired version range or channel for the chart.',
333
- example: '2.x.x-cfke.x'
334
- },
335
- name: {
336
- type: 'string',
337
- maxLength: 63,
338
- minLength: 1,
339
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
340
- description: 'Unique identifier of the chart deployment aka name of the helm release.',
341
- example: 'postgresql-0'
342
- },
343
- namespace: {
344
- type: 'string',
345
- maxLength: 63,
346
- minLength: 1,
347
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
348
- description: 'Namespace of the chart deployment',
349
- example: 'default'
350
- },
351
- chart: {
352
- type: 'string',
353
- maxLength: 63,
354
- minLength: 1,
355
- pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
356
- description: 'Name of the chart listing',
357
- example: 'postgresql'
358
- },
359
- status: {
360
- 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
- ]
379
- },
380
- version_current: {
381
- type: 'string',
382
- description: 'Current version of the chart deployment.',
383
- example: '2.1.33-cfke.11'
384
- },
385
- created_at: {
386
- type: 'string',
387
- description: 'Creation date and time of the chart deployment.',
388
- example: '2024-09-12T09:11:27Z'
389
- },
390
- updated_at: {
391
- type: 'string',
392
- description: 'Last update date and time of the chart deployment.',
393
- example: '2024-09-12T09:11:27Z'
394
- },
395
- ready: {
396
- type: 'boolean',
397
- description: 'Indicates if the chart deployment is ready to be used.',
398
- example: true
399
- }
400
- },
401
- required: [
402
- 'values',
403
- 'version_channel',
404
- 'name',
405
- 'namespace',
406
- 'chart',
407
- 'status',
408
- 'version_current',
409
- 'created_at',
410
- 'updated_at',
411
- 'ready'
412
- ],
413
- additionalProperties: false
414
- };
415
- export const ChartUpdateInputSchema = {
416
- type: 'object',
417
- properties: {
418
- values: {
419
- type: 'string',
420
- description: 'Values to be used in the chart encoded as a JSON string.'
421
- },
422
- version_channel: {
423
- type: 'string',
424
- 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-]+)*))?$',
425
- description: 'Desired version range or channel for the chart.',
426
- example: '2.x.x-cfke.x'
427
- }
428
- },
429
- required: [
430
- 'values',
431
- 'version_channel'
432
- ],
433
- additionalProperties: false
434
- };
435
296
  export const ClusterCreateInputSchema = {
436
297
  type: 'object',
437
298
  properties: {
@@ -446,22 +307,12 @@ export const ClusterCreateInputSchema = {
446
307
  tier: {
447
308
  type: 'string',
448
309
  description: 'Tier of the cluster.',
310
+ default: 'basic',
449
311
  example: 'pro',
450
312
  enum: [
451
313
  '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'
314
+ 'pro',
315
+ 'enterprise'
465
316
  ]
466
317
  },
467
318
  version_channel: {
@@ -469,20 +320,105 @@ export const ClusterCreateInputSchema = {
469
320
  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
321
  description: 'Version of the kubernetes cluster.',
471
322
  default: '1.x.x-cfke.x',
472
- example: '1.x.x-cfke.x',
323
+ example: '1.x.x-cfke.x'
324
+ },
325
+ release_channel: {
326
+ type: 'string',
327
+ description: 'Release channel for the cluster\'s control plane.',
328
+ default: 'rapid',
329
+ example: 'rapid',
473
330
  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'
331
+ 'rapid',
332
+ 'stable',
333
+ 'extended'
478
334
  ]
335
+ },
336
+ features: {
337
+ type: 'object',
338
+ properties: {
339
+ gpu_sharing_strategy: {
340
+ type: 'string',
341
+ description: 'GPU sharing strategy.',
342
+ default: 'none',
343
+ example: 'none',
344
+ enum: [
345
+ 'none',
346
+ 'mps',
347
+ 'time_slicing'
348
+ ]
349
+ },
350
+ gpu_max_shared_clients_per_gpu: {
351
+ type: 'integer',
352
+ minimum: 2,
353
+ maximum: 48,
354
+ description: 'Maximum number of pods that may share a single GPU.',
355
+ default: 4,
356
+ example: 10
357
+ },
358
+ cilium_socket_lb_host_namespace_only: {
359
+ type: 'boolean',
360
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
361
+ example: false
362
+ }
363
+ },
364
+ additionalProperties: false,
365
+ description: 'Cluster feature toggles.',
366
+ default: {
367
+ gpu_sharing_strategy: 'none',
368
+ gpu_max_shared_clients_per_gpu: 4,
369
+ cilium_socket_lb_host_namespace_only: false
370
+ }
371
+ },
372
+ region: {
373
+ type: 'string',
374
+ description: 'Cloudfleet control plane region. This field can not be updated after creation.',
375
+ example: 'europe-central-1a'
376
+ },
377
+ networking: {
378
+ type: 'object',
379
+ properties: {
380
+ pod_cidr: {
381
+ type: 'string',
382
+ description: 'CIDR block for pod IPs.',
383
+ default: '10.244.0.0/16'
384
+ },
385
+ service_cidr: {
386
+ type: 'string',
387
+ description: 'CIDR block for service IPs.',
388
+ default: '10.96.0.0/12'
389
+ },
390
+ dual_stack: {
391
+ type: 'boolean',
392
+ description: 'Enable IPv4+IPv6 dual-stack networking.'
393
+ },
394
+ pod_cidr_v6: {
395
+ type: 'string',
396
+ description: 'IPv6 pod CIDR. Requires dual_stack.',
397
+ default: '2001:db8:1:2::/48'
398
+ },
399
+ service_cidr_v6: {
400
+ type: 'string',
401
+ description: 'IPv6 service CIDR. Requires dual_stack.',
402
+ default: '2001:db8:1:1::/112'
403
+ }
404
+ },
405
+ additionalProperties: false,
406
+ description: 'Cluster networking configuration. Immutable after creation.',
407
+ default: {
408
+ pod_cidr: '10.244.0.0/16',
409
+ service_cidr: '10.96.0.0/12',
410
+ dual_stack: false,
411
+ pod_cidr_v6: '2001:db8:1:2::/48',
412
+ service_cidr_v6: '2001:db8:1:1::/112'
413
+ }
479
414
  }
480
415
  },
481
416
  required: [
482
417
  'name',
483
- 'tier'
418
+ 'region'
484
419
  ],
485
- additionalProperties: false
420
+ additionalProperties: false,
421
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
486
422
  };
487
423
  export const ClusterJoinInformationSchema = {
488
424
  type: 'object',
@@ -503,11 +439,21 @@ export const ClusterJoinInformationSchema = {
503
439
  description: 'Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.',
504
440
  example: '10.96.0.10'
505
441
  },
442
+ pod_cidr: {
443
+ type: 'string',
444
+ description: 'Pod CIDR for the cluster. Used to configure iptables rules on nodes to prevent Tailscale routing loops.',
445
+ example: '10.244.0.0/16'
446
+ },
506
447
  auth_key: {
507
448
  type: 'string',
508
449
  description: 'Authentication key for the cluster.',
509
450
  example: 'tskey-auth-kBV8wr1dk911CNTRL-...'
510
451
  },
452
+ login_server: {
453
+ type: 'string',
454
+ 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.',
455
+ example: 'https://415026b6-f00f-44f8-968d-fc6ef4d0fc6d.fabric.europe-central-1a.cfke.io'
456
+ },
511
457
  bootstrap_token: {
512
458
  type: 'string',
513
459
  description: 'Bootstrap token for the cluster.',
@@ -578,7 +524,9 @@ export const ClusterJoinInformationSchema = {
578
524
  'certificate_authority',
579
525
  'endpoint',
580
526
  'cluster_dns',
527
+ 'pod_cidr',
581
528
  'auth_key',
529
+ 'login_server',
582
530
  'bootstrap_token',
583
531
  'versions',
584
532
  'third_party_api_access_config'
@@ -599,24 +547,123 @@ export const ClusterSchema = {
599
547
  tier: {
600
548
  type: 'string',
601
549
  description: 'Tier of the cluster.',
550
+ default: 'basic',
602
551
  example: 'pro',
603
552
  enum: [
604
553
  'basic',
605
- 'pro'
554
+ 'pro',
555
+ 'enterprise'
606
556
  ]
607
557
  },
608
- region: {
558
+ version_channel: {
559
+ type: 'string',
560
+ 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-]+)*))?$',
561
+ description: 'Version of the kubernetes cluster.',
562
+ default: '1.x.x-cfke.x',
563
+ example: '1.x.x-cfke.x'
564
+ },
565
+ release_channel: {
609
566
  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',
567
+ description: 'Release channel for the cluster\'s control plane.',
568
+ default: 'rapid',
569
+ example: 'rapid',
613
570
  enum: [
614
- 'staging-1a',
615
- 'northamerica-central-1',
616
- 'europe-central-1a',
617
- 'northamerica-central-1a'
571
+ 'rapid',
572
+ 'stable',
573
+ 'extended'
618
574
  ]
619
575
  },
576
+ features: {
577
+ type: 'object',
578
+ properties: {
579
+ gpu_sharing_strategy: {
580
+ type: 'string',
581
+ description: 'GPU sharing strategy.',
582
+ default: 'none',
583
+ example: 'none',
584
+ enum: [
585
+ 'none',
586
+ 'mps',
587
+ 'time_slicing'
588
+ ]
589
+ },
590
+ gpu_max_shared_clients_per_gpu: {
591
+ type: 'integer',
592
+ minimum: 2,
593
+ maximum: 48,
594
+ description: 'Maximum number of pods that may share a single GPU.',
595
+ default: 4,
596
+ example: 10
597
+ },
598
+ cilium_socket_lb_host_namespace_only: {
599
+ type: 'boolean',
600
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
601
+ example: false
602
+ }
603
+ },
604
+ required: [
605
+ 'gpu_sharing_strategy',
606
+ 'gpu_max_shared_clients_per_gpu',
607
+ 'cilium_socket_lb_host_namespace_only'
608
+ ],
609
+ additionalProperties: false,
610
+ description: 'Cluster feature toggles.',
611
+ default: {
612
+ gpu_sharing_strategy: 'none',
613
+ gpu_max_shared_clients_per_gpu: 4,
614
+ cilium_socket_lb_host_namespace_only: false
615
+ }
616
+ },
617
+ region: {
618
+ type: 'string',
619
+ description: 'Cloudfleet control plane region. This field can not be updated after creation.',
620
+ example: 'europe-central-1a'
621
+ },
622
+ networking: {
623
+ type: 'object',
624
+ properties: {
625
+ pod_cidr: {
626
+ type: 'string',
627
+ description: 'CIDR block for pod IPs.',
628
+ default: '10.244.0.0/16'
629
+ },
630
+ service_cidr: {
631
+ type: 'string',
632
+ description: 'CIDR block for service IPs.',
633
+ default: '10.96.0.0/12'
634
+ },
635
+ dual_stack: {
636
+ type: 'boolean',
637
+ description: 'Enable IPv4+IPv6 dual-stack networking.'
638
+ },
639
+ pod_cidr_v6: {
640
+ type: 'string',
641
+ description: 'IPv6 pod CIDR. Requires dual_stack.',
642
+ default: '2001:db8:1:2::/48'
643
+ },
644
+ service_cidr_v6: {
645
+ type: 'string',
646
+ description: 'IPv6 service CIDR. Requires dual_stack.',
647
+ default: '2001:db8:1:1::/112'
648
+ }
649
+ },
650
+ required: [
651
+ 'pod_cidr',
652
+ 'service_cidr',
653
+ 'dual_stack',
654
+ 'pod_cidr_v6',
655
+ 'service_cidr_v6'
656
+ ],
657
+ additionalProperties: false,
658
+ description: 'Cluster networking configuration. Immutable after creation.',
659
+ default: {
660
+ pod_cidr: '10.244.0.0/16',
661
+ service_cidr: '10.96.0.0/12',
662
+ dual_stack: false,
663
+ pod_cidr_v6: '2001:db8:1:2::/48',
664
+ service_cidr_v6: '2001:db8:1:1::/112'
665
+ }
666
+ },
620
667
  id: {
621
668
  type: 'string',
622
669
  format: 'uuid',
@@ -625,16 +672,13 @@ export const ClusterSchema = {
625
672
  },
626
673
  status: {
627
674
  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',
675
+ description: 'Status of the cluster.',
676
+ example: 'deployed',
630
677
  enum: [
631
- 'active',
632
- 'disabled',
633
- 'deleted',
634
678
  'creating',
635
679
  'deployed',
636
- 'failed',
637
- 'updating'
680
+ 'updating',
681
+ 'disabled'
638
682
  ]
639
683
  },
640
684
  endpoint: {
@@ -642,8 +686,8 @@ export const ClusterSchema = {
642
686
  {
643
687
  type: 'string',
644
688
  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'
689
+ 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.',
690
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
647
691
  },
648
692
  {
649
693
  type: 'string',
@@ -658,7 +702,7 @@ export const ClusterSchema = {
658
702
  {
659
703
  type: 'string',
660
704
  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.',
705
+ description: 'Deprecated alias of `endpoint`; retained for backward compatibility.',
662
706
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
663
707
  },
664
708
  {
@@ -693,21 +737,22 @@ export const ClusterSchema = {
693
737
  type: 'boolean',
694
738
  description: 'Indicates if the cluster is ready to be used.',
695
739
  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
740
  }
703
741
  },
704
742
  required: [
705
743
  'name',
706
744
  'tier',
745
+ 'version_channel',
746
+ 'release_channel',
747
+ 'features',
748
+ 'region',
749
+ 'networking',
707
750
  'id',
708
- 'status'
751
+ 'status',
752
+ 'ready'
709
753
  ],
710
- additionalProperties: false
754
+ additionalProperties: false,
755
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
711
756
  };
712
757
  export const ClusterUpdateInputSchema = {
713
758
  type: 'object',
@@ -723,21 +768,138 @@ export const ClusterUpdateInputSchema = {
723
768
  tier: {
724
769
  type: 'string',
725
770
  description: 'Tier of the cluster.',
771
+ default: 'basic',
726
772
  example: 'pro',
727
773
  enum: [
728
774
  'basic',
729
- 'pro'
775
+ 'pro',
776
+ 'enterprise'
730
777
  ]
731
778
  },
732
779
  version_channel: {
733
780
  type: 'string',
734
781
  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
782
  description: 'Version of the kubernetes cluster.',
783
+ default: '1.x.x-cfke.x',
736
784
  example: '1.x.x-cfke.x'
785
+ },
786
+ release_channel: {
787
+ type: 'string',
788
+ description: 'Release channel for the cluster\'s control plane.',
789
+ default: 'rapid',
790
+ example: 'rapid',
791
+ enum: [
792
+ 'rapid',
793
+ 'stable',
794
+ 'extended'
795
+ ]
796
+ },
797
+ features: {
798
+ type: 'object',
799
+ properties: {
800
+ gpu_sharing_strategy: {
801
+ type: 'string',
802
+ description: 'GPU sharing strategy.',
803
+ default: 'none',
804
+ example: 'none',
805
+ enum: [
806
+ 'none',
807
+ 'mps',
808
+ 'time_slicing'
809
+ ]
810
+ },
811
+ gpu_max_shared_clients_per_gpu: {
812
+ type: 'integer',
813
+ minimum: 2,
814
+ maximum: 48,
815
+ description: 'Maximum number of pods that may share a single GPU.',
816
+ default: 4,
817
+ example: 10
818
+ },
819
+ cilium_socket_lb_host_namespace_only: {
820
+ type: 'boolean',
821
+ description: 'Restrict Cilium socket load-balancing to the host namespace. Required for the Tailscale operator and Istio.',
822
+ example: false
823
+ }
824
+ },
825
+ additionalProperties: false,
826
+ description: 'Cluster feature toggles.',
827
+ default: {
828
+ gpu_sharing_strategy: 'none',
829
+ gpu_max_shared_clients_per_gpu: 4,
830
+ cilium_socket_lb_host_namespace_only: false
831
+ }
832
+ }
833
+ },
834
+ required: [
835
+ 'name'
836
+ ],
837
+ additionalProperties: false,
838
+ description: 'Mutable cluster configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
839
+ };
840
+ export const FeedbackCreateInputSchema = {
841
+ type: 'object',
842
+ properties: {
843
+ sentiment: {
844
+ type: 'string',
845
+ description: 'Overall sentiment: positive, neutral or negative.',
846
+ example: 'negative',
847
+ enum: [
848
+ 'positive',
849
+ 'neutral',
850
+ 'negative'
851
+ ]
852
+ },
853
+ message: {
854
+ type: 'string',
855
+ maxLength: 2000,
856
+ minLength: 1,
857
+ description: 'What was useful, confusing, wrong or missing.',
858
+ example: 'The error for a missing kubeconfig does not say which path it looked in.'
859
+ },
860
+ context: {
861
+ type: 'string',
862
+ maxLength: 2000,
863
+ description: 'What you were trying to do when it happened.',
864
+ example: 'Connecting kubectl to a new cluster.'
865
+ },
866
+ source: {
867
+ type: 'string',
868
+ description: 'Where the feedback was sent from: cli, mcp, plugin, console or api. Defaults to api.',
869
+ default: 'api',
870
+ example: 'cli',
871
+ enum: [
872
+ 'cli',
873
+ 'mcp',
874
+ 'plugin',
875
+ 'console',
876
+ 'api'
877
+ ]
878
+ },
879
+ client: {
880
+ type: 'string',
881
+ maxLength: 100,
882
+ description: 'Name and version of the sending client.',
883
+ example: 'cloudfleet-plugin-claude/0.5.0'
737
884
  }
738
885
  },
739
886
  required: [
740
- 'tier'
887
+ 'sentiment',
888
+ 'message'
889
+ ],
890
+ additionalProperties: false
891
+ };
892
+ export const FeedbackSchema = {
893
+ type: 'object',
894
+ properties: {
895
+ id: {
896
+ type: 'string',
897
+ description: 'Unique identifier of the feedback entry (Mongo ObjectId).',
898
+ example: '60c72b2f9f1b2c001f8e4d3a'
899
+ }
900
+ },
901
+ required: [
902
+ 'id'
741
903
  ],
742
904
  additionalProperties: false
743
905
  };
@@ -748,10 +910,10 @@ export const FleetCreateInputSchema = {
748
910
  type: 'object',
749
911
  properties: {
750
912
  cpu: {
751
- type: 'number',
752
- format: 'float',
913
+ type: 'integer',
753
914
  minimum: 0,
754
- description: 'CPU limit in cores.'
915
+ maximum: 100000,
916
+ description: 'CPU limit in cores. Maximum 100,000.'
755
917
  }
756
918
  },
757
919
  additionalProperties: false,
@@ -761,16 +923,17 @@ export const FleetCreateInputSchema = {
761
923
  type: 'object',
762
924
  properties: {
763
925
  enabled: {
764
- type: 'boolean',
765
- default: true
926
+ type: 'boolean'
766
927
  },
767
928
  project: {
768
929
  type: 'string',
769
- description: 'Project GCP Project id to deploy instances into'
930
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
931
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
932
+ example: 'my-cloudfleet-project'
770
933
  }
771
934
  },
772
935
  required: [
773
- 'project'
936
+ 'enabled'
774
937
  ],
775
938
  additionalProperties: false
776
939
  },
@@ -778,30 +941,36 @@ export const FleetCreateInputSchema = {
778
941
  type: 'object',
779
942
  properties: {
780
943
  enabled: {
781
- type: 'boolean',
782
- default: true
944
+ type: 'boolean'
783
945
  },
784
946
  apiKey: {
785
947
  type: 'string',
786
- description: 'Hetzner Cloud API key with read / write access. On update, omit this field to keep the existing value.'
948
+ maxLength: 64,
949
+ minLength: 64,
950
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
951
+ 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.'
787
952
  }
788
953
  },
954
+ required: [
955
+ 'enabled'
956
+ ],
789
957
  additionalProperties: false
790
958
  },
791
959
  aws: {
792
960
  type: 'object',
793
961
  properties: {
794
962
  enabled: {
795
- type: 'boolean',
796
- default: true
963
+ type: 'boolean'
797
964
  },
798
965
  controllerRoleArn: {
799
966
  type: 'string',
800
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
967
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
968
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
969
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
801
970
  }
802
971
  },
803
972
  required: [
804
- 'controllerRoleArn'
973
+ 'enabled'
805
974
  ],
806
975
  additionalProperties: false
807
976
  },
@@ -817,7 +986,12 @@ export const FleetCreateInputSchema = {
817
986
  'spot'
818
987
  ]
819
988
  },
820
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
989
+ minItems: 1,
990
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
991
+ default: [
992
+ 'on-demand',
993
+ 'spot'
994
+ ]
821
995
  },
822
996
  'kubernetes.io/arch': {
823
997
  type: 'array',
@@ -828,7 +1002,11 @@ export const FleetCreateInputSchema = {
828
1002
  'arm64'
829
1003
  ]
830
1004
  },
831
- description: 'Allowed values for `kubernetes.io/arch`.'
1005
+ minItems: 1,
1006
+ description: 'Allowed values for `kubernetes.io/arch`.',
1007
+ default: [
1008
+ 'amd64'
1009
+ ]
832
1010
  },
833
1011
  'cfke.io/instance-family': {
834
1012
  type: 'array',
@@ -995,7 +1173,8 @@ export const FleetCreateInputSchema = {
995
1173
  'z3'
996
1174
  ]
997
1175
  },
998
- description: 'Allowed values for `cfke.io/instance-family`.'
1176
+ description: 'Allowed values for `cfke.io/instance-family`.',
1177
+ default: []
999
1178
  },
1000
1179
  'topology.kubernetes.io/region': {
1001
1180
  type: 'array',
@@ -1068,21 +1247,72 @@ export const FleetCreateInputSchema = {
1068
1247
  'us-west4'
1069
1248
  ]
1070
1249
  },
1071
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1250
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1251
+ default: []
1072
1252
  }
1073
1253
  },
1074
1254
  additionalProperties: false,
1075
- 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.'
1255
+ 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.',
1256
+ default: {
1257
+ 'karpenter.sh/capacity-type': [
1258
+ 'on-demand',
1259
+ 'spot'
1260
+ ],
1261
+ 'kubernetes.io/arch': [
1262
+ 'amd64'
1263
+ ],
1264
+ 'cfke.io/instance-family': [],
1265
+ 'topology.kubernetes.io/region': []
1266
+ }
1076
1267
  },
1077
1268
  scalingProfile: {
1078
1269
  type: 'string',
1079
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1270
+ 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`).',
1271
+ default: 'conservative',
1080
1272
  example: 'conservative',
1081
1273
  enum: [
1082
1274
  'aggressive',
1083
1275
  'conservative'
1084
1276
  ]
1085
1277
  },
1278
+ taints: {
1279
+ type: 'array',
1280
+ items: {
1281
+ type: 'object',
1282
+ properties: {
1283
+ key: {
1284
+ type: 'string',
1285
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
1286
+ example: 'dedicated'
1287
+ },
1288
+ value: {
1289
+ type: 'string',
1290
+ maxLength: 63,
1291
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
1292
+ description: 'Taint value. Optional.',
1293
+ example: 'ci'
1294
+ },
1295
+ effect: {
1296
+ type: 'string',
1297
+ description: 'Taint effect.',
1298
+ example: 'NoSchedule',
1299
+ enum: [
1300
+ 'NoSchedule',
1301
+ 'PreferNoSchedule',
1302
+ 'NoExecute'
1303
+ ]
1304
+ }
1305
+ },
1306
+ required: [
1307
+ 'key',
1308
+ 'effect'
1309
+ ],
1310
+ additionalProperties: false
1311
+ },
1312
+ maxItems: 50,
1313
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
1314
+ default: []
1315
+ },
1086
1316
  id: {
1087
1317
  type: 'string',
1088
1318
  maxLength: 63,
@@ -1095,7 +1325,8 @@ export const FleetCreateInputSchema = {
1095
1325
  required: [
1096
1326
  'id'
1097
1327
  ],
1098
- additionalProperties: false
1328
+ additionalProperties: false,
1329
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1099
1330
  };
1100
1331
  export const FleetSchema = {
1101
1332
  type: 'object',
@@ -1104,10 +1335,10 @@ export const FleetSchema = {
1104
1335
  type: 'object',
1105
1336
  properties: {
1106
1337
  cpu: {
1107
- type: 'number',
1108
- format: 'float',
1338
+ type: 'integer',
1109
1339
  minimum: 0,
1110
- description: 'CPU limit in cores.'
1340
+ maximum: 100000,
1341
+ description: 'CPU limit in cores. Maximum 100,000.'
1111
1342
  }
1112
1343
  },
1113
1344
  additionalProperties: false,
@@ -1117,16 +1348,17 @@ export const FleetSchema = {
1117
1348
  type: 'object',
1118
1349
  properties: {
1119
1350
  enabled: {
1120
- type: 'boolean',
1121
- default: true
1351
+ type: 'boolean'
1122
1352
  },
1123
1353
  project: {
1124
1354
  type: 'string',
1125
- description: 'Project GCP Project id to deploy instances into'
1355
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1356
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1357
+ example: 'my-cloudfleet-project'
1126
1358
  }
1127
1359
  },
1128
1360
  required: [
1129
- 'project'
1361
+ 'enabled'
1130
1362
  ],
1131
1363
  additionalProperties: false
1132
1364
  },
@@ -1134,30 +1366,34 @@ export const FleetSchema = {
1134
1366
  type: 'object',
1135
1367
  properties: {
1136
1368
  enabled: {
1137
- type: 'boolean',
1138
- default: true
1369
+ type: 'boolean'
1139
1370
  },
1140
1371
  apiKey: {
1141
1372
  type: 'string',
1142
- description: 'Hetzner Cloud API key with read / write access. On update, omit this field to keep the existing value.'
1373
+ pattern: '^\\*{64}$',
1374
+ description: 'Redacted Hetzner API token. Returned as 64 asterisks when a token is configured; omitted otherwise. The real value is never echoed by the API.'
1143
1375
  }
1144
1376
  },
1377
+ required: [
1378
+ 'enabled'
1379
+ ],
1145
1380
  additionalProperties: false
1146
1381
  },
1147
1382
  aws: {
1148
1383
  type: 'object',
1149
1384
  properties: {
1150
1385
  enabled: {
1151
- type: 'boolean',
1152
- default: true
1386
+ type: 'boolean'
1153
1387
  },
1154
1388
  controllerRoleArn: {
1155
1389
  type: 'string',
1156
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1390
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1391
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1392
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
1157
1393
  }
1158
1394
  },
1159
1395
  required: [
1160
- 'controllerRoleArn'
1396
+ 'enabled'
1161
1397
  ],
1162
1398
  additionalProperties: false
1163
1399
  },
@@ -1173,7 +1409,12 @@ export const FleetSchema = {
1173
1409
  'spot'
1174
1410
  ]
1175
1411
  },
1176
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1412
+ minItems: 1,
1413
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1414
+ default: [
1415
+ 'on-demand',
1416
+ 'spot'
1417
+ ]
1177
1418
  },
1178
1419
  'kubernetes.io/arch': {
1179
1420
  type: 'array',
@@ -1184,7 +1425,11 @@ export const FleetSchema = {
1184
1425
  'arm64'
1185
1426
  ]
1186
1427
  },
1187
- description: 'Allowed values for `kubernetes.io/arch`.'
1428
+ minItems: 1,
1429
+ description: 'Allowed values for `kubernetes.io/arch`.',
1430
+ default: [
1431
+ 'amd64'
1432
+ ]
1188
1433
  },
1189
1434
  'cfke.io/instance-family': {
1190
1435
  type: 'array',
@@ -1351,7 +1596,8 @@ export const FleetSchema = {
1351
1596
  'z3'
1352
1597
  ]
1353
1598
  },
1354
- description: 'Allowed values for `cfke.io/instance-family`.'
1599
+ description: 'Allowed values for `cfke.io/instance-family`.',
1600
+ default: []
1355
1601
  },
1356
1602
  'topology.kubernetes.io/region': {
1357
1603
  type: 'array',
@@ -1424,21 +1670,76 @@ export const FleetSchema = {
1424
1670
  'us-west4'
1425
1671
  ]
1426
1672
  },
1427
- description: 'Allowed values for `topology.kubernetes.io/region`.'
1673
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
1674
+ default: []
1428
1675
  }
1429
1676
  },
1677
+ required: [
1678
+ 'karpenter.sh/capacity-type',
1679
+ 'kubernetes.io/arch'
1680
+ ],
1430
1681
  additionalProperties: false,
1431
- 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.'
1682
+ 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.',
1683
+ default: {
1684
+ 'karpenter.sh/capacity-type': [
1685
+ 'on-demand',
1686
+ 'spot'
1687
+ ],
1688
+ 'kubernetes.io/arch': [
1689
+ 'amd64'
1690
+ ],
1691
+ 'cfke.io/instance-family': [],
1692
+ 'topology.kubernetes.io/region': []
1693
+ }
1432
1694
  },
1433
1695
  scalingProfile: {
1434
1696
  type: 'string',
1435
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1697
+ 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`).',
1698
+ default: 'conservative',
1436
1699
  example: 'conservative',
1437
1700
  enum: [
1438
1701
  'aggressive',
1439
1702
  'conservative'
1440
1703
  ]
1441
1704
  },
1705
+ taints: {
1706
+ type: 'array',
1707
+ items: {
1708
+ type: 'object',
1709
+ properties: {
1710
+ key: {
1711
+ type: 'string',
1712
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
1713
+ example: 'dedicated'
1714
+ },
1715
+ value: {
1716
+ type: 'string',
1717
+ maxLength: 63,
1718
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
1719
+ description: 'Taint value. Optional.',
1720
+ example: 'ci'
1721
+ },
1722
+ effect: {
1723
+ type: 'string',
1724
+ description: 'Taint effect.',
1725
+ example: 'NoSchedule',
1726
+ enum: [
1727
+ 'NoSchedule',
1728
+ 'PreferNoSchedule',
1729
+ 'NoExecute'
1730
+ ]
1731
+ }
1732
+ },
1733
+ required: [
1734
+ 'key',
1735
+ 'effect'
1736
+ ],
1737
+ additionalProperties: false
1738
+ },
1739
+ maxItems: 50,
1740
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
1741
+ default: []
1742
+ },
1442
1743
  id: {
1443
1744
  type: 'string',
1444
1745
  maxLength: 63,
@@ -1446,12 +1747,39 @@ export const FleetSchema = {
1446
1747
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
1447
1748
  description: 'Unique identifier of the kubernetes fleet.',
1448
1749
  example: 'new-clouds-fleet'
1750
+ },
1751
+ ready: {
1752
+ type: 'boolean',
1753
+ description: 'Indicates whether the fleet configuration is healthy.',
1754
+ example: true
1755
+ },
1756
+ status_message: {
1757
+ type: 'string',
1758
+ description: 'Human-readable reason the fleet is not ready. Present only when `ready` is false.',
1759
+ example: 'Invalid provider permissions.'
1760
+ },
1761
+ created_at: {
1762
+ type: 'string',
1763
+ description: 'Creation date and time of the fleet.',
1764
+ example: '2024-09-12T09:11:27Z'
1765
+ },
1766
+ updated_at: {
1767
+ type: 'string',
1768
+ description: 'Date and time the fleet was last updated.',
1769
+ example: '2024-09-12T09:11:27Z'
1449
1770
  }
1450
1771
  },
1451
1772
  required: [
1452
- 'id'
1773
+ 'constraints',
1774
+ 'scalingProfile',
1775
+ 'taints',
1776
+ 'id',
1777
+ 'ready',
1778
+ 'created_at',
1779
+ 'updated_at'
1453
1780
  ],
1454
- additionalProperties: false
1781
+ additionalProperties: false,
1782
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
1455
1783
  };
1456
1784
  export const FleetUpdateInputSchema = {
1457
1785
  type: 'object',
@@ -1460,10 +1788,10 @@ export const FleetUpdateInputSchema = {
1460
1788
  type: 'object',
1461
1789
  properties: {
1462
1790
  cpu: {
1463
- type: 'number',
1464
- format: 'float',
1791
+ type: 'integer',
1465
1792
  minimum: 0,
1466
- description: 'CPU limit in cores.'
1793
+ maximum: 100000,
1794
+ description: 'CPU limit in cores. Maximum 100,000.'
1467
1795
  }
1468
1796
  },
1469
1797
  additionalProperties: false,
@@ -1473,16 +1801,17 @@ export const FleetUpdateInputSchema = {
1473
1801
  type: 'object',
1474
1802
  properties: {
1475
1803
  enabled: {
1476
- type: 'boolean',
1477
- default: true
1804
+ type: 'boolean'
1478
1805
  },
1479
1806
  project: {
1480
1807
  type: 'string',
1481
- description: 'Project GCP Project id to deploy instances into'
1808
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1809
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1810
+ example: 'my-cloudfleet-project'
1482
1811
  }
1483
1812
  },
1484
1813
  required: [
1485
- 'project'
1814
+ 'enabled'
1486
1815
  ],
1487
1816
  additionalProperties: false
1488
1817
  },
@@ -1490,30 +1819,36 @@ export const FleetUpdateInputSchema = {
1490
1819
  type: 'object',
1491
1820
  properties: {
1492
1821
  enabled: {
1493
- type: 'boolean',
1494
- default: true
1822
+ type: 'boolean'
1495
1823
  },
1496
1824
  apiKey: {
1497
1825
  type: 'string',
1498
- description: 'Hetzner Cloud API key with read / write access. On update, omit this field to keep the existing value.'
1826
+ maxLength: 64,
1827
+ minLength: 64,
1828
+ pattern: '^([A-Za-z0-9]{64}|\\*{64})$',
1829
+ 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.'
1499
1830
  }
1500
1831
  },
1832
+ required: [
1833
+ 'enabled'
1834
+ ],
1501
1835
  additionalProperties: false
1502
1836
  },
1503
1837
  aws: {
1504
1838
  type: 'object',
1505
1839
  properties: {
1506
1840
  enabled: {
1507
- type: 'boolean',
1508
- default: true
1841
+ type: 'boolean'
1509
1842
  },
1510
1843
  controllerRoleArn: {
1511
1844
  type: 'string',
1512
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1845
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1846
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1847
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
1513
1848
  }
1514
1849
  },
1515
1850
  required: [
1516
- 'controllerRoleArn'
1851
+ 'enabled'
1517
1852
  ],
1518
1853
  additionalProperties: false
1519
1854
  },
@@ -1529,7 +1864,12 @@ export const FleetUpdateInputSchema = {
1529
1864
  'spot'
1530
1865
  ]
1531
1866
  },
1532
- description: 'Allowed values for `karpenter.sh/capacity-type`.'
1867
+ minItems: 1,
1868
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1869
+ default: [
1870
+ 'on-demand',
1871
+ 'spot'
1872
+ ]
1533
1873
  },
1534
1874
  'kubernetes.io/arch': {
1535
1875
  type: 'array',
@@ -1540,7 +1880,11 @@ export const FleetUpdateInputSchema = {
1540
1880
  'arm64'
1541
1881
  ]
1542
1882
  },
1543
- description: 'Allowed values for `kubernetes.io/arch`.'
1883
+ minItems: 1,
1884
+ description: 'Allowed values for `kubernetes.io/arch`.',
1885
+ default: [
1886
+ 'amd64'
1887
+ ]
1544
1888
  },
1545
1889
  'cfke.io/instance-family': {
1546
1890
  type: 'array',
@@ -1707,7 +2051,8 @@ export const FleetUpdateInputSchema = {
1707
2051
  'z3'
1708
2052
  ]
1709
2053
  },
1710
- description: 'Allowed values for `cfke.io/instance-family`.'
2054
+ description: 'Allowed values for `cfke.io/instance-family`.',
2055
+ default: []
1711
2056
  },
1712
2057
  'topology.kubernetes.io/region': {
1713
2058
  type: 'array',
@@ -1780,22 +2125,99 @@ export const FleetUpdateInputSchema = {
1780
2125
  'us-west4'
1781
2126
  ]
1782
2127
  },
1783
- description: 'Allowed values for `topology.kubernetes.io/region`.'
2128
+ description: 'Allowed values for `topology.kubernetes.io/region`.',
2129
+ default: []
1784
2130
  }
1785
2131
  },
1786
2132
  additionalProperties: false,
1787
- 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.'
2133
+ 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.',
2134
+ default: {
2135
+ 'karpenter.sh/capacity-type': [
2136
+ 'on-demand',
2137
+ 'spot'
2138
+ ],
2139
+ 'kubernetes.io/arch': [
2140
+ 'amd64'
2141
+ ],
2142
+ 'cfke.io/instance-family': [],
2143
+ 'topology.kubernetes.io/region': []
2144
+ }
1788
2145
  },
1789
2146
  scalingProfile: {
1790
2147
  type: 'string',
1791
- description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
2148
+ 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`).',
2149
+ default: 'conservative',
1792
2150
  example: 'conservative',
1793
2151
  enum: [
1794
2152
  'aggressive',
1795
2153
  'conservative'
1796
2154
  ]
2155
+ },
2156
+ taints: {
2157
+ type: 'array',
2158
+ items: {
2159
+ type: 'object',
2160
+ properties: {
2161
+ key: {
2162
+ type: 'string',
2163
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
2164
+ example: 'dedicated'
2165
+ },
2166
+ value: {
2167
+ type: 'string',
2168
+ maxLength: 63,
2169
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
2170
+ description: 'Taint value. Optional.',
2171
+ example: 'ci'
2172
+ },
2173
+ effect: {
2174
+ type: 'string',
2175
+ description: 'Taint effect.',
2176
+ example: 'NoSchedule',
2177
+ enum: [
2178
+ 'NoSchedule',
2179
+ 'PreferNoSchedule',
2180
+ 'NoExecute'
2181
+ ]
2182
+ }
2183
+ },
2184
+ required: [
2185
+ 'key',
2186
+ 'effect'
2187
+ ],
2188
+ additionalProperties: false
2189
+ },
2190
+ maxItems: 50,
2191
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
2192
+ default: []
2193
+ }
2194
+ },
2195
+ additionalProperties: false,
2196
+ description: 'Mutable fleet configuration. Applied as a full overwrite: any omitted field is reset to its default rather than left unchanged.'
2197
+ };
2198
+ export const InviteCreateInputSchema = {
2199
+ type: 'object',
2200
+ properties: {
2201
+ email: {
2202
+ type: 'string',
2203
+ format: 'email',
2204
+ description: 'Email address of the user to invite.',
2205
+ example: 'email@example.com'
2206
+ },
2207
+ role: {
2208
+ type: 'string',
2209
+ description: 'Role the invited user will be assigned on redemption. Can be \'Administrator\' or \'User\'.',
2210
+ default: 'User',
2211
+ example: 'User',
2212
+ enum: [
2213
+ 'Administrator',
2214
+ 'User'
2215
+ ]
1797
2216
  }
1798
2217
  },
2218
+ required: [
2219
+ 'email'
2220
+ ],
1799
2221
  additionalProperties: false
1800
2222
  };
1801
2223
  export const InviteSchema = {
@@ -1828,6 +2250,16 @@ export const InviteSchema = {
1828
2250
  type: 'string',
1829
2251
  description: 'Generated unique invite code.',
1830
2252
  example: '7kUZnH7nnKUFfvc4NK2KQF'
2253
+ },
2254
+ role: {
2255
+ type: 'string',
2256
+ description: 'Role the invited user will be assigned on redemption. Can be \'Administrator\' or \'User\'.',
2257
+ default: 'User',
2258
+ example: 'User',
2259
+ enum: [
2260
+ 'Administrator',
2261
+ 'User'
2262
+ ]
1831
2263
  }
1832
2264
  },
1833
2265
  required: [
@@ -1835,219 +2267,238 @@ export const InviteSchema = {
1835
2267
  ],
1836
2268
  additionalProperties: false
1837
2269
  };
1838
- export const InvoiceSchema = {
2270
+ export const InvoicePaymentAttemptSchema = {
1839
2271
  type: 'object',
1840
2272
  properties: {
1841
- id: {
2273
+ invoice_id: {
1842
2274
  type: 'string',
1843
- description: 'Unique identifier of the invoice.',
2275
+ description: 'Identifier of the invoice.',
1844
2276
  example: 'in_1234567890xCrwxghOTj1234'
1845
2277
  },
1846
2278
  number: {
1847
- type: 'string'
1848
- },
1849
- status: {
1850
2279
  type: 'string',
1851
- description: 'Status of the invoice',
1852
- example: 'paid'
2280
+ nullable: true,
2281
+ description: 'Invoice number. Null if the invoice has no number.',
2282
+ example: 'CF-0042'
1853
2283
  },
1854
- total: {
2284
+ amount: {
1855
2285
  type: 'number',
1856
2286
  format: 'float',
1857
- description: 'Total amount of the invoice',
1858
- example: 100
2287
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2288
+ example: 4200
1859
2289
  },
1860
2290
  currency: {
1861
2291
  type: 'string',
1862
- description: 'Currency of the invoice',
1863
- example: 'usd'
2292
+ description: 'Currency of the invoice.',
2293
+ example: 'eur'
1864
2294
  },
1865
- created: {
2295
+ status: {
1866
2296
  type: 'string',
1867
- format: 'date-time',
1868
- description: 'Timestamp when the invoice was issued. ISO 8601 date string in the UTC timezone.',
1869
- example: '2023-12-20T13:53:32.000Z'
2297
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2298
+ example: 'paid',
2299
+ enum: [
2300
+ 'paid',
2301
+ 'processing',
2302
+ 'requires_action',
2303
+ 'failed'
2304
+ ]
1870
2305
  },
1871
- period_start: {
2306
+ client_secret: {
1872
2307
  type: 'string',
1873
- format: 'date-time',
1874
- description: 'Billing period start timestamp. ISO 8601 date string in the UTC timezone.',
1875
- example: '2023-12-20T13:53:32.000Z'
2308
+ nullable: true,
2309
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2310
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
1876
2311
  },
1877
- period_end: {
2312
+ failure_code: {
1878
2313
  type: 'string',
1879
- format: 'date-time',
1880
- description: 'Billing period end timestamp. ISO 8601 date string in the UTC timezone.',
1881
- example: '2023-12-20T13:53:32.000Z'
2314
+ nullable: true,
2315
+ description: 'Decline code. Set only when `status` is `failed`.',
2316
+ example: 'insufficient_funds'
1882
2317
  },
1883
- invoice_pdf: {
1884
- type: 'string'
2318
+ failure_message: {
2319
+ type: 'string',
2320
+ nullable: true,
2321
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2322
+ example: 'Your card has insufficient funds.'
1885
2323
  }
1886
2324
  },
1887
2325
  required: [
1888
- 'created',
1889
- 'period_start',
1890
- 'period_end'
2326
+ 'invoice_id',
2327
+ 'number',
2328
+ 'amount',
2329
+ 'currency',
2330
+ 'status',
2331
+ 'client_secret',
2332
+ 'failure_code',
2333
+ 'failure_message'
1891
2334
  ],
1892
2335
  additionalProperties: false
1893
2336
  };
1894
- export const MarketplaceListingFilesSchema = {
2337
+ export const InvoicePaymentResultSchema = {
1895
2338
  type: 'object',
1896
2339
  properties: {
1897
- chartYaml: {
2340
+ code: {
1898
2341
  type: 'string',
1899
- description: 'Raw Chart.yaml content from the Helm chart',
1900
- example: 'apiVersion: v2\nname: nginx-ingress\nversion: 1.18.2-cfke.45\nappVersion: 1.9.4'
2342
+ description: 'Overall outcome: `paid` (nothing outstanding), `processing` (all accepted, not yet settled), `action_required` (one or more await customer authentication), `partially_paid`, `failed`, `nothing_due`, or `bank_transfer_due` (the organization pays by bank transfer; nothing was charged).',
2343
+ example: 'partially_paid',
2344
+ enum: [
2345
+ 'paid',
2346
+ 'processing',
2347
+ 'action_required',
2348
+ 'partially_paid',
2349
+ 'failed',
2350
+ 'nothing_due',
2351
+ 'bank_transfer_due'
2352
+ ]
1901
2353
  },
1902
- valuesYaml: {
2354
+ message: {
1903
2355
  type: 'string',
1904
- description: 'Raw values.yaml content from the Helm chart',
1905
- example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
2356
+ description: 'Summary of the outcome, suitable for display.',
2357
+ example: '1 of 2 open invoices was paid. Invoice CF-0043 was declined: Your card has insufficient funds.'
1906
2358
  },
1907
- valuesSchemaJson: {
1908
- type: 'string',
1909
- description: 'JSON schema for values.yaml as a string',
1910
- example: '{"type":"object","properties":{"replicaCount":{"type":"number"}}}'
2359
+ results: {
2360
+ type: 'array',
2361
+ items: {
2362
+ type: 'object',
2363
+ properties: {
2364
+ invoice_id: {
2365
+ type: 'string',
2366
+ description: 'Identifier of the invoice.',
2367
+ example: 'in_1234567890xCrwxghOTj1234'
2368
+ },
2369
+ number: {
2370
+ type: 'string',
2371
+ description: 'Invoice number. Null if the invoice has no number.',
2372
+ example: 'CF-0042'
2373
+ },
2374
+ amount: {
2375
+ type: 'number',
2376
+ format: 'float',
2377
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2378
+ example: 4200
2379
+ },
2380
+ currency: {
2381
+ type: 'string',
2382
+ description: 'Currency of the invoice.',
2383
+ example: 'eur'
2384
+ },
2385
+ status: {
2386
+ type: 'string',
2387
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2388
+ example: 'paid',
2389
+ enum: [
2390
+ 'paid',
2391
+ 'processing',
2392
+ 'requires_action',
2393
+ 'failed'
2394
+ ]
2395
+ },
2396
+ client_secret: {
2397
+ type: 'string',
2398
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2399
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
2400
+ },
2401
+ failure_code: {
2402
+ type: 'string',
2403
+ description: 'Decline code. Set only when `status` is `failed`.',
2404
+ example: 'insufficient_funds'
2405
+ },
2406
+ failure_message: {
2407
+ type: 'string',
2408
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2409
+ example: 'Your card has insufficient funds.'
2410
+ }
2411
+ },
2412
+ required: [
2413
+ 'invoice_id',
2414
+ 'number',
2415
+ 'amount',
2416
+ 'currency',
2417
+ 'status',
2418
+ 'client_secret',
2419
+ 'failure_code',
2420
+ 'failure_message'
2421
+ ],
2422
+ additionalProperties: false
2423
+ },
2424
+ description: 'One entry per invoice charged, oldest first.'
1911
2425
  }
1912
2426
  },
2427
+ required: [
2428
+ 'code',
2429
+ 'message',
2430
+ 'results'
2431
+ ],
1913
2432
  additionalProperties: false
1914
2433
  };
1915
- export const MarketplaceListingSchema = {
2434
+ export const InvoiceSchema = {
1916
2435
  type: 'object',
1917
2436
  properties: {
1918
- name: {
2437
+ id: {
1919
2438
  type: 'string',
1920
- description: 'Name of the chart',
1921
- example: 'nginx-ingress'
1922
- },
1923
- versions: {
1924
- type: 'array',
1925
- items: {
1926
- type: 'string',
1927
- pattern: '^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(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-]+)*))?$',
1928
- description: 'Specific version of the chart',
1929
- example: '1.18.2-cfke.45'
1930
- },
1931
- description: 'Available versions of the chart'
2439
+ description: 'Unique identifier of the invoice.',
2440
+ example: 'in_1234567890xCrwxghOTj1234'
1932
2441
  },
1933
- version_channels: {
1934
- type: 'array',
1935
- items: {
1936
- type: 'string',
1937
- 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-]+)*))?$',
1938
- description: 'Version channel pattern',
1939
- example: '1.18.x-cfke.x'
1940
- },
1941
- description: 'Version channels for the chart'
2442
+ number: {
2443
+ type: 'string'
1942
2444
  },
1943
- latestVersion: {
2445
+ status: {
1944
2446
  type: 'string',
1945
- description: 'Latest version of the chart',
1946
- example: '1.18.2-cfke.45'
1947
- },
1948
- metadata: {
1949
- type: 'object',
1950
- properties: {
1951
- name: {
1952
- type: 'string',
1953
- description: 'Chart name from metadata',
1954
- example: 'nginx-ingress'
1955
- },
1956
- version: {
1957
- type: 'string',
1958
- description: 'Chart version from metadata',
1959
- example: '1.18.2-cfke.45'
1960
- },
1961
- description: {
1962
- type: 'string',
1963
- description: 'Chart description',
1964
- example: 'NGINX Ingress Controller for Kubernetes'
1965
- },
1966
- appVersion: {
1967
- type: 'string',
1968
- description: 'Application version',
1969
- example: '1.9.4'
1970
- },
1971
- apiVersion: {
1972
- type: 'string',
1973
- description: 'Helm API version',
1974
- example: 'v2'
1975
- },
1976
- keywords: {
1977
- type: 'array',
1978
- items: {
1979
- type: 'string'
1980
- },
1981
- description: 'Chart keywords',
1982
- example: [
1983
- 'ingress',
1984
- 'nginx',
1985
- 'load-balancer'
1986
- ]
1987
- },
1988
- home: {
1989
- type: 'string',
1990
- description: 'Chart home URL',
1991
- example: 'https://kubernetes.github.io/ingress-nginx/'
1992
- },
1993
- icon: {
1994
- type: 'string',
1995
- description: 'A URL to an SVG or PNG image to be used as an icon',
1996
- example: 'https://cloudfleet.ai/images/marketplace/icons/ingress-nginx.png'
1997
- },
1998
- sources: {
1999
- type: 'array',
2000
- items: {
2001
- type: 'string'
2002
- },
2003
- description: 'Chart source URLs',
2004
- example: [
2005
- 'https://github.com/kubernetes/ingress-nginx'
2006
- ]
2007
- },
2008
- maintainers: {
2009
- type: 'array',
2010
- items: {
2011
- type: 'object',
2012
- properties: {
2013
- name: {
2014
- type: 'string',
2015
- description: 'Maintainer name',
2016
- example: 'NGINX Team'
2017
- },
2018
- email: {
2019
- type: 'string',
2020
- description: 'Maintainer email',
2021
- example: 'support@nginx.org'
2022
- }
2023
- },
2024
- required: [
2025
- 'name'
2026
- ],
2027
- additionalProperties: false
2028
- },
2029
- description: 'Chart maintainers'
2030
- }
2031
- },
2032
- required: [
2033
- 'name',
2034
- 'version'
2035
- ],
2036
- additionalProperties: false,
2037
- description: 'Chart metadata'
2447
+ description: 'Status of the invoice',
2448
+ example: 'paid'
2449
+ },
2450
+ total: {
2451
+ type: 'number',
2452
+ format: 'float',
2453
+ description: 'Total amount of the invoice',
2454
+ example: 100
2455
+ },
2456
+ currency: {
2457
+ type: 'string',
2458
+ description: 'Currency of the invoice',
2459
+ example: 'usd'
2460
+ },
2461
+ created: {
2462
+ type: 'string',
2463
+ format: 'date-time',
2464
+ description: 'Timestamp when the invoice was issued. ISO 8601 date string in the UTC timezone.',
2465
+ example: '2023-12-20T13:53:32.000Z'
2466
+ },
2467
+ period_start: {
2468
+ type: 'string',
2469
+ format: 'date-time',
2470
+ description: 'Billing period start timestamp. ISO 8601 date string in the UTC timezone.',
2471
+ example: '2023-12-20T13:53:32.000Z'
2472
+ },
2473
+ period_end: {
2474
+ type: 'string',
2475
+ format: 'date-time',
2476
+ description: 'Billing period end timestamp. ISO 8601 date string in the UTC timezone.',
2477
+ example: '2023-12-20T13:53:32.000Z'
2478
+ },
2479
+ invoice_pdf: {
2480
+ type: 'string'
2038
2481
  }
2039
2482
  },
2040
2483
  required: [
2041
- 'name',
2042
- 'versions',
2043
- 'version_channels',
2044
- 'latestVersion'
2484
+ 'created',
2485
+ 'period_start',
2486
+ 'period_end'
2045
2487
  ],
2046
2488
  additionalProperties: false
2047
2489
  };
2048
2490
  export const OrganizationCreateInputSchema = {
2049
2491
  type: 'object',
2050
2492
  properties: {
2493
+ type: {
2494
+ type: 'string',
2495
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2496
+ example: 'business',
2497
+ enum: [
2498
+ 'business',
2499
+ 'personal'
2500
+ ]
2501
+ },
2051
2502
  email: {
2052
2503
  type: 'string',
2053
2504
  format: 'email',
@@ -2056,11 +2507,13 @@ export const OrganizationCreateInputSchema = {
2056
2507
  },
2057
2508
  first_name: {
2058
2509
  type: 'string',
2510
+ minLength: 1,
2059
2511
  description: 'First name of the billing contact person.',
2060
2512
  example: 'John'
2061
2513
  },
2062
2514
  last_name: {
2063
2515
  type: 'string',
2516
+ minLength: 1,
2064
2517
  description: 'Last name of the billing contact person.',
2065
2518
  example: 'Doe'
2066
2519
  },
@@ -2079,6 +2532,7 @@ export const OrganizationCreateInputSchema = {
2079
2532
  }
2080
2533
  },
2081
2534
  required: [
2535
+ 'type',
2082
2536
  'email',
2083
2537
  'first_name',
2084
2538
  'last_name',
@@ -2087,6 +2541,20 @@ export const OrganizationCreateInputSchema = {
2087
2541
  ],
2088
2542
  additionalProperties: false
2089
2543
  };
2544
+ export const OrganizationCreateOutputSchema = {
2545
+ type: 'object',
2546
+ properties: {
2547
+ id: {
2548
+ type: 'string',
2549
+ description: 'Unique identifier of the newly created organization. Generated by the API and safe to use for client-side tracking immediately.',
2550
+ example: 'organization-id'
2551
+ }
2552
+ },
2553
+ required: [
2554
+ 'id'
2555
+ ],
2556
+ additionalProperties: false
2557
+ };
2090
2558
  export const OrganizationSchema = {
2091
2559
  type: 'object',
2092
2560
  properties: {
@@ -2103,6 +2571,15 @@ export const OrganizationSchema = {
2103
2571
  description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
2104
2572
  example: 'ACME Corp.'
2105
2573
  },
2574
+ type: {
2575
+ type: 'string',
2576
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2577
+ example: 'business',
2578
+ enum: [
2579
+ 'business',
2580
+ 'personal'
2581
+ ]
2582
+ },
2106
2583
  date_created: {
2107
2584
  type: 'string',
2108
2585
  format: 'date-time',
@@ -2134,6 +2611,17 @@ export const OrganizationSchema = {
2134
2611
  description: 'Available number of Pro clusters that can be created.',
2135
2612
  example: 999
2136
2613
  },
2614
+ enterprise_clusters_max: {
2615
+ type: 'integer',
2616
+ minimum: 0,
2617
+ description: 'Maximum number of Enterprise clusters that can be created.',
2618
+ example: 999
2619
+ },
2620
+ enterprise_clusters_available: {
2621
+ type: 'integer',
2622
+ description: 'Available number of Enterprise clusters that can be created.',
2623
+ example: 999
2624
+ },
2137
2625
  fleets_max: {
2138
2626
  type: 'integer',
2139
2627
  minimum: 0,
@@ -2153,7 +2641,7 @@ export const OrganizationSchema = {
2153
2641
  type: 'array',
2154
2642
  items: {
2155
2643
  type: 'string',
2156
- example: 'northamerica-central-1'
2644
+ example: 'northamerica-central-1a'
2157
2645
  },
2158
2646
  minItems: 1,
2159
2647
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2195,6 +2683,8 @@ export const OrganizationSchema = {
2195
2683
  'basic_clusters_available',
2196
2684
  'pro_clusters_max',
2197
2685
  'pro_clusters_available',
2686
+ 'enterprise_clusters_max',
2687
+ 'enterprise_clusters_available',
2198
2688
  'fleets_max',
2199
2689
  'cluster_tiers',
2200
2690
  'regions',
@@ -2212,13 +2702,25 @@ export const OrganizationSchema = {
2212
2702
  'closed',
2213
2703
  'suspended'
2214
2704
  ]
2705
+ },
2706
+ verification: {
2707
+ type: 'string',
2708
+ 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.',
2709
+ example: 'verified',
2710
+ enum: [
2711
+ 'none',
2712
+ 'submitted',
2713
+ 'verified'
2714
+ ]
2215
2715
  }
2216
2716
  },
2217
2717
  required: [
2218
2718
  'id',
2719
+ 'type',
2219
2720
  'date_created',
2220
2721
  'quota',
2221
- 'status'
2722
+ 'status',
2723
+ 'verification'
2222
2724
  ],
2223
2725
  additionalProperties: false
2224
2726
  };
@@ -2227,28 +2729,23 @@ export const PaymentMethodSchema = {
2227
2729
  properties: {
2228
2730
  id: {
2229
2731
  type: 'string',
2230
- format: 'uuid',
2231
- description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
2232
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
2233
- },
2234
- setup: {
2235
- type: 'boolean',
2236
- description: 'Whether organization payment method was set up and ready to use for payments.',
2237
- example: true
2732
+ 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.',
2733
+ example: 'pm_1MtwBwLkdIwHu7ix28a3tqPa'
2238
2734
  },
2239
2735
  type: {
2240
2736
  type: 'string',
2241
- nullable: true,
2242
- description: 'Payment method type type. Only `card` payments supported at the moment.',
2737
+ description: 'Payment method type. `card`, `sepa_debit` for SEPA Direct Debit (business accounts only), or `bank_transfer` for paying invoices by bank transfer.',
2243
2738
  example: 'card',
2244
2739
  enum: [
2245
- 'card'
2740
+ 'card',
2741
+ 'sepa_debit',
2742
+ 'bank_transfer'
2246
2743
  ]
2247
2744
  },
2248
2745
  last4: {
2249
2746
  type: 'string',
2250
2747
  nullable: true,
2251
- description: 'Last 4 digits of the payment card number.',
2748
+ 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.',
2252
2749
  example: '4242'
2253
2750
  },
2254
2751
  exp_month: {
@@ -2256,42 +2753,56 @@ export const PaymentMethodSchema = {
2256
2753
  minimum: 1,
2257
2754
  maximum: 12,
2258
2755
  nullable: true,
2259
- description: 'Two-digit number representing the card\'s expiration month.',
2260
- example: '12'
2756
+ description: 'Two-digit number representing the card\'s expiration month. Null for SEPA Direct Debit and bank transfer.',
2757
+ example: 12
2261
2758
  },
2262
2759
  exp_year: {
2263
2760
  type: 'integer',
2264
- minimum: 2024,
2265
2761
  nullable: true,
2266
- description: 'Four-digit number representing the card\'s expiration year.',
2267
- example: '2028'
2762
+ 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.',
2763
+ example: 2028
2268
2764
  },
2269
2765
  brand: {
2270
2766
  type: 'string',
2271
2767
  nullable: true,
2272
- description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
2273
- example: 'visa',
2274
- enum: [
2275
- 'amex',
2276
- 'diners',
2277
- 'discover',
2278
- 'eftpos_au',
2279
- 'jcb',
2280
- 'mastercard',
2281
- 'unionpay',
2282
- 'visa',
2283
- 'unknown'
2284
- ]
2768
+ 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.',
2769
+ example: 'visa'
2770
+ },
2771
+ iban: {
2772
+ type: 'string',
2773
+ nullable: true,
2774
+ 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.',
2775
+ example: 'DE11243015658023127510'
2776
+ },
2777
+ bic: {
2778
+ type: 'string',
2779
+ nullable: true,
2780
+ description: 'BIC/SWIFT of the destination bank for bank transfers. Set only for `bank_transfer`; null otherwise.',
2781
+ example: 'SOGEDEFFXXX'
2782
+ },
2783
+ account_holder_name: {
2784
+ type: 'string',
2785
+ nullable: true,
2786
+ description: 'Account holder name of the destination bank account for bank transfers. Set only for `bank_transfer`; null otherwise.',
2787
+ example: 'Cloudfleet GmbH'
2788
+ },
2789
+ is_default: {
2790
+ type: 'boolean',
2791
+ 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).',
2792
+ example: true
2285
2793
  }
2286
2794
  },
2287
2795
  required: [
2288
2796
  'id',
2289
- 'setup',
2290
2797
  'type',
2291
2798
  'last4',
2292
2799
  'exp_month',
2293
2800
  'exp_year',
2294
- 'brand'
2801
+ 'brand',
2802
+ 'iban',
2803
+ 'bic',
2804
+ 'account_holder_name',
2805
+ 'is_default'
2295
2806
  ],
2296
2807
  additionalProperties: false
2297
2808
  };
@@ -2320,6 +2831,17 @@ export const PlatformQuotaSchema = {
2320
2831
  description: 'Available number of Pro clusters that can be created.',
2321
2832
  example: 999
2322
2833
  },
2834
+ enterprise_clusters_max: {
2835
+ type: 'integer',
2836
+ minimum: 0,
2837
+ description: 'Maximum number of Enterprise clusters that can be created.',
2838
+ example: 999
2839
+ },
2840
+ enterprise_clusters_available: {
2841
+ type: 'integer',
2842
+ description: 'Available number of Enterprise clusters that can be created.',
2843
+ example: 999
2844
+ },
2323
2845
  fleets_max: {
2324
2846
  type: 'integer',
2325
2847
  minimum: 0,
@@ -2339,7 +2861,7 @@ export const PlatformQuotaSchema = {
2339
2861
  type: 'array',
2340
2862
  items: {
2341
2863
  type: 'string',
2342
- example: 'northamerica-central-1'
2864
+ example: 'northamerica-central-1a'
2343
2865
  },
2344
2866
  minItems: 1,
2345
2867
  description: 'List of Cloudfleet control plane regions available for the organization.'
@@ -2381,6 +2903,8 @@ export const PlatformQuotaSchema = {
2381
2903
  'basic_clusters_available',
2382
2904
  'pro_clusters_max',
2383
2905
  'pro_clusters_available',
2906
+ 'enterprise_clusters_max',
2907
+ 'enterprise_clusters_available',
2384
2908
  'fleets_max',
2385
2909
  'cluster_tiers',
2386
2910
  'regions',
@@ -2654,6 +3178,73 @@ export const RegistryTagSchema = {
2654
3178
  ],
2655
3179
  additionalProperties: false
2656
3180
  };
3181
+ export const RoadmapItemCreateInputSchema = {
3182
+ type: 'object',
3183
+ properties: {
3184
+ text: {
3185
+ type: 'string',
3186
+ maxLength: 500,
3187
+ minLength: 1,
3188
+ description: 'Your suggestion in one or two sentences. It is reviewed before it appears on the roadmap.',
3189
+ example: 'Support for ARM nodes on Hetzner.'
3190
+ }
3191
+ },
3192
+ required: [
3193
+ 'text'
3194
+ ],
3195
+ additionalProperties: false
3196
+ };
3197
+ export const RoadmapItemSchema = {
3198
+ type: 'object',
3199
+ properties: {
3200
+ id: {
3201
+ type: 'string',
3202
+ description: 'Unique identifier of the roadmap item (Mongo ObjectId).',
3203
+ example: '60c72b2f9f1b2c001f8e4d3a'
3204
+ },
3205
+ text: {
3206
+ type: 'string',
3207
+ description: 'Short description of the roadmap item.',
3208
+ example: 'Support for ARM nodes on Hetzner.'
3209
+ },
3210
+ vote: {
3211
+ type: 'integer',
3212
+ nullable: true,
3213
+ description: 'The caller\'s vote on this item: -1 (down), 1 (up), 2 (double up), or null if the caller has not voted.',
3214
+ example: 1,
3215
+ enum: [
3216
+ -1,
3217
+ 1,
3218
+ 2
3219
+ ]
3220
+ }
3221
+ },
3222
+ required: [
3223
+ 'id',
3224
+ 'text',
3225
+ 'vote'
3226
+ ],
3227
+ additionalProperties: false
3228
+ };
3229
+ export const RoadmapVoteInputSchema = {
3230
+ type: 'object',
3231
+ properties: {
3232
+ value: {
3233
+ type: 'integer',
3234
+ description: 'Vote value: -1 (down), 1 (up), or 2 (double up).',
3235
+ example: 1,
3236
+ enum: [
3237
+ -1,
3238
+ 1,
3239
+ 2
3240
+ ]
3241
+ }
3242
+ },
3243
+ required: [
3244
+ 'value'
3245
+ ],
3246
+ additionalProperties: false
3247
+ };
2657
3248
  export const TicketAttachmentSchema = {
2658
3249
  type: 'object',
2659
3250
  properties: {
@@ -2715,6 +3306,11 @@ export const TicketCreateInputSchema = {
2715
3306
  subcategory: 'cluster-question',
2716
3307
  cluster_id: '60c72b2f9f1b2c001f8e4d3a'
2717
3308
  }
3309
+ },
3310
+ grant_support_access: {
3311
+ type: 'boolean',
3312
+ description: 'Grant Cloudfleet support staff access to the organization\'s resources while the ticket is open. Access cannot be revoked; it ends when the ticket is closed.',
3313
+ example: true
2718
3314
  }
2719
3315
  },
2720
3316
  required: [
@@ -2723,172 +3319,6 @@ export const TicketCreateInputSchema = {
2723
3319
  ],
2724
3320
  additionalProperties: false
2725
3321
  };
2726
- export const TicketListResponseSchema = {
2727
- type: 'object',
2728
- properties: {
2729
- items: {
2730
- type: 'array',
2731
- items: {
2732
- type: 'object',
2733
- properties: {
2734
- id: {
2735
- type: 'string',
2736
- description: 'Unique identifier of the ticket (Mongo ObjectId).',
2737
- example: '60c72b2f9f1b2c001f8e4d3a'
2738
- },
2739
- status: {
2740
- type: 'string',
2741
- description: 'Current state of the ticket.',
2742
- example: 'waiting_on_us',
2743
- enum: [
2744
- 'waiting_on_us',
2745
- 'waiting_on_user',
2746
- 'closed'
2747
- ]
2748
- },
2749
- category: {
2750
- type: 'string',
2751
- description: 'Ticket category.',
2752
- example: 'technical',
2753
- enum: [
2754
- 'billing',
2755
- 'technical',
2756
- 'general'
2757
- ]
2758
- },
2759
- summary: {
2760
- type: 'string',
2761
- description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2762
- example: 'My cluster cannot reach the registry. Logs attached.'
2763
- },
2764
- closed_at: {
2765
- type: 'string',
2766
- format: 'date-time',
2767
- nullable: true,
2768
- description: 'Closure timestamp. Null while the ticket is open.',
2769
- example: '2026-05-18T16:08:14.338Z'
2770
- },
2771
- date_created: {
2772
- type: 'string',
2773
- format: 'date-time',
2774
- description: 'Creation date of the ticket. ISO 8601 UTC.',
2775
- example: '2026-05-11T16:08:14.338Z'
2776
- },
2777
- date_updated: {
2778
- type: 'string',
2779
- format: 'date-time',
2780
- description: 'Last update date of the ticket. ISO 8601 UTC.',
2781
- example: '2026-05-11T16:08:14.338Z'
2782
- },
2783
- messages: {
2784
- type: 'array',
2785
- items: {
2786
- type: 'object',
2787
- properties: {
2788
- id: {
2789
- type: 'string',
2790
- description: 'Unique identifier of the message (Mongo ObjectId).',
2791
- example: '60c72b2f9f1b2c001f8e4d3b'
2792
- },
2793
- type: {
2794
- type: 'string',
2795
- description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2796
- example: 'customer_reply',
2797
- enum: [
2798
- 'customer_reply',
2799
- 'agent_reply'
2800
- ]
2801
- },
2802
- body: {
2803
- type: 'string',
2804
- description: 'Message body in markdown.',
2805
- example: 'Thanks — that resolved it on my side.'
2806
- },
2807
- author_first_name: {
2808
- type: 'string',
2809
- nullable: true,
2810
- description: 'First name of the author. Null when not provided.',
2811
- example: 'Jane'
2812
- },
2813
- author_last_name: {
2814
- type: 'string',
2815
- nullable: true,
2816
- description: 'Last name of the author. Null when not provided.',
2817
- example: 'Doe'
2818
- },
2819
- attachments: {
2820
- type: 'array',
2821
- items: {
2822
- type: 'object',
2823
- properties: {
2824
- id: {
2825
- type: 'string',
2826
- description: 'Unique identifier of the attachment (Mongo ObjectId).',
2827
- example: '60c72b2f9f1b2c001f8e4d3c'
2828
- },
2829
- filename: {
2830
- type: 'string',
2831
- description: 'Original filename as uploaded.',
2832
- example: 'debug.log'
2833
- },
2834
- content_type: {
2835
- type: 'string',
2836
- description: 'MIME content type of the attachment.',
2837
- example: 'text/plain'
2838
- },
2839
- size: {
2840
- type: 'integer',
2841
- description: 'Size of the attachment in bytes.',
2842
- example: 12345
2843
- }
2844
- },
2845
- required: [
2846
- 'id',
2847
- 'filename',
2848
- 'content_type',
2849
- 'size'
2850
- ],
2851
- additionalProperties: false
2852
- },
2853
- description: 'Attachments associated with this message.',
2854
- example: []
2855
- },
2856
- date_created: {
2857
- type: 'string',
2858
- format: 'date-time',
2859
- description: 'Creation date of the message. ISO 8601 UTC.',
2860
- example: '2026-05-11T16:08:14.338Z'
2861
- }
2862
- },
2863
- required: [
2864
- 'id',
2865
- 'type',
2866
- 'body',
2867
- 'date_created'
2868
- ],
2869
- additionalProperties: false
2870
- },
2871
- description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2872
- }
2873
- },
2874
- required: [
2875
- 'id',
2876
- 'status',
2877
- 'category',
2878
- 'summary',
2879
- 'date_created',
2880
- 'date_updated'
2881
- ],
2882
- additionalProperties: false
2883
- },
2884
- description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2885
- }
2886
- },
2887
- required: [
2888
- 'items'
2889
- ],
2890
- additionalProperties: false
2891
- };
2892
3322
  export const TicketMessageInputSchema = {
2893
3323
  type: 'object',
2894
3324
  properties: {
@@ -2930,11 +3360,13 @@ export const TicketMessageSchema = {
2930
3360
  },
2931
3361
  author_first_name: {
2932
3362
  type: 'string',
3363
+ nullable: true,
2933
3364
  description: 'First name of the author. Null when not provided.',
2934
3365
  example: 'Jane'
2935
3366
  },
2936
3367
  author_last_name: {
2937
3368
  type: 'string',
3369
+ nullable: true,
2938
3370
  description: 'Last name of the author. Null when not provided.',
2939
3371
  example: 'Doe'
2940
3372
  },
@@ -3023,9 +3455,22 @@ export const TicketSchema = {
3023
3455
  description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3024
3456
  example: 'My cluster cannot reach the registry. Logs attached.'
3025
3457
  },
3458
+ support_access_granted: {
3459
+ type: 'boolean',
3460
+ description: 'Whether Cloudfleet support staff currently have access to the organization\'s resources. True once access is granted and until the ticket is closed.',
3461
+ example: true
3462
+ },
3463
+ support_access_granted_at: {
3464
+ type: 'string',
3465
+ format: 'date-time',
3466
+ nullable: true,
3467
+ description: 'When support access was granted. Null if it never was. Kept after the ticket is closed.',
3468
+ example: '2026-05-11T16:08:14.338Z'
3469
+ },
3026
3470
  closed_at: {
3027
3471
  type: 'string',
3028
3472
  format: 'date-time',
3473
+ nullable: true,
3029
3474
  description: 'Closure timestamp. Null while the ticket is open.',
3030
3475
  example: '2026-05-18T16:08:14.338Z'
3031
3476
  },
@@ -3135,6 +3580,8 @@ export const TicketSchema = {
3135
3580
  'status',
3136
3581
  'category',
3137
3582
  'summary',
3583
+ 'support_access_granted',
3584
+ 'support_access_granted_at',
3138
3585
  'date_created',
3139
3586
  'date_updated'
3140
3587
  ],
@@ -3250,12 +3697,21 @@ export const UsageFacetsSchema = {
3250
3697
  product: {
3251
3698
  type: 'array',
3252
3699
  items: {
3253
- type: 'string'
3700
+ type: 'string',
3701
+ enum: [
3702
+ 'cfke_controlplane_basic',
3703
+ 'cfke_controlplane_pro',
3704
+ 'cfke_controlplane_enterprise',
3705
+ 'cfke_connected_nodes_basic',
3706
+ 'cfke_connected_nodes_pro',
3707
+ 'cfke_connected_nodes_enterprise',
3708
+ 'cfcr_storage'
3709
+ ]
3254
3710
  },
3255
3711
  description: 'List of unique products',
3256
3712
  example: [
3257
- 'cfke_controlplane',
3258
- 'cfke_connected_nodes'
3713
+ 'cfke_controlplane_pro',
3714
+ 'cfke_connected_nodes_pro'
3259
3715
  ]
3260
3716
  }
3261
3717
  },
@@ -3282,7 +3738,16 @@ export const UsageResponseSchema = {
3282
3738
  product: {
3283
3739
  type: 'string',
3284
3740
  description: 'The product the usage is associated with',
3285
- example: 'cfke_controlplane'
3741
+ example: 'cfke_controlplane_pro',
3742
+ enum: [
3743
+ 'cfke_controlplane_basic',
3744
+ 'cfke_controlplane_pro',
3745
+ 'cfke_controlplane_enterprise',
3746
+ 'cfke_connected_nodes_basic',
3747
+ 'cfke_connected_nodes_pro',
3748
+ 'cfke_connected_nodes_enterprise',
3749
+ 'cfcr_storage'
3750
+ ]
3286
3751
  },
3287
3752
  value: {
3288
3753
  type: 'number',
@@ -3330,12 +3795,21 @@ export const UsageResponseSchema = {
3330
3795
  product: {
3331
3796
  type: 'array',
3332
3797
  items: {
3333
- type: 'string'
3798
+ type: 'string',
3799
+ enum: [
3800
+ 'cfke_controlplane_basic',
3801
+ 'cfke_controlplane_pro',
3802
+ 'cfke_controlplane_enterprise',
3803
+ 'cfke_connected_nodes_basic',
3804
+ 'cfke_connected_nodes_pro',
3805
+ 'cfke_connected_nodes_enterprise',
3806
+ 'cfcr_storage'
3807
+ ]
3334
3808
  },
3335
3809
  description: 'List of unique products',
3336
3810
  example: [
3337
- 'cfke_controlplane',
3338
- 'cfke_connected_nodes'
3811
+ 'cfke_controlplane_pro',
3812
+ 'cfke_connected_nodes_pro'
3339
3813
  ]
3340
3814
  }
3341
3815
  },
@@ -3365,7 +3839,16 @@ export const UsageSchema = {
3365
3839
  product: {
3366
3840
  type: 'string',
3367
3841
  description: 'The product the usage is associated with',
3368
- example: 'cfke_controlplane'
3842
+ example: 'cfke_controlplane_pro',
3843
+ enum: [
3844
+ 'cfke_controlplane_basic',
3845
+ 'cfke_controlplane_pro',
3846
+ 'cfke_controlplane_enterprise',
3847
+ 'cfke_connected_nodes_basic',
3848
+ 'cfke_connected_nodes_pro',
3849
+ 'cfke_connected_nodes_enterprise',
3850
+ 'cfcr_storage'
3851
+ ]
3369
3852
  },
3370
3853
  value: {
3371
3854
  type: 'number',
@@ -3428,24 +3911,6 @@ export const UserCreateInputSchema = {
3428
3911
  type: 'string',
3429
3912
  minLength: 8,
3430
3913
  description: 'User password. Must be at least 8 characters long.'
3431
- },
3432
- status: {
3433
- type: 'string',
3434
- description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
3435
- example: 'active',
3436
- enum: [
3437
- 'active',
3438
- 'inactive'
3439
- ]
3440
- },
3441
- role: {
3442
- type: 'string',
3443
- description: 'User role. Can be \'Administrator\', \'User\'.',
3444
- example: 'User',
3445
- enum: [
3446
- 'Administrator',
3447
- 'User'
3448
- ]
3449
3914
  }
3450
3915
  },
3451
3916
  required: [