@cloudfleet/sdk 0.0.1-bd521c7 → 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 +1591 -1140
  62. package/dist/schemas.gen.d.ts.map +1 -1
  63. package/dist/schemas.gen.js +2859 -1201
  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 +1422 -992
  82. package/dist/types.gen.d.ts.map +1 -1
  83. package/dist/zod.gen.d.ts +3713 -2759
  84. package/dist/zod.gen.d.ts.map +1 -1
  85. package/dist/zod.gen.js +1539 -913
  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: {
1922
+ chartYaml: {
651
1923
  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'
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'
654
1926
  },
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: {
1927
+ valuesYaml: {
661
1928
  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'
1929
+ description: 'Raw values.yaml content from the Helm chart',
1930
+ example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
664
1931
  },
665
- csp_region: {
1932
+ valuesSchemaJson: {
666
1933
  type: 'string',
667
- description: 'Region as defined by the cloud service provider',
668
- example: 'eu-west-1'
669
- },
670
- csp_zone: {
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: {
671
1944
  type: 'string',
672
- description: 'Availability zone as defined by the cloud service provider',
673
- example: 'eu-west-1a'
1945
+ description: 'Name of the chart',
1946
+ example: 'nginx-ingress'
674
1947
  },
675
- instance_type: {
676
- type: 'string',
677
- description: 'Instance / VM type as defined by the cloud service provider',
678
- example: 'p4d.24xlarge'
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'
679
1957
  },
680
- architecture: {
681
- type: 'string',
682
- description: 'Instance CPU architecture',
683
- example: 'amd64'
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'
684
1967
  },
685
- os: {
1968
+ latestVersion: {
686
1969
  type: 'string',
687
- description: 'Instance operating system',
688
- example: 'linux'
689
- },
690
- vcpu: {
691
- type: 'number',
692
- format: 'float',
693
- minimum: 1,
694
- description: 'CPU count as defined by the cloud service provider. Some cloud providers use hyperthreading, so the number of vCPUs may be twice as high as the number of physical cores.',
695
- example: 96
696
- },
697
- memory: {
698
- type: 'number',
699
- format: 'float',
700
- minimum: 1,
701
- description: 'Total amount of RAM in gibibytes (GiB)',
702
- example: 1152
703
- },
704
- local_storage: {
705
- type: 'number',
706
- format: 'float',
707
- description: 'Volume of directly attached, block-device local storage in gibibytes (GiB)',
708
- example: 8000
1970
+ description: 'Latest version of the chart',
1971
+ example: '1.18.2-cfke.45'
709
1972
  },
710
- accelerator_name: {
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: {
711
2077
  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'
2078
+ format: 'email',
2079
+ description: 'Email address used for billing as a string.',
2080
+ example: 'email@example.com'
714
2081
  },
715
- accelerator_manufacturer: {
2082
+ first_name: {
716
2083
  type: 'string',
717
- description: "Normalized manufacturer name of accelerator. For example, all Nvidia GPUs will have 'NVIDIA' as accelerator manufacturer",
718
- example: 'NVIDIA'
719
- },
720
- accelerator_count: {
721
- type: 'integer',
722
- description: 'Number of accelerators available on the instance. Some cloud providers support shared accelerators, so the number of accelerators may be a fraction of the number of physical accelerators.',
723
- example: 8
724
- },
725
- accelerator_memory: {
726
- type: 'number',
727
- format: 'float',
728
- description: "Ammount of accelerator memory available to each accelerator. For example, Nvidia A100 GPUs will typically have '40.0' gibibytes (GiB) of memory, while A100 GPUs with HBM2E memory will have '80.0' gibibytes (GiB) of memory",
729
- example: 40
730
- },
731
- pods_capacity: {
732
- type: 'number',
733
- format: 'float',
734
- description: 'Maximum number of pods that can be run on this instance type.',
735
- example: 110
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: {
802
- type: 'string',
803
- format: 'uuid',
804
- description: 'Unique identifier of the organization. UUID v4 string in canonical form',
805
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
2259
+ setup: {
2260
+ type: 'boolean',
2261
+ description: 'Whether organization payment method was set up and ready to use for payments.',
2262
+ example: true
806
2263
  },
807
- status: {
2264
+ type: {
808
2265
  type: 'string',
809
- description: 'Status of the invoice',
810
- example: 'DRAFT',
811
- enum: ['DRAFT', 'COMMITTED', 'VOID']
812
- },
813
- amount: {
814
- type: 'number',
815
- format: 'float',
816
- description: 'Total amount of the invoice',
817
- example: 100
2266
+ nullable: true,
2267
+ description: 'Payment method type type. Only `card` payments supported at the moment.',
2268
+ example: 'card',
2269
+ enum: [
2270
+ 'card'
2271
+ ]
818
2272
  },
819
- currency: {
2273
+ last4: {
820
2274
  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']
2275
+ nullable: true,
2276
+ description: 'Last 4 digits of the payment card number.',
2277
+ example: '4242'
824
2278
  },
825
- creditAdj: {
826
- type: 'number',
827
- format: 'float',
828
- description: 'Total amount of credit adjustments',
829
- example: 0
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'
830
2286
  },
831
- refundAdj: {
832
- type: 'number',
833
- format: 'float',
834
- description: 'Total amount of refund adjustments',
835
- example: 0
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'
836
2293
  },
837
- invoiceDate: {
2294
+ brand: {
838
2295
  type: 'string',
839
- description: 'Date of the invoice',
840
- example: '2019-01-01T00:00:00.000Z'
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
841
2331
  },
842
- targetDate: {
843
- type: 'string',
844
- description: 'Target date of the invoice',
845
- example: '2019-01-01T00:00:00.000Z'
2332
+ basic_clusters_available: {
2333
+ type: 'integer',
2334
+ description: 'Available number of Basic clusters that can be created.',
2335
+ example: 999
846
2336
  },
847
- invoiceNumber: {
848
- type: 'string',
849
- description: 'Number of the invoice',
850
- example: 'INV-0001'
2337
+ pro_clusters_max: {
2338
+ type: 'integer',
2339
+ minimum: 0,
2340
+ description: 'Maximum number of Pro clusters that can be created.',
2341
+ example: 999
851
2342
  },
852
- balance: {
853
- type: 'number',
854
- format: 'float',
855
- description: 'Balance of the invoice',
856
- example: 100
2343
+ pro_clusters_available: {
2344
+ type: 'integer',
2345
+ description: 'Available number of Pro clusters that can be created.',
2346
+ example: 999
857
2347
  },
858
- bundleKeys: {
859
- type: 'string',
860
- description: 'Bundle keys of the invoice',
861
- example: 'bundleKey1,bundleKey2'
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.'
862
2362
  },
863
- credits: {
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: {
864
2373
  type: 'array',
865
2374
  items: {
866
2375
  type: 'object',
867
2376
  properties: {
868
2377
  id: {
869
2378
  type: 'string',
870
- format: 'uuid',
871
- description: 'Unique identifier of the invoice item. UUID v4 string in canonical form',
872
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
873
- },
874
- linkedInvoiceItemId: {
875
- type: 'string',
876
- format: 'uuid',
877
- description: 'Unique identifier of the linked invoice item. UUID v4 string in canonical form',
878
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
879
- },
880
- productName: {
881
- type: 'string',
882
- description: 'Name of the product',
883
- example: 'Research team'
884
- },
885
- planName: {
886
- type: 'string',
887
- description: 'Name of the plan',
888
- example: 'Plan A'
889
- },
890
- phaseName: {
891
- type: 'string',
892
- description: 'Name of the phase',
893
- example: 'Phase A'
894
- },
895
- usageName: {
896
- type: 'string',
897
- description: 'Name of the usage',
898
- example: 'Usage A'
899
- },
900
- prettyProductName: {
901
- type: 'string',
902
- description: 'Pretty name of the product',
903
- example: 'Research team'
904
- },
905
- prettyPlanName: {
906
- type: 'string',
907
- description: 'Pretty name of the plan',
908
- example: 'Plan A'
909
- },
910
- prettyPhaseName: {
911
- type: 'string',
912
- description: 'Pretty name of the phase',
913
- example: 'Phase A'
914
- },
915
- prettyUsageName: {
916
- type: 'string',
917
- description: 'Pretty name of the usage',
918
- example: 'Usage A'
919
- },
920
- itemType: {
921
- type: 'string',
922
- description: 'Type of the invoice item',
923
- example: 'EXTERNAL_CHARGE',
924
- enum: ['EXTERNAL_CHARGE', 'FIXED', 'RECURRING', 'REPAIR_ADJ', 'CBA_ADJ', 'CREDIT_ADJ', 'ITEM_ADJ', 'USAGE', 'TAX', 'PARENT_SUMMARY']
925
- },
926
- description: {
927
- type: 'string',
928
- description: 'Description of the invoice item',
929
- example: 'Description of the invoice item'
930
- },
931
- startDate: {
932
- type: 'string',
933
- description: 'Start date of the invoice item',
934
- example: '2019-01-01T00:00:00.000Z'
935
- },
936
- endDate: {
937
- type: 'string',
938
- description: 'End date of the invoice item',
939
- example: '2019-01-01T00:00:00.000Z'
940
- },
941
- amount: {
942
- type: 'number',
943
- format: 'float',
944
- description: 'Amount of the invoice item',
945
- example: 100
946
- },
947
- rate: {
948
- type: 'number',
949
- format: 'float',
950
- description: 'Rate of the invoice item',
951
- example: 100
952
- },
953
- currency: {
954
- type: 'string',
955
- description: 'Currency of the invoice item',
956
- example: 'USD',
957
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
958
- },
959
- quantity: {
960
- type: 'number',
961
- format: 'float',
962
- description: 'Quantity of the invoice item',
963
- example: 1
964
- },
965
- itemDetails: {
966
- type: 'string',
967
- description: 'Details of the invoice item',
968
- example: 'Details of the invoice item'
2379
+ description: 'Id of the control plane version. Used in API calls.',
2380
+ example: '1.33.x-cfke.x'
969
2381
  },
970
- catalogEffectiveDate: {
2382
+ label: {
971
2383
  type: 'string',
972
- description: 'Effective date of the catalog',
973
- example: '2019-01-01T00:00:00.000Z'
974
- },
975
- childItems: {
976
- type: 'array',
977
- items: {
978
- oneOf: [
979
- {
980
- type: 'array'
981
- },
982
- {
983
- type: 'boolean'
984
- },
985
- {
986
- type: 'number'
987
- },
988
- {
989
- type: 'object',
990
- additionalProperties: true
991
- },
992
- {
993
- type: 'string'
994
- }
995
- ]
996
- },
997
- description: 'Child items of the invoice item'
2384
+ description: 'Label of the control plane version. Used in frontent UI.',
2385
+ example: '1.33.x (Always latest 1.33 patch version)'
998
2386
  }
999
2387
  },
2388
+ required: [
2389
+ 'id',
2390
+ 'label'
2391
+ ],
1000
2392
  additionalProperties: false
1001
2393
  },
1002
- description: 'Credits of the invoice'
2394
+ minItems: 1,
2395
+ description: 'List of CFKE control plane versions available for the organization.'
1003
2396
  },
1004
- items: {
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: {
2421
+ type: 'string',
2422
+ description: 'Repository name.',
2423
+ example: 'my-app'
2424
+ },
2425
+ region: {
2426
+ type: 'string',
2427
+ description: 'Registry region.',
2428
+ example: 'northamerica'
2429
+ },
2430
+ uri: {
2431
+ type: 'string',
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'
2450
+ },
2451
+ region: {
2452
+ type: 'string',
2453
+ description: 'Registry region.',
2454
+ example: 'northamerica'
2455
+ },
2456
+ uri: {
2457
+ type: 'string',
2458
+ description: 'Full URI of the repository.',
2459
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
2460
+ },
2461
+ tags: {
1005
2462
  type: 'array',
1006
2463
  items: {
1007
2464
  type: 'object',
1008
2465
  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: {
2466
+ name: {
1047
2467
  type: 'string',
1048
- description: 'Pretty name of the plan',
1049
- example: 'Plan A'
2468
+ description: 'Tag name.',
2469
+ example: 'latest'
1050
2470
  },
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: {
2471
+ size: {
1083
2472
  type: 'number',
1084
2473
  format: 'float',
1085
- description: 'Amount of the invoice item',
1086
- example: 100
2474
+ description: 'Size of the tag in bytes.',
2475
+ example: 123456789
1087
2476
  },
1088
- rate: {
1089
- type: 'number',
1090
- format: 'float',
1091
- description: 'Rate of the invoice item',
1092
- example: 100
1093
- },
1094
- currency: {
1095
- type: 'string',
1096
- description: 'Currency of the invoice item',
1097
- example: 'USD',
1098
- enum: ['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SPL', 'SRD', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TVD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XDR', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', 'ZWD', 'BTC']
1099
- },
1100
- quantity: {
1101
- type: 'number',
1102
- format: 'float',
1103
- description: 'Quantity of the invoice item',
1104
- example: 1
1105
- },
1106
- itemDetails: {
2477
+ mediaType: {
1107
2478
  type: 'string',
1108
- description: 'Details of the invoice item',
1109
- example: 'Details of the invoice item'
2479
+ description: 'Media type of the manifest.',
2480
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1110
2481
  },
1111
- catalogEffectiveDate: {
1112
- type: 'string',
1113
- description: 'Effective date of the catalog',
1114
- example: '2019-01-01T00:00:00.000Z'
1115
- },
1116
- childItems: {
2482
+ platforms: {
1117
2483
  type: 'array',
1118
2484
  items: {
1119
- oneOf: [
1120
- {
1121
- type: 'array'
1122
- },
1123
- {
1124
- type: 'boolean'
1125
- },
1126
- {
1127
- type: 'number'
1128
- },
1129
- {
1130
- type: 'object',
1131
- additionalProperties: true
1132
- },
1133
- {
1134
- type: 'string'
1135
- }
1136
- ]
2485
+ type: 'string'
1137
2486
  },
1138
- 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
+ ]
1139
2492
  }
1140
2493
  },
2494
+ required: [
2495
+ 'name',
2496
+ 'size'
2497
+ ],
1141
2498
  additionalProperties: false
1142
2499
  },
1143
- description: 'Items of the invoice'
2500
+ description: 'Array of tags in the repository.'
2501
+ },
2502
+ totalSize: {
2503
+ type: 'number',
2504
+ format: 'float',
2505
+ description: 'Total size of all tags in the repository in bytes.',
2506
+ example: 987654321
1144
2507
  }
1145
2508
  },
2509
+ required: [
2510
+ 'name',
2511
+ 'region',
2512
+ 'uri',
2513
+ 'tags',
2514
+ 'totalSize'
2515
+ ],
1146
2516
  additionalProperties: false
1147
2517
  };
1148
- export const OrganizationContactInfoSchema = {
2518
+ export const RegistryTagSchema = {
1149
2519
  type: 'object',
1150
2520
  properties: {
1151
- address1: {
2521
+ name: {
1152
2522
  type: 'string',
1153
- nullable: true,
1154
- description: 'Street address, P.O. box, c/o',
1155
- example: '123 Main St.'
2523
+ description: 'Tag name.',
2524
+ example: 'latest'
1156
2525
  },
1157
- address2: {
2526
+ digest: {
1158
2527
  type: 'string',
1159
- nullable: true,
1160
- description: 'Apartment, suite, unit, building, floor, etc.',
1161
- example: 'Suite 100'
2528
+ description: 'Manifest digest for pulling by digest.',
2529
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1162
2530
  },
1163
- postalCode: {
2531
+ mediaType: {
1164
2532
  type: 'string',
1165
- nullable: true,
1166
- description: 'Postal code as a string.',
1167
- example: '94105'
2533
+ description: 'Media type of the manifest.',
2534
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1168
2535
  },
1169
- city: {
1170
- type: 'string',
1171
- nullable: true,
1172
- description: 'City or town name.',
1173
- example: 'San Francisco'
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.'
1174
2551
  },
1175
- state: {
1176
- type: 'string',
1177
- nullable: true,
1178
- description: 'State, province, or region name.',
1179
- example: 'CA'
2552
+ layers: {
2553
+ type: 'array',
2554
+ items: {
2555
+ type: 'object',
2556
+ properties: {
2557
+ digest: {
2558
+ type: 'string',
2559
+ description: 'Digest of the layer.',
2560
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2561
+ },
2562
+ size: {
2563
+ type: 'number',
2564
+ format: 'float',
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.'
1180
2575
  },
1181
- country: {
1182
- type: 'string',
1183
- nullable: true,
1184
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1185
- example: 'US'
2576
+ manifests: {
2577
+ type: 'array',
2578
+ items: {
2579
+ type: 'object',
2580
+ properties: {
2581
+ digest: {
2582
+ type: 'string',
2583
+ description: 'Digest of the manifest.',
2584
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2585
+ },
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.'
2611
+ },
2612
+ layers: {
2613
+ type: 'array',
2614
+ items: {
2615
+ type: 'object',
2616
+ properties: {
2617
+ digest: {
2618
+ type: 'string',
2619
+ description: 'Digest of the layer.',
2620
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
2621
+ },
2622
+ size: {
2623
+ type: 'number',
2624
+ format: 'float',
2625
+ description: 'Size of the layer in bytes.',
2626
+ example: 5678
2627
+ }
2628
+ },
2629
+ required: [
2630
+ 'size'
2631
+ ],
2632
+ additionalProperties: false
2633
+ },
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
2641
+ }
2642
+ },
2643
+ required: [
2644
+ 'digest'
2645
+ ],
2646
+ additionalProperties: false
2647
+ },
2648
+ description: 'Array of manifests for multi-arch images.'
1186
2649
  },
1187
- phone: {
1188
- type: 'string',
1189
- nullable: true,
1190
- description: 'Phone number as a string.',
1191
- example: '+1 555 555 5555'
2650
+ size: {
2651
+ type: 'number',
2652
+ format: 'float',
2653
+ description: 'Total size of the tag in bytes.',
2654
+ example: 123456789
1192
2655
  },
1193
- email: {
2656
+ region: {
1194
2657
  type: 'string',
1195
- format: 'email',
1196
- description: 'Email address used for billing as a string.',
1197
- example: 'email@example.com'
2658
+ description: 'Registry region.',
2659
+ example: 'northamerica'
1198
2660
  },
1199
- first_name: {
2661
+ repository: {
1200
2662
  type: 'string',
1201
- description: 'First name of the billing contact person.',
1202
- example: 'John'
2663
+ description: 'Repository name.',
2664
+ example: 'my-app'
1203
2665
  },
1204
- last_name: {
2666
+ uri: {
1205
2667
  type: 'string',
1206
- description: 'Last name of the billing contact person.',
1207
- example: 'Doe'
2668
+ description: 'Full URI of the tag.',
2669
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app:latest'
1208
2670
  }
1209
2671
  },
1210
- required: ['email', 'first_name', 'last_name'],
2672
+ required: [
2673
+ 'name',
2674
+ 'digest',
2675
+ 'size',
2676
+ 'region',
2677
+ 'repository',
2678
+ 'uri'
2679
+ ],
1211
2680
  additionalProperties: false
1212
2681
  };
1213
- export const OrganizationCreateInputSchema = {
2682
+ export const TicketAttachmentSchema = {
1214
2683
  type: 'object',
1215
2684
  properties: {
1216
- name: {
2685
+ id: {
1217
2686
  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.'
2687
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2688
+ example: '60c72b2f9f1b2c001f8e4d3c'
1223
2689
  },
1224
- contactInfo: {
1225
- type: 'object',
1226
- properties: {
1227
- address1: {
1228
- type: 'string',
1229
- description: 'Street address, P.O. box, c/o',
1230
- example: '123 Main St.'
1231
- },
1232
- address2: {
1233
- type: 'string',
1234
- description: 'Apartment, suite, unit, building, floor, etc.',
1235
- example: 'Suite 100'
1236
- },
1237
- postalCode: {
1238
- type: 'string',
1239
- description: 'Postal code as a string.',
1240
- example: '94105'
1241
- },
1242
- city: {
1243
- type: 'string',
1244
- description: 'City or town name.',
1245
- example: 'San Francisco'
1246
- },
1247
- state: {
1248
- type: 'string',
1249
- description: 'State, province, or region name.',
1250
- example: 'CA'
1251
- },
1252
- country: {
1253
- type: 'string',
1254
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1255
- example: 'US'
1256
- },
1257
- phone: {
1258
- type: 'string',
1259
- description: 'Phone number as a string.',
1260
- example: '+1 555 555 5555'
1261
- },
1262
- email: {
1263
- type: 'string',
1264
- format: 'email',
1265
- description: 'Email address used for billing as a string.',
1266
- example: 'email@example.com'
1267
- },
1268
- first_name: {
1269
- type: 'string',
1270
- description: 'First name of the billing contact person.',
1271
- example: 'John'
1272
- },
1273
- last_name: {
1274
- type: 'string',
1275
- description: 'Last name of the billing contact person.',
1276
- example: 'Doe'
1277
- }
1278
- },
1279
- required: ['email', 'first_name', 'last_name'],
1280
- additionalProperties: false,
1281
- description: 'Organization contact information and billing address.'
2690
+ filename: {
2691
+ type: 'string',
2692
+ description: 'Original filename as uploaded.',
2693
+ example: 'debug.log'
1282
2694
  },
1283
- password: {
2695
+ content_type: {
1284
2696
  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.'
2697
+ description: 'MIME content type of the attachment.',
2698
+ example: 'text/plain'
2699
+ },
2700
+ size: {
2701
+ type: 'integer',
2702
+ description: 'Size of the attachment in bytes.',
2703
+ example: 12345
1287
2704
  }
1288
2705
  },
1289
- required: ['name', 'contactInfo', 'password'],
2706
+ required: [
2707
+ 'id',
2708
+ 'filename',
2709
+ 'content_type',
2710
+ 'size'
2711
+ ],
1290
2712
  additionalProperties: false
1291
2713
  };
1292
- export const OrganizationSchema = {
2714
+ export const TicketCreateInputSchema = {
1293
2715
  type: 'object',
1294
2716
  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.'
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
+ ]
1361
2726
  },
1362
- id: {
2727
+ body: {
1363
2728
  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'
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.'
1373
2734
  },
1374
- quota: {
2735
+ properties: {
1375
2736
  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: {
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
+ }
2743
+ }
2744
+ },
2745
+ required: [
2746
+ 'category',
2747
+ 'body'
2748
+ ],
2749
+ additionalProperties: false
2750
+ };
2751
+ export const TicketListResponseSchema = {
2752
+ type: 'object',
2753
+ properties: {
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: {
2938
+ type: 'string',
2939
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2940
+ example: '60c72b2f9f1b2c001f8e4d3b'
2941
+ },
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: {
1478
2957
  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.'
2958
+ description: 'First name of the author. Null when not provided.',
2959
+ example: 'Jane'
1484
2960
  },
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'
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,9 +3251,127 @@ 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 = {
@@ -1686,90 +3384,40 @@ export const UsageSchema = {
1686
3384
  },
1687
3385
  cluster_id: {
1688
3386
  type: 'string',
1689
- format: 'uuid',
1690
3387
  description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
1691
3388
  example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
1692
3389
  },
1693
- cluster_tier: {
1694
- type: 'string',
1695
- description: 'Tier of the cluster.',
1696
- example: 'pro',
1697
- enum: ['']
1698
- },
1699
3390
  product: {
1700
3391
  type: 'string',
1701
3392
  description: 'The product the usage is associated with',
1702
- example: 'cfke_infra_compute',
1703
- enum: ['cfke_infra_compute', 'cfke_nodes', 'cfke_controlplane']
1704
- },
1705
- node_name: {
1706
- type: 'string',
1707
- description: 'Name of the Kubernetes node',
1708
- example: 'flexible-moth-956037384'
1709
- },
1710
- sku: {
1711
- type: 'string',
1712
- description: 'SKU of the Kubernetes node',
1713
- example: 'GCP-NORTHAMERICA-NORTHEAST1-A-G1-SMALL-SPOT'
3393
+ example: 'cfke_controlplane'
1714
3394
  },
1715
- cpu: {
1716
- anyOf: [
1717
- {
1718
- type: 'number',
1719
- format: 'float',
1720
- description: 'CPU core count of the node',
1721
- example: 4
1722
- },
1723
- {
1724
- type: 'string',
1725
- enum: ['']
1726
- }
1727
- ]
3395
+ value: {
3396
+ type: 'number',
3397
+ format: 'float',
3398
+ description: 'Consumption',
3399
+ example: 4
1728
3400
  },
1729
3401
  price: {
1730
- anyOf: [
1731
- {
1732
- type: 'number',
1733
- format: 'float',
1734
- description: 'Price',
1735
- example: 4
1736
- },
1737
- {
1738
- type: 'string',
1739
- enum: ['']
1740
- }
1741
- ]
1742
- },
1743
- value: {
1744
- anyOf: [
1745
- {
1746
- type: 'number',
1747
- format: 'float',
1748
- description: 'Value',
1749
- example: 4
1750
- },
1751
- {
1752
- type: 'string',
1753
- enum: ['']
1754
- }
1755
- ]
3402
+ type: 'number',
3403
+ format: 'float',
3404
+ description: 'Price per unit',
3405
+ example: 0.01
1756
3406
  },
1757
3407
  total: {
1758
- anyOf: [
1759
- {
1760
- type: 'number',
1761
- format: 'float',
1762
- description: 'Total',
1763
- example: 4
1764
- },
1765
- {
1766
- type: 'string',
1767
- enum: ['']
1768
- }
1769
- ]
3408
+ type: 'number',
3409
+ format: 'float',
3410
+ description: 'Total cost'
1770
3411
  }
1771
3412
  },
1772
- required: ['cluster_id', 'cluster_tier', 'product', 'node_name', 'sku', 'cpu', 'price', 'value', 'total'],
3413
+ required: [
3414
+ 'hour',
3415
+ 'cluster_id',
3416
+ 'product',
3417
+ 'value',
3418
+ 'price',
3419
+ 'total'
3420
+ ],
1773
3421
  additionalProperties: false
1774
3422
  };
1775
3423
  export const UserCreateInputSchema = {
@@ -1804,22 +3452,34 @@ export const UserCreateInputSchema = {
1804
3452
  password: {
1805
3453
  type: 'string',
1806
3454
  minLength: 8,
1807
- description: 'User password. Must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one number and one special character.'
3455
+ description: 'User password. Must be at least 8 characters long.'
1808
3456
  },
1809
3457
  status: {
1810
3458
  type: 'string',
1811
3459
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1812
3460
  example: 'active',
1813
- enum: ['active', 'inactive']
3461
+ enum: [
3462
+ 'active',
3463
+ 'inactive'
3464
+ ]
1814
3465
  },
1815
3466
  role: {
1816
3467
  type: 'string',
1817
- description: "User role. Can be 'Administrator', 'User'.",
3468
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1818
3469
  example: 'User',
1819
- enum: ['Administrator', 'User']
3470
+ enum: [
3471
+ 'Administrator',
3472
+ 'User'
3473
+ ]
1820
3474
  }
1821
3475
  },
1822
- required: ['email', 'first_name', 'last_name', 'code', 'password'],
3476
+ required: [
3477
+ 'email',
3478
+ 'first_name',
3479
+ 'last_name',
3480
+ 'code',
3481
+ 'password'
3482
+ ],
1823
3483
  additionalProperties: false
1824
3484
  };
1825
3485
  export const UserSchema = {
@@ -1847,15 +3507,21 @@ export const UserSchema = {
1847
3507
  },
1848
3508
  role: {
1849
3509
  type: 'string',
1850
- description: "User role. Can be 'Administrator', 'User'.",
3510
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1851
3511
  example: 'User',
1852
- enum: ['Administrator', 'User']
3512
+ enum: [
3513
+ 'Administrator',
3514
+ 'User'
3515
+ ]
1853
3516
  },
1854
3517
  status: {
1855
3518
  type: 'string',
1856
3519
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1857
3520
  example: 'active',
1858
- enum: ['active', 'inactive']
3521
+ enum: [
3522
+ 'active',
3523
+ 'inactive'
3524
+ ]
1859
3525
  },
1860
3526
  id: {
1861
3527
  type: 'string',
@@ -1868,31 +3534,17 @@ export const UserSchema = {
1868
3534
  format: 'date-time',
1869
3535
  description: 'Creation date of the user. ISO 8601 date string in UTC timezone',
1870
3536
  example: '2023-11-02T16:08:14.338Z'
1871
- },
1872
- cluster_permissions: {
1873
- type: 'array',
1874
- items: {
1875
- type: 'object',
1876
- properties: {
1877
- cluster_id: {
1878
- type: 'string',
1879
- format: 'uuid',
1880
- description: 'Unique identifier of the cluster. UUID v4 string in canonical form',
1881
- example: '035ce46d-44d8-4e58-a8a2-b0192d1c27df'
1882
- },
1883
- permissions: {
1884
- type: 'string',
1885
- description: 'User permissions to access the cluster. Can be `readwrite` or `readonly`.',
1886
- example: 'readwrite',
1887
- enum: ['readwrite', 'readonly']
1888
- }
1889
- },
1890
- required: ['cluster_id', 'permissions'],
1891
- additionalProperties: false
1892
- }
1893
3537
  }
1894
3538
  },
1895
- 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
+ ],
1896
3548
  additionalProperties: false
1897
3549
  };
1898
3550
  export const UserUpdateInputSchema = {
@@ -1920,15 +3572,21 @@ export const UserUpdateInputSchema = {
1920
3572
  },
1921
3573
  role: {
1922
3574
  type: 'string',
1923
- description: "User role. Can be 'Administrator', 'User'.",
3575
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1924
3576
  example: 'User',
1925
- enum: ['Administrator', 'User']
3577
+ enum: [
3578
+ 'Administrator',
3579
+ 'User'
3580
+ ]
1926
3581
  },
1927
3582
  status: {
1928
3583
  type: 'string',
1929
3584
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1930
3585
  example: 'active',
1931
- enum: ['active', 'inactive']
3586
+ enum: [
3587
+ 'active',
3588
+ 'inactive'
3589
+ ]
1932
3590
  }
1933
3591
  },
1934
3592
  additionalProperties: false