@cloudfleet/sdk 0.0.1-96d5fec → 0.0.1-9a4447d

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 (87) hide show
  1. package/dist/@tanstack/react-query.gen.d.ts +1139 -0
  2. package/dist/@tanstack/react-query.gen.d.ts.map +1 -0
  3. package/dist/@tanstack/react-query.gen.js +1167 -0
  4. package/dist/@tanstack/react-query.gen.js.map +1 -0
  5. package/dist/client/client.gen.d.ts +3 -0
  6. package/dist/client/client.gen.d.ts.map +1 -0
  7. package/dist/client/client.gen.js +220 -0
  8. package/dist/client/client.gen.js.map +1 -0
  9. package/dist/client/index.d.ts +9 -0
  10. package/dist/client/index.d.ts.map +1 -0
  11. package/dist/client/index.js +7 -0
  12. package/dist/client/index.js.map +1 -0
  13. package/dist/client/types.gen.d.ts +121 -0
  14. package/dist/client/types.gen.d.ts.map +1 -0
  15. package/dist/client/types.gen.js +3 -0
  16. package/dist/client/types.gen.js.map +1 -0
  17. package/dist/client/utils.gen.d.ts +38 -0
  18. package/dist/client/utils.gen.d.ts.map +1 -0
  19. package/dist/client/utils.gen.js +229 -0
  20. package/dist/client/utils.gen.js.map +1 -0
  21. package/dist/client.gen.d.ts +13 -0
  22. package/dist/client.gen.d.ts.map +1 -0
  23. package/dist/client.gen.js +4 -0
  24. package/dist/client.gen.js.map +1 -0
  25. package/dist/core/auth.gen.d.ts +19 -0
  26. package/dist/core/auth.gen.d.ts.map +1 -0
  27. package/dist/core/auth.gen.js +15 -0
  28. package/dist/core/auth.gen.js.map +1 -0
  29. package/dist/core/bodySerializer.gen.d.ts +26 -0
  30. package/dist/core/bodySerializer.gen.d.ts.map +1 -0
  31. package/dist/core/bodySerializer.gen.js +58 -0
  32. package/dist/core/bodySerializer.gen.js.map +1 -0
  33. package/dist/core/params.gen.d.ts +44 -0
  34. package/dist/core/params.gen.d.ts.map +1 -0
  35. package/dist/core/params.gen.js +101 -0
  36. package/dist/core/params.gen.js.map +1 -0
  37. package/dist/core/pathSerializer.gen.d.ts +34 -0
  38. package/dist/core/pathSerializer.gen.d.ts.map +1 -0
  39. package/dist/core/pathSerializer.gen.js +107 -0
  40. package/dist/core/pathSerializer.gen.js.map +1 -0
  41. package/dist/core/queryKeySerializer.gen.d.ts +19 -0
  42. package/dist/core/queryKeySerializer.gen.d.ts.map +1 -0
  43. package/dist/core/queryKeySerializer.gen.js +93 -0
  44. package/dist/core/queryKeySerializer.gen.js.map +1 -0
  45. package/dist/core/serverSentEvents.gen.d.ts +72 -0
  46. package/dist/core/serverSentEvents.gen.d.ts.map +1 -0
  47. package/dist/core/serverSentEvents.gen.js +133 -0
  48. package/dist/core/serverSentEvents.gen.js.map +1 -0
  49. package/dist/core/types.gen.d.ts +79 -0
  50. package/dist/core/types.gen.d.ts.map +1 -0
  51. package/dist/core/types.gen.js +3 -0
  52. package/dist/core/types.gen.js.map +1 -0
  53. package/dist/core/utils.gen.d.ts +20 -0
  54. package/dist/core/utils.gen.d.ts.map +1 -0
  55. package/dist/core/utils.gen.js +88 -0
  56. package/dist/core/utils.gen.js.map +1 -0
  57. package/dist/index.d.ts +3 -0
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +3 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/schemas.gen.d.ts +1676 -1084
  62. package/dist/schemas.gen.d.ts.map +1 -1
  63. package/dist/schemas.gen.js +2973 -1138
  64. package/dist/schemas.gen.js.map +1 -1
  65. package/dist/sdk.gen.d.ts +274 -144
  66. package/dist/sdk.gen.d.ts.map +1 -1
  67. package/dist/sdk.gen.js +362 -225
  68. package/dist/sdk.gen.js.map +1 -1
  69. package/dist/services/kubernetes/api.d.ts +196 -0
  70. package/dist/services/kubernetes/api.d.ts.map +1 -0
  71. package/dist/services/kubernetes/api.js +140 -0
  72. package/dist/services/kubernetes/api.js.map +1 -0
  73. package/dist/services/kubernetes/index.d.ts +44 -0
  74. package/dist/services/kubernetes/index.d.ts.map +1 -0
  75. package/dist/services/kubernetes/index.js +68 -0
  76. package/dist/services/kubernetes/index.js.map +1 -0
  77. package/dist/services/kubernetes/types.d.ts +1335 -0
  78. package/dist/services/kubernetes/types.d.ts.map +1 -0
  79. package/dist/services/kubernetes/types.js +2 -0
  80. package/dist/services/kubernetes/types.js.map +1 -0
  81. package/dist/types.gen.d.ts +1517 -961
  82. package/dist/types.gen.d.ts.map +1 -1
  83. package/dist/zod.gen.d.ts +3775 -2857
  84. package/dist/zod.gen.d.ts.map +1 -1
  85. package/dist/zod.gen.js +1582 -893
  86. package/dist/zod.gen.js.map +1 -1
  87. package/package.json +31 -5
@@ -1,4 +1,447 @@
1
1
  // This file is auto-generated by @hey-api/openapi-ts
2
+ export const BillingContactSchema = {
3
+ type: 'object',
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
+ },
14
+ company: {
15
+ type: 'string',
16
+ maxLength: 120,
17
+ minLength: 2,
18
+ pattern: '^(?!\\s)(?!.*\\s$)(?=.*[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9])[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9 -.]{2,}$',
19
+ description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
20
+ example: 'ACME Corp.'
21
+ },
22
+ address1: {
23
+ type: 'string',
24
+ nullable: true,
25
+ description: 'Street address, P.O. box, c/o',
26
+ example: '123 Main St.'
27
+ },
28
+ address2: {
29
+ type: 'string',
30
+ nullable: true,
31
+ description: 'Apartment, suite, unit, building, floor, etc.',
32
+ example: 'Suite 100'
33
+ },
34
+ postalCode: {
35
+ type: 'string',
36
+ nullable: true,
37
+ description: 'Postal code as a string.',
38
+ example: '94105'
39
+ },
40
+ city: {
41
+ type: 'string',
42
+ nullable: true,
43
+ description: 'City or town name.',
44
+ example: 'San Francisco'
45
+ },
46
+ state: {
47
+ type: 'string',
48
+ nullable: true,
49
+ description: 'State, province, or region name.',
50
+ example: 'CA'
51
+ },
52
+ country: {
53
+ type: 'string',
54
+ nullable: true,
55
+ description: 'Country as a ISO 3166-1 alpha-2 country code.',
56
+ example: 'US'
57
+ },
58
+ phone: {
59
+ type: 'string',
60
+ nullable: true,
61
+ description: 'Phone number as a string.',
62
+ example: '+1 555 555 5555'
63
+ },
64
+ email: {
65
+ type: 'string',
66
+ format: 'email',
67
+ description: 'Email address used for billing as a string.',
68
+ example: 'email@example.com'
69
+ },
70
+ individual_name: {
71
+ type: 'string',
72
+ description: 'Name of the billing contact person.',
73
+ example: 'John Doe'
74
+ },
75
+ tax_id: {
76
+ type: 'string',
77
+ nullable: true,
78
+ description: 'Tax ID of the organization.',
79
+ example: 'DE123456789'
80
+ },
81
+ tax_id_type: {
82
+ type: 'string',
83
+ nullable: true,
84
+ description: 'Type of the tax ID.',
85
+ example: 'de_vat',
86
+ enum: [
87
+ 'ad_nrt',
88
+ 'ae_trn',
89
+ 'al_tin',
90
+ 'am_tin',
91
+ 'ao_tin',
92
+ 'ar_cuit',
93
+ 'at_vat',
94
+ 'au_abn',
95
+ 'au_arn',
96
+ 'ba_tin',
97
+ 'bb_tin',
98
+ 'be_vat',
99
+ 'bg_uic',
100
+ 'bg_vat',
101
+ 'bh_vat',
102
+ 'bo_tin',
103
+ 'br_cnpj',
104
+ 'br_cpf',
105
+ 'bs_tin',
106
+ 'by_tin',
107
+ 'ca_bn',
108
+ 'ca_gst_hst',
109
+ 'ca_pst_bc',
110
+ 'ca_pst_mb',
111
+ 'ca_pst_sk',
112
+ 'ca_qst',
113
+ 'cd_nif',
114
+ 'ch_uid',
115
+ 'ch_vat',
116
+ 'cl_tin',
117
+ 'cn_tin',
118
+ 'co_nit',
119
+ 'cr_tin',
120
+ 'cy_vat',
121
+ 'cz_vat',
122
+ 'de_stn',
123
+ 'de_vat',
124
+ 'dk_vat',
125
+ 'do_rcn',
126
+ 'ec_ruc',
127
+ 'ee_vat',
128
+ 'eg_tin',
129
+ 'es_cif',
130
+ 'es_vat',
131
+ 'eu_oss_vat',
132
+ 'fi_vat',
133
+ 'fr_vat',
134
+ 'gb_vat',
135
+ 'ge_vat',
136
+ 'gn_nif',
137
+ 'gr_vat',
138
+ 'hk_br',
139
+ 'hr_oib',
140
+ 'hr_vat',
141
+ 'hu_tin',
142
+ 'hu_vat',
143
+ 'id_npwp',
144
+ 'ie_vat',
145
+ 'il_vat',
146
+ 'in_gst',
147
+ 'is_vat',
148
+ 'it_vat',
149
+ 'jp_cn',
150
+ 'jp_rn',
151
+ 'jp_trn',
152
+ 'ke_pin',
153
+ 'kh_tin',
154
+ 'kr_brn',
155
+ 'kz_bin',
156
+ 'li_uid',
157
+ 'li_vat',
158
+ 'lt_vat',
159
+ 'lu_vat',
160
+ 'lv_vat',
161
+ 'ma_vat',
162
+ 'md_vat',
163
+ 'me_pib',
164
+ 'mk_vat',
165
+ 'mr_nif',
166
+ 'mt_vat',
167
+ 'mx_rfc',
168
+ 'my_frp',
169
+ 'my_itn',
170
+ 'my_sst',
171
+ 'ng_tin',
172
+ 'nl_vat',
173
+ 'no_vat',
174
+ 'no_voec',
175
+ 'np_pan',
176
+ 'nz_gst',
177
+ 'om_vat',
178
+ 'pe_ruc',
179
+ 'ph_tin',
180
+ 'pl_vat',
181
+ 'pt_vat',
182
+ 'ro_tin',
183
+ 'ro_vat',
184
+ 'rs_pib',
185
+ 'ru_inn',
186
+ 'ru_kpp',
187
+ 'sa_vat',
188
+ 'se_vat',
189
+ 'sg_gst',
190
+ 'sg_uen',
191
+ 'si_tin',
192
+ 'si_vat',
193
+ 'sk_vat',
194
+ 'sn_ninea',
195
+ 'sr_fin',
196
+ 'sv_nit',
197
+ 'th_vat',
198
+ 'tj_tin',
199
+ 'tr_tin',
200
+ 'tw_vat',
201
+ 'tz_vat',
202
+ 'ua_vat',
203
+ 'ug_tin',
204
+ 'us_ein',
205
+ 'uy_ruc',
206
+ 'uz_tin',
207
+ 'uz_vat',
208
+ 've_rif',
209
+ 'vn_tin',
210
+ 'xi_vat',
211
+ 'za_vat',
212
+ 'zm_tin',
213
+ 'zw_tin',
214
+ ''
215
+ ]
216
+ }
217
+ },
218
+ required: [
219
+ 'type',
220
+ 'email',
221
+ 'individual_name'
222
+ ],
223
+ additionalProperties: false
224
+ };
225
+ export const BillingCreditsSchema = {
226
+ type: 'object',
227
+ properties: {
228
+ id: {
229
+ type: 'string',
230
+ description: 'Generated unique identifier of the promotional code.',
231
+ example: '7kUZnH7nnKUFfvc4NK2KQF'
232
+ },
233
+ type: {
234
+ type: 'string',
235
+ description: 'Type of the promotional code.',
236
+ example: 'credit',
237
+ enum: [
238
+ 'credit',
239
+ 'discount'
240
+ ]
241
+ },
242
+ date_start: {
243
+ type: 'string',
244
+ format: 'date-time',
245
+ description: 'Timestamp when the credit becomes active. ISO 8601 date string in the UTC timezone.',
246
+ example: '2023-12-20T13:53:32.000Z'
247
+ },
248
+ date_end: {
249
+ type: 'string',
250
+ format: 'date-time',
251
+ description: 'Timestamp when the credit expires or becomes inactive. ISO 8601 date string in the UTC timezone.',
252
+ example: '2023-12-20T13:53:32.000Z'
253
+ },
254
+ code: {
255
+ type: 'string',
256
+ description: 'Promotional code used by the customer.',
257
+ example: 'VQ4SCMB'
258
+ },
259
+ description: {
260
+ type: 'string',
261
+ description: 'Description of the promotional code.',
262
+ example: '10% off on all products'
263
+ },
264
+ value_total: {
265
+ type: 'number',
266
+ format: 'float',
267
+ description: 'Total value of the promotional code.',
268
+ example: 10
269
+ },
270
+ value_remaining: {
271
+ type: 'number',
272
+ format: 'float',
273
+ description: 'Remaining value of the promotional code.',
274
+ example: 8
275
+ }
276
+ },
277
+ required: [
278
+ 'type',
279
+ 'date_start',
280
+ 'code',
281
+ 'value_total'
282
+ ],
283
+ additionalProperties: false
284
+ };
285
+ export const ChartCreateInputSchema = {
286
+ type: 'object',
287
+ properties: {
288
+ values: {
289
+ type: 'string',
290
+ description: 'Values to be used in the chart encoded as a JSON string.'
291
+ },
292
+ version_channel: {
293
+ type: 'string',
294
+ 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-]+)*))?$',
295
+ description: 'Desired version range or channel for the chart.',
296
+ example: '2.x.x-cfke.x'
297
+ },
298
+ name: {
299
+ type: 'string',
300
+ maxLength: 63,
301
+ minLength: 1,
302
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
303
+ description: 'Unique identifier of the chart deployment aka name of the helm release.',
304
+ example: 'postgresql-0'
305
+ },
306
+ namespace: {
307
+ type: 'string',
308
+ maxLength: 63,
309
+ minLength: 1,
310
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
311
+ description: 'Namespace of the chart deployment',
312
+ example: 'default'
313
+ },
314
+ chart: {
315
+ type: 'string',
316
+ maxLength: 63,
317
+ minLength: 1,
318
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
319
+ description: 'Name of the chart listing',
320
+ example: 'postgresql'
321
+ }
322
+ },
323
+ required: [
324
+ 'values',
325
+ 'version_channel',
326
+ 'name',
327
+ 'namespace',
328
+ 'chart'
329
+ ],
330
+ additionalProperties: false
331
+ };
332
+ export const ChartSchema = {
333
+ type: 'object',
334
+ properties: {
335
+ values: {
336
+ type: 'string',
337
+ description: 'Values to be used in the chart encoded as a JSON string.'
338
+ },
339
+ version_channel: {
340
+ type: 'string',
341
+ 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-]+)*))?$',
342
+ description: 'Desired version range or channel for the chart.',
343
+ example: '2.x.x-cfke.x'
344
+ },
345
+ name: {
346
+ type: 'string',
347
+ maxLength: 63,
348
+ minLength: 1,
349
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
350
+ description: 'Unique identifier of the chart deployment aka name of the helm release.',
351
+ example: 'postgresql-0'
352
+ },
353
+ namespace: {
354
+ type: 'string',
355
+ maxLength: 63,
356
+ minLength: 1,
357
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
358
+ description: 'Namespace of the chart deployment',
359
+ example: 'default'
360
+ },
361
+ chart: {
362
+ type: 'string',
363
+ maxLength: 63,
364
+ minLength: 1,
365
+ pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
366
+ description: 'Name of the chart listing',
367
+ example: 'postgresql'
368
+ },
369
+ status: {
370
+ type: 'string',
371
+ description: 'Status of the chart deployment.',
372
+ example: 'active',
373
+ enum: [
374
+ 'InstallSucceeded',
375
+ 'InstallFailed',
376
+ 'UpgradeSucceeded',
377
+ 'UpgradeFailed',
378
+ 'TestSucceeded',
379
+ 'TestFailed',
380
+ 'RollbackSucceeded',
381
+ 'RollbackFailed',
382
+ 'UninstallSucceeded',
383
+ 'UninstallFailed',
384
+ 'ArtifactFailed',
385
+ 'DependencyNotReady',
386
+ 'Progressing',
387
+ 'SourceNotReady'
388
+ ]
389
+ },
390
+ version_current: {
391
+ type: 'string',
392
+ description: 'Current version of the chart deployment.',
393
+ example: '2.1.33-cfke.11'
394
+ },
395
+ created_at: {
396
+ type: 'string',
397
+ description: 'Creation date and time of the chart deployment.',
398
+ example: '2024-09-12T09:11:27Z'
399
+ },
400
+ updated_at: {
401
+ type: 'string',
402
+ description: 'Last update date and time of the chart deployment.',
403
+ example: '2024-09-12T09:11:27Z'
404
+ },
405
+ ready: {
406
+ type: 'boolean',
407
+ description: 'Indicates if the chart deployment is ready to be used.',
408
+ example: true
409
+ }
410
+ },
411
+ required: [
412
+ 'values',
413
+ 'version_channel',
414
+ 'name',
415
+ 'namespace',
416
+ 'chart',
417
+ 'status',
418
+ 'version_current',
419
+ 'created_at',
420
+ 'updated_at',
421
+ 'ready'
422
+ ],
423
+ additionalProperties: false
424
+ };
425
+ export const ChartUpdateInputSchema = {
426
+ type: 'object',
427
+ properties: {
428
+ values: {
429
+ type: 'string',
430
+ description: 'Values to be used in the chart encoded as a JSON string.'
431
+ },
432
+ version_channel: {
433
+ type: 'string',
434
+ 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-]+)*))?$',
435
+ description: 'Desired version range or channel for the chart.',
436
+ example: '2.x.x-cfke.x'
437
+ }
438
+ },
439
+ required: [
440
+ 'values',
441
+ 'version_channel'
442
+ ],
443
+ additionalProperties: false
444
+ };
2
445
  export const ClusterCreateInputSchema = {
3
446
  type: 'object',
4
447
  properties: {
@@ -10,28 +453,45 @@ export const ClusterCreateInputSchema = {
10
453
  description: 'Name of the cluster.',
11
454
  example: 'production-cluster'
12
455
  },
13
- region: {
14
- type: 'string',
15
- description: 'Cloudfleet control plane region. One of "staging", "northamerica-central-1". This field can not be updated after creation.',
16
- default: 'staging',
17
- example: 'northamerica-central-1',
18
- enum: ['staging', 'northamerica-central-1']
19
- },
20
456
  tier: {
21
457
  type: 'string',
22
458
  description: 'Tier of the cluster.',
23
459
  example: 'pro',
24
- enum: ['basic', 'pro']
460
+ enum: [
461
+ 'basic',
462
+ 'pro'
463
+ ]
464
+ },
465
+ region: {
466
+ type: 'string',
467
+ 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.',
468
+ default: 'staging-1a',
469
+ example: 'northamerica-central-1a',
470
+ enum: [
471
+ 'staging-1a',
472
+ 'northamerica-central-1',
473
+ 'europe-central-1a',
474
+ 'northamerica-central-1a'
475
+ ]
25
476
  },
26
477
  version_channel: {
27
478
  type: 'string',
28
479
  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-]+)*))?$',
29
480
  description: 'Version of the kubernetes cluster.',
30
481
  default: '1.x.x-cfke.x',
31
- example: '1.29.x-cfke.x'
482
+ example: '1.x.x-cfke.x',
483
+ enum: [
484
+ '1.x.x-cfke.x',
485
+ '1.31.x-cfke.x',
486
+ '1.32.x-cfke.x',
487
+ '1.33.x-cfke.x'
488
+ ]
32
489
  }
33
490
  },
34
- required: ['name', 'tier'],
491
+ required: [
492
+ 'name',
493
+ 'tier'
494
+ ],
35
495
  additionalProperties: false
36
496
  };
37
497
  export const ClusterJoinInformationSchema = {
@@ -40,8 +500,7 @@ export const ClusterJoinInformationSchema = {
40
500
  certificate_authority: {
41
501
  type: 'string',
42
502
  description: 'Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.',
43
- example: `-----BEGIN CERTIFICATE-----
44
- MIIC0DCCAbigAwIBAgI...`
503
+ example: '-----BEGIN CERTIFICATE-----\nMIIC0DCCAbigAwIBAgI...'
45
504
  },
46
505
  endpoint: {
47
506
  type: 'string',
@@ -49,6 +508,11 @@ MIIC0DCCAbigAwIBAgI...`
49
508
  description: 'Internal URL of the Kubernetes cluster control plane. This is the endpoint that kubelet uses to connect to the cluster.',
50
509
  example: 'https://10.31.64.7:6443'
51
510
  },
511
+ cluster_dns: {
512
+ type: 'string',
513
+ description: 'Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.',
514
+ example: '10.96.0.10'
515
+ },
52
516
  auth_key: {
53
517
  type: 'string',
54
518
  description: 'Authentication key for the cluster.',
@@ -65,7 +529,7 @@ MIIC0DCCAbigAwIBAgI...`
65
529
  kubernetes: {
66
530
  type: 'string',
67
531
  description: 'Kubernetes version of the cluster.',
68
- example: '1.29.3'
532
+ example: '1.33.7'
69
533
  },
70
534
  tailscale: {
71
535
  type: 'string',
@@ -76,14 +540,59 @@ MIIC0DCCAbigAwIBAgI...`
76
540
  type: 'string',
77
541
  description: 'Containerd version of the cluster.',
78
542
  example: '1.7.19'
543
+ },
544
+ nvidia_driver: {
545
+ type: 'string',
546
+ description: 'NVIDIA driver version of the cluster.',
547
+ example: '565.0.0'
79
548
  }
80
549
  },
81
- required: ['kubernetes', 'tailscale', 'containerd'],
550
+ required: [
551
+ 'kubernetes',
552
+ 'tailscale',
553
+ 'containerd',
554
+ 'nvidia_driver'
555
+ ],
82
556
  additionalProperties: false,
83
557
  description: 'Versions of the different components of the cluster.'
558
+ },
559
+ third_party_api_access_config: {
560
+ type: 'object',
561
+ properties: {
562
+ metadata_url: {
563
+ type: 'string',
564
+ description: 'Kubernetes metadata server.',
565
+ example: 'https://10.31.64.4'
566
+ },
567
+ aws_role_arn: {
568
+ type: 'string',
569
+ description: 'AWS Role ARN.',
570
+ example: 'arn:aws:iam::891376988828:role/0371f8fd-e164-48e1-b9e7-c3bdc3b4f403'
571
+ },
572
+ gcp_workload_identity_provider: {
573
+ type: 'string',
574
+ description: 'GCP Workload Identity provider.',
575
+ example: '//iam.googleapis.com/projects/89014267864/locations/global/workloadIdentityPools/cfke/providers/oidc'
576
+ }
577
+ },
578
+ required: [
579
+ 'metadata_url',
580
+ 'aws_role_arn',
581
+ 'gcp_workload_identity_provider'
582
+ ],
583
+ additionalProperties: false,
584
+ description: 'OIDC Information for hosts to access to third party API\'s.'
84
585
  }
85
586
  },
86
- required: ['certificate_authority', 'endpoint', 'auth_key', 'bootstrap_token', 'versions'],
587
+ required: [
588
+ 'certificate_authority',
589
+ 'endpoint',
590
+ 'cluster_dns',
591
+ 'auth_key',
592
+ 'bootstrap_token',
593
+ 'versions',
594
+ 'third_party_api_access_config'
595
+ ],
87
596
  additionalProperties: false
88
597
  };
89
598
  export const ClusterSchema = {
@@ -97,25 +606,26 @@ export const ClusterSchema = {
97
606
  description: 'Name of the cluster.',
98
607
  example: 'production-cluster'
99
608
  },
100
- region: {
101
- type: 'string',
102
- description: 'Cloudfleet control plane region. One of "staging", "northamerica-central-1". This field can not be updated after creation.',
103
- default: 'staging',
104
- example: 'northamerica-central-1',
105
- enum: ['staging', 'northamerica-central-1']
106
- },
107
609
  tier: {
108
610
  type: 'string',
109
611
  description: 'Tier of the cluster.',
110
612
  example: 'pro',
111
- enum: ['basic', 'pro']
613
+ enum: [
614
+ 'basic',
615
+ 'pro'
616
+ ]
112
617
  },
113
- version_channel: {
618
+ region: {
114
619
  type: 'string',
115
- 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-]+)*))?$',
116
- description: 'Version of the kubernetes cluster.',
117
- default: '1.x.x-cfke.x',
118
- example: '1.29.x-cfke.x'
620
+ 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.',
621
+ default: 'staging-1a',
622
+ example: 'northamerica-central-1a',
623
+ enum: [
624
+ 'staging-1a',
625
+ 'northamerica-central-1',
626
+ 'europe-central-1a',
627
+ 'northamerica-central-1a'
628
+ ]
119
629
  },
120
630
  id: {
121
631
  type: 'string',
@@ -127,32 +637,57 @@ export const ClusterSchema = {
127
637
  type: 'string',
128
638
  description: 'Status of the cluster. When creating a new cluster, set to `active`. When deleting a clusters, set to `deleted`.',
129
639
  example: 'active',
130
- enum: ['active', 'deleted', 'creating', 'deployed', 'failed', 'updating']
640
+ enum: [
641
+ 'active',
642
+ 'disabled',
643
+ 'deleted',
644
+ 'creating',
645
+ 'deployed',
646
+ 'failed',
647
+ 'updating'
648
+ ]
131
649
  },
132
650
  endpoint: {
133
651
  anyOf: [
134
652
  {
135
653
  type: 'string',
136
654
  format: 'uri',
137
- description: 'URL of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
655
+ 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)',
138
656
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.cloudfleet.dev:6443'
139
657
  },
140
658
  {
141
659
  type: 'string',
142
- enum: ['']
660
+ enum: [
661
+ ''
662
+ ]
663
+ }
664
+ ]
665
+ },
666
+ endpoint_public: {
667
+ anyOf: [
668
+ {
669
+ type: 'string',
670
+ format: 'uri',
671
+ 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.',
672
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
673
+ },
674
+ {
675
+ type: 'string',
676
+ enum: [
677
+ ''
678
+ ]
143
679
  }
144
680
  ]
145
681
  },
146
682
  certificate_ca: {
147
683
  type: 'string',
148
684
  description: 'Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.',
149
- example: `-----BEGIN CERTIFICATE-----
150
- MIIC0DCCAbigAwIBAgI...`
685
+ example: '-----BEGIN CERTIFICATE-----\nMIIC0DCCAbigAwIBAgI...'
151
686
  },
152
687
  version_current: {
153
688
  type: 'string',
154
689
  description: 'Current version of the cluster.',
155
- example: '1.29.3-cfke.52'
690
+ example: '1.33.7-cfke.264'
156
691
  },
157
692
  created_at: {
158
693
  type: 'string',
@@ -168,9 +703,20 @@ MIIC0DCCAbigAwIBAgI...`
168
703
  type: 'boolean',
169
704
  description: 'Indicates if the cluster is ready to be used.',
170
705
  example: true
706
+ },
707
+ version_channel: {
708
+ type: 'string',
709
+ 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-]+)*))?$',
710
+ description: 'Version of the kubernetes cluster.',
711
+ example: '1.x.x-cfke.x'
171
712
  }
172
713
  },
173
- required: ['name', 'tier', 'id', 'status'],
714
+ required: [
715
+ 'name',
716
+ 'tier',
717
+ 'id',
718
+ 'status'
719
+ ],
174
720
  additionalProperties: false
175
721
  };
176
722
  export const ClusterUpdateInputSchema = {
@@ -184,13 +730,25 @@ export const ClusterUpdateInputSchema = {
184
730
  description: 'Name of the cluster.',
185
731
  example: 'production-cluster'
186
732
  },
733
+ tier: {
734
+ type: 'string',
735
+ description: 'Tier of the cluster.',
736
+ example: 'pro',
737
+ enum: [
738
+ 'basic',
739
+ 'pro'
740
+ ]
741
+ },
187
742
  version_channel: {
188
743
  type: 'string',
189
744
  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-]+)*))?$',
190
745
  description: 'Version of the kubernetes cluster.',
191
- example: '1.29.x-cfke.x'
746
+ example: '1.x.x-cfke.x'
192
747
  }
193
748
  },
749
+ required: [
750
+ 'tier'
751
+ ],
194
752
  additionalProperties: false
195
753
  };
196
754
  export const FleetCreateInputSchema = {
@@ -200,13 +758,12 @@ export const FleetCreateInputSchema = {
200
758
  type: 'object',
201
759
  properties: {
202
760
  cpu: {
203
- type: 'number',
204
- format: 'float',
761
+ type: 'integer',
205
762
  minimum: 0,
206
- description: 'CPU limit in cores.'
763
+ maximum: 100000,
764
+ description: 'CPU limit in cores. Maximum 100,000.'
207
765
  }
208
766
  },
209
- required: ['cpu'],
210
767
  additionalProperties: false,
211
768
  description: 'Limits define a set of bounds for provisioning capacity.'
212
769
  },
@@ -214,62 +771,345 @@ export const FleetCreateInputSchema = {
214
771
  type: 'object',
215
772
  properties: {
216
773
  enabled: {
217
- type: 'boolean',
218
- default: true
774
+ type: 'boolean'
219
775
  },
220
776
  project: {
221
777
  type: 'string',
222
- description: 'Project GCP Project id to deploy instances into'
778
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
779
+ 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.',
780
+ example: 'my-cloudfleet-project'
223
781
  }
224
782
  },
225
- required: ['project'],
783
+ required: [
784
+ 'enabled'
785
+ ],
226
786
  additionalProperties: false
227
787
  },
228
788
  hetzner: {
229
- oneOf: [
230
- {
231
- type: 'object',
232
- properties: {
233
- enabled: {
234
- type: 'boolean',
235
- default: true
236
- },
237
- apiKey: {
238
- type: 'string'
239
- }
240
- },
241
- additionalProperties: false
242
- },
243
- {
244
- type: 'object',
245
- properties: {
246
- apiKey: {
247
- type: 'string'
248
- },
249
- enabled: {
250
- type: 'boolean',
251
- default: true
252
- }
253
- },
254
- additionalProperties: false
789
+ type: 'object',
790
+ properties: {
791
+ enabled: {
792
+ type: 'boolean'
793
+ },
794
+ apiKey: {
795
+ type: 'string',
796
+ maxLength: 64,
797
+ minLength: 64,
798
+ pattern: '^[A-Za-z0-9]+$',
799
+ description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
255
800
  }
256
- ]
801
+ },
802
+ required: [
803
+ 'enabled'
804
+ ],
805
+ additionalProperties: false
257
806
  },
258
807
  aws: {
259
808
  type: 'object',
260
809
  properties: {
261
810
  enabled: {
262
- type: 'boolean',
263
- default: true
811
+ type: 'boolean'
264
812
  },
265
813
  controllerRoleArn: {
266
814
  type: 'string',
267
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
815
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
816
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
817
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
268
818
  }
269
819
  },
270
- required: ['controllerRoleArn'],
820
+ required: [
821
+ 'enabled'
822
+ ],
271
823
  additionalProperties: false
272
824
  },
825
+ constraints: {
826
+ type: 'object',
827
+ properties: {
828
+ 'karpenter.sh/capacity-type': {
829
+ type: 'array',
830
+ items: {
831
+ type: 'string',
832
+ enum: [
833
+ 'on-demand',
834
+ 'spot'
835
+ ]
836
+ },
837
+ minItems: 1,
838
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
839
+ default: [
840
+ 'on-demand',
841
+ 'spot'
842
+ ]
843
+ },
844
+ 'kubernetes.io/arch': {
845
+ type: 'array',
846
+ items: {
847
+ type: 'string',
848
+ enum: [
849
+ 'amd64',
850
+ 'arm64'
851
+ ]
852
+ },
853
+ minItems: 1,
854
+ description: 'Allowed values for `kubernetes.io/arch`.',
855
+ default: [
856
+ 'amd64'
857
+ ]
858
+ },
859
+ 'cfke.io/instance-family': {
860
+ type: 'array',
861
+ items: {
862
+ type: 'string',
863
+ enum: [
864
+ 'a1',
865
+ 'a2',
866
+ 'a3',
867
+ 'a4',
868
+ 'c1',
869
+ 'c2',
870
+ 'c2d',
871
+ 'c3',
872
+ 'c3d',
873
+ 'c4',
874
+ 'c4a',
875
+ 'c4d',
876
+ 'c5',
877
+ 'c5a',
878
+ 'c5ad',
879
+ 'c5d',
880
+ 'c5n',
881
+ 'c6a',
882
+ 'c6g',
883
+ 'c6gd',
884
+ 'c6gn',
885
+ 'c6i',
886
+ 'c6id',
887
+ 'c6in',
888
+ 'c7a',
889
+ 'c7g',
890
+ 'c7gd',
891
+ 'c7gn',
892
+ 'c7i',
893
+ 'c7i-flex',
894
+ 'c8g',
895
+ 'c8gd',
896
+ 'cax',
897
+ 'ccx',
898
+ 'cpx',
899
+ 'cx',
900
+ 'd2',
901
+ 'd3',
902
+ 'd3en',
903
+ 'dl1',
904
+ 'dl2q',
905
+ 'e2',
906
+ 'f1',
907
+ 'f2',
908
+ 'g1',
909
+ 'g2',
910
+ 'g4ad',
911
+ 'g4dn',
912
+ 'g5',
913
+ 'g5g',
914
+ 'g6',
915
+ 'g6e',
916
+ 'gr6',
917
+ 'h1',
918
+ 'h3',
919
+ 'hpc6a',
920
+ 'hpc6id',
921
+ 'hpc7a',
922
+ 'hpc7g',
923
+ 'i2',
924
+ 'i3',
925
+ 'i3en',
926
+ 'i4g',
927
+ 'i4i',
928
+ 'i7i',
929
+ 'i7ie',
930
+ 'i8g',
931
+ 'im4gn',
932
+ 'inf1',
933
+ 'inf2',
934
+ 'is4gen',
935
+ 'm1',
936
+ 'm2',
937
+ 'm3',
938
+ 'm4',
939
+ 'm5',
940
+ 'm5a',
941
+ 'm5ad',
942
+ 'm5d',
943
+ 'm5dn',
944
+ 'm5n',
945
+ 'm5zn',
946
+ 'm6a',
947
+ 'm6g',
948
+ 'm6gd',
949
+ 'm6i',
950
+ 'm6id',
951
+ 'm6idn',
952
+ 'm6in',
953
+ 'm7a',
954
+ 'm7g',
955
+ 'm7gd',
956
+ 'm7i',
957
+ 'm7i-flex',
958
+ 'm8g',
959
+ 'm8gd',
960
+ 'n1',
961
+ 'n2',
962
+ 'n2d',
963
+ 'n4',
964
+ 'p3',
965
+ 'p3dn',
966
+ 'p4d',
967
+ 'p4de',
968
+ 'p5',
969
+ 'p5e',
970
+ 'p5en',
971
+ 'p6-b200',
972
+ 'r3',
973
+ 'r4',
974
+ 'r5',
975
+ 'r5a',
976
+ 'r5ad',
977
+ 'r5b',
978
+ 'r5d',
979
+ 'r5dn',
980
+ 'r5n',
981
+ 'r6a',
982
+ 'r6g',
983
+ 'r6gd',
984
+ 'r6i',
985
+ 'r6id',
986
+ 'r6idn',
987
+ 'r6in',
988
+ 'r7a',
989
+ 'r7g',
990
+ 'r7gd',
991
+ 'r7i',
992
+ 'r7iz',
993
+ 'r8g',
994
+ 'r8gd',
995
+ 't2',
996
+ 't2a',
997
+ 't2d',
998
+ 't3',
999
+ 't3a',
1000
+ 't4g',
1001
+ 'trn1',
1002
+ 'trn1n',
1003
+ 'u-3tb1',
1004
+ 'u-6tb1',
1005
+ 'u7i-12tb',
1006
+ 'u7i-6tb',
1007
+ 'u7i-8tb',
1008
+ 'u7in-16tb',
1009
+ 'u7in-24tb',
1010
+ 'u7in-32tb',
1011
+ 'vt1',
1012
+ 'x1',
1013
+ 'x1e',
1014
+ 'x2gd',
1015
+ 'x2idn',
1016
+ 'x2iedn',
1017
+ 'x2iezn',
1018
+ 'x4',
1019
+ 'x8g',
1020
+ 'z1d',
1021
+ 'z3'
1022
+ ]
1023
+ },
1024
+ description: 'Allowed values for `cfke.io/instance-family`.'
1025
+ },
1026
+ 'topology.kubernetes.io/region': {
1027
+ type: 'array',
1028
+ items: {
1029
+ type: 'string',
1030
+ enum: [
1031
+ 'africa-south1',
1032
+ 'ap-northeast-1',
1033
+ 'ap-northeast-2',
1034
+ 'ap-northeast-3',
1035
+ 'ap-south-1',
1036
+ 'ap-southeast-1',
1037
+ 'ap-southeast-2',
1038
+ 'ash',
1039
+ 'asia-east1',
1040
+ 'asia-east2',
1041
+ 'asia-northeast1',
1042
+ 'asia-northeast2',
1043
+ 'asia-northeast3',
1044
+ 'asia-south1',
1045
+ 'asia-south2',
1046
+ 'asia-southeast1',
1047
+ 'asia-southeast2',
1048
+ 'australia-southeast1',
1049
+ 'australia-southeast2',
1050
+ 'ca-central-1',
1051
+ 'eu-central-1',
1052
+ 'eu-central-2',
1053
+ 'eu-north-1',
1054
+ 'eu-west-1',
1055
+ 'eu-west-2',
1056
+ 'eu-west-3',
1057
+ 'europe-central2',
1058
+ 'europe-north1',
1059
+ 'europe-southwest1',
1060
+ 'europe-west1',
1061
+ 'europe-west10',
1062
+ 'europe-west12',
1063
+ 'europe-west2',
1064
+ 'europe-west3',
1065
+ 'europe-west4',
1066
+ 'europe-west6',
1067
+ 'europe-west8',
1068
+ 'europe-west9',
1069
+ 'fsn1',
1070
+ 'hel1',
1071
+ 'hil',
1072
+ 'me-central1',
1073
+ 'me-central2',
1074
+ 'me-west1',
1075
+ 'nbg1',
1076
+ 'northamerica-northeast1',
1077
+ 'northamerica-northeast2',
1078
+ 'sa-east-1',
1079
+ 'sin',
1080
+ 'southamerica-east1',
1081
+ 'southamerica-west1',
1082
+ 'us-central1',
1083
+ 'us-east-1',
1084
+ 'us-east-2',
1085
+ 'us-east1',
1086
+ 'us-east4',
1087
+ 'us-east5',
1088
+ 'us-south1',
1089
+ 'us-west-1',
1090
+ 'us-west-2',
1091
+ 'us-west1',
1092
+ 'us-west2',
1093
+ 'us-west3',
1094
+ 'us-west4'
1095
+ ]
1096
+ },
1097
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1098
+ }
1099
+ },
1100
+ additionalProperties: false,
1101
+ 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.'
1102
+ },
1103
+ scalingProfile: {
1104
+ type: 'string',
1105
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1106
+ default: 'conservative',
1107
+ example: 'conservative',
1108
+ enum: [
1109
+ 'aggressive',
1110
+ 'conservative'
1111
+ ]
1112
+ },
273
1113
  id: {
274
1114
  type: 'string',
275
1115
  maxLength: 63,
@@ -277,14 +1117,11 @@ export const FleetCreateInputSchema = {
277
1117
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
278
1118
  description: 'Unique identifier of the kubernetes fleet.',
279
1119
  example: 'new-clouds-fleet'
280
- },
281
- type: {
282
- type: 'string',
283
- description: 'Specifies the fleet type: infrastructure managed by Cloudfleet or Connected Fleets.',
284
- enum: ['managed', 'connected']
285
1120
  }
286
1121
  },
287
- required: ['id', 'type'],
1122
+ required: [
1123
+ 'id'
1124
+ ],
288
1125
  additionalProperties: false
289
1126
  };
290
1127
  export const FleetSchema = {
@@ -294,13 +1131,12 @@ export const FleetSchema = {
294
1131
  type: 'object',
295
1132
  properties: {
296
1133
  cpu: {
297
- type: 'number',
298
- format: 'float',
1134
+ type: 'integer',
299
1135
  minimum: 0,
300
- description: 'CPU limit in cores.'
1136
+ maximum: 100000,
1137
+ description: 'CPU limit in cores. Maximum 100,000.'
301
1138
  }
302
1139
  },
303
- required: ['cpu'],
304
1140
  additionalProperties: false,
305
1141
  description: 'Limits define a set of bounds for provisioning capacity.'
306
1142
  },
@@ -308,62 +1144,343 @@ export const FleetSchema = {
308
1144
  type: 'object',
309
1145
  properties: {
310
1146
  enabled: {
311
- type: 'boolean',
312
- default: true
1147
+ type: 'boolean'
313
1148
  },
314
1149
  project: {
315
1150
  type: 'string',
316
- description: 'Project GCP Project id to deploy instances into'
1151
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1152
+ 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.',
1153
+ example: 'my-cloudfleet-project'
317
1154
  }
318
1155
  },
319
- required: ['project'],
1156
+ required: [
1157
+ 'enabled'
1158
+ ],
320
1159
  additionalProperties: false
321
1160
  },
322
1161
  hetzner: {
323
- oneOf: [
324
- {
325
- type: 'object',
326
- properties: {
327
- enabled: {
328
- type: 'boolean',
329
- default: true
330
- },
331
- apiKey: {
332
- type: 'string'
333
- }
334
- },
335
- additionalProperties: false
1162
+ type: 'object',
1163
+ properties: {
1164
+ enabled: {
1165
+ type: 'boolean'
336
1166
  },
337
- {
338
- type: 'object',
339
- properties: {
340
- apiKey: {
341
- type: 'string'
342
- },
343
- enabled: {
344
- type: 'boolean',
345
- default: true
346
- }
347
- },
348
- additionalProperties: false
1167
+ apiKey: {
1168
+ type: 'string',
1169
+ pattern: '^\\*{64}$',
1170
+ 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.'
349
1171
  }
350
- ]
1172
+ },
1173
+ required: [
1174
+ 'enabled'
1175
+ ],
1176
+ additionalProperties: false
351
1177
  },
352
1178
  aws: {
353
1179
  type: 'object',
354
1180
  properties: {
355
1181
  enabled: {
356
- type: 'boolean',
357
- default: true
1182
+ type: 'boolean'
358
1183
  },
359
1184
  controllerRoleArn: {
360
1185
  type: 'string',
361
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1186
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1187
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1188
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
362
1189
  }
363
1190
  },
364
- required: ['controllerRoleArn'],
1191
+ required: [
1192
+ 'enabled'
1193
+ ],
365
1194
  additionalProperties: false
366
1195
  },
1196
+ constraints: {
1197
+ type: 'object',
1198
+ properties: {
1199
+ 'karpenter.sh/capacity-type': {
1200
+ type: 'array',
1201
+ items: {
1202
+ type: 'string',
1203
+ enum: [
1204
+ 'on-demand',
1205
+ 'spot'
1206
+ ]
1207
+ },
1208
+ minItems: 1,
1209
+ description: 'Allowed values for `karpenter.sh/capacity-type`.',
1210
+ default: [
1211
+ 'on-demand',
1212
+ 'spot'
1213
+ ]
1214
+ },
1215
+ 'kubernetes.io/arch': {
1216
+ type: 'array',
1217
+ items: {
1218
+ type: 'string',
1219
+ enum: [
1220
+ 'amd64',
1221
+ 'arm64'
1222
+ ]
1223
+ },
1224
+ minItems: 1,
1225
+ description: 'Allowed values for `kubernetes.io/arch`.',
1226
+ default: [
1227
+ 'amd64'
1228
+ ]
1229
+ },
1230
+ 'cfke.io/instance-family': {
1231
+ type: 'array',
1232
+ items: {
1233
+ type: 'string',
1234
+ enum: [
1235
+ 'a1',
1236
+ 'a2',
1237
+ 'a3',
1238
+ 'a4',
1239
+ 'c1',
1240
+ 'c2',
1241
+ 'c2d',
1242
+ 'c3',
1243
+ 'c3d',
1244
+ 'c4',
1245
+ 'c4a',
1246
+ 'c4d',
1247
+ 'c5',
1248
+ 'c5a',
1249
+ 'c5ad',
1250
+ 'c5d',
1251
+ 'c5n',
1252
+ 'c6a',
1253
+ 'c6g',
1254
+ 'c6gd',
1255
+ 'c6gn',
1256
+ 'c6i',
1257
+ 'c6id',
1258
+ 'c6in',
1259
+ 'c7a',
1260
+ 'c7g',
1261
+ 'c7gd',
1262
+ 'c7gn',
1263
+ 'c7i',
1264
+ 'c7i-flex',
1265
+ 'c8g',
1266
+ 'c8gd',
1267
+ 'cax',
1268
+ 'ccx',
1269
+ 'cpx',
1270
+ 'cx',
1271
+ 'd2',
1272
+ 'd3',
1273
+ 'd3en',
1274
+ 'dl1',
1275
+ 'dl2q',
1276
+ 'e2',
1277
+ 'f1',
1278
+ 'f2',
1279
+ 'g1',
1280
+ 'g2',
1281
+ 'g4ad',
1282
+ 'g4dn',
1283
+ 'g5',
1284
+ 'g5g',
1285
+ 'g6',
1286
+ 'g6e',
1287
+ 'gr6',
1288
+ 'h1',
1289
+ 'h3',
1290
+ 'hpc6a',
1291
+ 'hpc6id',
1292
+ 'hpc7a',
1293
+ 'hpc7g',
1294
+ 'i2',
1295
+ 'i3',
1296
+ 'i3en',
1297
+ 'i4g',
1298
+ 'i4i',
1299
+ 'i7i',
1300
+ 'i7ie',
1301
+ 'i8g',
1302
+ 'im4gn',
1303
+ 'inf1',
1304
+ 'inf2',
1305
+ 'is4gen',
1306
+ 'm1',
1307
+ 'm2',
1308
+ 'm3',
1309
+ 'm4',
1310
+ 'm5',
1311
+ 'm5a',
1312
+ 'm5ad',
1313
+ 'm5d',
1314
+ 'm5dn',
1315
+ 'm5n',
1316
+ 'm5zn',
1317
+ 'm6a',
1318
+ 'm6g',
1319
+ 'm6gd',
1320
+ 'm6i',
1321
+ 'm6id',
1322
+ 'm6idn',
1323
+ 'm6in',
1324
+ 'm7a',
1325
+ 'm7g',
1326
+ 'm7gd',
1327
+ 'm7i',
1328
+ 'm7i-flex',
1329
+ 'm8g',
1330
+ 'm8gd',
1331
+ 'n1',
1332
+ 'n2',
1333
+ 'n2d',
1334
+ 'n4',
1335
+ 'p3',
1336
+ 'p3dn',
1337
+ 'p4d',
1338
+ 'p4de',
1339
+ 'p5',
1340
+ 'p5e',
1341
+ 'p5en',
1342
+ 'p6-b200',
1343
+ 'r3',
1344
+ 'r4',
1345
+ 'r5',
1346
+ 'r5a',
1347
+ 'r5ad',
1348
+ 'r5b',
1349
+ 'r5d',
1350
+ 'r5dn',
1351
+ 'r5n',
1352
+ 'r6a',
1353
+ 'r6g',
1354
+ 'r6gd',
1355
+ 'r6i',
1356
+ 'r6id',
1357
+ 'r6idn',
1358
+ 'r6in',
1359
+ 'r7a',
1360
+ 'r7g',
1361
+ 'r7gd',
1362
+ 'r7i',
1363
+ 'r7iz',
1364
+ 'r8g',
1365
+ 'r8gd',
1366
+ 't2',
1367
+ 't2a',
1368
+ 't2d',
1369
+ 't3',
1370
+ 't3a',
1371
+ 't4g',
1372
+ 'trn1',
1373
+ 'trn1n',
1374
+ 'u-3tb1',
1375
+ 'u-6tb1',
1376
+ 'u7i-12tb',
1377
+ 'u7i-6tb',
1378
+ 'u7i-8tb',
1379
+ 'u7in-16tb',
1380
+ 'u7in-24tb',
1381
+ 'u7in-32tb',
1382
+ 'vt1',
1383
+ 'x1',
1384
+ 'x1e',
1385
+ 'x2gd',
1386
+ 'x2idn',
1387
+ 'x2iedn',
1388
+ 'x2iezn',
1389
+ 'x4',
1390
+ 'x8g',
1391
+ 'z1d',
1392
+ 'z3'
1393
+ ]
1394
+ },
1395
+ description: 'Allowed values for `cfke.io/instance-family`.'
1396
+ },
1397
+ 'topology.kubernetes.io/region': {
1398
+ type: 'array',
1399
+ items: {
1400
+ type: 'string',
1401
+ enum: [
1402
+ 'africa-south1',
1403
+ 'ap-northeast-1',
1404
+ 'ap-northeast-2',
1405
+ 'ap-northeast-3',
1406
+ 'ap-south-1',
1407
+ 'ap-southeast-1',
1408
+ 'ap-southeast-2',
1409
+ 'ash',
1410
+ 'asia-east1',
1411
+ 'asia-east2',
1412
+ 'asia-northeast1',
1413
+ 'asia-northeast2',
1414
+ 'asia-northeast3',
1415
+ 'asia-south1',
1416
+ 'asia-south2',
1417
+ 'asia-southeast1',
1418
+ 'asia-southeast2',
1419
+ 'australia-southeast1',
1420
+ 'australia-southeast2',
1421
+ 'ca-central-1',
1422
+ 'eu-central-1',
1423
+ 'eu-central-2',
1424
+ 'eu-north-1',
1425
+ 'eu-west-1',
1426
+ 'eu-west-2',
1427
+ 'eu-west-3',
1428
+ 'europe-central2',
1429
+ 'europe-north1',
1430
+ 'europe-southwest1',
1431
+ 'europe-west1',
1432
+ 'europe-west10',
1433
+ 'europe-west12',
1434
+ 'europe-west2',
1435
+ 'europe-west3',
1436
+ 'europe-west4',
1437
+ 'europe-west6',
1438
+ 'europe-west8',
1439
+ 'europe-west9',
1440
+ 'fsn1',
1441
+ 'hel1',
1442
+ 'hil',
1443
+ 'me-central1',
1444
+ 'me-central2',
1445
+ 'me-west1',
1446
+ 'nbg1',
1447
+ 'northamerica-northeast1',
1448
+ 'northamerica-northeast2',
1449
+ 'sa-east-1',
1450
+ 'sin',
1451
+ 'southamerica-east1',
1452
+ 'southamerica-west1',
1453
+ 'us-central1',
1454
+ 'us-east-1',
1455
+ 'us-east-2',
1456
+ 'us-east1',
1457
+ 'us-east4',
1458
+ 'us-east5',
1459
+ 'us-south1',
1460
+ 'us-west-1',
1461
+ 'us-west-2',
1462
+ 'us-west1',
1463
+ 'us-west2',
1464
+ 'us-west3',
1465
+ 'us-west4'
1466
+ ]
1467
+ },
1468
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1469
+ }
1470
+ },
1471
+ additionalProperties: false,
1472
+ 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.'
1473
+ },
1474
+ scalingProfile: {
1475
+ type: 'string',
1476
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1477
+ default: 'conservative',
1478
+ example: 'conservative',
1479
+ enum: [
1480
+ 'aggressive',
1481
+ 'conservative'
1482
+ ]
1483
+ },
367
1484
  id: {
368
1485
  type: 'string',
369
1486
  maxLength: 63,
@@ -371,14 +1488,12 @@ export const FleetSchema = {
371
1488
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
372
1489
  description: 'Unique identifier of the kubernetes fleet.',
373
1490
  example: 'new-clouds-fleet'
374
- },
375
- type: {
376
- type: 'string',
377
- description: 'Specifies the fleet type: infrastructure managed by Cloudfleet or Connected Fleets.',
378
- enum: ['managed', 'connected']
379
1491
  }
380
1492
  },
381
- required: ['id', 'type'],
1493
+ required: [
1494
+ 'scalingProfile',
1495
+ 'id'
1496
+ ],
382
1497
  additionalProperties: false
383
1498
  };
384
1499
  export const FleetUpdateInputSchema = {
@@ -388,13 +1503,12 @@ export const FleetUpdateInputSchema = {
388
1503
  type: 'object',
389
1504
  properties: {
390
1505
  cpu: {
391
- type: 'number',
392
- format: 'float',
1506
+ type: 'integer',
393
1507
  minimum: 0,
394
- description: 'CPU limit in cores.'
1508
+ maximum: 100000,
1509
+ description: 'CPU limit in cores. Maximum 100,000.'
395
1510
  }
396
1511
  },
397
- required: ['cpu'],
398
1512
  additionalProperties: false,
399
1513
  description: 'Limits define a set of bounds for provisioning capacity.'
400
1514
  },
@@ -402,1177 +1516,1739 @@ export const FleetUpdateInputSchema = {
402
1516
  type: 'object',
403
1517
  properties: {
404
1518
  enabled: {
405
- type: 'boolean',
406
- default: true
1519
+ type: 'boolean'
407
1520
  },
408
1521
  project: {
409
1522
  type: 'string',
410
- description: 'Project GCP Project id to deploy instances into'
1523
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1524
+ 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.',
1525
+ example: 'my-cloudfleet-project'
411
1526
  }
412
1527
  },
413
- required: ['project'],
1528
+ required: [
1529
+ 'enabled'
1530
+ ],
414
1531
  additionalProperties: false
415
1532
  },
416
1533
  hetzner: {
417
- oneOf: [
418
- {
419
- type: 'object',
420
- properties: {
421
- enabled: {
422
- type: 'boolean',
423
- default: true
424
- },
425
- apiKey: {
426
- type: 'string'
427
- }
428
- },
429
- additionalProperties: false
1534
+ type: 'object',
1535
+ properties: {
1536
+ enabled: {
1537
+ type: 'boolean'
430
1538
  },
431
- {
432
- type: 'object',
433
- properties: {
434
- apiKey: {
435
- type: 'string'
436
- },
437
- enabled: {
438
- type: 'boolean',
439
- default: true
440
- }
441
- },
442
- additionalProperties: false
1539
+ apiKey: {
1540
+ type: 'string',
1541
+ maxLength: 64,
1542
+ minLength: 64,
1543
+ pattern: '^[A-Za-z0-9]+$',
1544
+ description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
443
1545
  }
444
- ]
1546
+ },
1547
+ required: [
1548
+ 'enabled'
1549
+ ],
1550
+ additionalProperties: false
445
1551
  },
446
1552
  aws: {
447
1553
  type: 'object',
448
1554
  properties: {
449
1555
  enabled: {
450
- type: 'boolean',
451
- default: true
1556
+ type: 'boolean'
452
1557
  },
453
1558
  controllerRoleArn: {
454
1559
  type: 'string',
455
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1560
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1561
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1562
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
456
1563
  }
457
1564
  },
458
- required: ['controllerRoleArn'],
1565
+ required: [
1566
+ 'enabled'
1567
+ ],
459
1568
  additionalProperties: false
1569
+ },
1570
+ constraints: {
1571
+ type: 'object',
1572
+ properties: {
1573
+ 'karpenter.sh/capacity-type': {
1574
+ type: 'array',
1575
+ items: {
1576
+ type: 'string',
1577
+ enum: [
1578
+ 'on-demand',
1579
+ 'spot'
1580
+ ]
1581
+ },
1582
+ minItems: 1,
1583
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
1584
+ },
1585
+ 'kubernetes.io/arch': {
1586
+ type: 'array',
1587
+ items: {
1588
+ type: 'string',
1589
+ enum: [
1590
+ 'amd64',
1591
+ 'arm64'
1592
+ ]
1593
+ },
1594
+ minItems: 1,
1595
+ description: 'Allowed values for `kubernetes.io/arch`.'
1596
+ },
1597
+ 'cfke.io/instance-family': {
1598
+ type: 'array',
1599
+ items: {
1600
+ type: 'string',
1601
+ enum: [
1602
+ 'a1',
1603
+ 'a2',
1604
+ 'a3',
1605
+ 'a4',
1606
+ 'c1',
1607
+ 'c2',
1608
+ 'c2d',
1609
+ 'c3',
1610
+ 'c3d',
1611
+ 'c4',
1612
+ 'c4a',
1613
+ 'c4d',
1614
+ 'c5',
1615
+ 'c5a',
1616
+ 'c5ad',
1617
+ 'c5d',
1618
+ 'c5n',
1619
+ 'c6a',
1620
+ 'c6g',
1621
+ 'c6gd',
1622
+ 'c6gn',
1623
+ 'c6i',
1624
+ 'c6id',
1625
+ 'c6in',
1626
+ 'c7a',
1627
+ 'c7g',
1628
+ 'c7gd',
1629
+ 'c7gn',
1630
+ 'c7i',
1631
+ 'c7i-flex',
1632
+ 'c8g',
1633
+ 'c8gd',
1634
+ 'cax',
1635
+ 'ccx',
1636
+ 'cpx',
1637
+ 'cx',
1638
+ 'd2',
1639
+ 'd3',
1640
+ 'd3en',
1641
+ 'dl1',
1642
+ 'dl2q',
1643
+ 'e2',
1644
+ 'f1',
1645
+ 'f2',
1646
+ 'g1',
1647
+ 'g2',
1648
+ 'g4ad',
1649
+ 'g4dn',
1650
+ 'g5',
1651
+ 'g5g',
1652
+ 'g6',
1653
+ 'g6e',
1654
+ 'gr6',
1655
+ 'h1',
1656
+ 'h3',
1657
+ 'hpc6a',
1658
+ 'hpc6id',
1659
+ 'hpc7a',
1660
+ 'hpc7g',
1661
+ 'i2',
1662
+ 'i3',
1663
+ 'i3en',
1664
+ 'i4g',
1665
+ 'i4i',
1666
+ 'i7i',
1667
+ 'i7ie',
1668
+ 'i8g',
1669
+ 'im4gn',
1670
+ 'inf1',
1671
+ 'inf2',
1672
+ 'is4gen',
1673
+ 'm1',
1674
+ 'm2',
1675
+ 'm3',
1676
+ 'm4',
1677
+ 'm5',
1678
+ 'm5a',
1679
+ 'm5ad',
1680
+ 'm5d',
1681
+ 'm5dn',
1682
+ 'm5n',
1683
+ 'm5zn',
1684
+ 'm6a',
1685
+ 'm6g',
1686
+ 'm6gd',
1687
+ 'm6i',
1688
+ 'm6id',
1689
+ 'm6idn',
1690
+ 'm6in',
1691
+ 'm7a',
1692
+ 'm7g',
1693
+ 'm7gd',
1694
+ 'm7i',
1695
+ 'm7i-flex',
1696
+ 'm8g',
1697
+ 'm8gd',
1698
+ 'n1',
1699
+ 'n2',
1700
+ 'n2d',
1701
+ 'n4',
1702
+ 'p3',
1703
+ 'p3dn',
1704
+ 'p4d',
1705
+ 'p4de',
1706
+ 'p5',
1707
+ 'p5e',
1708
+ 'p5en',
1709
+ 'p6-b200',
1710
+ 'r3',
1711
+ 'r4',
1712
+ 'r5',
1713
+ 'r5a',
1714
+ 'r5ad',
1715
+ 'r5b',
1716
+ 'r5d',
1717
+ 'r5dn',
1718
+ 'r5n',
1719
+ 'r6a',
1720
+ 'r6g',
1721
+ 'r6gd',
1722
+ 'r6i',
1723
+ 'r6id',
1724
+ 'r6idn',
1725
+ 'r6in',
1726
+ 'r7a',
1727
+ 'r7g',
1728
+ 'r7gd',
1729
+ 'r7i',
1730
+ 'r7iz',
1731
+ 'r8g',
1732
+ 'r8gd',
1733
+ 't2',
1734
+ 't2a',
1735
+ 't2d',
1736
+ 't3',
1737
+ 't3a',
1738
+ 't4g',
1739
+ 'trn1',
1740
+ 'trn1n',
1741
+ 'u-3tb1',
1742
+ 'u-6tb1',
1743
+ 'u7i-12tb',
1744
+ 'u7i-6tb',
1745
+ 'u7i-8tb',
1746
+ 'u7in-16tb',
1747
+ 'u7in-24tb',
1748
+ 'u7in-32tb',
1749
+ 'vt1',
1750
+ 'x1',
1751
+ 'x1e',
1752
+ 'x2gd',
1753
+ 'x2idn',
1754
+ 'x2iedn',
1755
+ 'x2iezn',
1756
+ 'x4',
1757
+ 'x8g',
1758
+ 'z1d',
1759
+ 'z3'
1760
+ ]
1761
+ },
1762
+ description: 'Allowed values for `cfke.io/instance-family`.'
1763
+ },
1764
+ 'topology.kubernetes.io/region': {
1765
+ type: 'array',
1766
+ items: {
1767
+ type: 'string',
1768
+ enum: [
1769
+ 'africa-south1',
1770
+ 'ap-northeast-1',
1771
+ 'ap-northeast-2',
1772
+ 'ap-northeast-3',
1773
+ 'ap-south-1',
1774
+ 'ap-southeast-1',
1775
+ 'ap-southeast-2',
1776
+ 'ash',
1777
+ 'asia-east1',
1778
+ 'asia-east2',
1779
+ 'asia-northeast1',
1780
+ 'asia-northeast2',
1781
+ 'asia-northeast3',
1782
+ 'asia-south1',
1783
+ 'asia-south2',
1784
+ 'asia-southeast1',
1785
+ 'asia-southeast2',
1786
+ 'australia-southeast1',
1787
+ 'australia-southeast2',
1788
+ 'ca-central-1',
1789
+ 'eu-central-1',
1790
+ 'eu-central-2',
1791
+ 'eu-north-1',
1792
+ 'eu-west-1',
1793
+ 'eu-west-2',
1794
+ 'eu-west-3',
1795
+ 'europe-central2',
1796
+ 'europe-north1',
1797
+ 'europe-southwest1',
1798
+ 'europe-west1',
1799
+ 'europe-west10',
1800
+ 'europe-west12',
1801
+ 'europe-west2',
1802
+ 'europe-west3',
1803
+ 'europe-west4',
1804
+ 'europe-west6',
1805
+ 'europe-west8',
1806
+ 'europe-west9',
1807
+ 'fsn1',
1808
+ 'hel1',
1809
+ 'hil',
1810
+ 'me-central1',
1811
+ 'me-central2',
1812
+ 'me-west1',
1813
+ 'nbg1',
1814
+ 'northamerica-northeast1',
1815
+ 'northamerica-northeast2',
1816
+ 'sa-east-1',
1817
+ 'sin',
1818
+ 'southamerica-east1',
1819
+ 'southamerica-west1',
1820
+ 'us-central1',
1821
+ 'us-east-1',
1822
+ 'us-east-2',
1823
+ 'us-east1',
1824
+ 'us-east4',
1825
+ 'us-east5',
1826
+ 'us-south1',
1827
+ 'us-west-1',
1828
+ 'us-west-2',
1829
+ 'us-west1',
1830
+ 'us-west2',
1831
+ 'us-west3',
1832
+ 'us-west4'
1833
+ ]
1834
+ },
1835
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1836
+ }
1837
+ },
1838
+ additionalProperties: false,
1839
+ 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.'
1840
+ },
1841
+ scalingProfile: {
1842
+ type: 'string',
1843
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1844
+ example: 'conservative',
1845
+ enum: [
1846
+ 'aggressive',
1847
+ 'conservative'
1848
+ ]
460
1849
  }
461
1850
  },
1851
+ required: [
1852
+ 'scalingProfile'
1853
+ ],
462
1854
  additionalProperties: false
463
1855
  };
464
- export const InfrastructureFilterSchema = {
1856
+ export const InviteSchema = {
465
1857
  type: 'object',
466
1858
  properties: {
467
- version: {
468
- type: 'integer',
469
- description: 'Version of the infrastructure filter definition. Currently only version 1 is supported.',
470
- default: 1,
471
- example: 1,
472
- enum: [1]
473
- },
474
- provider: {
475
- type: 'array',
476
- items: {
477
- type: 'string'
478
- },
479
- description: 'Limit selection of cloud providers to this list. For the full list of supported providers, see [Providers](https://cloudfleet.ai/docs/cloud-infrastructure/providers/)',
480
- example: 'AWS'
481
- },
482
- region: {
483
- type: 'array',
484
- items: {
485
- type: 'string'
486
- },
487
- description: 'Limits selection of cloud regions to this list of Cloudfleet regions. For the full list of normalized regions and their mapping to CSP regions, see [Regions](https://cloudfleet.ai/docs/cloud-infrastructure/node-regions/)',
488
- example: 'northamerica'
489
- },
490
- sub_region: {
491
- type: 'array',
492
- items: {
493
- type: 'string'
494
- },
495
- description: 'Limits selection of cloud regions to this list of Cloudfleet regions. For the full list of normalized regions and their mapping to CSP regions, see [Regions](https://cloudfleet.ai/docs/cloud-infrastructure/node-regions/)',
496
- example: 'west'
497
- },
498
- csp_region: {
499
- type: 'array',
500
- items: {
501
- type: 'string'
502
- },
503
- description: 'Limits selection of cloud regions to this list of canonical provider regions',
504
- example: 'eu-west-1'
1859
+ id: {
1860
+ type: 'string',
1861
+ description: 'Unique identifier of the invitation.',
1862
+ example: '65831dd20d20165489cbb868'
505
1863
  },
506
- instance_type: {
507
- type: 'array',
508
- items: {
509
- type: 'string'
510
- },
511
- description: 'Limits selection of instance types to this list. Instance / VM type as defined by the cloud service provider',
512
- example: 'p4d.24xlarge'
1864
+ organization_id: {
1865
+ type: 'string',
1866
+ format: 'uuid',
1867
+ description: 'Unique identifier of the organization the project belongs to. UUID v4 string in canonical form',
1868
+ example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
513
1869
  },
514
- accelerator_name: {
515
- type: 'array',
516
- items: {
517
- type: 'string'
518
- },
519
- description: "List of Normalized accelerator model names. For example, all variations of Nvidia A100 GPUs will have 'A100' as accelerator name with various memory configurations set in accelerator_memory field",
520
- example: 'A100'
1870
+ date_created: {
1871
+ type: 'string',
1872
+ format: 'date-time',
1873
+ description: 'Creation date of the project. ISO 8601 date string in UTC timezone',
1874
+ example: '2023-11-02T16:08:14.338Z'
521
1875
  },
522
- accelerator_manufacturer: {
523
- type: 'array',
524
- items: {
525
- type: 'string'
526
- },
527
- description: "List of normalized accelerator manufacturer names. For example, all Nvidia GPUs will have 'NVIDIA' as accelerator manufacturer",
528
- example: 'NVIDIA'
1876
+ email: {
1877
+ type: 'string',
1878
+ format: 'email',
1879
+ description: 'User email address.',
1880
+ example: 'email@example.com'
529
1881
  },
530
- accelerator_count_min: {
531
- type: 'integer',
532
- minimum: 0,
533
- description: 'Minimum number of accelerators available on the instance. Some cloud providers support shared accelerators, so the number of accelerators may be a fraction of the number of physical accelerators.',
534
- example: 1
1882
+ code: {
1883
+ type: 'string',
1884
+ description: 'Generated unique invite code.',
1885
+ example: '7kUZnH7nnKUFfvc4NK2KQF'
1886
+ }
1887
+ },
1888
+ required: [
1889
+ 'date_created'
1890
+ ],
1891
+ additionalProperties: false
1892
+ };
1893
+ export const InvoiceSchema = {
1894
+ type: 'object',
1895
+ properties: {
1896
+ id: {
1897
+ type: 'string',
1898
+ description: 'Unique identifier of the invoice.',
1899
+ example: 'in_1234567890xCrwxghOTj1234'
535
1900
  },
536
- accelerator_count_max: {
537
- type: 'integer',
538
- minimum: 0,
539
- description: 'Maximum number of accelerators available on the instance. Some cloud providers support shared accelerators, so the number of accelerators may be a fraction of the number of physical accelerators.',
540
- example: 8
1901
+ number: {
1902
+ type: 'string'
541
1903
  },
542
- accelerator_memory_min: {
543
- type: 'number',
544
- format: 'float',
545
- description: "Minimum amount of accelerator memory available to each accelerator. For example, Nvidia A100 GPUs will typically have '40.0' gibibytes (GiB) of memory, while A100 GPUs with HBM2E memory will have '80.0' gibibytes (GiB) of memory",
546
- example: 40
1904
+ status: {
1905
+ type: 'string',
1906
+ description: 'Status of the invoice',
1907
+ example: 'paid'
547
1908
  },
548
- accelerator_memory_max: {
1909
+ total: {
549
1910
  type: 'number',
550
1911
  format: 'float',
551
- description: "Maximum amount of accelerator memory available to each accelerator. For example, Nvidia A100 GPUs will typically have '40.0' gibibytes (GiB) of memory, while A100 GPUs with HBM2E memory will have '80.0' gibibytes (GiB) of memory",
552
- example: 80
1912
+ description: 'Total amount of the invoice',
1913
+ example: 100
553
1914
  },
554
- memory_min: {
555
- type: 'integer',
556
- minimum: 0,
557
- description: 'Minimum amount of RAM in gibibytes (GiB)',
558
- example: 32
1915
+ currency: {
1916
+ type: 'string',
1917
+ description: 'Currency of the invoice',
1918
+ example: 'usd'
559
1919
  },
560
- memory_max: {
561
- type: 'integer',
562
- minimum: 0,
563
- description: 'Maximum amount of RAM in gibibytes (GiB)',
564
- example: 64
1920
+ created: {
1921
+ type: 'string',
1922
+ format: 'date-time',
1923
+ description: 'Timestamp when the invoice was issued. ISO 8601 date string in the UTC timezone.',
1924
+ example: '2023-12-20T13:53:32.000Z'
565
1925
  },
566
- vcpu_min: {
567
- type: 'integer',
568
- minimum: 1,
569
- description: 'Minimum number of vCPUs as defined by the cloud service provider. Some cloud providers use hyperthreading, so the number of vCPUs may be twice as high as the number of physical cores.',
570
- example: 32
1926
+ period_start: {
1927
+ type: 'string',
1928
+ format: 'date-time',
1929
+ description: 'Billing period start timestamp. ISO 8601 date string in the UTC timezone.',
1930
+ example: '2023-12-20T13:53:32.000Z'
571
1931
  },
572
- vcpu_max: {
573
- type: 'integer',
574
- minimum: 1,
575
- description: 'Maximum number of vCPUs as defined by the cloud service provider. Some cloud providers use hyperthreading, so the number of vCPUs may be twice as high as the number of physical cores.',
576
- example: 128
1932
+ period_end: {
1933
+ type: 'string',
1934
+ format: 'date-time',
1935
+ description: 'Billing period end timestamp. ISO 8601 date string in the UTC timezone.',
1936
+ example: '2023-12-20T13:53:32.000Z'
577
1937
  },
578
- storage_total_min: {
579
- type: 'number',
580
- format: 'float',
581
- minimum: 10,
582
- description: 'Minimum total storage in GiB (attached and local)',
583
- example: 128
1938
+ invoice_pdf: {
1939
+ type: 'string'
1940
+ }
1941
+ },
1942
+ required: [
1943
+ 'created',
1944
+ 'period_start',
1945
+ 'period_end'
1946
+ ],
1947
+ additionalProperties: false
1948
+ };
1949
+ export const MarketplaceListingFilesSchema = {
1950
+ type: 'object',
1951
+ properties: {
1952
+ chartYaml: {
1953
+ type: 'string',
1954
+ description: 'Raw Chart.yaml content from the Helm chart',
1955
+ example: 'apiVersion: v2\nname: nginx-ingress\nversion: 1.18.2-cfke.45\nappVersion: 1.9.4'
584
1956
  },
585
- storage_total_max: {
586
- type: 'number',
587
- format: 'float',
588
- minimum: 10,
589
- description: 'Maximum total storage in GiB (attached and local)',
590
- example: 256
1957
+ valuesYaml: {
1958
+ type: 'string',
1959
+ description: 'Raw values.yaml content from the Helm chart',
1960
+ example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
591
1961
  },
592
- storage_local_min: {
593
- type: 'number',
594
- format: 'float',
595
- description: 'Minimum volume of directly attached, block-device local storage in gibibytes (GiB)',
596
- example: 24
597
- },
598
- storage_local_max: {
599
- type: 'number',
600
- format: 'float',
601
- description: 'Maximum volume of directly attached, block-device local storage in gibibytes (GiB)',
602
- example: 128
603
- },
604
- price_min: {
605
- type: 'number',
606
- format: 'float',
607
- description: 'Minimum price of running the inctance per hour in USD as defined by the cloud service provider. The cheapest instance will be selected.',
608
- example: 10
609
- },
610
- price_max: {
611
- type: 'number',
612
- format: 'float',
613
- description: 'Maximum price of running the inctance per hour in USD as defined by the cloud service provider. The cheapest instance will be selected.',
614
- example: 50
1962
+ valuesSchemaJson: {
1963
+ type: 'string',
1964
+ description: 'JSON schema for values.yaml as a string',
1965
+ example: '{"type":"object","properties":{"replicaCount":{"type":"number"}}}'
615
1966
  }
616
1967
  },
617
1968
  additionalProperties: false
618
1969
  };
619
- export const InfrastructureInstanceSchema = {
1970
+ export const MarketplaceListingSchema = {
620
1971
  type: 'object',
621
1972
  properties: {
622
- sku: {
623
- type: 'string',
624
- description: 'Cloudfleet instance SKU. Has a format of <provider>-<csp_region>-<instance_type>.',
625
- example: 'AWS-EU-WEST-1C-P4D.24XLARGE'
626
- },
627
- provider: {
628
- type: 'string',
629
- description: 'Normalized cloud service provider name. For the full list of supported providers, see [Providers](https://cloudfleet.ai/docs/cloud-infrastructure/providers/)',
630
- example: 'AWS'
631
- },
632
- region: {
1973
+ name: {
633
1974
  type: 'string',
634
- description: 'Normalized region. For the full list of normalized regions and their mapping to CSP regions, see [Regions](https://cloudfleet.ai/docs/cloud-infrastructure/node-regions/)',
635
- example: 'europe'
1975
+ description: 'Name of the chart',
1976
+ example: 'nginx-ingress'
636
1977
  },
637
- sub_region: {
638
- type: 'string',
639
- description: 'Normalized sub-region. For the full list of normalized regions and their mapping to CSP regions, see [Regions](https://cloudfleet.ai/docs/cloud-infrastructure/node-regions/)',
640
- example: 'west'
1978
+ versions: {
1979
+ type: 'array',
1980
+ items: {
1981
+ type: 'string',
1982
+ 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-]+)*))?$',
1983
+ description: 'Specific version of the chart',
1984
+ example: '1.18.2-cfke.45'
1985
+ },
1986
+ description: 'Available versions of the chart'
641
1987
  },
642
- csp_region: {
643
- type: 'string',
644
- description: 'Region as defined by the cloud service provider',
645
- example: 'eu-west-1'
1988
+ version_channels: {
1989
+ type: 'array',
1990
+ items: {
1991
+ type: 'string',
1992
+ 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-]+)*))?$',
1993
+ description: 'Version channel pattern',
1994
+ example: '1.18.x-cfke.x'
1995
+ },
1996
+ description: 'Version channels for the chart'
646
1997
  },
647
- csp_zone: {
1998
+ latestVersion: {
648
1999
  type: 'string',
649
- description: 'Availability zone as defined by the cloud service provider',
650
- example: 'eu-west-1a'
2000
+ description: 'Latest version of the chart',
2001
+ example: '1.18.2-cfke.45'
651
2002
  },
652
- instance_type: {
2003
+ metadata: {
2004
+ type: 'object',
2005
+ properties: {
2006
+ name: {
2007
+ type: 'string',
2008
+ description: 'Chart name from metadata',
2009
+ example: 'nginx-ingress'
2010
+ },
2011
+ version: {
2012
+ type: 'string',
2013
+ description: 'Chart version from metadata',
2014
+ example: '1.18.2-cfke.45'
2015
+ },
2016
+ description: {
2017
+ type: 'string',
2018
+ description: 'Chart description',
2019
+ example: 'NGINX Ingress Controller for Kubernetes'
2020
+ },
2021
+ appVersion: {
2022
+ type: 'string',
2023
+ description: 'Application version',
2024
+ example: '1.9.4'
2025
+ },
2026
+ apiVersion: {
2027
+ type: 'string',
2028
+ description: 'Helm API version',
2029
+ example: 'v2'
2030
+ },
2031
+ keywords: {
2032
+ type: 'array',
2033
+ items: {
2034
+ type: 'string'
2035
+ },
2036
+ description: 'Chart keywords',
2037
+ example: [
2038
+ 'ingress',
2039
+ 'nginx',
2040
+ 'load-balancer'
2041
+ ]
2042
+ },
2043
+ home: {
2044
+ type: 'string',
2045
+ description: 'Chart home URL',
2046
+ example: 'https://kubernetes.github.io/ingress-nginx/'
2047
+ },
2048
+ icon: {
2049
+ type: 'string',
2050
+ description: 'A URL to an SVG or PNG image to be used as an icon',
2051
+ example: 'https://cloudfleet.ai/images/marketplace/icons/ingress-nginx.png'
2052
+ },
2053
+ sources: {
2054
+ type: 'array',
2055
+ items: {
2056
+ type: 'string'
2057
+ },
2058
+ description: 'Chart source URLs',
2059
+ example: [
2060
+ 'https://github.com/kubernetes/ingress-nginx'
2061
+ ]
2062
+ },
2063
+ maintainers: {
2064
+ type: 'array',
2065
+ items: {
2066
+ type: 'object',
2067
+ properties: {
2068
+ name: {
2069
+ type: 'string',
2070
+ description: 'Maintainer name',
2071
+ example: 'NGINX Team'
2072
+ },
2073
+ email: {
2074
+ type: 'string',
2075
+ description: 'Maintainer email',
2076
+ example: 'support@nginx.org'
2077
+ }
2078
+ },
2079
+ required: [
2080
+ 'name'
2081
+ ],
2082
+ additionalProperties: false
2083
+ },
2084
+ description: 'Chart maintainers'
2085
+ }
2086
+ },
2087
+ required: [
2088
+ 'name',
2089
+ 'version'
2090
+ ],
2091
+ additionalProperties: false,
2092
+ description: 'Chart metadata'
2093
+ }
2094
+ },
2095
+ required: [
2096
+ 'name',
2097
+ 'versions',
2098
+ 'version_channels',
2099
+ 'latestVersion'
2100
+ ],
2101
+ additionalProperties: false
2102
+ };
2103
+ export const OrganizationCreateInputSchema = {
2104
+ type: 'object',
2105
+ properties: {
2106
+ type: {
653
2107
  type: 'string',
654
- description: 'Instance / VM type as defined by the cloud service provider',
655
- example: 'p4d.24xlarge'
2108
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2109
+ example: 'business',
2110
+ enum: [
2111
+ 'business',
2112
+ 'personal'
2113
+ ]
656
2114
  },
657
- architecture: {
2115
+ email: {
658
2116
  type: 'string',
659
- description: 'Instance CPU architecture',
660
- example: 'amd64'
2117
+ format: 'email',
2118
+ description: 'Email address used for billing as a string.',
2119
+ example: 'email@example.com'
661
2120
  },
662
- os: {
2121
+ first_name: {
663
2122
  type: 'string',
664
- description: 'Instance operating system',
665
- example: 'linux'
666
- },
667
- vcpu: {
668
- type: 'number',
669
- format: 'float',
670
- minimum: 1,
671
- description: 'CPU count as defined by the cloud service provider. Some cloud providers use hyperthreading, so the number of vCPUs may be twice as high as the number of physical cores.',
672
- example: 96
673
- },
674
- memory: {
675
- type: 'number',
676
- format: 'float',
677
- minimum: 1,
678
- description: 'Total amount of RAM in gibibytes (GiB)',
679
- example: 1152
680
- },
681
- local_storage: {
682
- type: 'number',
683
- format: 'float',
684
- description: 'Volume of directly attached, block-device local storage in gibibytes (GiB)',
685
- example: 8000
2123
+ minLength: 1,
2124
+ description: 'First name of the billing contact person.',
2125
+ example: 'John'
686
2126
  },
687
- accelerator_name: {
2127
+ last_name: {
688
2128
  type: 'string',
689
- description: "Normalized model name of accelerator. For example, all variations of Nvidia A100 GPUs will have 'A100' as accelerator name with various memory configurations set in accelerator_memory field",
690
- example: 'A100'
2129
+ minLength: 1,
2130
+ description: 'Last name of the billing contact person.',
2131
+ example: 'Doe'
691
2132
  },
692
- accelerator_manufacturer: {
2133
+ company_name: {
693
2134
  type: 'string',
694
- description: "Normalized manufacturer name of accelerator. For example, all Nvidia GPUs will have 'NVIDIA' as accelerator manufacturer",
695
- example: 'NVIDIA'
696
- },
697
- accelerator_count: {
698
- type: 'integer',
699
- description: 'Number of accelerators available on the instance. Some cloud providers support shared accelerators, so the number of accelerators may be a fraction of the number of physical accelerators.',
700
- example: 8
701
- },
702
- accelerator_memory: {
703
- type: 'number',
704
- format: 'float',
705
- description: "Ammount of accelerator memory available to each accelerator. For example, Nvidia A100 GPUs will typically have '40.0' gibibytes (GiB) of memory, while A100 GPUs with HBM2E memory will have '80.0' gibibytes (GiB) of memory",
706
- example: 40
707
- },
708
- pods_capacity: {
709
- type: 'number',
710
- format: 'float',
711
- description: 'Maximum number of pods that can be run on this instance type.',
712
- example: 110
2135
+ maxLength: 120,
2136
+ minLength: 2,
2137
+ pattern: '^(?!\\s)(?!.*\\s$)(?=.*[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9])[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9 -.]{2,}$',
2138
+ description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
2139
+ example: 'ACME Corp.'
713
2140
  },
714
- capacity_type: {
2141
+ password: {
715
2142
  type: 'string',
716
- description: 'Capacity type of the instance. E.g. `on-demand`, `spot`.',
717
- example: 'on-demand'
718
- },
719
- price: {
720
- type: 'number',
721
- format: 'float',
722
- description: 'Price of running the inctance per hour in USD as defined by the cloud service provider',
723
- example: 35.39655
724
- },
725
- available: {
726
- type: 'boolean',
727
- description: 'Whether this instance type is available.',
728
- example: true
2143
+ minLength: 8,
2144
+ description: 'Password for the root account. Must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one number and one special character.'
729
2145
  }
730
2146
  },
731
- required: ['sku', 'provider', 'region', 'sub_region', 'csp_region', 'csp_zone', 'instance_type', 'architecture', 'os', 'vcpu', 'memory', 'local_storage', 'price'],
2147
+ required: [
2148
+ 'type',
2149
+ 'email',
2150
+ 'first_name',
2151
+ 'last_name',
2152
+ 'company_name',
2153
+ 'password'
2154
+ ],
732
2155
  additionalProperties: false
733
2156
  };
734
- export const InviteSchema = {
2157
+ export const OrganizationCreateOutputSchema = {
735
2158
  type: 'object',
736
2159
  properties: {
737
2160
  id: {
738
2161
  type: 'string',
739
- description: 'Unique identifier of the invitation.',
740
- example: '65831dd20d20165489cbb868'
741
- },
742
- organization_id: {
2162
+ description: 'Unique identifier of the newly created organization. Generated by the API and safe to use for client-side tracking immediately.',
2163
+ example: 'organization-id'
2164
+ }
2165
+ },
2166
+ required: [
2167
+ 'id'
2168
+ ],
2169
+ additionalProperties: false
2170
+ };
2171
+ export const OrganizationSchema = {
2172
+ type: 'object',
2173
+ properties: {
2174
+ id: {
743
2175
  type: 'string',
744
2176
  format: 'uuid',
745
- description: 'Unique identifier of the organization the project belongs to. UUID v4 string in canonical form',
2177
+ description: 'Unique identifier of the organization. UUID v4 string in canonical form',
746
2178
  example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
747
2179
  },
2180
+ name: {
2181
+ type: 'string',
2182
+ maxLength: 120,
2183
+ minLength: 2,
2184
+ description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
2185
+ example: 'ACME Corp.'
2186
+ },
2187
+ type: {
2188
+ type: 'string',
2189
+ description: 'Type of the organization. `business` for legal entities, `personal` for individuals.',
2190
+ example: 'business',
2191
+ enum: [
2192
+ 'business',
2193
+ 'personal'
2194
+ ]
2195
+ },
748
2196
  date_created: {
749
2197
  type: 'string',
750
2198
  format: 'date-time',
751
- description: 'Creation date of the project. ISO 8601 date string in UTC timezone',
2199
+ description: 'Creation date of the organization. ISO 8601 date string in UTC timezone',
752
2200
  example: '2023-11-02T16:08:14.338Z'
753
2201
  },
754
- email: {
2202
+ quota: {
2203
+ type: 'object',
2204
+ properties: {
2205
+ basic_clusters_max: {
2206
+ type: 'integer',
2207
+ minimum: 0,
2208
+ description: 'Maximum number of Basic clusters that can be created.',
2209
+ example: 999
2210
+ },
2211
+ basic_clusters_available: {
2212
+ type: 'integer',
2213
+ description: 'Available number of Basic clusters that can be created.',
2214
+ example: 999
2215
+ },
2216
+ pro_clusters_max: {
2217
+ type: 'integer',
2218
+ minimum: 0,
2219
+ description: 'Maximum number of Pro clusters that can be created.',
2220
+ example: 999
2221
+ },
2222
+ pro_clusters_available: {
2223
+ type: 'integer',
2224
+ description: 'Available number of Pro clusters that can be created.',
2225
+ example: 999
2226
+ },
2227
+ fleets_max: {
2228
+ type: 'integer',
2229
+ minimum: 0,
2230
+ description: 'Maximum number of fleets that can be created per cluster.',
2231
+ example: 999
2232
+ },
2233
+ cluster_tiers: {
2234
+ type: 'array',
2235
+ items: {
2236
+ type: 'string',
2237
+ example: 'basic'
2238
+ },
2239
+ minItems: 0,
2240
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
2241
+ },
2242
+ regions: {
2243
+ type: 'array',
2244
+ items: {
2245
+ type: 'string',
2246
+ example: 'northamerica-central-1'
2247
+ },
2248
+ minItems: 1,
2249
+ description: 'List of Cloudfleet control plane regions available for the organization.'
2250
+ },
2251
+ versions: {
2252
+ type: 'array',
2253
+ items: {
2254
+ type: 'object',
2255
+ properties: {
2256
+ id: {
2257
+ type: 'string',
2258
+ description: 'Id of the control plane version. Used in API calls.',
2259
+ example: '1.33.x-cfke.x'
2260
+ },
2261
+ label: {
2262
+ type: 'string',
2263
+ description: 'Label of the control plane version. Used in frontent UI.',
2264
+ example: '1.33.x (Always latest 1.33 patch version)'
2265
+ }
2266
+ },
2267
+ required: [
2268
+ 'id',
2269
+ 'label'
2270
+ ],
2271
+ additionalProperties: false
2272
+ },
2273
+ minItems: 1,
2274
+ description: 'List of CFKE control plane versions available for the organization.'
2275
+ },
2276
+ cfcr_storage_gb: {
2277
+ type: 'integer',
2278
+ minimum: -1,
2279
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
2280
+ example: 500
2281
+ }
2282
+ },
2283
+ required: [
2284
+ 'basic_clusters_max',
2285
+ 'basic_clusters_available',
2286
+ 'pro_clusters_max',
2287
+ 'pro_clusters_available',
2288
+ 'fleets_max',
2289
+ 'cluster_tiers',
2290
+ 'regions',
2291
+ 'versions',
2292
+ 'cfcr_storage_gb'
2293
+ ],
2294
+ additionalProperties: false,
2295
+ description: 'For security reasons, platform quota is controlled by Cloudfleet and can be updated only by Cloudfleet administrators. Please open a support ticket if you need to change the platform quota.'
2296
+ },
2297
+ status: {
755
2298
  type: 'string',
756
- format: 'email',
757
- description: 'User email address.',
758
- example: 'email@example.com'
2299
+ description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
2300
+ enum: [
2301
+ 'active',
2302
+ 'closed',
2303
+ 'suspended'
2304
+ ]
759
2305
  },
760
- code: {
2306
+ verification: {
761
2307
  type: 'string',
762
- description: 'Generated unique invite code.',
763
- example: '7kUZnH7nnKUFfvc4NK2KQF'
2308
+ 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.',
2309
+ example: 'verified',
2310
+ enum: [
2311
+ 'none',
2312
+ 'submitted',
2313
+ 'verified'
2314
+ ]
764
2315
  }
765
2316
  },
766
- required: ['date_created'],
2317
+ required: [
2318
+ 'id',
2319
+ 'type',
2320
+ 'date_created',
2321
+ 'quota',
2322
+ 'status',
2323
+ 'verification'
2324
+ ],
767
2325
  additionalProperties: false
768
2326
  };
769
- export const InvoiceSchema = {
2327
+ export const PaymentMethodSchema = {
770
2328
  type: 'object',
771
2329
  properties: {
772
2330
  id: {
773
2331
  type: 'string',
774
- format: 'uuid',
775
- description: 'Unique identifier of the invoice. UUID v4 string in canonical form',
776
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
2332
+ 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.',
2333
+ example: 'pm_1MtwBwLkdIwHu7ix28a3tqPa'
777
2334
  },
778
- organizationId: {
2335
+ type: {
779
2336
  type: 'string',
780
- format: 'uuid',
781
- description: 'Unique identifier of the organization. UUID v4 string in canonical form',
782
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
2337
+ description: 'Payment method type. `card`, `sepa_debit` for SEPA Direct Debit (business accounts only), or `bank_transfer` for paying invoices by bank transfer.',
2338
+ example: 'card',
2339
+ enum: [
2340
+ 'card',
2341
+ 'sepa_debit',
2342
+ 'bank_transfer'
2343
+ ]
783
2344
  },
784
- status: {
2345
+ last4: {
785
2346
  type: 'string',
786
- description: 'Status of the invoice',
787
- example: 'DRAFT',
788
- enum: ['DRAFT', 'COMMITTED', 'VOID']
789
- },
790
- amount: {
791
- type: 'number',
792
- format: 'float',
793
- description: 'Total amount of the invoice',
794
- example: 100
2347
+ nullable: true,
2348
+ 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.',
2349
+ example: '4242'
795
2350
  },
796
- currency: {
797
- type: 'string',
798
- description: 'Currency of the invoice',
799
- example: 'USD',
800
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
2351
+ exp_month: {
2352
+ type: 'integer',
2353
+ minimum: 1,
2354
+ maximum: 12,
2355
+ nullable: true,
2356
+ description: 'Two-digit number representing the card\'s expiration month. Null for SEPA Direct Debit and bank transfer.',
2357
+ example: 12
801
2358
  },
802
- creditAdj: {
803
- type: 'number',
804
- format: 'float',
805
- description: 'Total amount of credit adjustments',
806
- example: 0
2359
+ exp_year: {
2360
+ type: 'integer',
2361
+ nullable: true,
2362
+ 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.',
2363
+ example: 2028
807
2364
  },
808
- refundAdj: {
809
- type: 'number',
810
- format: 'float',
811
- description: 'Total amount of refund adjustments',
812
- example: 0
2365
+ brand: {
2366
+ type: 'string',
2367
+ nullable: true,
2368
+ 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.',
2369
+ example: 'visa'
813
2370
  },
814
- invoiceDate: {
2371
+ iban: {
815
2372
  type: 'string',
816
- description: 'Date of the invoice',
817
- example: '2019-01-01T00:00:00.000Z'
2373
+ nullable: true,
2374
+ 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.',
2375
+ example: 'DE11243015658023127510'
818
2376
  },
819
- targetDate: {
2377
+ bic: {
820
2378
  type: 'string',
821
- description: 'Target date of the invoice',
822
- example: '2019-01-01T00:00:00.000Z'
2379
+ nullable: true,
2380
+ description: 'BIC/SWIFT of the destination bank for bank transfers. Set only for `bank_transfer`; null otherwise.',
2381
+ example: 'SOGEDEFFXXX'
823
2382
  },
824
- invoiceNumber: {
2383
+ account_holder_name: {
825
2384
  type: 'string',
826
- description: 'Number of the invoice',
827
- example: 'INV-0001'
2385
+ nullable: true,
2386
+ description: 'Account holder name of the destination bank account for bank transfers. Set only for `bank_transfer`; null otherwise.',
2387
+ example: 'Cloudfleet GmbH'
828
2388
  },
829
- balance: {
830
- type: 'number',
831
- format: 'float',
832
- description: 'Balance of the invoice',
833
- example: 100
2389
+ is_default: {
2390
+ type: 'boolean',
2391
+ 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).',
2392
+ example: true
2393
+ }
2394
+ },
2395
+ required: [
2396
+ 'id',
2397
+ 'type',
2398
+ 'last4',
2399
+ 'exp_month',
2400
+ 'exp_year',
2401
+ 'brand',
2402
+ 'iban',
2403
+ 'bic',
2404
+ 'account_holder_name',
2405
+ 'is_default'
2406
+ ],
2407
+ additionalProperties: false
2408
+ };
2409
+ export const PlatformQuotaSchema = {
2410
+ type: 'object',
2411
+ properties: {
2412
+ basic_clusters_max: {
2413
+ type: 'integer',
2414
+ minimum: 0,
2415
+ description: 'Maximum number of Basic clusters that can be created.',
2416
+ example: 999
834
2417
  },
835
- bundleKeys: {
836
- type: 'string',
837
- description: 'Bundle keys of the invoice',
838
- example: 'bundleKey1,bundleKey2'
2418
+ basic_clusters_available: {
2419
+ type: 'integer',
2420
+ description: 'Available number of Basic clusters that can be created.',
2421
+ example: 999
2422
+ },
2423
+ pro_clusters_max: {
2424
+ type: 'integer',
2425
+ minimum: 0,
2426
+ description: 'Maximum number of Pro clusters that can be created.',
2427
+ example: 999
2428
+ },
2429
+ pro_clusters_available: {
2430
+ type: 'integer',
2431
+ description: 'Available number of Pro clusters that can be created.',
2432
+ example: 999
839
2433
  },
840
- credits: {
2434
+ fleets_max: {
2435
+ type: 'integer',
2436
+ minimum: 0,
2437
+ description: 'Maximum number of fleets that can be created per cluster.',
2438
+ example: 999
2439
+ },
2440
+ cluster_tiers: {
2441
+ type: 'array',
2442
+ items: {
2443
+ type: 'string',
2444
+ example: 'basic'
2445
+ },
2446
+ minItems: 0,
2447
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
2448
+ },
2449
+ regions: {
2450
+ type: 'array',
2451
+ items: {
2452
+ type: 'string',
2453
+ example: 'northamerica-central-1'
2454
+ },
2455
+ minItems: 1,
2456
+ description: 'List of Cloudfleet control plane regions available for the organization.'
2457
+ },
2458
+ versions: {
841
2459
  type: 'array',
842
2460
  items: {
843
2461
  type: 'object',
844
2462
  properties: {
845
2463
  id: {
846
2464
  type: 'string',
847
- format: 'uuid',
848
- description: 'Unique identifier of the invoice item. UUID v4 string in canonical form',
849
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
2465
+ description: 'Id of the control plane version. Used in API calls.',
2466
+ example: '1.33.x-cfke.x'
850
2467
  },
851
- linkedInvoiceItemId: {
2468
+ label: {
852
2469
  type: 'string',
853
- format: 'uuid',
854
- description: 'Unique identifier of the linked invoice item. UUID v4 string in canonical form',
855
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
856
- },
857
- productName: {
858
- type: 'string',
859
- description: 'Name of the product',
860
- example: 'Research team'
861
- },
862
- planName: {
863
- type: 'string',
864
- description: 'Name of the plan',
865
- example: 'Plan A'
866
- },
867
- phaseName: {
868
- type: 'string',
869
- description: 'Name of the phase',
870
- example: 'Phase A'
871
- },
872
- usageName: {
873
- type: 'string',
874
- description: 'Name of the usage',
875
- example: 'Usage A'
876
- },
877
- prettyProductName: {
878
- type: 'string',
879
- description: 'Pretty name of the product',
880
- example: 'Research team'
881
- },
882
- prettyPlanName: {
883
- type: 'string',
884
- description: 'Pretty name of the plan',
885
- example: 'Plan A'
886
- },
887
- prettyPhaseName: {
888
- type: 'string',
889
- description: 'Pretty name of the phase',
890
- example: 'Phase A'
891
- },
892
- prettyUsageName: {
893
- type: 'string',
894
- description: 'Pretty name of the usage',
895
- example: 'Usage A'
896
- },
897
- itemType: {
898
- type: 'string',
899
- description: 'Type of the invoice item',
900
- example: 'EXTERNAL_CHARGE',
901
- enum: ['EXTERNAL_CHARGE', 'FIXED', 'RECURRING', 'REPAIR_ADJ', 'CBA_ADJ', 'CREDIT_ADJ', 'ITEM_ADJ', 'USAGE', 'TAX', 'PARENT_SUMMARY']
902
- },
903
- description: {
904
- type: 'string',
905
- description: 'Description of the invoice item',
906
- example: 'Description of the invoice item'
907
- },
908
- startDate: {
909
- type: 'string',
910
- description: 'Start date of the invoice item',
911
- example: '2019-01-01T00:00:00.000Z'
912
- },
913
- endDate: {
914
- type: 'string',
915
- description: 'End date of the invoice item',
916
- example: '2019-01-01T00:00:00.000Z'
917
- },
918
- amount: {
919
- type: 'number',
920
- format: 'float',
921
- description: 'Amount of the invoice item',
922
- example: 100
923
- },
924
- rate: {
925
- type: 'number',
926
- format: 'float',
927
- description: 'Rate of the invoice item',
928
- example: 100
929
- },
930
- currency: {
931
- type: 'string',
932
- description: 'Currency of the invoice item',
933
- example: 'USD',
934
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
935
- },
936
- quantity: {
937
- type: 'number',
938
- format: 'float',
939
- description: 'Quantity of the invoice item',
940
- example: 1
941
- },
942
- itemDetails: {
943
- type: 'string',
944
- description: 'Details of the invoice item',
945
- example: 'Details of the invoice item'
946
- },
947
- catalogEffectiveDate: {
948
- type: 'string',
949
- description: 'Effective date of the catalog',
950
- example: '2019-01-01T00:00:00.000Z'
951
- },
952
- childItems: {
953
- type: 'array',
954
- items: {
955
- oneOf: [
956
- {
957
- type: 'array'
958
- },
959
- {
960
- type: 'boolean'
961
- },
962
- {
963
- type: 'number'
964
- },
965
- {
966
- type: 'object',
967
- additionalProperties: true
968
- },
969
- {
970
- type: 'string'
971
- }
972
- ]
973
- },
974
- description: 'Child items of the invoice item'
2470
+ description: 'Label of the control plane version. Used in frontent UI.',
2471
+ example: '1.33.x (Always latest 1.33 patch version)'
975
2472
  }
976
2473
  },
2474
+ required: [
2475
+ 'id',
2476
+ 'label'
2477
+ ],
977
2478
  additionalProperties: false
978
2479
  },
979
- description: 'Credits of the invoice'
2480
+ minItems: 1,
2481
+ description: 'List of CFKE control plane versions available for the organization.'
980
2482
  },
981
- items: {
2483
+ cfcr_storage_gb: {
2484
+ type: 'integer',
2485
+ minimum: -1,
2486
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
2487
+ example: 500
2488
+ }
2489
+ },
2490
+ required: [
2491
+ 'basic_clusters_max',
2492
+ 'basic_clusters_available',
2493
+ 'pro_clusters_max',
2494
+ 'pro_clusters_available',
2495
+ 'fleets_max',
2496
+ 'cluster_tiers',
2497
+ 'regions',
2498
+ 'versions',
2499
+ 'cfcr_storage_gb'
2500
+ ],
2501
+ additionalProperties: false
2502
+ };
2503
+ export const RegistryRepositorySchema = {
2504
+ type: 'object',
2505
+ properties: {
2506
+ name: {
2507
+ type: 'string',
2508
+ description: 'Repository name.',
2509
+ example: 'my-app'
2510
+ },
2511
+ region: {
2512
+ type: 'string',
2513
+ description: 'Registry region.',
2514
+ example: 'northamerica'
2515
+ },
2516
+ uri: {
2517
+ type: 'string',
2518
+ description: 'Full URI of the repository.',
2519
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
2520
+ }
2521
+ },
2522
+ required: [
2523
+ 'name',
2524
+ 'region',
2525
+ 'uri'
2526
+ ],
2527
+ additionalProperties: false
2528
+ };
2529
+ export const RegistryRepositoryWithTagsSchema = {
2530
+ type: 'object',
2531
+ properties: {
2532
+ name: {
2533
+ type: 'string',
2534
+ description: 'Repository name.',
2535
+ example: 'my-app'
2536
+ },
2537
+ region: {
2538
+ type: 'string',
2539
+ description: 'Registry region.',
2540
+ example: 'northamerica'
2541
+ },
2542
+ uri: {
2543
+ type: 'string',
2544
+ description: 'Full URI of the repository.',
2545
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
2546
+ },
2547
+ tags: {
982
2548
  type: 'array',
983
2549
  items: {
984
2550
  type: 'object',
985
2551
  properties: {
986
- id: {
987
- type: 'string',
988
- format: 'uuid',
989
- description: 'Unique identifier of the invoice item. UUID v4 string in canonical form',
990
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
991
- },
992
- linkedInvoiceItemId: {
993
- type: 'string',
994
- format: 'uuid',
995
- description: 'Unique identifier of the linked invoice item. UUID v4 string in canonical form',
996
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
997
- },
998
- productName: {
999
- type: 'string',
1000
- description: 'Name of the product',
1001
- example: 'Research team'
1002
- },
1003
- planName: {
1004
- type: 'string',
1005
- description: 'Name of the plan',
1006
- example: 'Plan A'
1007
- },
1008
- phaseName: {
1009
- type: 'string',
1010
- description: 'Name of the phase',
1011
- example: 'Phase A'
1012
- },
1013
- usageName: {
1014
- type: 'string',
1015
- description: 'Name of the usage',
1016
- example: 'Usage A'
1017
- },
1018
- prettyProductName: {
1019
- type: 'string',
1020
- description: 'Pretty name of the product',
1021
- example: 'Research team'
1022
- },
1023
- prettyPlanName: {
1024
- type: 'string',
1025
- description: 'Pretty name of the plan',
1026
- example: 'Plan A'
1027
- },
1028
- prettyPhaseName: {
1029
- type: 'string',
1030
- description: 'Pretty name of the phase',
1031
- example: 'Phase A'
1032
- },
1033
- prettyUsageName: {
1034
- type: 'string',
1035
- description: 'Pretty name of the usage',
1036
- example: 'Usage A'
1037
- },
1038
- itemType: {
1039
- type: 'string',
1040
- description: 'Type of the invoice item',
1041
- example: 'EXTERNAL_CHARGE',
1042
- enum: ['EXTERNAL_CHARGE', 'FIXED', 'RECURRING', 'REPAIR_ADJ', 'CBA_ADJ', 'CREDIT_ADJ', 'ITEM_ADJ', 'USAGE', 'TAX', 'PARENT_SUMMARY']
1043
- },
1044
- description: {
1045
- type: 'string',
1046
- description: 'Description of the invoice item',
1047
- example: 'Description of the invoice item'
1048
- },
1049
- startDate: {
1050
- type: 'string',
1051
- description: 'Start date of the invoice item',
1052
- example: '2019-01-01T00:00:00.000Z'
1053
- },
1054
- endDate: {
1055
- type: 'string',
1056
- description: 'End date of the invoice item',
1057
- example: '2019-01-01T00:00:00.000Z'
1058
- },
1059
- amount: {
1060
- type: 'number',
1061
- format: 'float',
1062
- description: 'Amount of the invoice item',
1063
- example: 100
1064
- },
1065
- rate: {
1066
- type: 'number',
1067
- format: 'float',
1068
- description: 'Rate of the invoice item',
1069
- example: 100
1070
- },
1071
- currency: {
2552
+ name: {
1072
2553
  type: 'string',
1073
- description: 'Currency of the invoice item',
1074
- example: 'USD',
1075
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
2554
+ description: 'Tag name.',
2555
+ example: 'latest'
1076
2556
  },
1077
- quantity: {
2557
+ size: {
1078
2558
  type: 'number',
1079
2559
  format: 'float',
1080
- description: 'Quantity of the invoice item',
1081
- example: 1
2560
+ description: 'Size of the tag in bytes.',
2561
+ example: 123456789
1082
2562
  },
1083
- itemDetails: {
2563
+ mediaType: {
1084
2564
  type: 'string',
1085
- description: 'Details of the invoice item',
1086
- example: 'Details of the invoice item'
2565
+ description: 'Media type of the manifest.',
2566
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1087
2567
  },
1088
- catalogEffectiveDate: {
1089
- type: 'string',
1090
- description: 'Effective date of the catalog',
1091
- example: '2019-01-01T00:00:00.000Z'
1092
- },
1093
- childItems: {
2568
+ platforms: {
1094
2569
  type: 'array',
1095
2570
  items: {
1096
- oneOf: [
1097
- {
1098
- type: 'array'
1099
- },
1100
- {
1101
- type: 'boolean'
1102
- },
1103
- {
1104
- type: 'number'
1105
- },
1106
- {
1107
- type: 'object',
1108
- additionalProperties: true
1109
- },
1110
- {
1111
- type: 'string'
1112
- }
1113
- ]
2571
+ type: 'string'
1114
2572
  },
1115
- description: 'Child items of the invoice item'
2573
+ description: 'Array of platform strings for multi-arch images (e.g., linux/amd64, linux/arm64).',
2574
+ example: [
2575
+ 'linux/amd64',
2576
+ 'linux/arm64'
2577
+ ]
1116
2578
  }
1117
2579
  },
2580
+ required: [
2581
+ 'name',
2582
+ 'size'
2583
+ ],
1118
2584
  additionalProperties: false
1119
2585
  },
1120
- description: 'Items of the invoice'
2586
+ description: 'Array of tags in the repository.'
2587
+ },
2588
+ totalSize: {
2589
+ type: 'number',
2590
+ format: 'float',
2591
+ description: 'Total size of all tags in the repository in bytes.',
2592
+ example: 987654321
1121
2593
  }
1122
2594
  },
2595
+ required: [
2596
+ 'name',
2597
+ 'region',
2598
+ 'uri',
2599
+ 'tags',
2600
+ 'totalSize'
2601
+ ],
1123
2602
  additionalProperties: false
1124
2603
  };
1125
- export const OrganizationContactInfoSchema = {
2604
+ export const RegistryTagSchema = {
1126
2605
  type: 'object',
1127
2606
  properties: {
1128
- address1: {
2607
+ name: {
1129
2608
  type: 'string',
1130
- nullable: true,
1131
- description: 'Street address, P.O. box, c/o',
1132
- example: '123 Main St.'
2609
+ description: 'Tag name.',
2610
+ example: 'latest'
1133
2611
  },
1134
- address2: {
2612
+ digest: {
1135
2613
  type: 'string',
1136
- nullable: true,
1137
- description: 'Apartment, suite, unit, building, floor, etc.',
1138
- example: 'Suite 100'
2614
+ description: 'Manifest digest for pulling by digest.',
2615
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1139
2616
  },
1140
- postalCode: {
2617
+ mediaType: {
1141
2618
  type: 'string',
1142
- nullable: true,
1143
- description: 'Postal code as a string.',
1144
- example: '94105'
2619
+ description: 'Media type of the manifest.',
2620
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1145
2621
  },
1146
- city: {
1147
- type: 'string',
1148
- nullable: true,
1149
- description: 'City or town name.',
1150
- example: 'San Francisco'
2622
+ config: {
2623
+ type: 'object',
2624
+ properties: {
2625
+ size: {
2626
+ type: 'number',
2627
+ format: 'float',
2628
+ description: 'Size of the config in bytes.',
2629
+ example: 1234
2630
+ }
2631
+ },
2632
+ required: [
2633
+ 'size'
2634
+ ],
2635
+ additionalProperties: false,
2636
+ description: 'Manifest config metadata.'
1151
2637
  },
1152
- state: {
1153
- type: 'string',
1154
- nullable: true,
1155
- description: 'State, province, or region name.',
1156
- example: 'CA'
2638
+ layers: {
2639
+ type: 'array',
2640
+ items: {
2641
+ type: 'object',
2642
+ properties: {
2643
+ digest: {
2644
+ type: 'string',
2645
+ description: 'Digest of the layer.',
2646
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2647
+ },
2648
+ size: {
2649
+ type: 'number',
2650
+ format: 'float',
2651
+ description: 'Size of the layer in bytes.',
2652
+ example: 5678
2653
+ }
2654
+ },
2655
+ required: [
2656
+ 'size'
2657
+ ],
2658
+ additionalProperties: false
2659
+ },
2660
+ description: 'Array of layer metadata.'
1157
2661
  },
1158
- country: {
1159
- type: 'string',
1160
- nullable: true,
1161
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1162
- example: 'US'
2662
+ manifests: {
2663
+ type: 'array',
2664
+ items: {
2665
+ type: 'object',
2666
+ properties: {
2667
+ digest: {
2668
+ type: 'string',
2669
+ description: 'Digest of the manifest.',
2670
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2671
+ },
2672
+ platform: {
2673
+ type: 'object',
2674
+ properties: {
2675
+ architecture: {
2676
+ type: 'string',
2677
+ description: 'Architecture of the platform.',
2678
+ example: 'amd64'
2679
+ },
2680
+ os: {
2681
+ type: 'string',
2682
+ description: 'Operating system of the platform.',
2683
+ example: 'linux'
2684
+ },
2685
+ variant: {
2686
+ type: 'string',
2687
+ description: 'Variant of the platform (e.g., v7, v8 for ARM).',
2688
+ example: 'v8'
2689
+ }
2690
+ },
2691
+ required: [
2692
+ 'architecture',
2693
+ 'os'
2694
+ ],
2695
+ additionalProperties: false,
2696
+ description: 'Platform information for the manifest.'
2697
+ },
2698
+ layers: {
2699
+ type: 'array',
2700
+ items: {
2701
+ type: 'object',
2702
+ properties: {
2703
+ digest: {
2704
+ type: 'string',
2705
+ description: 'Digest of the layer.',
2706
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2707
+ },
2708
+ size: {
2709
+ type: 'number',
2710
+ format: 'float',
2711
+ description: 'Size of the layer in bytes.',
2712
+ example: 5678
2713
+ }
2714
+ },
2715
+ required: [
2716
+ 'size'
2717
+ ],
2718
+ additionalProperties: false
2719
+ },
2720
+ description: 'Layers for this platform.'
2721
+ },
2722
+ size: {
2723
+ type: 'number',
2724
+ format: 'float',
2725
+ description: 'Total size of this platform manifest in bytes.',
2726
+ example: 12345678
2727
+ }
2728
+ },
2729
+ required: [
2730
+ 'digest'
2731
+ ],
2732
+ additionalProperties: false
2733
+ },
2734
+ description: 'Array of manifests for multi-arch images.'
1163
2735
  },
1164
- phone: {
1165
- type: 'string',
1166
- nullable: true,
1167
- description: 'Phone number as a string.',
1168
- example: '+1 555 555 5555'
2736
+ size: {
2737
+ type: 'number',
2738
+ format: 'float',
2739
+ description: 'Total size of the tag in bytes.',
2740
+ example: 123456789
1169
2741
  },
1170
- email: {
2742
+ region: {
1171
2743
  type: 'string',
1172
- format: 'email',
1173
- description: 'Email address used for billing as a string.',
1174
- example: 'email@example.com'
2744
+ description: 'Registry region.',
2745
+ example: 'northamerica'
1175
2746
  },
1176
- first_name: {
2747
+ repository: {
1177
2748
  type: 'string',
1178
- description: 'First name of the billing contact person.',
1179
- example: 'John'
2749
+ description: 'Repository name.',
2750
+ example: 'my-app'
1180
2751
  },
1181
- last_name: {
2752
+ uri: {
1182
2753
  type: 'string',
1183
- description: 'Last name of the billing contact person.',
1184
- example: 'Doe'
2754
+ description: 'Full URI of the tag.',
2755
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app:latest'
1185
2756
  }
1186
2757
  },
1187
- required: ['email', 'first_name', 'last_name'],
2758
+ required: [
2759
+ 'name',
2760
+ 'digest',
2761
+ 'size',
2762
+ 'region',
2763
+ 'repository',
2764
+ 'uri'
2765
+ ],
1188
2766
  additionalProperties: false
1189
2767
  };
1190
- export const OrganizationCreateInputSchema = {
2768
+ export const TicketAttachmentSchema = {
1191
2769
  type: 'object',
1192
2770
  properties: {
1193
- name: {
2771
+ id: {
1194
2772
  type: 'string',
1195
- maxLength: 120,
1196
- minLength: 2,
1197
- pattern: '^(?!\\s)(?!.*\\s$)(?=.*[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9])[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9 -.]{2,}$',
1198
- description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
1199
- example: 'ACME Corp.'
2773
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2774
+ example: '60c72b2f9f1b2c001f8e4d3c'
1200
2775
  },
1201
- contactInfo: {
1202
- type: 'object',
1203
- properties: {
1204
- address1: {
1205
- type: 'string',
1206
- description: 'Street address, P.O. box, c/o',
1207
- example: '123 Main St.'
1208
- },
1209
- address2: {
1210
- type: 'string',
1211
- description: 'Apartment, suite, unit, building, floor, etc.',
1212
- example: 'Suite 100'
1213
- },
1214
- postalCode: {
1215
- type: 'string',
1216
- description: 'Postal code as a string.',
1217
- example: '94105'
1218
- },
1219
- city: {
1220
- type: 'string',
1221
- description: 'City or town name.',
1222
- example: 'San Francisco'
1223
- },
1224
- state: {
1225
- type: 'string',
1226
- description: 'State, province, or region name.',
1227
- example: 'CA'
1228
- },
1229
- country: {
1230
- type: 'string',
1231
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1232
- example: 'US'
1233
- },
1234
- phone: {
1235
- type: 'string',
1236
- description: 'Phone number as a string.',
1237
- example: '+1 555 555 5555'
1238
- },
1239
- email: {
1240
- type: 'string',
1241
- format: 'email',
1242
- description: 'Email address used for billing as a string.',
1243
- example: 'email@example.com'
1244
- },
1245
- first_name: {
1246
- type: 'string',
1247
- description: 'First name of the billing contact person.',
1248
- example: 'John'
1249
- },
1250
- last_name: {
1251
- type: 'string',
1252
- description: 'Last name of the billing contact person.',
1253
- example: 'Doe'
1254
- }
1255
- },
1256
- required: ['email', 'first_name', 'last_name'],
1257
- additionalProperties: false,
1258
- description: 'Organization contact information and billing address.'
2776
+ filename: {
2777
+ type: 'string',
2778
+ description: 'Original filename as uploaded.',
2779
+ example: 'debug.log'
1259
2780
  },
1260
- password: {
2781
+ content_type: {
1261
2782
  type: 'string',
1262
- minLength: 8,
1263
- description: 'Password for the root account. Must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one number and one special character.'
2783
+ description: 'MIME content type of the attachment.',
2784
+ example: 'text/plain'
2785
+ },
2786
+ size: {
2787
+ type: 'integer',
2788
+ description: 'Size of the attachment in bytes.',
2789
+ example: 12345
1264
2790
  }
1265
2791
  },
1266
- required: ['name', 'contactInfo', 'password'],
2792
+ required: [
2793
+ 'id',
2794
+ 'filename',
2795
+ 'content_type',
2796
+ 'size'
2797
+ ],
1267
2798
  additionalProperties: false
1268
2799
  };
1269
- export const OrganizationSchema = {
2800
+ export const TicketCreateInputSchema = {
1270
2801
  type: 'object',
1271
2802
  properties: {
1272
- name: {
1273
- type: 'string',
1274
- maxLength: 120,
1275
- minLength: 2,
1276
- pattern: '^(?!\\s)(?!.*\\s$)(?=.*[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9])[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9 -.]{2,}$',
1277
- description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
1278
- example: 'ACME Corp.'
1279
- },
1280
- contactInfo: {
1281
- type: 'object',
1282
- properties: {
1283
- address1: {
1284
- type: 'string',
1285
- description: 'Street address, P.O. box, c/o',
1286
- example: '123 Main St.'
1287
- },
1288
- address2: {
1289
- type: 'string',
1290
- description: 'Apartment, suite, unit, building, floor, etc.',
1291
- example: 'Suite 100'
1292
- },
1293
- postalCode: {
1294
- type: 'string',
1295
- description: 'Postal code as a string.',
1296
- example: '94105'
1297
- },
1298
- city: {
1299
- type: 'string',
1300
- description: 'City or town name.',
1301
- example: 'San Francisco'
1302
- },
1303
- state: {
1304
- type: 'string',
1305
- description: 'State, province, or region name.',
1306
- example: 'CA'
1307
- },
1308
- country: {
1309
- type: 'string',
1310
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1311
- example: 'US'
1312
- },
1313
- phone: {
1314
- type: 'string',
1315
- description: 'Phone number as a string.',
1316
- example: '+1 555 555 5555'
1317
- },
1318
- email: {
1319
- type: 'string',
1320
- format: 'email',
1321
- description: 'Email address used for billing as a string.',
1322
- example: 'email@example.com'
1323
- },
1324
- first_name: {
1325
- type: 'string',
1326
- description: 'First name of the billing contact person.',
1327
- example: 'John'
1328
- },
1329
- last_name: {
1330
- type: 'string',
1331
- description: 'Last name of the billing contact person.',
1332
- example: 'Doe'
1333
- }
1334
- },
1335
- required: ['email', 'first_name', 'last_name'],
1336
- additionalProperties: false,
1337
- description: 'Organization contact information and billing address.'
1338
- },
1339
- id: {
1340
- type: 'string',
1341
- format: 'uuid',
1342
- description: 'Unique identifier of the organization. UUID v4 string in canonical form',
1343
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
2803
+ category: {
2804
+ type: 'string',
2805
+ description: 'Ticket category. Drives auto-assignment and may carry a subcategory in `properties`.',
2806
+ example: 'technical',
2807
+ enum: [
2808
+ 'billing',
2809
+ 'technical',
2810
+ 'general'
2811
+ ]
1344
2812
  },
1345
- date_created: {
2813
+ body: {
1346
2814
  type: 'string',
1347
- format: 'date-time',
1348
- description: 'Creation date of the organization. ISO 8601 date string in UTC timezone',
1349
- example: '2023-11-02T16:08:14.338Z'
2815
+ maxLength: 50000,
2816
+ minLength: 1,
2817
+ pattern: '\\S',
2818
+ description: 'Initial message body in markdown. There is no separate subject — the first message body is the description.',
2819
+ example: 'My cluster cannot reach the registry. Logs attached.'
1350
2820
  },
1351
- quota: {
2821
+ properties: {
1352
2822
  type: 'object',
1353
- properties: {
1354
- basic_clusters_max: {
1355
- type: 'integer',
1356
- minimum: 0,
1357
- description: 'Maximum number of Basic clusters that can be created.',
1358
- example: 999
1359
- },
1360
- basic_clusters_available: {
1361
- type: 'integer',
1362
- description: 'Available number of Basic clusters that can be created.',
1363
- example: 999
1364
- },
1365
- pro_clusters_max: {
1366
- type: 'integer',
1367
- minimum: 0,
1368
- description: 'Maximum number of Pro clusters that can be created.',
1369
- example: 999
1370
- },
1371
- pro_clusters_available: {
1372
- type: 'integer',
1373
- description: 'Available number of Pro clusters that can be created.',
1374
- example: 999
1375
- },
1376
- fleets_max: {
1377
- type: 'integer',
1378
- minimum: 0,
1379
- description: 'Maximum number of fleets that can be created per cluster.',
1380
- example: 999
1381
- },
1382
- managed_fleets_cpu_max: {
1383
- type: 'integer',
1384
- minimum: 0,
1385
- description: 'Maximum number of CPU cores per managed fleet.',
1386
- example: 999
1387
- },
1388
- cluster_tiers: {
1389
- type: 'array',
1390
- items: {
1391
- type: 'string',
1392
- example: 'basic'
1393
- },
1394
- minItems: 0,
1395
- description: 'List of Cloudfleet cluster tiers available for the organization.'
1396
- },
1397
- regions: {
1398
- type: 'array',
1399
- items: {
1400
- type: 'string',
1401
- example: 'northamerica-central-1'
1402
- },
1403
- minItems: 1,
1404
- description: 'List of Cloudfleet control plane regions available for the organization.'
1405
- },
1406
- versions: {
1407
- type: 'array',
1408
- items: {
1409
- type: 'object',
1410
- properties: {
1411
- id: {
1412
- type: 'string',
1413
- description: 'Id of the control plane version. Used in API calls.',
1414
- example: '1.29.x-cfke.x'
1415
- },
1416
- label: {
1417
- type: 'string',
1418
- description: 'Label of the control plane version. Used in frontent UI.',
1419
- example: '1.29.x (Always latest 1.29 patch version)'
1420
- }
1421
- },
1422
- required: ['id', 'label'],
1423
- additionalProperties: false
1424
- },
1425
- minItems: 1,
1426
- description: 'List of CFKE control plane versions available for the organization.'
1427
- }
1428
- },
1429
- required: ['basic_clusters_max', 'basic_clusters_available', 'pro_clusters_max', 'pro_clusters_available', 'fleets_max', 'managed_fleets_cpu_max', 'cluster_tiers', 'regions', 'versions'],
1430
- additionalProperties: false,
1431
- description: 'For security reasons, platform quota is controlled by Cloudfleet and can be updated only by Cloudfleet administrators. Please open a support ticket if you need to change the platform quota.'
1432
- },
1433
- pending_actions: {
2823
+ additionalProperties: true,
2824
+ description: 'Free-form key/value bag set by the UI (e.g. `subcategory`, `cluster_id`, `cluster_name`, `region`).',
2825
+ example: {
2826
+ subcategory: 'cluster-question',
2827
+ cluster_id: '60c72b2f9f1b2c001f8e4d3a'
2828
+ }
2829
+ }
2830
+ },
2831
+ required: [
2832
+ 'category',
2833
+ 'body'
2834
+ ],
2835
+ additionalProperties: false
2836
+ };
2837
+ export const TicketListResponseSchema = {
2838
+ type: 'object',
2839
+ properties: {
2840
+ items: {
1434
2841
  type: 'array',
1435
2842
  items: {
1436
- type: 'string',
1437
- example: 'signup-payment-method',
1438
- enum: ['signup-billing-address', 'signup-payment-method', 'signup-invite-team', 'signup-create-cluster']
2843
+ type: 'object',
2844
+ properties: {
2845
+ id: {
2846
+ type: 'string',
2847
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
2848
+ example: '60c72b2f9f1b2c001f8e4d3a'
2849
+ },
2850
+ status: {
2851
+ type: 'string',
2852
+ description: 'Current state of the ticket.',
2853
+ example: 'waiting_on_us',
2854
+ enum: [
2855
+ 'waiting_on_us',
2856
+ 'waiting_on_user',
2857
+ 'closed'
2858
+ ]
2859
+ },
2860
+ category: {
2861
+ type: 'string',
2862
+ description: 'Ticket category.',
2863
+ example: 'technical',
2864
+ enum: [
2865
+ 'billing',
2866
+ 'technical',
2867
+ 'general'
2868
+ ]
2869
+ },
2870
+ summary: {
2871
+ type: 'string',
2872
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2873
+ example: 'My cluster cannot reach the registry. Logs attached.'
2874
+ },
2875
+ closed_at: {
2876
+ type: 'string',
2877
+ format: 'date-time',
2878
+ nullable: true,
2879
+ description: 'Closure timestamp. Null while the ticket is open.',
2880
+ example: '2026-05-18T16:08:14.338Z'
2881
+ },
2882
+ date_created: {
2883
+ type: 'string',
2884
+ format: 'date-time',
2885
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
2886
+ example: '2026-05-11T16:08:14.338Z'
2887
+ },
2888
+ date_updated: {
2889
+ type: 'string',
2890
+ format: 'date-time',
2891
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
2892
+ example: '2026-05-11T16:08:14.338Z'
2893
+ },
2894
+ messages: {
2895
+ type: 'array',
2896
+ items: {
2897
+ type: 'object',
2898
+ properties: {
2899
+ id: {
2900
+ type: 'string',
2901
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2902
+ example: '60c72b2f9f1b2c001f8e4d3b'
2903
+ },
2904
+ type: {
2905
+ type: 'string',
2906
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2907
+ example: 'customer_reply',
2908
+ enum: [
2909
+ 'customer_reply',
2910
+ 'agent_reply'
2911
+ ]
2912
+ },
2913
+ body: {
2914
+ type: 'string',
2915
+ description: 'Message body in markdown.',
2916
+ example: 'Thanks — that resolved it on my side.'
2917
+ },
2918
+ author_first_name: {
2919
+ type: 'string',
2920
+ nullable: true,
2921
+ description: 'First name of the author. Null when not provided.',
2922
+ example: 'Jane'
2923
+ },
2924
+ author_last_name: {
2925
+ type: 'string',
2926
+ nullable: true,
2927
+ description: 'Last name of the author. Null when not provided.',
2928
+ example: 'Doe'
2929
+ },
2930
+ attachments: {
2931
+ type: 'array',
2932
+ items: {
2933
+ type: 'object',
2934
+ properties: {
2935
+ id: {
2936
+ type: 'string',
2937
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2938
+ example: '60c72b2f9f1b2c001f8e4d3c'
2939
+ },
2940
+ filename: {
2941
+ type: 'string',
2942
+ description: 'Original filename as uploaded.',
2943
+ example: 'debug.log'
2944
+ },
2945
+ content_type: {
2946
+ type: 'string',
2947
+ description: 'MIME content type of the attachment.',
2948
+ example: 'text/plain'
2949
+ },
2950
+ size: {
2951
+ type: 'integer',
2952
+ description: 'Size of the attachment in bytes.',
2953
+ example: 12345
2954
+ }
2955
+ },
2956
+ required: [
2957
+ 'id',
2958
+ 'filename',
2959
+ 'content_type',
2960
+ 'size'
2961
+ ],
2962
+ additionalProperties: false
2963
+ },
2964
+ description: 'Attachments associated with this message.',
2965
+ example: []
2966
+ },
2967
+ date_created: {
2968
+ type: 'string',
2969
+ format: 'date-time',
2970
+ description: 'Creation date of the message. ISO 8601 UTC.',
2971
+ example: '2026-05-11T16:08:14.338Z'
2972
+ }
2973
+ },
2974
+ required: [
2975
+ 'id',
2976
+ 'type',
2977
+ 'body',
2978
+ 'date_created'
2979
+ ],
2980
+ additionalProperties: false
2981
+ },
2982
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2983
+ }
2984
+ },
2985
+ required: [
2986
+ 'id',
2987
+ 'status',
2988
+ 'category',
2989
+ 'summary',
2990
+ 'date_created',
2991
+ 'date_updated'
2992
+ ],
2993
+ additionalProperties: false
1439
2994
  },
1440
- description: 'List of pending actions that the user needs to complete. Used in Cloudfleet console to guide the user through the onboarding process.'
1441
- },
1442
- status: {
2995
+ description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2996
+ }
2997
+ },
2998
+ required: [
2999
+ 'items'
3000
+ ],
3001
+ additionalProperties: false
3002
+ };
3003
+ export const TicketMessageInputSchema = {
3004
+ type: 'object',
3005
+ properties: {
3006
+ body: {
1443
3007
  type: 'string',
1444
- description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
1445
- enum: ['active', 'closed', 'suspended']
3008
+ maxLength: 50000,
3009
+ minLength: 1,
3010
+ pattern: '\\S',
3011
+ description: 'Reply body in markdown.',
3012
+ example: 'Thanks — that resolved it on my side.'
1446
3013
  }
1447
3014
  },
1448
- required: ['name', 'contactInfo', 'id', 'date_created', 'quota', 'pending_actions', 'status'],
3015
+ required: [
3016
+ 'body'
3017
+ ],
1449
3018
  additionalProperties: false
1450
3019
  };
1451
- export const OrganizationUpdateInputSchema = {
3020
+ export const TicketMessageSchema = {
1452
3021
  type: 'object',
1453
3022
  properties: {
1454
- name: {
3023
+ id: {
1455
3024
  type: 'string',
1456
- maxLength: 120,
1457
- minLength: 2,
1458
- pattern: '^(?!\\s)(?!.*\\s$)(?=.*[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9])[a-zA-ZÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ0-9 -.]{2,}$',
1459
- description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
1460
- example: 'ACME Corp.'
3025
+ description: 'Unique identifier of the message (Mongo ObjectId).',
3026
+ example: '60c72b2f9f1b2c001f8e4d3b'
1461
3027
  },
1462
- contactInfo: {
1463
- type: 'object',
1464
- properties: {
1465
- address1: {
1466
- type: 'string',
1467
- description: 'Street address, P.O. box, c/o',
1468
- example: '123 Main St.'
1469
- },
1470
- address2: {
1471
- type: 'string',
1472
- description: 'Apartment, suite, unit, building, floor, etc.',
1473
- example: 'Suite 100'
1474
- },
1475
- postalCode: {
1476
- type: 'string',
1477
- description: 'Postal code as a string.',
1478
- example: '94105'
1479
- },
1480
- city: {
1481
- type: 'string',
1482
- description: 'City or town name.',
1483
- example: 'San Francisco'
1484
- },
1485
- state: {
1486
- type: 'string',
1487
- description: 'State, province, or region name.',
1488
- example: 'CA'
1489
- },
1490
- country: {
1491
- type: 'string',
1492
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1493
- example: 'US'
1494
- },
1495
- phone: {
1496
- type: 'string',
1497
- description: 'Phone number as a string.',
1498
- example: '+1 555 555 5555'
1499
- },
1500
- email: {
1501
- type: 'string',
1502
- format: 'email',
1503
- description: 'Email address used for billing as a string.',
1504
- example: 'email@example.com'
1505
- },
1506
- first_name: {
1507
- type: 'string',
1508
- description: 'First name of the billing contact person.',
1509
- example: 'John'
3028
+ type: {
3029
+ type: 'string',
3030
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
3031
+ example: 'customer_reply',
3032
+ enum: [
3033
+ 'customer_reply',
3034
+ 'agent_reply'
3035
+ ]
3036
+ },
3037
+ body: {
3038
+ type: 'string',
3039
+ description: 'Message body in markdown.',
3040
+ example: 'Thanks — that resolved it on my side.'
3041
+ },
3042
+ author_first_name: {
3043
+ type: 'string',
3044
+ description: 'First name of the author. Null when not provided.',
3045
+ example: 'Jane'
3046
+ },
3047
+ author_last_name: {
3048
+ type: 'string',
3049
+ description: 'Last name of the author. Null when not provided.',
3050
+ example: 'Doe'
3051
+ },
3052
+ attachments: {
3053
+ type: 'array',
3054
+ items: {
3055
+ type: 'object',
3056
+ properties: {
3057
+ id: {
3058
+ type: 'string',
3059
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
3060
+ example: '60c72b2f9f1b2c001f8e4d3c'
3061
+ },
3062
+ filename: {
3063
+ type: 'string',
3064
+ description: 'Original filename as uploaded.',
3065
+ example: 'debug.log'
3066
+ },
3067
+ content_type: {
3068
+ type: 'string',
3069
+ description: 'MIME content type of the attachment.',
3070
+ example: 'text/plain'
3071
+ },
3072
+ size: {
3073
+ type: 'integer',
3074
+ description: 'Size of the attachment in bytes.',
3075
+ example: 12345
3076
+ }
1510
3077
  },
1511
- last_name: {
1512
- type: 'string',
1513
- description: 'Last name of the billing contact person.',
1514
- example: 'Doe'
1515
- }
3078
+ required: [
3079
+ 'id',
3080
+ 'filename',
3081
+ 'content_type',
3082
+ 'size'
3083
+ ],
3084
+ additionalProperties: false
1516
3085
  },
1517
- required: ['email', 'first_name', 'last_name'],
1518
- additionalProperties: false,
1519
- description: 'Organization contact information and billing address.'
3086
+ description: 'Attachments associated with this message.',
3087
+ example: []
3088
+ },
3089
+ date_created: {
3090
+ type: 'string',
3091
+ format: 'date-time',
3092
+ description: 'Creation date of the message. ISO 8601 UTC.',
3093
+ example: '2026-05-11T16:08:14.338Z'
1520
3094
  }
1521
3095
  },
1522
- required: ['contactInfo'],
3096
+ required: [
3097
+ 'id',
3098
+ 'type',
3099
+ 'body',
3100
+ 'date_created'
3101
+ ],
1523
3102
  additionalProperties: false
1524
3103
  };
1525
- export const PaymentMethodSchema = {
3104
+ export const TicketSchema = {
1526
3105
  type: 'object',
1527
3106
  properties: {
1528
3107
  id: {
1529
3108
  type: 'string',
1530
- format: 'uuid',
1531
- description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
1532
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
3109
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
3110
+ example: '60c72b2f9f1b2c001f8e4d3a'
1533
3111
  },
1534
- setup: {
1535
- type: 'boolean',
1536
- description: 'Whether organization payment method was set up and ready to use for payments.',
1537
- example: true
3112
+ status: {
3113
+ type: 'string',
3114
+ description: 'Current state of the ticket.',
3115
+ example: 'waiting_on_us',
3116
+ enum: [
3117
+ 'waiting_on_us',
3118
+ 'waiting_on_user',
3119
+ 'closed'
3120
+ ]
1538
3121
  },
1539
- type: {
3122
+ category: {
1540
3123
  type: 'string',
1541
- nullable: true,
1542
- description: 'Payment method type type. Only `card` payments supported at the moment.',
1543
- example: 'card',
1544
- enum: ['card']
3124
+ description: 'Ticket category.',
3125
+ example: 'technical',
3126
+ enum: [
3127
+ 'billing',
3128
+ 'technical',
3129
+ 'general'
3130
+ ]
1545
3131
  },
1546
- last4: {
3132
+ summary: {
1547
3133
  type: 'string',
1548
- nullable: true,
1549
- description: 'Last 4 digits of the payment card number.',
1550
- example: '4242'
3134
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3135
+ example: 'My cluster cannot reach the registry. Logs attached.'
1551
3136
  },
1552
- exp_month: {
1553
- type: 'integer',
1554
- minimum: 1,
1555
- maximum: 12,
1556
- nullable: true,
1557
- description: "Two-digit number representing the card's expiration month.",
1558
- example: '12'
3137
+ closed_at: {
3138
+ type: 'string',
3139
+ format: 'date-time',
3140
+ description: 'Closure timestamp. Null while the ticket is open.',
3141
+ example: '2026-05-18T16:08:14.338Z'
1559
3142
  },
1560
- exp_year: {
1561
- type: 'integer',
1562
- minimum: 2024,
1563
- nullable: true,
1564
- description: "Four-digit number representing the card's expiration year.",
1565
- example: '2028'
3143
+ date_created: {
3144
+ type: 'string',
3145
+ format: 'date-time',
3146
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
3147
+ example: '2026-05-11T16:08:14.338Z'
1566
3148
  },
1567
- brand: {
3149
+ date_updated: {
1568
3150
  type: 'string',
1569
- nullable: true,
1570
- description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
1571
- example: 'visa',
1572
- enum: ['amex', 'diners', 'discover', 'eftpos_au', 'jcb', 'mastercard', 'unionpay', 'visa', 'unknown']
3151
+ format: 'date-time',
3152
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
3153
+ example: '2026-05-11T16:08:14.338Z'
3154
+ },
3155
+ messages: {
3156
+ type: 'array',
3157
+ items: {
3158
+ type: 'object',
3159
+ properties: {
3160
+ id: {
3161
+ type: 'string',
3162
+ description: 'Unique identifier of the message (Mongo ObjectId).',
3163
+ example: '60c72b2f9f1b2c001f8e4d3b'
3164
+ },
3165
+ type: {
3166
+ type: 'string',
3167
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
3168
+ example: 'customer_reply',
3169
+ enum: [
3170
+ 'customer_reply',
3171
+ 'agent_reply'
3172
+ ]
3173
+ },
3174
+ body: {
3175
+ type: 'string',
3176
+ description: 'Message body in markdown.',
3177
+ example: 'Thanks — that resolved it on my side.'
3178
+ },
3179
+ author_first_name: {
3180
+ type: 'string',
3181
+ description: 'First name of the author. Null when not provided.',
3182
+ example: 'Jane'
3183
+ },
3184
+ author_last_name: {
3185
+ type: 'string',
3186
+ description: 'Last name of the author. Null when not provided.',
3187
+ example: 'Doe'
3188
+ },
3189
+ attachments: {
3190
+ type: 'array',
3191
+ items: {
3192
+ type: 'object',
3193
+ properties: {
3194
+ id: {
3195
+ type: 'string',
3196
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
3197
+ example: '60c72b2f9f1b2c001f8e4d3c'
3198
+ },
3199
+ filename: {
3200
+ type: 'string',
3201
+ description: 'Original filename as uploaded.',
3202
+ example: 'debug.log'
3203
+ },
3204
+ content_type: {
3205
+ type: 'string',
3206
+ description: 'MIME content type of the attachment.',
3207
+ example: 'text/plain'
3208
+ },
3209
+ size: {
3210
+ type: 'integer',
3211
+ description: 'Size of the attachment in bytes.',
3212
+ example: 12345
3213
+ }
3214
+ },
3215
+ required: [
3216
+ 'id',
3217
+ 'filename',
3218
+ 'content_type',
3219
+ 'size'
3220
+ ],
3221
+ additionalProperties: false
3222
+ },
3223
+ description: 'Attachments associated with this message.',
3224
+ example: []
3225
+ },
3226
+ date_created: {
3227
+ type: 'string',
3228
+ format: 'date-time',
3229
+ description: 'Creation date of the message. ISO 8601 UTC.',
3230
+ example: '2026-05-11T16:08:14.338Z'
3231
+ }
3232
+ },
3233
+ required: [
3234
+ 'id',
3235
+ 'type',
3236
+ 'body',
3237
+ 'date_created'
3238
+ ],
3239
+ additionalProperties: false
3240
+ },
3241
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
1573
3242
  }
1574
3243
  },
1575
- required: ['id', 'setup', 'type', 'last4', 'exp_month', 'exp_year', 'brand'],
3244
+ required: [
3245
+ 'id',
3246
+ 'status',
3247
+ 'category',
3248
+ 'summary',
3249
+ 'date_created',
3250
+ 'date_updated'
3251
+ ],
1576
3252
  additionalProperties: false
1577
3253
  };
1578
3254
  export const TokenCreateInputSchema = {
@@ -1590,10 +3266,16 @@ export const TokenCreateInputSchema = {
1590
3266
  type: 'string',
1591
3267
  description: 'Role assumed by the token.',
1592
3268
  example: 'User',
1593
- enum: ['Administrator', 'User']
3269
+ enum: [
3270
+ 'Administrator',
3271
+ 'User'
3272
+ ]
1594
3273
  }
1595
3274
  },
1596
- required: ['name', 'role'],
3275
+ required: [
3276
+ 'name',
3277
+ 'role'
3278
+ ],
1597
3279
  additionalProperties: false
1598
3280
  };
1599
3281
  export const TokenSchema = {
@@ -1611,7 +3293,10 @@ export const TokenSchema = {
1611
3293
  type: 'string',
1612
3294
  description: 'Role assumed by the token.',
1613
3295
  example: 'User',
1614
- enum: ['Administrator', 'User']
3296
+ enum: [
3297
+ 'Administrator',
3298
+ 'User'
3299
+ ]
1615
3300
  },
1616
3301
  id: {
1617
3302
  type: 'string',
@@ -1630,7 +3315,11 @@ export const TokenSchema = {
1630
3315
  example: '2023-12-20T13:53:32.000Z'
1631
3316
  }
1632
3317
  },
1633
- required: ['name', 'role', 'date_created'],
3318
+ required: [
3319
+ 'name',
3320
+ 'role',
3321
+ 'date_created'
3322
+ ],
1634
3323
  additionalProperties: false
1635
3324
  };
1636
3325
  export const TokenUpdateInputSchema = {
@@ -1648,37 +3337,173 @@ export const TokenUpdateInputSchema = {
1648
3337
  type: 'string',
1649
3338
  description: 'Role assumed by the token.',
1650
3339
  example: 'User',
1651
- enum: ['Administrator', 'User']
3340
+ enum: [
3341
+ 'Administrator',
3342
+ 'User'
3343
+ ]
3344
+ }
3345
+ },
3346
+ additionalProperties: false
3347
+ };
3348
+ export const UsageFacetsSchema = {
3349
+ type: 'object',
3350
+ properties: {
3351
+ cluster_id: {
3352
+ type: 'array',
3353
+ items: {
3354
+ type: 'string'
3355
+ },
3356
+ description: 'List of unique cluster IDs',
3357
+ example: [
3358
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3359
+ ]
3360
+ },
3361
+ product: {
3362
+ type: 'array',
3363
+ items: {
3364
+ type: 'string'
3365
+ },
3366
+ description: 'List of unique products',
3367
+ example: [
3368
+ 'cfke_controlplane',
3369
+ 'cfke_connected_nodes'
3370
+ ]
3371
+ }
3372
+ },
3373
+ additionalProperties: false
3374
+ };
3375
+ export const UsageResponseSchema = {
3376
+ type: 'object',
3377
+ properties: {
3378
+ data: {
3379
+ type: 'array',
3380
+ items: {
3381
+ type: 'object',
3382
+ properties: {
3383
+ hour: {
3384
+ type: 'string',
3385
+ description: 'Hour of the usage',
3386
+ example: '2019-01-01T00:00:00.000Z'
3387
+ },
3388
+ cluster_id: {
3389
+ type: 'string',
3390
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
3391
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3392
+ },
3393
+ product: {
3394
+ type: 'string',
3395
+ description: 'The product the usage is associated with',
3396
+ example: 'cfke_controlplane'
3397
+ },
3398
+ value: {
3399
+ type: 'number',
3400
+ format: 'float',
3401
+ description: 'Consumption',
3402
+ example: 4
3403
+ },
3404
+ price: {
3405
+ type: 'number',
3406
+ format: 'float',
3407
+ description: 'Price per unit',
3408
+ example: 0.01
3409
+ },
3410
+ total: {
3411
+ type: 'number',
3412
+ format: 'float',
3413
+ description: 'Total cost'
3414
+ }
3415
+ },
3416
+ required: [
3417
+ 'hour',
3418
+ 'cluster_id',
3419
+ 'product',
3420
+ 'value',
3421
+ 'price',
3422
+ 'total'
3423
+ ],
3424
+ additionalProperties: false
3425
+ },
3426
+ description: 'Usage data'
3427
+ },
3428
+ facets: {
3429
+ type: 'object',
3430
+ properties: {
3431
+ cluster_id: {
3432
+ type: 'array',
3433
+ items: {
3434
+ type: 'string'
3435
+ },
3436
+ description: 'List of unique cluster IDs',
3437
+ example: [
3438
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3439
+ ]
3440
+ },
3441
+ product: {
3442
+ type: 'array',
3443
+ items: {
3444
+ type: 'string'
3445
+ },
3446
+ description: 'List of unique products',
3447
+ example: [
3448
+ 'cfke_controlplane',
3449
+ 'cfke_connected_nodes'
3450
+ ]
3451
+ }
3452
+ },
3453
+ additionalProperties: false,
3454
+ description: 'Facets for filtering'
1652
3455
  }
1653
3456
  },
3457
+ required: [
3458
+ 'data',
3459
+ 'facets'
3460
+ ],
1654
3461
  additionalProperties: false
1655
3462
  };
1656
3463
  export const UsageSchema = {
1657
3464
  type: 'object',
1658
3465
  properties: {
1659
- id: {
3466
+ hour: {
1660
3467
  type: 'string',
1661
- format: 'uuid',
1662
- description: 'Unique identifier of the Usage object, equal to subscription id of the task . UUID v4 string in canonical form',
1663
- example: '8897e84c-2ba1-42fa-9d35-964c80a4ff0f'
3468
+ description: 'Hour of the usage',
3469
+ example: '2019-01-01T00:00:00.000Z'
1664
3470
  },
1665
- task_id: {
3471
+ cluster_id: {
1666
3472
  type: 'string',
1667
- format: 'uuid',
1668
- description: 'Unique identifier of the project. UUID v4 string in canonical form',
1669
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
3473
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
3474
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
1670
3475
  },
1671
- unit: {
3476
+ product: {
1672
3477
  type: 'string',
1673
- description: 'Unit of measurement. E.g. GiB, seconds, etc',
1674
- example: 'second'
3478
+ description: 'The product the usage is associated with',
3479
+ example: 'cfke_controlplane'
3480
+ },
3481
+ value: {
3482
+ type: 'number',
3483
+ format: 'float',
3484
+ description: 'Consumption',
3485
+ example: 4
1675
3486
  },
1676
- amount: {
3487
+ price: {
3488
+ type: 'number',
3489
+ format: 'float',
3490
+ description: 'Price per unit',
3491
+ example: 0.01
3492
+ },
3493
+ total: {
1677
3494
  type: 'number',
1678
- format: 'float'
3495
+ format: 'float',
3496
+ description: 'Total cost'
1679
3497
  }
1680
3498
  },
1681
- required: ['id', 'task_id', 'unit', 'amount'],
3499
+ required: [
3500
+ 'hour',
3501
+ 'cluster_id',
3502
+ 'product',
3503
+ 'value',
3504
+ 'price',
3505
+ 'total'
3506
+ ],
1682
3507
  additionalProperties: false
1683
3508
  };
1684
3509
  export const UserCreateInputSchema = {
@@ -1713,22 +3538,34 @@ export const UserCreateInputSchema = {
1713
3538
  password: {
1714
3539
  type: 'string',
1715
3540
  minLength: 8,
1716
- description: 'User password. Must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one number and one special character.'
3541
+ description: 'User password. Must be at least 8 characters long.'
1717
3542
  },
1718
3543
  status: {
1719
3544
  type: 'string',
1720
3545
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1721
3546
  example: 'active',
1722
- enum: ['active', 'inactive']
3547
+ enum: [
3548
+ 'active',
3549
+ 'inactive'
3550
+ ]
1723
3551
  },
1724
3552
  role: {
1725
3553
  type: 'string',
1726
- description: "User role. Can be 'Administrator', 'User'.",
3554
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1727
3555
  example: 'User',
1728
- enum: ['Administrator', 'User']
3556
+ enum: [
3557
+ 'Administrator',
3558
+ 'User'
3559
+ ]
1729
3560
  }
1730
3561
  },
1731
- required: ['email', 'first_name', 'last_name', 'code', 'password'],
3562
+ required: [
3563
+ 'email',
3564
+ 'first_name',
3565
+ 'last_name',
3566
+ 'code',
3567
+ 'password'
3568
+ ],
1732
3569
  additionalProperties: false
1733
3570
  };
1734
3571
  export const UserSchema = {
@@ -1756,15 +3593,21 @@ export const UserSchema = {
1756
3593
  },
1757
3594
  role: {
1758
3595
  type: 'string',
1759
- description: "User role. Can be 'Administrator', 'User'.",
3596
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1760
3597
  example: 'User',
1761
- enum: ['Administrator', 'User']
3598
+ enum: [
3599
+ 'Administrator',
3600
+ 'User'
3601
+ ]
1762
3602
  },
1763
3603
  status: {
1764
3604
  type: 'string',
1765
3605
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1766
3606
  example: 'active',
1767
- enum: ['active', 'inactive']
3607
+ enum: [
3608
+ 'active',
3609
+ 'inactive'
3610
+ ]
1768
3611
  },
1769
3612
  id: {
1770
3613
  type: 'string',
@@ -1777,31 +3620,17 @@ export const UserSchema = {
1777
3620
  format: 'date-time',
1778
3621
  description: 'Creation date of the user. ISO 8601 date string in UTC timezone',
1779
3622
  example: '2023-11-02T16:08:14.338Z'
1780
- },
1781
- cluster_permissions: {
1782
- type: 'array',
1783
- items: {
1784
- type: 'object',
1785
- properties: {
1786
- cluster_id: {
1787
- type: 'string',
1788
- format: 'uuid',
1789
- description: 'Unique identifier of the cluster. UUID v4 string in canonical form',
1790
- example: '035ce46d-44d8-4e58-a8a2-b0192d1c27df'
1791
- },
1792
- permissions: {
1793
- type: 'string',
1794
- description: 'User permissions to access the cluster. Can be `readwrite` or `readonly`.',
1795
- example: 'readwrite',
1796
- enum: ['readwrite', 'readonly']
1797
- }
1798
- },
1799
- required: ['cluster_id', 'permissions'],
1800
- additionalProperties: false
1801
- }
1802
3623
  }
1803
3624
  },
1804
- required: ['email', 'first_name', 'last_name', 'role', 'status', 'id', 'date_created'],
3625
+ required: [
3626
+ 'email',
3627
+ 'first_name',
3628
+ 'last_name',
3629
+ 'role',
3630
+ 'status',
3631
+ 'id',
3632
+ 'date_created'
3633
+ ],
1805
3634
  additionalProperties: false
1806
3635
  };
1807
3636
  export const UserUpdateInputSchema = {
@@ -1829,15 +3658,21 @@ export const UserUpdateInputSchema = {
1829
3658
  },
1830
3659
  role: {
1831
3660
  type: 'string',
1832
- description: "User role. Can be 'Administrator', 'User'.",
3661
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1833
3662
  example: 'User',
1834
- enum: ['Administrator', 'User']
3663
+ enum: [
3664
+ 'Administrator',
3665
+ 'User'
3666
+ ]
1835
3667
  },
1836
3668
  status: {
1837
3669
  type: 'string',
1838
3670
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1839
3671
  example: 'active',
1840
- enum: ['active', 'inactive']
3672
+ enum: [
3673
+ 'active',
3674
+ 'inactive'
3675
+ ]
1841
3676
  }
1842
3677
  },
1843
3678
  additionalProperties: false