@cloudfleet/sdk 0.0.1-bd521c7 → 0.0.1-c4175a2

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