@cloudfleet/sdk 0.0.1-bd28e81 → 0.0.1-bd6cd33

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