@cloudfleet/sdk 0.0.1-61c9a45 → 0.0.1-6244af0

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 +1591 -1087
  62. package/dist/schemas.gen.d.ts.map +1 -1
  63. package/dist/schemas.gen.js +2832 -1130
  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 +1420 -985
  82. package/dist/types.gen.d.ts.map +1 -1
  83. package/dist/zod.gen.d.ts +3693 -2854
  84. package/dist/zod.gen.d.ts.map +1 -1
  85. package/dist/zod.gen.js +1533 -876
  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,32 +627,57 @@ 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: [
157
642
  {
158
643
  type: 'string',
159
644
  format: 'uri',
160
- description: 'URL of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
645
+ description: 'URL signed by the private CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster. (Deprecated, use endpoint_public instead)',
161
646
  example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.cloudfleet.dev:6443'
162
647
  },
163
648
  {
164
649
  type: 'string',
165
- enum: ['']
650
+ enum: [
651
+ ''
652
+ ]
653
+ }
654
+ ]
655
+ },
656
+ endpoint_public: {
657
+ anyOf: [
658
+ {
659
+ type: 'string',
660
+ format: 'uri',
661
+ description: 'URL signed by a public CA of the Kubernetes cluster control plane. This is the endpoint that kubectl uses to connect to the cluster.',
662
+ example: 'https://2ae6557c-c61f-49c6-b4c1-a65473470a03.staging.cfke.io'
663
+ },
664
+ {
665
+ type: 'string',
666
+ enum: [
667
+ ''
668
+ ]
166
669
  }
167
670
  ]
168
671
  },
169
672
  certificate_ca: {
170
673
  type: 'string',
171
674
  description: 'Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.',
172
- example: `-----BEGIN CERTIFICATE-----
173
- MIIC0DCCAbigAwIBAgI...`
675
+ example: '-----BEGIN CERTIFICATE-----\nMIIC0DCCAbigAwIBAgI...'
174
676
  },
175
677
  version_current: {
176
678
  type: 'string',
177
679
  description: 'Current version of the cluster.',
178
- example: '1.29.3-cfke.52'
680
+ example: '1.33.7-cfke.264'
179
681
  },
180
682
  created_at: {
181
683
  type: 'string',
@@ -191,9 +693,20 @@ MIIC0DCCAbigAwIBAgI...`
191
693
  type: 'boolean',
192
694
  description: 'Indicates if the cluster is ready to be used.',
193
695
  example: true
696
+ },
697
+ version_channel: {
698
+ type: 'string',
699
+ pattern: '^(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)\\.(x|X|0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$',
700
+ description: 'Version of the kubernetes cluster.',
701
+ example: '1.x.x-cfke.x'
194
702
  }
195
703
  },
196
- required: ['name', 'tier', 'id', 'status'],
704
+ required: [
705
+ 'name',
706
+ 'tier',
707
+ 'id',
708
+ 'status'
709
+ ],
197
710
  additionalProperties: false
198
711
  };
199
712
  export const ClusterUpdateInputSchema = {
@@ -207,13 +720,25 @@ export const ClusterUpdateInputSchema = {
207
720
  description: 'Name of the cluster.',
208
721
  example: 'production-cluster'
209
722
  },
723
+ tier: {
724
+ type: 'string',
725
+ description: 'Tier of the cluster.',
726
+ example: 'pro',
727
+ enum: [
728
+ 'basic',
729
+ 'pro'
730
+ ]
731
+ },
210
732
  version_channel: {
211
733
  type: 'string',
212
734
  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
735
  description: 'Version of the kubernetes cluster.',
214
- example: '1.29.x-cfke.x'
736
+ example: '1.x.x-cfke.x'
215
737
  }
216
738
  },
739
+ required: [
740
+ 'tier'
741
+ ],
217
742
  additionalProperties: false
218
743
  };
219
744
  export const FleetCreateInputSchema = {
@@ -223,13 +748,12 @@ export const FleetCreateInputSchema = {
223
748
  type: 'object',
224
749
  properties: {
225
750
  cpu: {
226
- type: 'number',
227
- format: 'float',
751
+ type: 'integer',
228
752
  minimum: 0,
229
- description: 'CPU limit in cores.'
753
+ maximum: 100000,
754
+ description: 'CPU limit in cores. Maximum 100,000.'
230
755
  }
231
756
  },
232
- required: ['cpu'],
233
757
  additionalProperties: false,
234
758
  description: 'Limits define a set of bounds for provisioning capacity.'
235
759
  },
@@ -242,41 +766,29 @@ export const FleetCreateInputSchema = {
242
766
  },
243
767
  project: {
244
768
  type: 'string',
245
- description: 'Project GCP Project id to deploy instances into'
769
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
770
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
771
+ example: 'my-cloudfleet-project'
246
772
  }
247
773
  },
248
- required: ['project'],
249
774
  additionalProperties: false
250
775
  },
251
776
  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
777
+ type: 'object',
778
+ properties: {
779
+ enabled: {
780
+ type: 'boolean',
781
+ default: true
265
782
  },
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
783
+ apiKey: {
784
+ type: 'string',
785
+ maxLength: 64,
786
+ minLength: 64,
787
+ pattern: '^[A-Za-z0-9]+$',
788
+ description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
278
789
  }
279
- ]
790
+ },
791
+ additionalProperties: false
280
792
  },
281
793
  aws: {
282
794
  type: 'object',
@@ -287,27 +799,303 @@ export const FleetCreateInputSchema = {
287
799
  },
288
800
  controllerRoleArn: {
289
801
  type: 'string',
290
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
802
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
803
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
804
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
291
805
  }
292
806
  },
293
- required: ['controllerRoleArn'],
294
807
  additionalProperties: false
295
808
  },
296
- id: {
297
- type: 'string',
298
- maxLength: 63,
809
+ constraints: {
810
+ type: 'object',
811
+ properties: {
812
+ 'karpenter.sh/capacity-type': {
813
+ type: 'array',
814
+ items: {
815
+ type: 'string',
816
+ enum: [
817
+ 'on-demand',
818
+ 'spot'
819
+ ]
820
+ },
821
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
822
+ },
823
+ 'kubernetes.io/arch': {
824
+ type: 'array',
825
+ items: {
826
+ type: 'string',
827
+ enum: [
828
+ 'amd64',
829
+ 'arm64'
830
+ ]
831
+ },
832
+ description: 'Allowed values for `kubernetes.io/arch`.'
833
+ },
834
+ 'cfke.io/instance-family': {
835
+ type: 'array',
836
+ items: {
837
+ type: 'string',
838
+ enum: [
839
+ 'a1',
840
+ 'a2',
841
+ 'a3',
842
+ 'a4',
843
+ 'c1',
844
+ 'c2',
845
+ 'c2d',
846
+ 'c3',
847
+ 'c3d',
848
+ 'c4',
849
+ 'c4a',
850
+ 'c4d',
851
+ 'c5',
852
+ 'c5a',
853
+ 'c5ad',
854
+ 'c5d',
855
+ 'c5n',
856
+ 'c6a',
857
+ 'c6g',
858
+ 'c6gd',
859
+ 'c6gn',
860
+ 'c6i',
861
+ 'c6id',
862
+ 'c6in',
863
+ 'c7a',
864
+ 'c7g',
865
+ 'c7gd',
866
+ 'c7gn',
867
+ 'c7i',
868
+ 'c7i-flex',
869
+ 'c8g',
870
+ 'c8gd',
871
+ 'cax',
872
+ 'ccx',
873
+ 'cpx',
874
+ 'cx',
875
+ 'd2',
876
+ 'd3',
877
+ 'd3en',
878
+ 'dl1',
879
+ 'dl2q',
880
+ 'e2',
881
+ 'f1',
882
+ 'f2',
883
+ 'g1',
884
+ 'g2',
885
+ 'g4ad',
886
+ 'g4dn',
887
+ 'g5',
888
+ 'g5g',
889
+ 'g6',
890
+ 'g6e',
891
+ 'gr6',
892
+ 'h1',
893
+ 'h3',
894
+ 'hpc6a',
895
+ 'hpc6id',
896
+ 'hpc7a',
897
+ 'hpc7g',
898
+ 'i2',
899
+ 'i3',
900
+ 'i3en',
901
+ 'i4g',
902
+ 'i4i',
903
+ 'i7i',
904
+ 'i7ie',
905
+ 'i8g',
906
+ 'im4gn',
907
+ 'inf1',
908
+ 'inf2',
909
+ 'is4gen',
910
+ 'm1',
911
+ 'm2',
912
+ 'm3',
913
+ 'm4',
914
+ 'm5',
915
+ 'm5a',
916
+ 'm5ad',
917
+ 'm5d',
918
+ 'm5dn',
919
+ 'm5n',
920
+ 'm5zn',
921
+ 'm6a',
922
+ 'm6g',
923
+ 'm6gd',
924
+ 'm6i',
925
+ 'm6id',
926
+ 'm6idn',
927
+ 'm6in',
928
+ 'm7a',
929
+ 'm7g',
930
+ 'm7gd',
931
+ 'm7i',
932
+ 'm7i-flex',
933
+ 'm8g',
934
+ 'm8gd',
935
+ 'n1',
936
+ 'n2',
937
+ 'n2d',
938
+ 'n4',
939
+ 'p3',
940
+ 'p3dn',
941
+ 'p4d',
942
+ 'p4de',
943
+ 'p5',
944
+ 'p5e',
945
+ 'p5en',
946
+ 'p6-b200',
947
+ 'r3',
948
+ 'r4',
949
+ 'r5',
950
+ 'r5a',
951
+ 'r5ad',
952
+ 'r5b',
953
+ 'r5d',
954
+ 'r5dn',
955
+ 'r5n',
956
+ 'r6a',
957
+ 'r6g',
958
+ 'r6gd',
959
+ 'r6i',
960
+ 'r6id',
961
+ 'r6idn',
962
+ 'r6in',
963
+ 'r7a',
964
+ 'r7g',
965
+ 'r7gd',
966
+ 'r7i',
967
+ 'r7iz',
968
+ 'r8g',
969
+ 'r8gd',
970
+ 't2',
971
+ 't2a',
972
+ 't2d',
973
+ 't3',
974
+ 't3a',
975
+ 't4g',
976
+ 'trn1',
977
+ 'trn1n',
978
+ 'u-3tb1',
979
+ 'u-6tb1',
980
+ 'u7i-12tb',
981
+ 'u7i-6tb',
982
+ 'u7i-8tb',
983
+ 'u7in-16tb',
984
+ 'u7in-24tb',
985
+ 'u7in-32tb',
986
+ 'vt1',
987
+ 'x1',
988
+ 'x1e',
989
+ 'x2gd',
990
+ 'x2idn',
991
+ 'x2iedn',
992
+ 'x2iezn',
993
+ 'x4',
994
+ 'x8g',
995
+ 'z1d',
996
+ 'z3'
997
+ ]
998
+ },
999
+ description: 'Allowed values for `cfke.io/instance-family`.'
1000
+ },
1001
+ 'topology.kubernetes.io/region': {
1002
+ type: 'array',
1003
+ items: {
1004
+ type: 'string',
1005
+ enum: [
1006
+ 'africa-south1',
1007
+ 'ap-northeast-1',
1008
+ 'ap-northeast-2',
1009
+ 'ap-northeast-3',
1010
+ 'ap-south-1',
1011
+ 'ap-southeast-1',
1012
+ 'ap-southeast-2',
1013
+ 'ash',
1014
+ 'asia-east1',
1015
+ 'asia-east2',
1016
+ 'asia-northeast1',
1017
+ 'asia-northeast2',
1018
+ 'asia-northeast3',
1019
+ 'asia-south1',
1020
+ 'asia-south2',
1021
+ 'asia-southeast1',
1022
+ 'asia-southeast2',
1023
+ 'australia-southeast1',
1024
+ 'australia-southeast2',
1025
+ 'ca-central-1',
1026
+ 'eu-central-1',
1027
+ 'eu-central-2',
1028
+ 'eu-north-1',
1029
+ 'eu-west-1',
1030
+ 'eu-west-2',
1031
+ 'eu-west-3',
1032
+ 'europe-central2',
1033
+ 'europe-north1',
1034
+ 'europe-southwest1',
1035
+ 'europe-west1',
1036
+ 'europe-west10',
1037
+ 'europe-west12',
1038
+ 'europe-west2',
1039
+ 'europe-west3',
1040
+ 'europe-west4',
1041
+ 'europe-west6',
1042
+ 'europe-west8',
1043
+ 'europe-west9',
1044
+ 'fsn1',
1045
+ 'hel1',
1046
+ 'hil',
1047
+ 'me-central1',
1048
+ 'me-central2',
1049
+ 'me-west1',
1050
+ 'nbg1',
1051
+ 'northamerica-northeast1',
1052
+ 'northamerica-northeast2',
1053
+ 'sa-east-1',
1054
+ 'sin',
1055
+ 'southamerica-east1',
1056
+ 'southamerica-west1',
1057
+ 'us-central1',
1058
+ 'us-east-1',
1059
+ 'us-east-2',
1060
+ 'us-east1',
1061
+ 'us-east4',
1062
+ 'us-east5',
1063
+ 'us-south1',
1064
+ 'us-west-1',
1065
+ 'us-west-2',
1066
+ 'us-west1',
1067
+ 'us-west2',
1068
+ 'us-west3',
1069
+ 'us-west4'
1070
+ ]
1071
+ },
1072
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1073
+ }
1074
+ },
1075
+ additionalProperties: false,
1076
+ 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.'
1077
+ },
1078
+ scalingProfile: {
1079
+ type: 'string',
1080
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1081
+ example: 'conservative',
1082
+ enum: [
1083
+ 'aggressive',
1084
+ 'conservative'
1085
+ ]
1086
+ },
1087
+ id: {
1088
+ type: 'string',
1089
+ maxLength: 63,
299
1090
  minLength: 1,
300
1091
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
301
1092
  description: 'Unique identifier of the kubernetes fleet.',
302
1093
  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
1094
  }
309
1095
  },
310
- required: ['id', 'type'],
1096
+ required: [
1097
+ 'id'
1098
+ ],
311
1099
  additionalProperties: false
312
1100
  };
313
1101
  export const FleetSchema = {
@@ -317,13 +1105,12 @@ export const FleetSchema = {
317
1105
  type: 'object',
318
1106
  properties: {
319
1107
  cpu: {
320
- type: 'number',
321
- format: 'float',
1108
+ type: 'integer',
322
1109
  minimum: 0,
323
- description: 'CPU limit in cores.'
1110
+ maximum: 100000,
1111
+ description: 'CPU limit in cores. Maximum 100,000.'
324
1112
  }
325
1113
  },
326
- required: ['cpu'],
327
1114
  additionalProperties: false,
328
1115
  description: 'Limits define a set of bounds for provisioning capacity.'
329
1116
  },
@@ -336,41 +1123,27 @@ export const FleetSchema = {
336
1123
  },
337
1124
  project: {
338
1125
  type: 'string',
339
- description: 'Project GCP Project id to deploy instances into'
1126
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1127
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1128
+ example: 'my-cloudfleet-project'
340
1129
  }
341
1130
  },
342
- required: ['project'],
343
1131
  additionalProperties: false
344
1132
  },
345
1133
  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
1134
+ type: 'object',
1135
+ properties: {
1136
+ enabled: {
1137
+ type: 'boolean',
1138
+ default: true
359
1139
  },
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
1140
+ apiKey: {
1141
+ type: 'string',
1142
+ pattern: '^\\*{64}$',
1143
+ description: 'Redacted Hetzner API token. Returned as 64 asterisks when a token is configured; omitted otherwise. The real value is never echoed by the API.'
372
1144
  }
373
- ]
1145
+ },
1146
+ additionalProperties: false
374
1147
  },
375
1148
  aws: {
376
1149
  type: 'object',
@@ -381,12 +1154,291 @@ export const FleetSchema = {
381
1154
  },
382
1155
  controllerRoleArn: {
383
1156
  type: 'string',
384
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1157
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1158
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1159
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
385
1160
  }
386
1161
  },
387
- required: ['controllerRoleArn'],
388
1162
  additionalProperties: false
389
1163
  },
1164
+ constraints: {
1165
+ type: 'object',
1166
+ properties: {
1167
+ 'karpenter.sh/capacity-type': {
1168
+ type: 'array',
1169
+ items: {
1170
+ type: 'string',
1171
+ enum: [
1172
+ 'on-demand',
1173
+ 'spot'
1174
+ ]
1175
+ },
1176
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
1177
+ },
1178
+ 'kubernetes.io/arch': {
1179
+ type: 'array',
1180
+ items: {
1181
+ type: 'string',
1182
+ enum: [
1183
+ 'amd64',
1184
+ 'arm64'
1185
+ ]
1186
+ },
1187
+ description: 'Allowed values for `kubernetes.io/arch`.'
1188
+ },
1189
+ 'cfke.io/instance-family': {
1190
+ type: 'array',
1191
+ items: {
1192
+ type: 'string',
1193
+ enum: [
1194
+ 'a1',
1195
+ 'a2',
1196
+ 'a3',
1197
+ 'a4',
1198
+ 'c1',
1199
+ 'c2',
1200
+ 'c2d',
1201
+ 'c3',
1202
+ 'c3d',
1203
+ 'c4',
1204
+ 'c4a',
1205
+ 'c4d',
1206
+ 'c5',
1207
+ 'c5a',
1208
+ 'c5ad',
1209
+ 'c5d',
1210
+ 'c5n',
1211
+ 'c6a',
1212
+ 'c6g',
1213
+ 'c6gd',
1214
+ 'c6gn',
1215
+ 'c6i',
1216
+ 'c6id',
1217
+ 'c6in',
1218
+ 'c7a',
1219
+ 'c7g',
1220
+ 'c7gd',
1221
+ 'c7gn',
1222
+ 'c7i',
1223
+ 'c7i-flex',
1224
+ 'c8g',
1225
+ 'c8gd',
1226
+ 'cax',
1227
+ 'ccx',
1228
+ 'cpx',
1229
+ 'cx',
1230
+ 'd2',
1231
+ 'd3',
1232
+ 'd3en',
1233
+ 'dl1',
1234
+ 'dl2q',
1235
+ 'e2',
1236
+ 'f1',
1237
+ 'f2',
1238
+ 'g1',
1239
+ 'g2',
1240
+ 'g4ad',
1241
+ 'g4dn',
1242
+ 'g5',
1243
+ 'g5g',
1244
+ 'g6',
1245
+ 'g6e',
1246
+ 'gr6',
1247
+ 'h1',
1248
+ 'h3',
1249
+ 'hpc6a',
1250
+ 'hpc6id',
1251
+ 'hpc7a',
1252
+ 'hpc7g',
1253
+ 'i2',
1254
+ 'i3',
1255
+ 'i3en',
1256
+ 'i4g',
1257
+ 'i4i',
1258
+ 'i7i',
1259
+ 'i7ie',
1260
+ 'i8g',
1261
+ 'im4gn',
1262
+ 'inf1',
1263
+ 'inf2',
1264
+ 'is4gen',
1265
+ 'm1',
1266
+ 'm2',
1267
+ 'm3',
1268
+ 'm4',
1269
+ 'm5',
1270
+ 'm5a',
1271
+ 'm5ad',
1272
+ 'm5d',
1273
+ 'm5dn',
1274
+ 'm5n',
1275
+ 'm5zn',
1276
+ 'm6a',
1277
+ 'm6g',
1278
+ 'm6gd',
1279
+ 'm6i',
1280
+ 'm6id',
1281
+ 'm6idn',
1282
+ 'm6in',
1283
+ 'm7a',
1284
+ 'm7g',
1285
+ 'm7gd',
1286
+ 'm7i',
1287
+ 'm7i-flex',
1288
+ 'm8g',
1289
+ 'm8gd',
1290
+ 'n1',
1291
+ 'n2',
1292
+ 'n2d',
1293
+ 'n4',
1294
+ 'p3',
1295
+ 'p3dn',
1296
+ 'p4d',
1297
+ 'p4de',
1298
+ 'p5',
1299
+ 'p5e',
1300
+ 'p5en',
1301
+ 'p6-b200',
1302
+ 'r3',
1303
+ 'r4',
1304
+ 'r5',
1305
+ 'r5a',
1306
+ 'r5ad',
1307
+ 'r5b',
1308
+ 'r5d',
1309
+ 'r5dn',
1310
+ 'r5n',
1311
+ 'r6a',
1312
+ 'r6g',
1313
+ 'r6gd',
1314
+ 'r6i',
1315
+ 'r6id',
1316
+ 'r6idn',
1317
+ 'r6in',
1318
+ 'r7a',
1319
+ 'r7g',
1320
+ 'r7gd',
1321
+ 'r7i',
1322
+ 'r7iz',
1323
+ 'r8g',
1324
+ 'r8gd',
1325
+ 't2',
1326
+ 't2a',
1327
+ 't2d',
1328
+ 't3',
1329
+ 't3a',
1330
+ 't4g',
1331
+ 'trn1',
1332
+ 'trn1n',
1333
+ 'u-3tb1',
1334
+ 'u-6tb1',
1335
+ 'u7i-12tb',
1336
+ 'u7i-6tb',
1337
+ 'u7i-8tb',
1338
+ 'u7in-16tb',
1339
+ 'u7in-24tb',
1340
+ 'u7in-32tb',
1341
+ 'vt1',
1342
+ 'x1',
1343
+ 'x1e',
1344
+ 'x2gd',
1345
+ 'x2idn',
1346
+ 'x2iedn',
1347
+ 'x2iezn',
1348
+ 'x4',
1349
+ 'x8g',
1350
+ 'z1d',
1351
+ 'z3'
1352
+ ]
1353
+ },
1354
+ description: 'Allowed values for `cfke.io/instance-family`.'
1355
+ },
1356
+ 'topology.kubernetes.io/region': {
1357
+ type: 'array',
1358
+ items: {
1359
+ type: 'string',
1360
+ enum: [
1361
+ 'africa-south1',
1362
+ 'ap-northeast-1',
1363
+ 'ap-northeast-2',
1364
+ 'ap-northeast-3',
1365
+ 'ap-south-1',
1366
+ 'ap-southeast-1',
1367
+ 'ap-southeast-2',
1368
+ 'ash',
1369
+ 'asia-east1',
1370
+ 'asia-east2',
1371
+ 'asia-northeast1',
1372
+ 'asia-northeast2',
1373
+ 'asia-northeast3',
1374
+ 'asia-south1',
1375
+ 'asia-south2',
1376
+ 'asia-southeast1',
1377
+ 'asia-southeast2',
1378
+ 'australia-southeast1',
1379
+ 'australia-southeast2',
1380
+ 'ca-central-1',
1381
+ 'eu-central-1',
1382
+ 'eu-central-2',
1383
+ 'eu-north-1',
1384
+ 'eu-west-1',
1385
+ 'eu-west-2',
1386
+ 'eu-west-3',
1387
+ 'europe-central2',
1388
+ 'europe-north1',
1389
+ 'europe-southwest1',
1390
+ 'europe-west1',
1391
+ 'europe-west10',
1392
+ 'europe-west12',
1393
+ 'europe-west2',
1394
+ 'europe-west3',
1395
+ 'europe-west4',
1396
+ 'europe-west6',
1397
+ 'europe-west8',
1398
+ 'europe-west9',
1399
+ 'fsn1',
1400
+ 'hel1',
1401
+ 'hil',
1402
+ 'me-central1',
1403
+ 'me-central2',
1404
+ 'me-west1',
1405
+ 'nbg1',
1406
+ 'northamerica-northeast1',
1407
+ 'northamerica-northeast2',
1408
+ 'sa-east-1',
1409
+ 'sin',
1410
+ 'southamerica-east1',
1411
+ 'southamerica-west1',
1412
+ 'us-central1',
1413
+ 'us-east-1',
1414
+ 'us-east-2',
1415
+ 'us-east1',
1416
+ 'us-east4',
1417
+ 'us-east5',
1418
+ 'us-south1',
1419
+ 'us-west-1',
1420
+ 'us-west-2',
1421
+ 'us-west1',
1422
+ 'us-west2',
1423
+ 'us-west3',
1424
+ 'us-west4'
1425
+ ]
1426
+ },
1427
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1428
+ }
1429
+ },
1430
+ additionalProperties: false,
1431
+ description: 'Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.'
1432
+ },
1433
+ scalingProfile: {
1434
+ type: 'string',
1435
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1436
+ example: 'conservative',
1437
+ enum: [
1438
+ 'aggressive',
1439
+ 'conservative'
1440
+ ]
1441
+ },
390
1442
  id: {
391
1443
  type: 'string',
392
1444
  maxLength: 63,
@@ -394,14 +1446,11 @@ export const FleetSchema = {
394
1446
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
395
1447
  description: 'Unique identifier of the kubernetes fleet.',
396
1448
  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
1449
  }
403
1450
  },
404
- required: ['id', 'type'],
1451
+ required: [
1452
+ 'id'
1453
+ ],
405
1454
  additionalProperties: false
406
1455
  };
407
1456
  export const FleetUpdateInputSchema = {
@@ -411,13 +1460,12 @@ export const FleetUpdateInputSchema = {
411
1460
  type: 'object',
412
1461
  properties: {
413
1462
  cpu: {
414
- type: 'number',
415
- format: 'float',
1463
+ type: 'integer',
416
1464
  minimum: 0,
417
- description: 'CPU limit in cores.'
1465
+ maximum: 100000,
1466
+ description: 'CPU limit in cores. Maximum 100,000.'
418
1467
  }
419
1468
  },
420
- required: ['cpu'],
421
1469
  additionalProperties: false,
422
1470
  description: 'Limits define a set of bounds for provisioning capacity.'
423
1471
  },
@@ -430,41 +1478,29 @@ export const FleetUpdateInputSchema = {
430
1478
  },
431
1479
  project: {
432
1480
  type: 'string',
433
- description: 'Project GCP Project id to deploy instances into'
1481
+ pattern: '^[a-z][a-z0-9-]{4,28}[a-z0-9]$',
1482
+ description: 'GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.',
1483
+ example: 'my-cloudfleet-project'
434
1484
  }
435
1485
  },
436
- required: ['project'],
437
1486
  additionalProperties: false
438
1487
  },
439
1488
  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
1489
+ type: 'object',
1490
+ properties: {
1491
+ enabled: {
1492
+ type: 'boolean',
1493
+ default: true
453
1494
  },
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
1495
+ apiKey: {
1496
+ type: 'string',
1497
+ maxLength: 64,
1498
+ minLength: 64,
1499
+ pattern: '^[A-Za-z0-9]+$',
1500
+ description: 'Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.'
466
1501
  }
467
- ]
1502
+ },
1503
+ additionalProperties: false
468
1504
  },
469
1505
  aws: {
470
1506
  type: 'object',
@@ -475,1127 +1511,1634 @@ export const FleetUpdateInputSchema = {
475
1511
  },
476
1512
  controllerRoleArn: {
477
1513
  type: 'string',
478
- description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
1514
+ pattern: '^arn:aws(-[a-z]+)*:iam::\\d{12}:role\\/[\\w+=,.@/-]+$',
1515
+ description: 'AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.',
1516
+ example: 'arn:aws:iam::123456789012:role/Cloudfleet'
479
1517
  }
480
1518
  },
481
- required: ['controllerRoleArn'],
482
1519
  additionalProperties: false
1520
+ },
1521
+ constraints: {
1522
+ type: 'object',
1523
+ properties: {
1524
+ 'karpenter.sh/capacity-type': {
1525
+ type: 'array',
1526
+ items: {
1527
+ type: 'string',
1528
+ enum: [
1529
+ 'on-demand',
1530
+ 'spot'
1531
+ ]
1532
+ },
1533
+ description: 'Allowed values for `karpenter.sh/capacity-type`.'
1534
+ },
1535
+ 'kubernetes.io/arch': {
1536
+ type: 'array',
1537
+ items: {
1538
+ type: 'string',
1539
+ enum: [
1540
+ 'amd64',
1541
+ 'arm64'
1542
+ ]
1543
+ },
1544
+ description: 'Allowed values for `kubernetes.io/arch`.'
1545
+ },
1546
+ 'cfke.io/instance-family': {
1547
+ type: 'array',
1548
+ items: {
1549
+ type: 'string',
1550
+ enum: [
1551
+ 'a1',
1552
+ 'a2',
1553
+ 'a3',
1554
+ 'a4',
1555
+ 'c1',
1556
+ 'c2',
1557
+ 'c2d',
1558
+ 'c3',
1559
+ 'c3d',
1560
+ 'c4',
1561
+ 'c4a',
1562
+ 'c4d',
1563
+ 'c5',
1564
+ 'c5a',
1565
+ 'c5ad',
1566
+ 'c5d',
1567
+ 'c5n',
1568
+ 'c6a',
1569
+ 'c6g',
1570
+ 'c6gd',
1571
+ 'c6gn',
1572
+ 'c6i',
1573
+ 'c6id',
1574
+ 'c6in',
1575
+ 'c7a',
1576
+ 'c7g',
1577
+ 'c7gd',
1578
+ 'c7gn',
1579
+ 'c7i',
1580
+ 'c7i-flex',
1581
+ 'c8g',
1582
+ 'c8gd',
1583
+ 'cax',
1584
+ 'ccx',
1585
+ 'cpx',
1586
+ 'cx',
1587
+ 'd2',
1588
+ 'd3',
1589
+ 'd3en',
1590
+ 'dl1',
1591
+ 'dl2q',
1592
+ 'e2',
1593
+ 'f1',
1594
+ 'f2',
1595
+ 'g1',
1596
+ 'g2',
1597
+ 'g4ad',
1598
+ 'g4dn',
1599
+ 'g5',
1600
+ 'g5g',
1601
+ 'g6',
1602
+ 'g6e',
1603
+ 'gr6',
1604
+ 'h1',
1605
+ 'h3',
1606
+ 'hpc6a',
1607
+ 'hpc6id',
1608
+ 'hpc7a',
1609
+ 'hpc7g',
1610
+ 'i2',
1611
+ 'i3',
1612
+ 'i3en',
1613
+ 'i4g',
1614
+ 'i4i',
1615
+ 'i7i',
1616
+ 'i7ie',
1617
+ 'i8g',
1618
+ 'im4gn',
1619
+ 'inf1',
1620
+ 'inf2',
1621
+ 'is4gen',
1622
+ 'm1',
1623
+ 'm2',
1624
+ 'm3',
1625
+ 'm4',
1626
+ 'm5',
1627
+ 'm5a',
1628
+ 'm5ad',
1629
+ 'm5d',
1630
+ 'm5dn',
1631
+ 'm5n',
1632
+ 'm5zn',
1633
+ 'm6a',
1634
+ 'm6g',
1635
+ 'm6gd',
1636
+ 'm6i',
1637
+ 'm6id',
1638
+ 'm6idn',
1639
+ 'm6in',
1640
+ 'm7a',
1641
+ 'm7g',
1642
+ 'm7gd',
1643
+ 'm7i',
1644
+ 'm7i-flex',
1645
+ 'm8g',
1646
+ 'm8gd',
1647
+ 'n1',
1648
+ 'n2',
1649
+ 'n2d',
1650
+ 'n4',
1651
+ 'p3',
1652
+ 'p3dn',
1653
+ 'p4d',
1654
+ 'p4de',
1655
+ 'p5',
1656
+ 'p5e',
1657
+ 'p5en',
1658
+ 'p6-b200',
1659
+ 'r3',
1660
+ 'r4',
1661
+ 'r5',
1662
+ 'r5a',
1663
+ 'r5ad',
1664
+ 'r5b',
1665
+ 'r5d',
1666
+ 'r5dn',
1667
+ 'r5n',
1668
+ 'r6a',
1669
+ 'r6g',
1670
+ 'r6gd',
1671
+ 'r6i',
1672
+ 'r6id',
1673
+ 'r6idn',
1674
+ 'r6in',
1675
+ 'r7a',
1676
+ 'r7g',
1677
+ 'r7gd',
1678
+ 'r7i',
1679
+ 'r7iz',
1680
+ 'r8g',
1681
+ 'r8gd',
1682
+ 't2',
1683
+ 't2a',
1684
+ 't2d',
1685
+ 't3',
1686
+ 't3a',
1687
+ 't4g',
1688
+ 'trn1',
1689
+ 'trn1n',
1690
+ 'u-3tb1',
1691
+ 'u-6tb1',
1692
+ 'u7i-12tb',
1693
+ 'u7i-6tb',
1694
+ 'u7i-8tb',
1695
+ 'u7in-16tb',
1696
+ 'u7in-24tb',
1697
+ 'u7in-32tb',
1698
+ 'vt1',
1699
+ 'x1',
1700
+ 'x1e',
1701
+ 'x2gd',
1702
+ 'x2idn',
1703
+ 'x2iedn',
1704
+ 'x2iezn',
1705
+ 'x4',
1706
+ 'x8g',
1707
+ 'z1d',
1708
+ 'z3'
1709
+ ]
1710
+ },
1711
+ description: 'Allowed values for `cfke.io/instance-family`.'
1712
+ },
1713
+ 'topology.kubernetes.io/region': {
1714
+ type: 'array',
1715
+ items: {
1716
+ type: 'string',
1717
+ enum: [
1718
+ 'africa-south1',
1719
+ 'ap-northeast-1',
1720
+ 'ap-northeast-2',
1721
+ 'ap-northeast-3',
1722
+ 'ap-south-1',
1723
+ 'ap-southeast-1',
1724
+ 'ap-southeast-2',
1725
+ 'ash',
1726
+ 'asia-east1',
1727
+ 'asia-east2',
1728
+ 'asia-northeast1',
1729
+ 'asia-northeast2',
1730
+ 'asia-northeast3',
1731
+ 'asia-south1',
1732
+ 'asia-south2',
1733
+ 'asia-southeast1',
1734
+ 'asia-southeast2',
1735
+ 'australia-southeast1',
1736
+ 'australia-southeast2',
1737
+ 'ca-central-1',
1738
+ 'eu-central-1',
1739
+ 'eu-central-2',
1740
+ 'eu-north-1',
1741
+ 'eu-west-1',
1742
+ 'eu-west-2',
1743
+ 'eu-west-3',
1744
+ 'europe-central2',
1745
+ 'europe-north1',
1746
+ 'europe-southwest1',
1747
+ 'europe-west1',
1748
+ 'europe-west10',
1749
+ 'europe-west12',
1750
+ 'europe-west2',
1751
+ 'europe-west3',
1752
+ 'europe-west4',
1753
+ 'europe-west6',
1754
+ 'europe-west8',
1755
+ 'europe-west9',
1756
+ 'fsn1',
1757
+ 'hel1',
1758
+ 'hil',
1759
+ 'me-central1',
1760
+ 'me-central2',
1761
+ 'me-west1',
1762
+ 'nbg1',
1763
+ 'northamerica-northeast1',
1764
+ 'northamerica-northeast2',
1765
+ 'sa-east-1',
1766
+ 'sin',
1767
+ 'southamerica-east1',
1768
+ 'southamerica-west1',
1769
+ 'us-central1',
1770
+ 'us-east-1',
1771
+ 'us-east-2',
1772
+ 'us-east1',
1773
+ 'us-east4',
1774
+ 'us-east5',
1775
+ 'us-south1',
1776
+ 'us-west-1',
1777
+ 'us-west-2',
1778
+ 'us-west1',
1779
+ 'us-west2',
1780
+ 'us-west3',
1781
+ 'us-west4'
1782
+ ]
1783
+ },
1784
+ description: 'Allowed values for `topology.kubernetes.io/region`.'
1785
+ }
1786
+ },
1787
+ additionalProperties: false,
1788
+ 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.'
1789
+ },
1790
+ scalingProfile: {
1791
+ type: 'string',
1792
+ description: 'Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.',
1793
+ example: 'conservative',
1794
+ enum: [
1795
+ 'aggressive',
1796
+ 'conservative'
1797
+ ]
483
1798
  }
484
1799
  },
485
1800
  additionalProperties: false
486
1801
  };
487
- export const InfrastructureFilterSchema = {
1802
+ export const InviteSchema = {
488
1803
  type: 'object',
489
1804
  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
1805
+ id: {
1806
+ type: 'string',
1807
+ description: 'Unique identifier of the invitation.',
1808
+ example: '65831dd20d20165489cbb868'
564
1809
  },
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
1810
+ organization_id: {
1811
+ type: 'string',
1812
+ format: 'uuid',
1813
+ description: 'Unique identifier of the organization the project belongs to. UUID v4 string in canonical form',
1814
+ example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
570
1815
  },
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
1816
+ date_created: {
1817
+ type: 'string',
1818
+ format: 'date-time',
1819
+ description: 'Creation date of the project. ISO 8601 date string in UTC timezone',
1820
+ example: '2023-11-02T16:08:14.338Z'
576
1821
  },
577
- memory_min: {
578
- type: 'integer',
579
- minimum: 0,
580
- description: 'Minimum amount of RAM in gibibytes (GiB)',
581
- example: 32
1822
+ email: {
1823
+ type: 'string',
1824
+ format: 'email',
1825
+ description: 'User email address.',
1826
+ example: 'email@example.com'
582
1827
  },
583
- memory_max: {
584
- type: 'integer',
585
- minimum: 0,
586
- description: 'Maximum amount of RAM in gibibytes (GiB)',
587
- example: 64
1828
+ code: {
1829
+ type: 'string',
1830
+ description: 'Generated unique invite code.',
1831
+ example: '7kUZnH7nnKUFfvc4NK2KQF'
1832
+ }
1833
+ },
1834
+ required: [
1835
+ 'date_created'
1836
+ ],
1837
+ additionalProperties: false
1838
+ };
1839
+ export const InvoiceSchema = {
1840
+ type: 'object',
1841
+ properties: {
1842
+ id: {
1843
+ type: 'string',
1844
+ description: 'Unique identifier of the invoice.',
1845
+ example: 'in_1234567890xCrwxghOTj1234'
588
1846
  },
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
1847
+ number: {
1848
+ type: 'string'
594
1849
  },
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
1850
+ status: {
1851
+ type: 'string',
1852
+ description: 'Status of the invoice',
1853
+ example: 'paid'
600
1854
  },
601
- storage_total_min: {
1855
+ total: {
602
1856
  type: 'number',
603
1857
  format: 'float',
604
- minimum: 10,
605
- description: 'Minimum total storage in GiB (attached and local)',
606
- example: 128
1858
+ description: 'Total amount of the invoice',
1859
+ example: 100
607
1860
  },
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
1861
+ currency: {
1862
+ type: 'string',
1863
+ description: 'Currency of the invoice',
1864
+ example: 'usd'
614
1865
  },
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
1866
+ created: {
1867
+ type: 'string',
1868
+ format: 'date-time',
1869
+ description: 'Timestamp when the invoice was issued. ISO 8601 date string in the UTC timezone.',
1870
+ example: '2023-12-20T13:53:32.000Z'
620
1871
  },
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
1872
+ period_start: {
1873
+ type: 'string',
1874
+ format: 'date-time',
1875
+ description: 'Billing period start timestamp. ISO 8601 date string in the UTC timezone.',
1876
+ example: '2023-12-20T13:53:32.000Z'
626
1877
  },
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
1878
+ period_end: {
1879
+ type: 'string',
1880
+ format: 'date-time',
1881
+ description: 'Billing period end timestamp. ISO 8601 date string in the UTC timezone.',
1882
+ example: '2023-12-20T13:53:32.000Z'
632
1883
  },
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
1884
+ invoice_pdf: {
1885
+ type: 'string'
638
1886
  }
639
1887
  },
1888
+ required: [
1889
+ 'created',
1890
+ 'period_start',
1891
+ 'period_end'
1892
+ ],
640
1893
  additionalProperties: false
641
1894
  };
642
- export const InfrastructureInstanceSchema = {
1895
+ export const MarketplaceListingFilesSchema = {
643
1896
  type: 'object',
644
1897
  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: {
651
- 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'
654
- },
655
- region: {
1898
+ chartYaml: {
656
1899
  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'
1900
+ description: 'Raw Chart.yaml content from the Helm chart',
1901
+ example: 'apiVersion: v2\nname: nginx-ingress\nversion: 1.18.2-cfke.45\nappVersion: 1.9.4'
659
1902
  },
660
- sub_region: {
1903
+ valuesYaml: {
661
1904
  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'
1905
+ description: 'Raw values.yaml content from the Helm chart',
1906
+ example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
664
1907
  },
665
- csp_region: {
1908
+ valuesSchemaJson: {
666
1909
  type: 'string',
667
- description: 'Region as defined by the cloud service provider',
668
- example: 'eu-west-1'
669
- },
670
- csp_zone: {
1910
+ description: 'JSON schema for values.yaml as a string',
1911
+ example: '{"type":"object","properties":{"replicaCount":{"type":"number"}}}'
1912
+ }
1913
+ },
1914
+ additionalProperties: false
1915
+ };
1916
+ export const MarketplaceListingSchema = {
1917
+ type: 'object',
1918
+ properties: {
1919
+ name: {
671
1920
  type: 'string',
672
- description: 'Availability zone as defined by the cloud service provider',
673
- example: 'eu-west-1a'
1921
+ description: 'Name of the chart',
1922
+ example: 'nginx-ingress'
674
1923
  },
675
- instance_type: {
676
- type: 'string',
677
- description: 'Instance / VM type as defined by the cloud service provider',
678
- example: 'p4d.24xlarge'
1924
+ versions: {
1925
+ type: 'array',
1926
+ items: {
1927
+ type: 'string',
1928
+ 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-]+)*))?$',
1929
+ description: 'Specific version of the chart',
1930
+ example: '1.18.2-cfke.45'
1931
+ },
1932
+ description: 'Available versions of the chart'
679
1933
  },
680
- architecture: {
681
- type: 'string',
682
- description: 'Instance CPU architecture',
683
- example: 'amd64'
1934
+ version_channels: {
1935
+ type: 'array',
1936
+ items: {
1937
+ type: 'string',
1938
+ 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-]+)*))?$',
1939
+ description: 'Version channel pattern',
1940
+ example: '1.18.x-cfke.x'
1941
+ },
1942
+ description: 'Version channels for the chart'
684
1943
  },
685
- os: {
1944
+ latestVersion: {
686
1945
  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
1946
+ description: 'Latest version of the chart',
1947
+ example: '1.18.2-cfke.45'
709
1948
  },
710
- accelerator_name: {
1949
+ metadata: {
1950
+ type: 'object',
1951
+ properties: {
1952
+ name: {
1953
+ type: 'string',
1954
+ description: 'Chart name from metadata',
1955
+ example: 'nginx-ingress'
1956
+ },
1957
+ version: {
1958
+ type: 'string',
1959
+ description: 'Chart version from metadata',
1960
+ example: '1.18.2-cfke.45'
1961
+ },
1962
+ description: {
1963
+ type: 'string',
1964
+ description: 'Chart description',
1965
+ example: 'NGINX Ingress Controller for Kubernetes'
1966
+ },
1967
+ appVersion: {
1968
+ type: 'string',
1969
+ description: 'Application version',
1970
+ example: '1.9.4'
1971
+ },
1972
+ apiVersion: {
1973
+ type: 'string',
1974
+ description: 'Helm API version',
1975
+ example: 'v2'
1976
+ },
1977
+ keywords: {
1978
+ type: 'array',
1979
+ items: {
1980
+ type: 'string'
1981
+ },
1982
+ description: 'Chart keywords',
1983
+ example: [
1984
+ 'ingress',
1985
+ 'nginx',
1986
+ 'load-balancer'
1987
+ ]
1988
+ },
1989
+ home: {
1990
+ type: 'string',
1991
+ description: 'Chart home URL',
1992
+ example: 'https://kubernetes.github.io/ingress-nginx/'
1993
+ },
1994
+ icon: {
1995
+ type: 'string',
1996
+ description: 'A URL to an SVG or PNG image to be used as an icon',
1997
+ example: 'https://cloudfleet.ai/images/marketplace/icons/ingress-nginx.png'
1998
+ },
1999
+ sources: {
2000
+ type: 'array',
2001
+ items: {
2002
+ type: 'string'
2003
+ },
2004
+ description: 'Chart source URLs',
2005
+ example: [
2006
+ 'https://github.com/kubernetes/ingress-nginx'
2007
+ ]
2008
+ },
2009
+ maintainers: {
2010
+ type: 'array',
2011
+ items: {
2012
+ type: 'object',
2013
+ properties: {
2014
+ name: {
2015
+ type: 'string',
2016
+ description: 'Maintainer name',
2017
+ example: 'NGINX Team'
2018
+ },
2019
+ email: {
2020
+ type: 'string',
2021
+ description: 'Maintainer email',
2022
+ example: 'support@nginx.org'
2023
+ }
2024
+ },
2025
+ required: [
2026
+ 'name'
2027
+ ],
2028
+ additionalProperties: false
2029
+ },
2030
+ description: 'Chart maintainers'
2031
+ }
2032
+ },
2033
+ required: [
2034
+ 'name',
2035
+ 'version'
2036
+ ],
2037
+ additionalProperties: false,
2038
+ description: 'Chart metadata'
2039
+ }
2040
+ },
2041
+ required: [
2042
+ 'name',
2043
+ 'versions',
2044
+ 'version_channels',
2045
+ 'latestVersion'
2046
+ ],
2047
+ additionalProperties: false
2048
+ };
2049
+ export const OrganizationCreateInputSchema = {
2050
+ type: 'object',
2051
+ properties: {
2052
+ email: {
711
2053
  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'
2054
+ format: 'email',
2055
+ description: 'Email address used for billing as a string.',
2056
+ example: 'email@example.com'
714
2057
  },
715
- accelerator_manufacturer: {
2058
+ first_name: {
716
2059
  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
2060
+ description: 'First name of the billing contact person.',
2061
+ example: 'John'
736
2062
  },
737
- capacity_type: {
2063
+ last_name: {
738
2064
  type: 'string',
739
- description: 'Capacity type of the instance. E.g. `on-demand`, `spot`.',
740
- example: 'on-demand'
2065
+ description: 'Last name of the billing contact person.',
2066
+ example: 'Doe'
741
2067
  },
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
2068
+ company_name: {
2069
+ type: 'string',
2070
+ maxLength: 120,
2071
+ minLength: 2,
2072
+ 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,}$',
2073
+ description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
2074
+ example: 'ACME Corp.'
747
2075
  },
748
- available: {
749
- type: 'boolean',
750
- description: 'Whether this instance type is available.',
751
- example: true
2076
+ password: {
2077
+ type: 'string',
2078
+ minLength: 8,
2079
+ 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
2080
  }
753
2081
  },
754
- required: ['sku', 'provider', 'region', 'sub_region', 'csp_region', 'csp_zone', 'instance_type', 'architecture', 'os', 'vcpu', 'memory', 'local_storage', 'price'],
2082
+ required: [
2083
+ 'email',
2084
+ 'first_name',
2085
+ 'last_name',
2086
+ 'company_name',
2087
+ 'password'
2088
+ ],
755
2089
  additionalProperties: false
756
2090
  };
757
- export const InviteSchema = {
2091
+ export const OrganizationSchema = {
758
2092
  type: 'object',
759
2093
  properties: {
760
2094
  id: {
761
- type: 'string',
762
- description: 'Unique identifier of the invitation.',
763
- example: '65831dd20d20165489cbb868'
764
- },
765
- organization_id: {
766
2095
  type: 'string',
767
2096
  format: 'uuid',
768
- description: 'Unique identifier of the organization the project belongs to. UUID v4 string in canonical form',
2097
+ description: 'Unique identifier of the organization. UUID v4 string in canonical form',
769
2098
  example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
770
2099
  },
2100
+ name: {
2101
+ type: 'string',
2102
+ maxLength: 120,
2103
+ minLength: 2,
2104
+ description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
2105
+ example: 'ACME Corp.'
2106
+ },
771
2107
  date_created: {
772
2108
  type: 'string',
773
2109
  format: 'date-time',
774
- description: 'Creation date of the project. ISO 8601 date string in UTC timezone',
2110
+ description: 'Creation date of the organization. ISO 8601 date string in UTC timezone',
775
2111
  example: '2023-11-02T16:08:14.338Z'
776
2112
  },
777
- email: {
778
- type: 'string',
779
- format: 'email',
780
- description: 'User email address.',
781
- example: 'email@example.com'
2113
+ quota: {
2114
+ type: 'object',
2115
+ properties: {
2116
+ basic_clusters_max: {
2117
+ type: 'integer',
2118
+ minimum: 0,
2119
+ description: 'Maximum number of Basic clusters that can be created.',
2120
+ example: 999
2121
+ },
2122
+ basic_clusters_available: {
2123
+ type: 'integer',
2124
+ description: 'Available number of Basic clusters that can be created.',
2125
+ example: 999
2126
+ },
2127
+ pro_clusters_max: {
2128
+ type: 'integer',
2129
+ minimum: 0,
2130
+ description: 'Maximum number of Pro clusters that can be created.',
2131
+ example: 999
2132
+ },
2133
+ pro_clusters_available: {
2134
+ type: 'integer',
2135
+ description: 'Available number of Pro clusters that can be created.',
2136
+ example: 999
2137
+ },
2138
+ fleets_max: {
2139
+ type: 'integer',
2140
+ minimum: 0,
2141
+ description: 'Maximum number of fleets that can be created per cluster.',
2142
+ example: 999
2143
+ },
2144
+ cluster_tiers: {
2145
+ type: 'array',
2146
+ items: {
2147
+ type: 'string',
2148
+ example: 'basic'
2149
+ },
2150
+ minItems: 0,
2151
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
2152
+ },
2153
+ regions: {
2154
+ type: 'array',
2155
+ items: {
2156
+ type: 'string',
2157
+ example: 'northamerica-central-1'
2158
+ },
2159
+ minItems: 1,
2160
+ description: 'List of Cloudfleet control plane regions available for the organization.'
2161
+ },
2162
+ versions: {
2163
+ type: 'array',
2164
+ items: {
2165
+ type: 'object',
2166
+ properties: {
2167
+ id: {
2168
+ type: 'string',
2169
+ description: 'Id of the control plane version. Used in API calls.',
2170
+ example: '1.33.x-cfke.x'
2171
+ },
2172
+ label: {
2173
+ type: 'string',
2174
+ description: 'Label of the control plane version. Used in frontent UI.',
2175
+ example: '1.33.x (Always latest 1.33 patch version)'
2176
+ }
2177
+ },
2178
+ required: [
2179
+ 'id',
2180
+ 'label'
2181
+ ],
2182
+ additionalProperties: false
2183
+ },
2184
+ minItems: 1,
2185
+ description: 'List of CFKE control plane versions available for the organization.'
2186
+ },
2187
+ cfcr_storage_gb: {
2188
+ type: 'integer',
2189
+ minimum: -1,
2190
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
2191
+ example: 500
2192
+ }
2193
+ },
2194
+ required: [
2195
+ 'basic_clusters_max',
2196
+ 'basic_clusters_available',
2197
+ 'pro_clusters_max',
2198
+ 'pro_clusters_available',
2199
+ 'fleets_max',
2200
+ 'cluster_tiers',
2201
+ 'regions',
2202
+ 'versions',
2203
+ 'cfcr_storage_gb'
2204
+ ],
2205
+ additionalProperties: false,
2206
+ 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
2207
  },
783
- code: {
2208
+ status: {
784
2209
  type: 'string',
785
- description: 'Generated unique invite code.',
786
- example: '7kUZnH7nnKUFfvc4NK2KQF'
2210
+ description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
2211
+ enum: [
2212
+ 'active',
2213
+ 'closed',
2214
+ 'suspended'
2215
+ ]
787
2216
  }
788
2217
  },
789
- required: ['date_created'],
2218
+ required: [
2219
+ 'id',
2220
+ 'date_created',
2221
+ 'quota',
2222
+ 'status'
2223
+ ],
790
2224
  additionalProperties: false
791
2225
  };
792
- export const InvoiceSchema = {
2226
+ export const PaymentMethodSchema = {
793
2227
  type: 'object',
794
2228
  properties: {
795
2229
  id: {
796
2230
  type: 'string',
797
2231
  format: 'uuid',
798
- description: 'Unique identifier of the invoice. UUID v4 string in canonical form',
799
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
2232
+ description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
2233
+ example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
800
2234
  },
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'
2235
+ setup: {
2236
+ type: 'boolean',
2237
+ description: 'Whether organization payment method was set up and ready to use for payments.',
2238
+ example: true
806
2239
  },
807
- status: {
2240
+ type: {
808
2241
  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
2242
+ nullable: true,
2243
+ description: 'Payment method type type. Only `card` payments supported at the moment.',
2244
+ example: 'card',
2245
+ enum: [
2246
+ 'card'
2247
+ ]
818
2248
  },
819
- currency: {
2249
+ last4: {
820
2250
  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']
2251
+ nullable: true,
2252
+ description: 'Last 4 digits of the payment card number.',
2253
+ example: '4242'
824
2254
  },
825
- creditAdj: {
826
- type: 'number',
827
- format: 'float',
828
- description: 'Total amount of credit adjustments',
829
- example: 0
2255
+ exp_month: {
2256
+ type: 'integer',
2257
+ minimum: 1,
2258
+ maximum: 12,
2259
+ nullable: true,
2260
+ description: 'Two-digit number representing the card\'s expiration month.',
2261
+ example: '12'
830
2262
  },
831
- refundAdj: {
832
- type: 'number',
833
- format: 'float',
834
- description: 'Total amount of refund adjustments',
835
- example: 0
2263
+ exp_year: {
2264
+ type: 'integer',
2265
+ minimum: 2024,
2266
+ nullable: true,
2267
+ description: 'Four-digit number representing the card\'s expiration year.',
2268
+ example: '2028'
836
2269
  },
837
- invoiceDate: {
2270
+ brand: {
838
2271
  type: 'string',
839
- description: 'Date of the invoice',
840
- example: '2019-01-01T00:00:00.000Z'
2272
+ nullable: true,
2273
+ description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
2274
+ example: 'visa',
2275
+ enum: [
2276
+ 'amex',
2277
+ 'diners',
2278
+ 'discover',
2279
+ 'eftpos_au',
2280
+ 'jcb',
2281
+ 'mastercard',
2282
+ 'unionpay',
2283
+ 'visa',
2284
+ 'unknown'
2285
+ ]
2286
+ }
2287
+ },
2288
+ required: [
2289
+ 'id',
2290
+ 'setup',
2291
+ 'type',
2292
+ 'last4',
2293
+ 'exp_month',
2294
+ 'exp_year',
2295
+ 'brand'
2296
+ ],
2297
+ additionalProperties: false
2298
+ };
2299
+ export const PlatformQuotaSchema = {
2300
+ type: 'object',
2301
+ properties: {
2302
+ basic_clusters_max: {
2303
+ type: 'integer',
2304
+ minimum: 0,
2305
+ description: 'Maximum number of Basic clusters that can be created.',
2306
+ example: 999
841
2307
  },
842
- targetDate: {
843
- type: 'string',
844
- description: 'Target date of the invoice',
845
- example: '2019-01-01T00:00:00.000Z'
2308
+ basic_clusters_available: {
2309
+ type: 'integer',
2310
+ description: 'Available number of Basic clusters that can be created.',
2311
+ example: 999
846
2312
  },
847
- invoiceNumber: {
848
- type: 'string',
849
- description: 'Number of the invoice',
850
- example: 'INV-0001'
2313
+ pro_clusters_max: {
2314
+ type: 'integer',
2315
+ minimum: 0,
2316
+ description: 'Maximum number of Pro clusters that can be created.',
2317
+ example: 999
851
2318
  },
852
- balance: {
853
- type: 'number',
854
- format: 'float',
855
- description: 'Balance of the invoice',
856
- example: 100
2319
+ pro_clusters_available: {
2320
+ type: 'integer',
2321
+ description: 'Available number of Pro clusters that can be created.',
2322
+ example: 999
857
2323
  },
858
- bundleKeys: {
859
- type: 'string',
860
- description: 'Bundle keys of the invoice',
861
- example: 'bundleKey1,bundleKey2'
2324
+ fleets_max: {
2325
+ type: 'integer',
2326
+ minimum: 0,
2327
+ description: 'Maximum number of fleets that can be created per cluster.',
2328
+ example: 999
2329
+ },
2330
+ cluster_tiers: {
2331
+ type: 'array',
2332
+ items: {
2333
+ type: 'string',
2334
+ example: 'basic'
2335
+ },
2336
+ minItems: 0,
2337
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
2338
+ },
2339
+ regions: {
2340
+ type: 'array',
2341
+ items: {
2342
+ type: 'string',
2343
+ example: 'northamerica-central-1'
2344
+ },
2345
+ minItems: 1,
2346
+ description: 'List of Cloudfleet control plane regions available for the organization.'
862
2347
  },
863
- credits: {
2348
+ versions: {
864
2349
  type: 'array',
865
2350
  items: {
866
2351
  type: 'object',
867
2352
  properties: {
868
2353
  id: {
869
2354
  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'
894
- },
895
- usageName: {
896
- 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'
2355
+ description: 'Id of the control plane version. Used in API calls.',
2356
+ example: '1.33.x-cfke.x'
935
2357
  },
936
- endDate: {
2358
+ label: {
937
2359
  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'
2360
+ description: 'Label of the control plane version. Used in frontent UI.',
2361
+ example: '1.33.x (Always latest 1.33 patch version)'
998
2362
  }
999
2363
  },
2364
+ required: [
2365
+ 'id',
2366
+ 'label'
2367
+ ],
1000
2368
  additionalProperties: false
1001
2369
  },
1002
- description: 'Credits of the invoice'
2370
+ minItems: 1,
2371
+ description: 'List of CFKE control plane versions available for the organization.'
1003
2372
  },
1004
- items: {
2373
+ cfcr_storage_gb: {
2374
+ type: 'integer',
2375
+ minimum: -1,
2376
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
2377
+ example: 500
2378
+ }
2379
+ },
2380
+ required: [
2381
+ 'basic_clusters_max',
2382
+ 'basic_clusters_available',
2383
+ 'pro_clusters_max',
2384
+ 'pro_clusters_available',
2385
+ 'fleets_max',
2386
+ 'cluster_tiers',
2387
+ 'regions',
2388
+ 'versions',
2389
+ 'cfcr_storage_gb'
2390
+ ],
2391
+ additionalProperties: false
2392
+ };
2393
+ export const RegistryRepositorySchema = {
2394
+ type: 'object',
2395
+ properties: {
2396
+ name: {
2397
+ type: 'string',
2398
+ description: 'Repository name.',
2399
+ example: 'my-app'
2400
+ },
2401
+ region: {
2402
+ type: 'string',
2403
+ description: 'Registry region.',
2404
+ example: 'northamerica'
2405
+ },
2406
+ uri: {
2407
+ type: 'string',
2408
+ description: 'Full URI of the repository.',
2409
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
2410
+ }
2411
+ },
2412
+ required: [
2413
+ 'name',
2414
+ 'region',
2415
+ 'uri'
2416
+ ],
2417
+ additionalProperties: false
2418
+ };
2419
+ export const RegistryRepositoryWithTagsSchema = {
2420
+ type: 'object',
2421
+ properties: {
2422
+ name: {
2423
+ type: 'string',
2424
+ description: 'Repository name.',
2425
+ example: 'my-app'
2426
+ },
2427
+ region: {
2428
+ type: 'string',
2429
+ description: 'Registry region.',
2430
+ example: 'northamerica'
2431
+ },
2432
+ uri: {
2433
+ type: 'string',
2434
+ description: 'Full URI of the repository.',
2435
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
2436
+ },
2437
+ tags: {
1005
2438
  type: 'array',
1006
2439
  items: {
1007
2440
  type: 'object',
1008
2441
  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: {
1047
- type: 'string',
1048
- description: 'Pretty name of the plan',
1049
- example: 'Plan A'
1050
- },
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: {
2442
+ name: {
1068
2443
  type: 'string',
1069
- description: 'Description of the invoice item',
1070
- example: 'Description of the invoice item'
2444
+ description: 'Tag name.',
2445
+ example: 'latest'
1071
2446
  },
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: {
2447
+ size: {
1083
2448
  type: 'number',
1084
2449
  format: 'float',
1085
- description: 'Amount of the invoice item',
1086
- example: 100
2450
+ description: 'Size of the tag in bytes.',
2451
+ example: 123456789
1087
2452
  },
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: {
2453
+ mediaType: {
1107
2454
  type: 'string',
1108
- description: 'Details of the invoice item',
1109
- example: 'Details of the invoice item'
2455
+ description: 'Media type of the manifest.',
2456
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1110
2457
  },
1111
- catalogEffectiveDate: {
1112
- type: 'string',
1113
- description: 'Effective date of the catalog',
1114
- example: '2019-01-01T00:00:00.000Z'
1115
- },
1116
- childItems: {
2458
+ platforms: {
1117
2459
  type: 'array',
1118
2460
  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
- ]
2461
+ type: 'string'
1137
2462
  },
1138
- description: 'Child items of the invoice item'
2463
+ description: 'Array of platform strings for multi-arch images (e.g., linux/amd64, linux/arm64).',
2464
+ example: [
2465
+ 'linux/amd64',
2466
+ 'linux/arm64'
2467
+ ]
1139
2468
  }
1140
2469
  },
2470
+ required: [
2471
+ 'name',
2472
+ 'size'
2473
+ ],
1141
2474
  additionalProperties: false
1142
2475
  },
1143
- description: 'Items of the invoice'
2476
+ description: 'Array of tags in the repository.'
2477
+ },
2478
+ totalSize: {
2479
+ type: 'number',
2480
+ format: 'float',
2481
+ description: 'Total size of all tags in the repository in bytes.',
2482
+ example: 987654321
1144
2483
  }
1145
2484
  },
2485
+ required: [
2486
+ 'name',
2487
+ 'region',
2488
+ 'uri',
2489
+ 'tags',
2490
+ 'totalSize'
2491
+ ],
1146
2492
  additionalProperties: false
1147
2493
  };
1148
- export const OrganizationContactInfoSchema = {
2494
+ export const RegistryTagSchema = {
1149
2495
  type: 'object',
1150
2496
  properties: {
1151
- address1: {
2497
+ name: {
1152
2498
  type: 'string',
1153
- nullable: true,
1154
- description: 'Street address, P.O. box, c/o',
1155
- example: '123 Main St.'
2499
+ description: 'Tag name.',
2500
+ example: 'latest'
1156
2501
  },
1157
- address2: {
2502
+ digest: {
1158
2503
  type: 'string',
1159
- nullable: true,
1160
- description: 'Apartment, suite, unit, building, floor, etc.',
1161
- example: 'Suite 100'
2504
+ description: 'Manifest digest for pulling by digest.',
2505
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1162
2506
  },
1163
- postalCode: {
2507
+ mediaType: {
1164
2508
  type: 'string',
1165
- nullable: true,
1166
- description: 'Postal code as a string.',
1167
- example: '94105'
2509
+ description: 'Media type of the manifest.',
2510
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1168
2511
  },
1169
- city: {
1170
- type: 'string',
1171
- nullable: true,
1172
- description: 'City or town name.',
1173
- example: 'San Francisco'
2512
+ config: {
2513
+ type: 'object',
2514
+ properties: {
2515
+ size: {
2516
+ type: 'number',
2517
+ format: 'float',
2518
+ description: 'Size of the config in bytes.',
2519
+ example: 1234
2520
+ }
2521
+ },
2522
+ required: [
2523
+ 'size'
2524
+ ],
2525
+ additionalProperties: false,
2526
+ description: 'Manifest config metadata.'
1174
2527
  },
1175
- state: {
1176
- type: 'string',
1177
- nullable: true,
1178
- description: 'State, province, or region name.',
1179
- example: 'CA'
2528
+ layers: {
2529
+ type: 'array',
2530
+ items: {
2531
+ type: 'object',
2532
+ properties: {
2533
+ digest: {
2534
+ type: 'string',
2535
+ description: 'Digest of the layer.',
2536
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2537
+ },
2538
+ size: {
2539
+ type: 'number',
2540
+ format: 'float',
2541
+ description: 'Size of the layer in bytes.',
2542
+ example: 5678
2543
+ }
2544
+ },
2545
+ required: [
2546
+ 'size'
2547
+ ],
2548
+ additionalProperties: false
2549
+ },
2550
+ description: 'Array of layer metadata.'
1180
2551
  },
1181
- country: {
1182
- type: 'string',
1183
- nullable: true,
1184
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1185
- example: 'US'
2552
+ manifests: {
2553
+ type: 'array',
2554
+ items: {
2555
+ type: 'object',
2556
+ properties: {
2557
+ digest: {
2558
+ type: 'string',
2559
+ description: 'Digest of the manifest.',
2560
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2561
+ },
2562
+ platform: {
2563
+ type: 'object',
2564
+ properties: {
2565
+ architecture: {
2566
+ type: 'string',
2567
+ description: 'Architecture of the platform.',
2568
+ example: 'amd64'
2569
+ },
2570
+ os: {
2571
+ type: 'string',
2572
+ description: 'Operating system of the platform.',
2573
+ example: 'linux'
2574
+ },
2575
+ variant: {
2576
+ type: 'string',
2577
+ description: 'Variant of the platform (e.g., v7, v8 for ARM).',
2578
+ example: 'v8'
2579
+ }
2580
+ },
2581
+ required: [
2582
+ 'architecture',
2583
+ 'os'
2584
+ ],
2585
+ additionalProperties: false,
2586
+ description: 'Platform information for the manifest.'
2587
+ },
2588
+ layers: {
2589
+ type: 'array',
2590
+ items: {
2591
+ type: 'object',
2592
+ properties: {
2593
+ digest: {
2594
+ type: 'string',
2595
+ description: 'Digest of the layer.',
2596
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2597
+ },
2598
+ size: {
2599
+ type: 'number',
2600
+ format: 'float',
2601
+ description: 'Size of the layer in bytes.',
2602
+ example: 5678
2603
+ }
2604
+ },
2605
+ required: [
2606
+ 'size'
2607
+ ],
2608
+ additionalProperties: false
2609
+ },
2610
+ description: 'Layers for this platform.'
2611
+ },
2612
+ size: {
2613
+ type: 'number',
2614
+ format: 'float',
2615
+ description: 'Total size of this platform manifest in bytes.',
2616
+ example: 12345678
2617
+ }
2618
+ },
2619
+ required: [
2620
+ 'digest'
2621
+ ],
2622
+ additionalProperties: false
2623
+ },
2624
+ description: 'Array of manifests for multi-arch images.'
1186
2625
  },
1187
- phone: {
1188
- type: 'string',
1189
- nullable: true,
1190
- description: 'Phone number as a string.',
1191
- example: '+1 555 555 5555'
2626
+ size: {
2627
+ type: 'number',
2628
+ format: 'float',
2629
+ description: 'Total size of the tag in bytes.',
2630
+ example: 123456789
1192
2631
  },
1193
- email: {
2632
+ region: {
1194
2633
  type: 'string',
1195
- format: 'email',
1196
- description: 'Email address used for billing as a string.',
1197
- example: 'email@example.com'
2634
+ description: 'Registry region.',
2635
+ example: 'northamerica'
1198
2636
  },
1199
- first_name: {
2637
+ repository: {
1200
2638
  type: 'string',
1201
- description: 'First name of the billing contact person.',
1202
- example: 'John'
2639
+ description: 'Repository name.',
2640
+ example: 'my-app'
1203
2641
  },
1204
- last_name: {
2642
+ uri: {
1205
2643
  type: 'string',
1206
- description: 'Last name of the billing contact person.',
1207
- example: 'Doe'
2644
+ description: 'Full URI of the tag.',
2645
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app:latest'
1208
2646
  }
1209
2647
  },
1210
- required: ['email', 'first_name', 'last_name'],
2648
+ required: [
2649
+ 'name',
2650
+ 'digest',
2651
+ 'size',
2652
+ 'region',
2653
+ 'repository',
2654
+ 'uri'
2655
+ ],
1211
2656
  additionalProperties: false
1212
2657
  };
1213
- export const OrganizationCreateInputSchema = {
2658
+ export const TicketAttachmentSchema = {
1214
2659
  type: 'object',
1215
2660
  properties: {
1216
- name: {
2661
+ id: {
1217
2662
  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.'
2663
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2664
+ example: '60c72b2f9f1b2c001f8e4d3c'
1223
2665
  },
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.'
2666
+ filename: {
2667
+ type: 'string',
2668
+ description: 'Original filename as uploaded.',
2669
+ example: 'debug.log'
1282
2670
  },
1283
- password: {
2671
+ content_type: {
1284
2672
  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.'
2673
+ description: 'MIME content type of the attachment.',
2674
+ example: 'text/plain'
2675
+ },
2676
+ size: {
2677
+ type: 'integer',
2678
+ description: 'Size of the attachment in bytes.',
2679
+ example: 12345
1287
2680
  }
1288
2681
  },
1289
- required: ['name', 'contactInfo', 'password'],
2682
+ required: [
2683
+ 'id',
2684
+ 'filename',
2685
+ 'content_type',
2686
+ 'size'
2687
+ ],
1290
2688
  additionalProperties: false
1291
2689
  };
1292
- export const OrganizationSchema = {
2690
+ export const TicketCreateInputSchema = {
1293
2691
  type: 'object',
1294
2692
  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.'
1361
- },
1362
- id: {
1363
- 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'
2693
+ category: {
2694
+ type: 'string',
2695
+ description: 'Ticket category. Drives auto-assignment and may carry a subcategory in `properties`.',
2696
+ example: 'technical',
2697
+ enum: [
2698
+ 'billing',
2699
+ 'technical',
2700
+ 'general'
2701
+ ]
1367
2702
  },
1368
- date_created: {
2703
+ body: {
1369
2704
  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'
2705
+ maxLength: 50000,
2706
+ minLength: 1,
2707
+ pattern: '\\S',
2708
+ description: 'Initial message body in markdown. There is no separate subject — the first message body is the description.',
2709
+ example: 'My cluster cannot reach the registry. Logs attached.'
1373
2710
  },
1374
- quota: {
2711
+ properties: {
1375
2712
  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: {
2713
+ additionalProperties: true,
2714
+ description: 'Free-form key/value bag set by the UI (e.g. `subcategory`, `cluster_id`, `cluster_name`, `region`).',
2715
+ example: {
2716
+ subcategory: 'cluster-question',
2717
+ cluster_id: '60c72b2f9f1b2c001f8e4d3a'
2718
+ }
2719
+ }
2720
+ },
2721
+ required: [
2722
+ 'category',
2723
+ 'body'
2724
+ ],
2725
+ additionalProperties: false
2726
+ };
2727
+ export const TicketListResponseSchema = {
2728
+ type: 'object',
2729
+ properties: {
2730
+ items: {
2731
+ type: 'array',
2732
+ items: {
2733
+ type: 'object',
2734
+ properties: {
2735
+ id: {
1414
2736
  type: 'string',
1415
- example: 'basic'
2737
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
2738
+ example: '60c72b2f9f1b2c001f8e4d3a'
1416
2739
  },
1417
- minItems: 0,
1418
- description: 'List of Cloudfleet cluster tiers available for the organization.'
1419
- },
1420
- regions: {
1421
- type: 'array',
1422
- items: {
2740
+ status: {
1423
2741
  type: 'string',
1424
- example: 'northamerica-central-1'
2742
+ description: 'Current state of the ticket.',
2743
+ example: 'waiting_on_us',
2744
+ enum: [
2745
+ 'waiting_on_us',
2746
+ 'waiting_on_user',
2747
+ 'closed'
2748
+ ]
1425
2749
  },
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'
2750
+ category: {
2751
+ type: 'string',
2752
+ description: 'Ticket category.',
2753
+ example: 'technical',
2754
+ enum: [
2755
+ 'billing',
2756
+ 'technical',
2757
+ 'general'
2758
+ ]
2759
+ },
2760
+ summary: {
2761
+ type: 'string',
2762
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2763
+ example: 'My cluster cannot reach the registry. Logs attached.'
2764
+ },
2765
+ closed_at: {
2766
+ type: 'string',
2767
+ format: 'date-time',
2768
+ nullable: true,
2769
+ description: 'Closure timestamp. Null while the ticket is open.',
2770
+ example: '2026-05-18T16:08:14.338Z'
2771
+ },
2772
+ date_created: {
2773
+ type: 'string',
2774
+ format: 'date-time',
2775
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
2776
+ example: '2026-05-11T16:08:14.338Z'
2777
+ },
2778
+ date_updated: {
2779
+ type: 'string',
2780
+ format: 'date-time',
2781
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
2782
+ example: '2026-05-11T16:08:14.338Z'
2783
+ },
2784
+ messages: {
2785
+ type: 'array',
2786
+ items: {
2787
+ type: 'object',
2788
+ properties: {
2789
+ id: {
2790
+ type: 'string',
2791
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2792
+ example: '60c72b2f9f1b2c001f8e4d3b'
2793
+ },
2794
+ type: {
2795
+ type: 'string',
2796
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2797
+ example: 'customer_reply',
2798
+ enum: [
2799
+ 'customer_reply',
2800
+ 'agent_reply'
2801
+ ]
2802
+ },
2803
+ body: {
2804
+ type: 'string',
2805
+ description: 'Message body in markdown.',
2806
+ example: 'Thanks — that resolved it on my side.'
2807
+ },
2808
+ author_first_name: {
2809
+ type: 'string',
2810
+ nullable: true,
2811
+ description: 'First name of the author. Null when not provided.',
2812
+ example: 'Jane'
2813
+ },
2814
+ author_last_name: {
2815
+ type: 'string',
2816
+ nullable: true,
2817
+ description: 'Last name of the author. Null when not provided.',
2818
+ example: 'Doe'
2819
+ },
2820
+ attachments: {
2821
+ type: 'array',
2822
+ items: {
2823
+ type: 'object',
2824
+ properties: {
2825
+ id: {
2826
+ type: 'string',
2827
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2828
+ example: '60c72b2f9f1b2c001f8e4d3c'
2829
+ },
2830
+ filename: {
2831
+ type: 'string',
2832
+ description: 'Original filename as uploaded.',
2833
+ example: 'debug.log'
2834
+ },
2835
+ content_type: {
2836
+ type: 'string',
2837
+ description: 'MIME content type of the attachment.',
2838
+ example: 'text/plain'
2839
+ },
2840
+ size: {
2841
+ type: 'integer',
2842
+ description: 'Size of the attachment in bytes.',
2843
+ example: 12345
2844
+ }
2845
+ },
2846
+ required: [
2847
+ 'id',
2848
+ 'filename',
2849
+ 'content_type',
2850
+ 'size'
2851
+ ],
2852
+ additionalProperties: false
2853
+ },
2854
+ description: 'Attachments associated with this message.',
2855
+ example: []
2856
+ },
2857
+ date_created: {
2858
+ type: 'string',
2859
+ format: 'date-time',
2860
+ description: 'Creation date of the message. ISO 8601 UTC.',
2861
+ example: '2026-05-11T16:08:14.338Z'
2862
+ }
1438
2863
  },
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
- }
2864
+ required: [
2865
+ 'id',
2866
+ 'type',
2867
+ 'body',
2868
+ 'date_created'
2869
+ ],
2870
+ additionalProperties: false
1444
2871
  },
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']
2872
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2873
+ }
2874
+ },
2875
+ required: [
2876
+ 'id',
2877
+ 'status',
2878
+ 'category',
2879
+ 'summary',
2880
+ 'date_created',
2881
+ 'date_updated'
2882
+ ],
2883
+ additionalProperties: false
1462
2884
  },
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: {
2885
+ description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2886
+ }
2887
+ },
2888
+ required: [
2889
+ 'items'
2890
+ ],
2891
+ additionalProperties: false
2892
+ };
2893
+ export const TicketMessageInputSchema = {
2894
+ type: 'object',
2895
+ properties: {
2896
+ body: {
1466
2897
  type: 'string',
1467
- description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
1468
- enum: ['active', 'closed', 'suspended']
2898
+ maxLength: 50000,
2899
+ minLength: 1,
2900
+ pattern: '\\S',
2901
+ description: 'Reply body in markdown.',
2902
+ example: 'Thanks — that resolved it on my side.'
1469
2903
  }
1470
2904
  },
1471
- required: ['name', 'contactInfo', 'id', 'date_created', 'quota', 'pending_actions', 'status'],
2905
+ required: [
2906
+ 'body'
2907
+ ],
1472
2908
  additionalProperties: false
1473
2909
  };
1474
- export const OrganizationUpdateInputSchema = {
2910
+ export const TicketMessageSchema = {
1475
2911
  type: 'object',
1476
2912
  properties: {
1477
- name: {
2913
+ id: {
1478
2914
  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.'
2915
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2916
+ example: '60c72b2f9f1b2c001f8e4d3b'
1484
2917
  },
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'
2918
+ type: {
2919
+ type: 'string',
2920
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2921
+ example: 'customer_reply',
2922
+ enum: [
2923
+ 'customer_reply',
2924
+ 'agent_reply'
2925
+ ]
2926
+ },
2927
+ body: {
2928
+ type: 'string',
2929
+ description: 'Message body in markdown.',
2930
+ example: 'Thanks — that resolved it on my side.'
2931
+ },
2932
+ author_first_name: {
2933
+ type: 'string',
2934
+ description: 'First name of the author. Null when not provided.',
2935
+ example: 'Jane'
2936
+ },
2937
+ author_last_name: {
2938
+ type: 'string',
2939
+ description: 'Last name of the author. Null when not provided.',
2940
+ example: 'Doe'
2941
+ },
2942
+ attachments: {
2943
+ type: 'array',
2944
+ items: {
2945
+ type: 'object',
2946
+ properties: {
2947
+ id: {
2948
+ type: 'string',
2949
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2950
+ example: '60c72b2f9f1b2c001f8e4d3c'
2951
+ },
2952
+ filename: {
2953
+ type: 'string',
2954
+ description: 'Original filename as uploaded.',
2955
+ example: 'debug.log'
2956
+ },
2957
+ content_type: {
2958
+ type: 'string',
2959
+ description: 'MIME content type of the attachment.',
2960
+ example: 'text/plain'
2961
+ },
2962
+ size: {
2963
+ type: 'integer',
2964
+ description: 'Size of the attachment in bytes.',
2965
+ example: 12345
2966
+ }
1533
2967
  },
1534
- last_name: {
1535
- type: 'string',
1536
- description: 'Last name of the billing contact person.',
1537
- example: 'Doe'
1538
- }
2968
+ required: [
2969
+ 'id',
2970
+ 'filename',
2971
+ 'content_type',
2972
+ 'size'
2973
+ ],
2974
+ additionalProperties: false
1539
2975
  },
1540
- required: ['email', 'first_name', 'last_name'],
1541
- additionalProperties: false,
1542
- description: 'Organization contact information and billing address.'
2976
+ description: 'Attachments associated with this message.',
2977
+ example: []
2978
+ },
2979
+ date_created: {
2980
+ type: 'string',
2981
+ format: 'date-time',
2982
+ description: 'Creation date of the message. ISO 8601 UTC.',
2983
+ example: '2026-05-11T16:08:14.338Z'
1543
2984
  }
1544
2985
  },
1545
- required: ['contactInfo'],
2986
+ required: [
2987
+ 'id',
2988
+ 'type',
2989
+ 'body',
2990
+ 'date_created'
2991
+ ],
1546
2992
  additionalProperties: false
1547
2993
  };
1548
- export const PaymentMethodSchema = {
2994
+ export const TicketSchema = {
1549
2995
  type: 'object',
1550
2996
  properties: {
1551
2997
  id: {
1552
2998
  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'
2999
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
3000
+ example: '60c72b2f9f1b2c001f8e4d3a'
1556
3001
  },
1557
- setup: {
1558
- type: 'boolean',
1559
- description: 'Whether organization payment method was set up and ready to use for payments.',
1560
- example: true
3002
+ status: {
3003
+ type: 'string',
3004
+ description: 'Current state of the ticket.',
3005
+ example: 'waiting_on_us',
3006
+ enum: [
3007
+ 'waiting_on_us',
3008
+ 'waiting_on_user',
3009
+ 'closed'
3010
+ ]
1561
3011
  },
1562
- type: {
3012
+ category: {
1563
3013
  type: 'string',
1564
- nullable: true,
1565
- description: 'Payment method type type. Only `card` payments supported at the moment.',
1566
- example: 'card',
1567
- enum: ['card']
3014
+ description: 'Ticket category.',
3015
+ example: 'technical',
3016
+ enum: [
3017
+ 'billing',
3018
+ 'technical',
3019
+ 'general'
3020
+ ]
1568
3021
  },
1569
- last4: {
3022
+ summary: {
1570
3023
  type: 'string',
1571
- nullable: true,
1572
- description: 'Last 4 digits of the payment card number.',
1573
- example: '4242'
3024
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3025
+ example: 'My cluster cannot reach the registry. Logs attached.'
1574
3026
  },
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'
3027
+ closed_at: {
3028
+ type: 'string',
3029
+ format: 'date-time',
3030
+ description: 'Closure timestamp. Null while the ticket is open.',
3031
+ example: '2026-05-18T16:08:14.338Z'
1582
3032
  },
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'
3033
+ date_created: {
3034
+ type: 'string',
3035
+ format: 'date-time',
3036
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
3037
+ example: '2026-05-11T16:08:14.338Z'
1589
3038
  },
1590
- brand: {
3039
+ date_updated: {
1591
3040
  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']
3041
+ format: 'date-time',
3042
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
3043
+ example: '2026-05-11T16:08:14.338Z'
3044
+ },
3045
+ messages: {
3046
+ type: 'array',
3047
+ items: {
3048
+ type: 'object',
3049
+ properties: {
3050
+ id: {
3051
+ type: 'string',
3052
+ description: 'Unique identifier of the message (Mongo ObjectId).',
3053
+ example: '60c72b2f9f1b2c001f8e4d3b'
3054
+ },
3055
+ type: {
3056
+ type: 'string',
3057
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
3058
+ example: 'customer_reply',
3059
+ enum: [
3060
+ 'customer_reply',
3061
+ 'agent_reply'
3062
+ ]
3063
+ },
3064
+ body: {
3065
+ type: 'string',
3066
+ description: 'Message body in markdown.',
3067
+ example: 'Thanks — that resolved it on my side.'
3068
+ },
3069
+ author_first_name: {
3070
+ type: 'string',
3071
+ description: 'First name of the author. Null when not provided.',
3072
+ example: 'Jane'
3073
+ },
3074
+ author_last_name: {
3075
+ type: 'string',
3076
+ description: 'Last name of the author. Null when not provided.',
3077
+ example: 'Doe'
3078
+ },
3079
+ attachments: {
3080
+ type: 'array',
3081
+ items: {
3082
+ type: 'object',
3083
+ properties: {
3084
+ id: {
3085
+ type: 'string',
3086
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
3087
+ example: '60c72b2f9f1b2c001f8e4d3c'
3088
+ },
3089
+ filename: {
3090
+ type: 'string',
3091
+ description: 'Original filename as uploaded.',
3092
+ example: 'debug.log'
3093
+ },
3094
+ content_type: {
3095
+ type: 'string',
3096
+ description: 'MIME content type of the attachment.',
3097
+ example: 'text/plain'
3098
+ },
3099
+ size: {
3100
+ type: 'integer',
3101
+ description: 'Size of the attachment in bytes.',
3102
+ example: 12345
3103
+ }
3104
+ },
3105
+ required: [
3106
+ 'id',
3107
+ 'filename',
3108
+ 'content_type',
3109
+ 'size'
3110
+ ],
3111
+ additionalProperties: false
3112
+ },
3113
+ description: 'Attachments associated with this message.',
3114
+ example: []
3115
+ },
3116
+ date_created: {
3117
+ type: 'string',
3118
+ format: 'date-time',
3119
+ description: 'Creation date of the message. ISO 8601 UTC.',
3120
+ example: '2026-05-11T16:08:14.338Z'
3121
+ }
3122
+ },
3123
+ required: [
3124
+ 'id',
3125
+ 'type',
3126
+ 'body',
3127
+ 'date_created'
3128
+ ],
3129
+ additionalProperties: false
3130
+ },
3131
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
1596
3132
  }
1597
3133
  },
1598
- required: ['id', 'setup', 'type', 'last4', 'exp_month', 'exp_year', 'brand'],
3134
+ required: [
3135
+ 'id',
3136
+ 'status',
3137
+ 'category',
3138
+ 'summary',
3139
+ 'date_created',
3140
+ 'date_updated'
3141
+ ],
1599
3142
  additionalProperties: false
1600
3143
  };
1601
3144
  export const TokenCreateInputSchema = {
@@ -1613,10 +3156,16 @@ export const TokenCreateInputSchema = {
1613
3156
  type: 'string',
1614
3157
  description: 'Role assumed by the token.',
1615
3158
  example: 'User',
1616
- enum: ['Administrator', 'User']
3159
+ enum: [
3160
+ 'Administrator',
3161
+ 'User'
3162
+ ]
1617
3163
  }
1618
3164
  },
1619
- required: ['name', 'role'],
3165
+ required: [
3166
+ 'name',
3167
+ 'role'
3168
+ ],
1620
3169
  additionalProperties: false
1621
3170
  };
1622
3171
  export const TokenSchema = {
@@ -1634,7 +3183,10 @@ export const TokenSchema = {
1634
3183
  type: 'string',
1635
3184
  description: 'Role assumed by the token.',
1636
3185
  example: 'User',
1637
- enum: ['Administrator', 'User']
3186
+ enum: [
3187
+ 'Administrator',
3188
+ 'User'
3189
+ ]
1638
3190
  },
1639
3191
  id: {
1640
3192
  type: 'string',
@@ -1653,7 +3205,11 @@ export const TokenSchema = {
1653
3205
  example: '2023-12-20T13:53:32.000Z'
1654
3206
  }
1655
3207
  },
1656
- required: ['name', 'role', 'date_created'],
3208
+ required: [
3209
+ 'name',
3210
+ 'role',
3211
+ 'date_created'
3212
+ ],
1657
3213
  additionalProperties: false
1658
3214
  };
1659
3215
  export const TokenUpdateInputSchema = {
@@ -1671,37 +3227,173 @@ export const TokenUpdateInputSchema = {
1671
3227
  type: 'string',
1672
3228
  description: 'Role assumed by the token.',
1673
3229
  example: 'User',
1674
- enum: ['Administrator', 'User']
3230
+ enum: [
3231
+ 'Administrator',
3232
+ 'User'
3233
+ ]
3234
+ }
3235
+ },
3236
+ additionalProperties: false
3237
+ };
3238
+ export const UsageFacetsSchema = {
3239
+ type: 'object',
3240
+ properties: {
3241
+ cluster_id: {
3242
+ type: 'array',
3243
+ items: {
3244
+ type: 'string'
3245
+ },
3246
+ description: 'List of unique cluster IDs',
3247
+ example: [
3248
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3249
+ ]
3250
+ },
3251
+ product: {
3252
+ type: 'array',
3253
+ items: {
3254
+ type: 'string'
3255
+ },
3256
+ description: 'List of unique products',
3257
+ example: [
3258
+ 'cfke_controlplane',
3259
+ 'cfke_connected_nodes'
3260
+ ]
3261
+ }
3262
+ },
3263
+ additionalProperties: false
3264
+ };
3265
+ export const UsageResponseSchema = {
3266
+ type: 'object',
3267
+ properties: {
3268
+ data: {
3269
+ type: 'array',
3270
+ items: {
3271
+ type: 'object',
3272
+ properties: {
3273
+ hour: {
3274
+ type: 'string',
3275
+ description: 'Hour of the usage',
3276
+ example: '2019-01-01T00:00:00.000Z'
3277
+ },
3278
+ cluster_id: {
3279
+ type: 'string',
3280
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
3281
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3282
+ },
3283
+ product: {
3284
+ type: 'string',
3285
+ description: 'The product the usage is associated with',
3286
+ example: 'cfke_controlplane'
3287
+ },
3288
+ value: {
3289
+ type: 'number',
3290
+ format: 'float',
3291
+ description: 'Consumption',
3292
+ example: 4
3293
+ },
3294
+ price: {
3295
+ type: 'number',
3296
+ format: 'float',
3297
+ description: 'Price per unit',
3298
+ example: 0.01
3299
+ },
3300
+ total: {
3301
+ type: 'number',
3302
+ format: 'float',
3303
+ description: 'Total cost'
3304
+ }
3305
+ },
3306
+ required: [
3307
+ 'hour',
3308
+ 'cluster_id',
3309
+ 'product',
3310
+ 'value',
3311
+ 'price',
3312
+ 'total'
3313
+ ],
3314
+ additionalProperties: false
3315
+ },
3316
+ description: 'Usage data'
3317
+ },
3318
+ facets: {
3319
+ type: 'object',
3320
+ properties: {
3321
+ cluster_id: {
3322
+ type: 'array',
3323
+ items: {
3324
+ type: 'string'
3325
+ },
3326
+ description: 'List of unique cluster IDs',
3327
+ example: [
3328
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
3329
+ ]
3330
+ },
3331
+ product: {
3332
+ type: 'array',
3333
+ items: {
3334
+ type: 'string'
3335
+ },
3336
+ description: 'List of unique products',
3337
+ example: [
3338
+ 'cfke_controlplane',
3339
+ 'cfke_connected_nodes'
3340
+ ]
3341
+ }
3342
+ },
3343
+ additionalProperties: false,
3344
+ description: 'Facets for filtering'
1675
3345
  }
1676
3346
  },
3347
+ required: [
3348
+ 'data',
3349
+ 'facets'
3350
+ ],
1677
3351
  additionalProperties: false
1678
3352
  };
1679
3353
  export const UsageSchema = {
1680
3354
  type: 'object',
1681
3355
  properties: {
1682
- id: {
3356
+ hour: {
1683
3357
  type: 'string',
1684
- format: 'uuid',
1685
- description: 'Unique identifier of the Usage object, equal to subscription id of the task . UUID v4 string in canonical form',
1686
- example: '8897e84c-2ba1-42fa-9d35-964c80a4ff0f'
3358
+ description: 'Hour of the usage',
3359
+ example: '2019-01-01T00:00:00.000Z'
1687
3360
  },
1688
- task_id: {
3361
+ cluster_id: {
1689
3362
  type: 'string',
1690
- format: 'uuid',
1691
- description: 'Unique identifier of the project. UUID v4 string in canonical form',
1692
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
3363
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
3364
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
1693
3365
  },
1694
- unit: {
3366
+ product: {
1695
3367
  type: 'string',
1696
- description: 'Unit of measurement. E.g. GiB, seconds, etc',
1697
- example: 'second'
3368
+ description: 'The product the usage is associated with',
3369
+ example: 'cfke_controlplane'
3370
+ },
3371
+ value: {
3372
+ type: 'number',
3373
+ format: 'float',
3374
+ description: 'Consumption',
3375
+ example: 4
1698
3376
  },
1699
- amount: {
3377
+ price: {
3378
+ type: 'number',
3379
+ format: 'float',
3380
+ description: 'Price per unit',
3381
+ example: 0.01
3382
+ },
3383
+ total: {
1700
3384
  type: 'number',
1701
- format: 'float'
3385
+ format: 'float',
3386
+ description: 'Total cost'
1702
3387
  }
1703
3388
  },
1704
- required: ['id', 'task_id', 'unit', 'amount'],
3389
+ required: [
3390
+ 'hour',
3391
+ 'cluster_id',
3392
+ 'product',
3393
+ 'value',
3394
+ 'price',
3395
+ 'total'
3396
+ ],
1705
3397
  additionalProperties: false
1706
3398
  };
1707
3399
  export const UserCreateInputSchema = {
@@ -1736,22 +3428,34 @@ export const UserCreateInputSchema = {
1736
3428
  password: {
1737
3429
  type: 'string',
1738
3430
  minLength: 8,
1739
- 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.'
3431
+ description: 'User password. Must be at least 8 characters long.'
1740
3432
  },
1741
3433
  status: {
1742
3434
  type: 'string',
1743
3435
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1744
3436
  example: 'active',
1745
- enum: ['active', 'inactive']
3437
+ enum: [
3438
+ 'active',
3439
+ 'inactive'
3440
+ ]
1746
3441
  },
1747
3442
  role: {
1748
3443
  type: 'string',
1749
- description: "User role. Can be 'Administrator', 'User'.",
3444
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1750
3445
  example: 'User',
1751
- enum: ['Administrator', 'User']
3446
+ enum: [
3447
+ 'Administrator',
3448
+ 'User'
3449
+ ]
1752
3450
  }
1753
3451
  },
1754
- required: ['email', 'first_name', 'last_name', 'code', 'password'],
3452
+ required: [
3453
+ 'email',
3454
+ 'first_name',
3455
+ 'last_name',
3456
+ 'code',
3457
+ 'password'
3458
+ ],
1755
3459
  additionalProperties: false
1756
3460
  };
1757
3461
  export const UserSchema = {
@@ -1779,15 +3483,21 @@ export const UserSchema = {
1779
3483
  },
1780
3484
  role: {
1781
3485
  type: 'string',
1782
- description: "User role. Can be 'Administrator', 'User'.",
3486
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1783
3487
  example: 'User',
1784
- enum: ['Administrator', 'User']
3488
+ enum: [
3489
+ 'Administrator',
3490
+ 'User'
3491
+ ]
1785
3492
  },
1786
3493
  status: {
1787
3494
  type: 'string',
1788
3495
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1789
3496
  example: 'active',
1790
- enum: ['active', 'inactive']
3497
+ enum: [
3498
+ 'active',
3499
+ 'inactive'
3500
+ ]
1791
3501
  },
1792
3502
  id: {
1793
3503
  type: 'string',
@@ -1800,31 +3510,17 @@ export const UserSchema = {
1800
3510
  format: 'date-time',
1801
3511
  description: 'Creation date of the user. ISO 8601 date string in UTC timezone',
1802
3512
  example: '2023-11-02T16:08:14.338Z'
1803
- },
1804
- cluster_permissions: {
1805
- type: 'array',
1806
- items: {
1807
- type: 'object',
1808
- properties: {
1809
- cluster_id: {
1810
- type: 'string',
1811
- format: 'uuid',
1812
- description: 'Unique identifier of the cluster. UUID v4 string in canonical form',
1813
- example: '035ce46d-44d8-4e58-a8a2-b0192d1c27df'
1814
- },
1815
- permissions: {
1816
- type: 'string',
1817
- description: 'User permissions to access the cluster. Can be `readwrite` or `readonly`.',
1818
- example: 'readwrite',
1819
- enum: ['readwrite', 'readonly']
1820
- }
1821
- },
1822
- required: ['cluster_id', 'permissions'],
1823
- additionalProperties: false
1824
- }
1825
3513
  }
1826
3514
  },
1827
- required: ['email', 'first_name', 'last_name', 'role', 'status', 'id', 'date_created'],
3515
+ required: [
3516
+ 'email',
3517
+ 'first_name',
3518
+ 'last_name',
3519
+ 'role',
3520
+ 'status',
3521
+ 'id',
3522
+ 'date_created'
3523
+ ],
1828
3524
  additionalProperties: false
1829
3525
  };
1830
3526
  export const UserUpdateInputSchema = {
@@ -1852,15 +3548,21 @@ export const UserUpdateInputSchema = {
1852
3548
  },
1853
3549
  role: {
1854
3550
  type: 'string',
1855
- description: "User role. Can be 'Administrator', 'User'.",
3551
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1856
3552
  example: 'User',
1857
- enum: ['Administrator', 'User']
3553
+ enum: [
3554
+ 'Administrator',
3555
+ 'User'
3556
+ ]
1858
3557
  },
1859
3558
  status: {
1860
3559
  type: 'string',
1861
3560
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1862
3561
  example: 'active',
1863
- enum: ['active', 'inactive']
3562
+ enum: [
3563
+ 'active',
3564
+ 'inactive'
3565
+ ]
1864
3566
  }
1865
3567
  },
1866
3568
  additionalProperties: false