@cloudfleet/sdk 0.0.1-1fe7a9b → 0.0.1-200be61

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 +1364 -1058
  62. package/dist/schemas.gen.d.ts.map +1 -1
  63. package/dist/schemas.gen.js +1949 -1132
  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 +1319 -964
  82. package/dist/types.gen.d.ts.map +1 -1
  83. package/dist/zod.gen.d.ts +2010 -2736
  84. package/dist/zod.gen.d.ts.map +1 -1
  85. package/dist/zod.gen.js +830 -897
  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 = {
@@ -229,7 +754,9 @@ export const FleetCreateInputSchema = {
229
754
  description: 'CPU limit in cores.'
230
755
  }
231
756
  },
232
- required: ['cpu'],
757
+ required: [
758
+ 'cpu'
759
+ ],
233
760
  additionalProperties: false,
234
761
  description: 'Limits define a set of bounds for provisioning capacity.'
235
762
  },
@@ -245,38 +772,27 @@ export const FleetCreateInputSchema = {
245
772
  description: 'Project GCP Project id to deploy instances into'
246
773
  }
247
774
  },
248
- required: ['project'],
775
+ required: [
776
+ 'project'
777
+ ],
249
778
  additionalProperties: false
250
779
  },
251
780
  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
781
+ type: 'object',
782
+ properties: {
783
+ enabled: {
784
+ type: 'boolean',
785
+ default: true
265
786
  },
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
787
+ apiKey: {
788
+ type: 'string',
789
+ description: 'Hetzner Cloud API key with read / write access'
278
790
  }
279
- ]
791
+ },
792
+ required: [
793
+ 'apiKey'
794
+ ],
795
+ additionalProperties: false
280
796
  },
281
797
  aws: {
282
798
  type: 'object',
@@ -290,7 +806,9 @@ export const FleetCreateInputSchema = {
290
806
  description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
291
807
  }
292
808
  },
293
- required: ['controllerRoleArn'],
809
+ required: [
810
+ 'controllerRoleArn'
811
+ ],
294
812
  additionalProperties: false
295
813
  },
296
814
  id: {
@@ -300,14 +818,11 @@ export const FleetCreateInputSchema = {
300
818
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
301
819
  description: 'Unique identifier of the kubernetes fleet.',
302
820
  example: 'new-clouds-fleet'
303
- },
304
- type: {
305
- type: 'string',
306
- description: 'Specifies the fleet type: infrastructure managed by Cloudfleet or Connected Fleets.',
307
- enum: ['managed', 'connected']
308
821
  }
309
822
  },
310
- required: ['id', 'type'],
823
+ required: [
824
+ 'id'
825
+ ],
311
826
  additionalProperties: false
312
827
  };
313
828
  export const FleetSchema = {
@@ -323,7 +838,9 @@ export const FleetSchema = {
323
838
  description: 'CPU limit in cores.'
324
839
  }
325
840
  },
326
- required: ['cpu'],
841
+ required: [
842
+ 'cpu'
843
+ ],
327
844
  additionalProperties: false,
328
845
  description: 'Limits define a set of bounds for provisioning capacity.'
329
846
  },
@@ -339,38 +856,27 @@ export const FleetSchema = {
339
856
  description: 'Project GCP Project id to deploy instances into'
340
857
  }
341
858
  },
342
- required: ['project'],
859
+ required: [
860
+ 'project'
861
+ ],
343
862
  additionalProperties: false
344
863
  },
345
864
  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
865
+ type: 'object',
866
+ properties: {
867
+ enabled: {
868
+ type: 'boolean',
869
+ default: true
359
870
  },
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
871
+ apiKey: {
872
+ type: 'string',
873
+ description: 'Hetzner Cloud API key with read / write access'
372
874
  }
373
- ]
875
+ },
876
+ required: [
877
+ 'apiKey'
878
+ ],
879
+ additionalProperties: false
374
880
  },
375
881
  aws: {
376
882
  type: 'object',
@@ -384,7 +890,9 @@ export const FleetSchema = {
384
890
  description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
385
891
  }
386
892
  },
387
- required: ['controllerRoleArn'],
893
+ required: [
894
+ 'controllerRoleArn'
895
+ ],
388
896
  additionalProperties: false
389
897
  },
390
898
  id: {
@@ -394,14 +902,11 @@ export const FleetSchema = {
394
902
  pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$',
395
903
  description: 'Unique identifier of the kubernetes fleet.',
396
904
  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
905
  }
403
906
  },
404
- required: ['id', 'type'],
907
+ required: [
908
+ 'id'
909
+ ],
405
910
  additionalProperties: false
406
911
  };
407
912
  export const FleetUpdateInputSchema = {
@@ -417,7 +922,9 @@ export const FleetUpdateInputSchema = {
417
922
  description: 'CPU limit in cores.'
418
923
  }
419
924
  },
420
- required: ['cpu'],
925
+ required: [
926
+ 'cpu'
927
+ ],
421
928
  additionalProperties: false,
422
929
  description: 'Limits define a set of bounds for provisioning capacity.'
423
930
  },
@@ -433,38 +940,27 @@ export const FleetUpdateInputSchema = {
433
940
  description: 'Project GCP Project id to deploy instances into'
434
941
  }
435
942
  },
436
- required: ['project'],
943
+ required: [
944
+ 'project'
945
+ ],
437
946
  additionalProperties: false
438
947
  },
439
948
  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
949
+ type: 'object',
950
+ properties: {
951
+ enabled: {
952
+ type: 'boolean',
953
+ default: true
453
954
  },
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
955
+ apiKey: {
956
+ type: 'string',
957
+ description: 'Hetzner Cloud API key with read / write access'
466
958
  }
467
- ]
959
+ },
960
+ required: [
961
+ 'apiKey'
962
+ ],
963
+ additionalProperties: false
468
964
  },
469
965
  aws: {
470
966
  type: 'object',
@@ -478,282 +974,14 @@ export const FleetUpdateInputSchema = {
478
974
  description: 'ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.'
479
975
  }
480
976
  },
481
- required: ['controllerRoleArn'],
977
+ required: [
978
+ 'controllerRoleArn'
979
+ ],
482
980
  additionalProperties: false
483
981
  }
484
982
  },
485
983
  additionalProperties: false
486
984
  };
487
- export const InfrastructureFilterSchema = {
488
- type: 'object',
489
- 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
564
- },
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
570
- },
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
576
- },
577
- memory_min: {
578
- type: 'integer',
579
- minimum: 0,
580
- description: 'Minimum amount of RAM in gibibytes (GiB)',
581
- example: 32
582
- },
583
- memory_max: {
584
- type: 'integer',
585
- minimum: 0,
586
- description: 'Maximum amount of RAM in gibibytes (GiB)',
587
- example: 64
588
- },
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
594
- },
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
600
- },
601
- storage_total_min: {
602
- type: 'number',
603
- format: 'float',
604
- minimum: 10,
605
- description: 'Minimum total storage in GiB (attached and local)',
606
- example: 128
607
- },
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
614
- },
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
620
- },
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
626
- },
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
632
- },
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
638
- }
639
- },
640
- additionalProperties: false
641
- };
642
- export const InfrastructureInstanceSchema = {
643
- type: 'object',
644
- properties: {
645
- sku: {
646
- type: 'string',
647
- description: 'Cloudfleet instance SKU. Has a format of <provider>-<csp_region>-<instance_type>.',
648
- example: 'AWS-EU-WEST-1C-P4D.24XLARGE'
649
- },
650
- provider: {
651
- type: 'string',
652
- description: 'Normalized cloud service provider name. For the full list of supported providers, see [Providers](https://cloudfleet.ai/docs/cloud-infrastructure/providers/)',
653
- example: 'AWS'
654
- },
655
- region: {
656
- type: 'string',
657
- description: 'Normalized region. For the full list of normalized regions and their mapping to CSP regions, see [Regions](https://cloudfleet.ai/docs/cloud-infrastructure/node-regions/)',
658
- example: 'europe'
659
- },
660
- sub_region: {
661
- type: 'string',
662
- description: 'Normalized sub-region. For the full list of normalized regions and their mapping to CSP regions, see [Regions](https://cloudfleet.ai/docs/cloud-infrastructure/node-regions/)',
663
- example: 'west'
664
- },
665
- csp_region: {
666
- type: 'string',
667
- description: 'Region as defined by the cloud service provider',
668
- example: 'eu-west-1'
669
- },
670
- csp_zone: {
671
- type: 'string',
672
- description: 'Availability zone as defined by the cloud service provider',
673
- example: 'eu-west-1a'
674
- },
675
- instance_type: {
676
- type: 'string',
677
- description: 'Instance / VM type as defined by the cloud service provider',
678
- example: 'p4d.24xlarge'
679
- },
680
- architecture: {
681
- type: 'string',
682
- description: 'Instance CPU architecture',
683
- example: 'amd64'
684
- },
685
- os: {
686
- 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
709
- },
710
- accelerator_name: {
711
- 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'
714
- },
715
- accelerator_manufacturer: {
716
- 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
736
- },
737
- capacity_type: {
738
- type: 'string',
739
- description: 'Capacity type of the instance. E.g. `on-demand`, `spot`.',
740
- example: 'on-demand'
741
- },
742
- price: {
743
- type: 'number',
744
- format: 'float',
745
- description: 'Price of running the inctance per hour in USD as defined by the cloud service provider',
746
- example: 35.39655
747
- },
748
- available: {
749
- type: 'boolean',
750
- description: 'Whether this instance type is available.',
751
- example: true
752
- }
753
- },
754
- required: ['sku', 'provider', 'region', 'sub_region', 'csp_region', 'csp_zone', 'instance_type', 'architecture', 'os', 'vcpu', 'memory', 'local_storage', 'price'],
755
- additionalProperties: false
756
- };
757
985
  export const InviteSchema = {
758
986
  type: 'object',
759
987
  properties: {
@@ -786,7 +1014,9 @@ export const InviteSchema = {
786
1014
  example: '7kUZnH7nnKUFfvc4NK2KQF'
787
1015
  }
788
1016
  },
789
- required: ['date_created'],
1017
+ required: [
1018
+ 'date_created'
1019
+ ],
790
1020
  additionalProperties: false
791
1021
  };
792
1022
  export const InvoiceSchema = {
@@ -794,23 +1024,18 @@ export const InvoiceSchema = {
794
1024
  properties: {
795
1025
  id: {
796
1026
  type: 'string',
797
- format: 'uuid',
798
- description: 'Unique identifier of the invoice. UUID v4 string in canonical form',
799
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1027
+ description: 'Unique identifier of the invoice.',
1028
+ example: 'in_1234567890xCrwxghOTj1234'
800
1029
  },
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'
1030
+ number: {
1031
+ type: 'string'
806
1032
  },
807
1033
  status: {
808
1034
  type: 'string',
809
1035
  description: 'Status of the invoice',
810
- example: 'DRAFT',
811
- enum: ['DRAFT', 'COMMITTED', 'VOID']
1036
+ example: 'paid'
812
1037
  },
813
- amount: {
1038
+ total: {
814
1039
  type: 'number',
815
1040
  format: 'float',
816
1041
  description: 'Total amount of the invoice',
@@ -819,377 +1044,194 @@ export const InvoiceSchema = {
819
1044
  currency: {
820
1045
  type: 'string',
821
1046
  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']
1047
+ example: 'usd'
824
1048
  },
825
- creditAdj: {
826
- type: 'number',
827
- format: 'float',
828
- description: 'Total amount of credit adjustments',
829
- example: 0
830
- },
831
- refundAdj: {
832
- type: 'number',
833
- format: 'float',
834
- description: 'Total amount of refund adjustments',
835
- example: 0
1049
+ created: {
1050
+ type: 'string',
1051
+ format: 'date-time',
1052
+ description: 'Timestamp when the invoice was issued. ISO 8601 date string in the UTC timezone.',
1053
+ example: '2023-12-20T13:53:32.000Z'
836
1054
  },
837
- invoiceDate: {
1055
+ period_start: {
838
1056
  type: 'string',
839
- description: 'Date of the invoice',
840
- example: '2019-01-01T00:00:00.000Z'
1057
+ format: 'date-time',
1058
+ description: 'Billing period start timestamp. ISO 8601 date string in the UTC timezone.',
1059
+ example: '2023-12-20T13:53:32.000Z'
841
1060
  },
842
- targetDate: {
1061
+ period_end: {
843
1062
  type: 'string',
844
- description: 'Target date of the invoice',
845
- example: '2019-01-01T00:00:00.000Z'
1063
+ format: 'date-time',
1064
+ description: 'Billing period end timestamp. ISO 8601 date string in the UTC timezone.',
1065
+ example: '2023-12-20T13:53:32.000Z'
846
1066
  },
847
- invoiceNumber: {
1067
+ invoice_pdf: {
1068
+ type: 'string'
1069
+ }
1070
+ },
1071
+ required: [
1072
+ 'created',
1073
+ 'period_start',
1074
+ 'period_end'
1075
+ ],
1076
+ additionalProperties: false
1077
+ };
1078
+ export const MarketplaceListingFilesSchema = {
1079
+ type: 'object',
1080
+ properties: {
1081
+ chartYaml: {
848
1082
  type: 'string',
849
- description: 'Number of the invoice',
850
- example: 'INV-0001'
1083
+ description: 'Raw Chart.yaml content from the Helm chart',
1084
+ example: 'apiVersion: v2\nname: nginx-ingress\nversion: 1.18.2-cfke.45\nappVersion: 1.9.4'
851
1085
  },
852
- balance: {
853
- type: 'number',
854
- format: 'float',
855
- description: 'Balance of the invoice',
856
- example: 100
1086
+ valuesYaml: {
1087
+ type: 'string',
1088
+ description: 'Raw values.yaml content from the Helm chart',
1089
+ example: 'replicaCount: 1\nimage:\n repository: nginx\n tag: latest'
857
1090
  },
858
- bundleKeys: {
1091
+ valuesSchemaJson: {
859
1092
  type: 'string',
860
- description: 'Bundle keys of the invoice',
861
- example: 'bundleKey1,bundleKey2'
1093
+ description: 'JSON schema for values.yaml as a string',
1094
+ example: '{"type":"object","properties":{"replicaCount":{"type":"number"}}}'
1095
+ }
1096
+ },
1097
+ additionalProperties: false
1098
+ };
1099
+ export const MarketplaceListingSchema = {
1100
+ type: 'object',
1101
+ properties: {
1102
+ name: {
1103
+ type: 'string',
1104
+ description: 'Name of the chart',
1105
+ example: 'nginx-ingress'
862
1106
  },
863
- credits: {
1107
+ versions: {
864
1108
  type: 'array',
865
1109
  items: {
866
- type: 'object',
867
- properties: {
868
- id: {
869
- 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'
1110
+ type: 'string',
1111
+ 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-]+)*))?$',
1112
+ description: 'Specific version of the chart',
1113
+ example: '1.18.2-cfke.45'
1114
+ },
1115
+ description: 'Available versions of the chart'
1116
+ },
1117
+ version_channels: {
1118
+ type: 'array',
1119
+ items: {
1120
+ type: 'string',
1121
+ 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-]+)*))?$',
1122
+ description: 'Version channel pattern',
1123
+ example: '1.18.x-cfke.x'
1124
+ },
1125
+ description: 'Version channels for the chart'
1126
+ },
1127
+ latestVersion: {
1128
+ type: 'string',
1129
+ description: 'Latest version of the chart',
1130
+ example: '1.18.2-cfke.45'
1131
+ },
1132
+ metadata: {
1133
+ type: 'object',
1134
+ properties: {
1135
+ name: {
1136
+ type: 'string',
1137
+ description: 'Chart name from metadata',
1138
+ example: 'nginx-ingress'
1139
+ },
1140
+ version: {
1141
+ type: 'string',
1142
+ description: 'Chart version from metadata',
1143
+ example: '1.18.2-cfke.45'
1144
+ },
1145
+ description: {
1146
+ type: 'string',
1147
+ description: 'Chart description',
1148
+ example: 'NGINX Ingress Controller for Kubernetes'
1149
+ },
1150
+ appVersion: {
1151
+ type: 'string',
1152
+ description: 'Application version',
1153
+ example: '1.9.4'
1154
+ },
1155
+ apiVersion: {
1156
+ type: 'string',
1157
+ description: 'Helm API version',
1158
+ example: 'v2'
1159
+ },
1160
+ keywords: {
1161
+ type: 'array',
1162
+ items: {
1163
+ type: 'string'
879
1164
  },
880
- productName: {
881
- type: 'string',
882
- description: 'Name of the product',
883
- example: 'Research team'
1165
+ description: 'Chart keywords',
1166
+ example: [
1167
+ 'ingress',
1168
+ 'nginx',
1169
+ 'load-balancer'
1170
+ ]
1171
+ },
1172
+ home: {
1173
+ type: 'string',
1174
+ description: 'Chart home URL',
1175
+ example: 'https://kubernetes.github.io/ingress-nginx/'
1176
+ },
1177
+ icon: {
1178
+ type: 'string',
1179
+ description: 'A URL to an SVG or PNG image to be used as an icon',
1180
+ example: 'https://cloudfleet.ai/images/marketplace/icons/ingress-nginx.png'
1181
+ },
1182
+ sources: {
1183
+ type: 'array',
1184
+ items: {
1185
+ type: 'string'
884
1186
  },
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'
969
- },
970
- catalogEffectiveDate: {
971
- type: 'string',
972
- description: 'Effective date of the catalog',
973
- example: '2019-01-01T00:00:00.000Z'
974
- },
975
- childItems: {
976
- type: 'array',
977
- items: {
978
- oneOf: [
979
- {
980
- type: 'array'
981
- },
982
- {
983
- type: 'boolean'
984
- },
985
- {
986
- type: 'number'
987
- },
988
- {
989
- type: 'object',
990
- additionalProperties: true
991
- },
992
- {
993
- type: 'string'
994
- }
995
- ]
996
- },
997
- description: 'Child items of the invoice item'
998
- }
1187
+ description: 'Chart source URLs',
1188
+ example: [
1189
+ 'https://github.com/kubernetes/ingress-nginx'
1190
+ ]
999
1191
  },
1000
- additionalProperties: false
1001
- },
1002
- description: 'Credits of the invoice'
1003
- },
1004
- items: {
1005
- type: 'array',
1006
- items: {
1007
- type: 'object',
1008
- properties: {
1009
- id: {
1010
- type: 'string',
1011
- format: 'uuid',
1012
- description: 'Unique identifier of the invoice item. UUID v4 string in canonical form',
1013
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1014
- },
1015
- linkedInvoiceItemId: {
1016
- type: 'string',
1017
- format: 'uuid',
1018
- description: 'Unique identifier of the linked invoice item. UUID v4 string in canonical form',
1019
- example: '415026b6-f00f-44f8-968d-fc6ef4d0fc6d'
1020
- },
1021
- productName: {
1022
- type: 'string',
1023
- description: 'Name of the product',
1024
- example: 'Research team'
1025
- },
1026
- planName: {
1027
- type: 'string',
1028
- description: 'Name of the plan',
1029
- example: 'Plan A'
1030
- },
1031
- phaseName: {
1032
- type: 'string',
1033
- description: 'Name of the phase',
1034
- example: 'Phase A'
1035
- },
1036
- usageName: {
1037
- type: 'string',
1038
- description: 'Name of the usage',
1039
- example: 'Usage A'
1040
- },
1041
- prettyProductName: {
1042
- type: 'string',
1043
- description: 'Pretty name of the product',
1044
- example: 'Research team'
1045
- },
1046
- prettyPlanName: {
1047
- type: 'string',
1048
- description: 'Pretty name of the plan',
1049
- example: 'Plan A'
1050
- },
1051
- prettyPhaseName: {
1052
- type: 'string',
1053
- description: 'Pretty name of the phase',
1054
- example: 'Phase A'
1055
- },
1056
- prettyUsageName: {
1057
- type: 'string',
1058
- description: 'Pretty name of the usage',
1059
- example: 'Usage A'
1060
- },
1061
- itemType: {
1062
- type: 'string',
1063
- description: 'Type of the invoice item',
1064
- example: 'EXTERNAL_CHARGE',
1065
- enum: ['EXTERNAL_CHARGE', 'FIXED', 'RECURRING', 'REPAIR_ADJ', 'CBA_ADJ', 'CREDIT_ADJ', 'ITEM_ADJ', 'USAGE', 'TAX', 'PARENT_SUMMARY']
1066
- },
1067
- description: {
1068
- type: 'string',
1069
- description: 'Description of the invoice item',
1070
- example: 'Description of the invoice item'
1071
- },
1072
- startDate: {
1073
- type: 'string',
1074
- description: 'Start date of the invoice item',
1075
- example: '2019-01-01T00:00:00.000Z'
1076
- },
1077
- endDate: {
1078
- type: 'string',
1079
- description: 'End date of the invoice item',
1080
- example: '2019-01-01T00:00:00.000Z'
1081
- },
1082
- amount: {
1083
- type: 'number',
1084
- format: 'float',
1085
- description: 'Amount of the invoice item',
1086
- example: 100
1087
- },
1088
- rate: {
1089
- type: 'number',
1090
- format: 'float',
1091
- description: 'Rate of the invoice item',
1092
- example: 100
1093
- },
1094
- currency: {
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: {
1107
- type: 'string',
1108
- description: 'Details of the invoice item',
1109
- example: 'Details of the invoice item'
1110
- },
1111
- catalogEffectiveDate: {
1112
- type: 'string',
1113
- description: 'Effective date of the catalog',
1114
- example: '2019-01-01T00:00:00.000Z'
1115
- },
1116
- childItems: {
1117
- type: 'array',
1118
- 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
- ]
1192
+ maintainers: {
1193
+ type: 'array',
1194
+ items: {
1195
+ type: 'object',
1196
+ properties: {
1197
+ name: {
1198
+ type: 'string',
1199
+ description: 'Maintainer name',
1200
+ example: 'NGINX Team'
1201
+ },
1202
+ email: {
1203
+ type: 'string',
1204
+ description: 'Maintainer email',
1205
+ example: 'support@nginx.org'
1206
+ }
1137
1207
  },
1138
- description: 'Child items of the invoice item'
1139
- }
1140
- },
1141
- additionalProperties: false
1208
+ required: [
1209
+ 'name'
1210
+ ],
1211
+ additionalProperties: false
1212
+ },
1213
+ description: 'Chart maintainers'
1214
+ }
1142
1215
  },
1143
- description: 'Items of the invoice'
1216
+ required: [
1217
+ 'name',
1218
+ 'version'
1219
+ ],
1220
+ additionalProperties: false,
1221
+ description: 'Chart metadata'
1144
1222
  }
1145
1223
  },
1224
+ required: [
1225
+ 'name',
1226
+ 'versions',
1227
+ 'version_channels',
1228
+ 'latestVersion'
1229
+ ],
1146
1230
  additionalProperties: false
1147
1231
  };
1148
- export const OrganizationContactInfoSchema = {
1232
+ export const OrganizationCreateInputSchema = {
1149
1233
  type: 'object',
1150
1234
  properties: {
1151
- address1: {
1152
- type: 'string',
1153
- nullable: true,
1154
- description: 'Street address, P.O. box, c/o',
1155
- example: '123 Main St.'
1156
- },
1157
- address2: {
1158
- type: 'string',
1159
- nullable: true,
1160
- description: 'Apartment, suite, unit, building, floor, etc.',
1161
- example: 'Suite 100'
1162
- },
1163
- postalCode: {
1164
- type: 'string',
1165
- nullable: true,
1166
- description: 'Postal code as a string.',
1167
- example: '94105'
1168
- },
1169
- city: {
1170
- type: 'string',
1171
- nullable: true,
1172
- description: 'City or town name.',
1173
- example: 'San Francisco'
1174
- },
1175
- state: {
1176
- type: 'string',
1177
- nullable: true,
1178
- description: 'State, province, or region name.',
1179
- example: 'CA'
1180
- },
1181
- country: {
1182
- type: 'string',
1183
- nullable: true,
1184
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1185
- example: 'US'
1186
- },
1187
- phone: {
1188
- type: 'string',
1189
- nullable: true,
1190
- description: 'Phone number as a string.',
1191
- example: '+1 555 555 5555'
1192
- },
1193
1235
  email: {
1194
1236
  type: 'string',
1195
1237
  format: 'email',
@@ -1205,15 +1247,8 @@ export const OrganizationContactInfoSchema = {
1205
1247
  type: 'string',
1206
1248
  description: 'Last name of the billing contact person.',
1207
1249
  example: 'Doe'
1208
- }
1209
- },
1210
- required: ['email', 'first_name', 'last_name'],
1211
- additionalProperties: false
1212
- };
1213
- export const OrganizationCreateInputSchema = {
1214
- type: 'object',
1215
- properties: {
1216
- name: {
1250
+ },
1251
+ company_name: {
1217
1252
  type: 'string',
1218
1253
  maxLength: 120,
1219
1254
  minLength: 2,
@@ -1221,150 +1256,37 @@ export const OrganizationCreateInputSchema = {
1221
1256
  description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
1222
1257
  example: 'ACME Corp.'
1223
1258
  },
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.'
1282
- },
1283
1259
  password: {
1284
1260
  type: 'string',
1285
1261
  minLength: 8,
1286
1262
  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.'
1287
1263
  }
1288
1264
  },
1289
- required: ['name', 'contactInfo', 'password'],
1265
+ required: [
1266
+ 'email',
1267
+ 'first_name',
1268
+ 'last_name',
1269
+ 'company_name',
1270
+ 'password'
1271
+ ],
1290
1272
  additionalProperties: false
1291
1273
  };
1292
1274
  export const OrganizationSchema = {
1293
1275
  type: 'object',
1294
1276
  properties: {
1277
+ id: {
1278
+ type: 'string',
1279
+ format: 'uuid',
1280
+ description: 'Unique identifier of the organization. UUID v4 string in canonical form',
1281
+ example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
1282
+ },
1295
1283
  name: {
1296
1284
  type: 'string',
1297
1285
  maxLength: 120,
1298
1286
  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
1287
  description: 'Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.',
1301
1288
  example: 'ACME Corp.'
1302
1289
  },
1303
- contactInfo: {
1304
- type: 'object',
1305
- properties: {
1306
- address1: {
1307
- type: 'string',
1308
- description: 'Street address, P.O. box, c/o',
1309
- example: '123 Main St.'
1310
- },
1311
- address2: {
1312
- type: 'string',
1313
- description: 'Apartment, suite, unit, building, floor, etc.',
1314
- example: 'Suite 100'
1315
- },
1316
- postalCode: {
1317
- type: 'string',
1318
- description: 'Postal code as a string.',
1319
- example: '94105'
1320
- },
1321
- city: {
1322
- type: 'string',
1323
- description: 'City or town name.',
1324
- example: 'San Francisco'
1325
- },
1326
- state: {
1327
- type: 'string',
1328
- description: 'State, province, or region name.',
1329
- example: 'CA'
1330
- },
1331
- country: {
1332
- type: 'string',
1333
- description: 'Country as a ISO 3166-1 alpha-2 country code.',
1334
- example: 'US'
1335
- },
1336
- phone: {
1337
- type: 'string',
1338
- description: 'Phone number as a string.',
1339
- example: '+1 555 555 5555'
1340
- },
1341
- email: {
1342
- type: 'string',
1343
- format: 'email',
1344
- description: 'Email address used for billing as a string.',
1345
- example: 'email@example.com'
1346
- },
1347
- first_name: {
1348
- type: 'string',
1349
- description: 'First name of the billing contact person.',
1350
- example: 'John'
1351
- },
1352
- last_name: {
1353
- type: 'string',
1354
- description: 'Last name of the billing contact person.',
1355
- example: 'Doe'
1356
- }
1357
- },
1358
- required: ['email', 'first_name', 'last_name'],
1359
- additionalProperties: false,
1360
- description: 'Organization contact information and billing address.'
1361
- },
1362
- id: {
1363
- type: 'string',
1364
- format: 'uuid',
1365
- description: 'Unique identifier of the organization. UUID v4 string in canonical form',
1366
- example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
1367
- },
1368
1290
  date_created: {
1369
1291
  type: 'string',
1370
1292
  format: 'date-time',
@@ -1402,12 +1324,6 @@ export const OrganizationSchema = {
1402
1324
  description: 'Maximum number of fleets that can be created per cluster.',
1403
1325
  example: 999
1404
1326
  },
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
1327
  cluster_tiers: {
1412
1328
  type: 'array',
1413
1329
  items: {
@@ -1434,168 +1350,978 @@ export const OrganizationSchema = {
1434
1350
  id: {
1435
1351
  type: 'string',
1436
1352
  description: 'Id of the control plane version. Used in API calls.',
1437
- example: '1.29.x-cfke.x'
1353
+ example: '1.33.x-cfke.x'
1438
1354
  },
1439
1355
  label: {
1440
1356
  type: 'string',
1441
1357
  description: 'Label of the control plane version. Used in frontent UI.',
1442
- example: '1.29.x (Always latest 1.29 patch version)'
1358
+ example: '1.33.x (Always latest 1.33 patch version)'
1443
1359
  }
1444
1360
  },
1445
- required: ['id', 'label'],
1361
+ required: [
1362
+ 'id',
1363
+ 'label'
1364
+ ],
1446
1365
  additionalProperties: false
1447
1366
  },
1448
1367
  minItems: 1,
1449
1368
  description: 'List of CFKE control plane versions available for the organization.'
1369
+ },
1370
+ cfcr_storage_gb: {
1371
+ type: 'integer',
1372
+ minimum: -1,
1373
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
1374
+ example: 500
1450
1375
  }
1451
1376
  },
1452
- required: ['basic_clusters_max', 'basic_clusters_available', 'pro_clusters_max', 'pro_clusters_available', 'fleets_max', 'managed_fleets_cpu_max', 'cluster_tiers', 'regions', 'versions'],
1377
+ required: [
1378
+ 'basic_clusters_max',
1379
+ 'basic_clusters_available',
1380
+ 'pro_clusters_max',
1381
+ 'pro_clusters_available',
1382
+ 'fleets_max',
1383
+ 'cluster_tiers',
1384
+ 'regions',
1385
+ 'versions',
1386
+ 'cfcr_storage_gb'
1387
+ ],
1453
1388
  additionalProperties: false,
1454
1389
  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
1390
  },
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']
1462
- },
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
1391
  status: {
1466
1392
  type: 'string',
1467
1393
  description: 'Status of the organization. Can be `active` or `closed`, or `suspended`.',
1468
- enum: ['active', 'closed', 'suspended']
1394
+ enum: [
1395
+ 'active',
1396
+ 'closed',
1397
+ 'suspended'
1398
+ ]
1469
1399
  }
1470
1400
  },
1471
- required: ['name', 'contactInfo', 'id', 'date_created', 'quota', 'pending_actions', 'status'],
1401
+ required: [
1402
+ 'id',
1403
+ 'date_created',
1404
+ 'quota',
1405
+ 'status'
1406
+ ],
1472
1407
  additionalProperties: false
1473
1408
  };
1474
- export const OrganizationUpdateInputSchema = {
1409
+ export const PaymentMethodSchema = {
1475
1410
  type: 'object',
1476
1411
  properties: {
1477
- name: {
1412
+ id: {
1413
+ type: 'string',
1414
+ format: 'uuid',
1415
+ description: 'Unique identifier of the organization. UUID v4 string in canonical form.',
1416
+ example: 'e94d30ec-a2dd-4dcb-832c-ac2be144ba91'
1417
+ },
1418
+ setup: {
1419
+ type: 'boolean',
1420
+ description: 'Whether organization payment method was set up and ready to use for payments.',
1421
+ example: true
1422
+ },
1423
+ type: {
1424
+ type: 'string',
1425
+ nullable: true,
1426
+ description: 'Payment method type type. Only `card` payments supported at the moment.',
1427
+ example: 'card',
1428
+ enum: [
1429
+ 'card'
1430
+ ]
1431
+ },
1432
+ last4: {
1433
+ type: 'string',
1434
+ nullable: true,
1435
+ description: 'Last 4 digits of the payment card number.',
1436
+ example: '4242'
1437
+ },
1438
+ exp_month: {
1439
+ type: 'integer',
1440
+ minimum: 1,
1441
+ maximum: 12,
1442
+ nullable: true,
1443
+ description: 'Two-digit number representing the card\'s expiration month.',
1444
+ example: '12'
1445
+ },
1446
+ exp_year: {
1447
+ type: 'integer',
1448
+ minimum: 2024,
1449
+ nullable: true,
1450
+ description: 'Four-digit number representing the card\'s expiration year.',
1451
+ example: '2028'
1452
+ },
1453
+ brand: {
1454
+ type: 'string',
1455
+ nullable: true,
1456
+ description: 'Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.',
1457
+ example: 'visa',
1458
+ enum: [
1459
+ 'amex',
1460
+ 'diners',
1461
+ 'discover',
1462
+ 'eftpos_au',
1463
+ 'jcb',
1464
+ 'mastercard',
1465
+ 'unionpay',
1466
+ 'visa',
1467
+ 'unknown'
1468
+ ]
1469
+ }
1470
+ },
1471
+ required: [
1472
+ 'id',
1473
+ 'setup',
1474
+ 'type',
1475
+ 'last4',
1476
+ 'exp_month',
1477
+ 'exp_year',
1478
+ 'brand'
1479
+ ],
1480
+ additionalProperties: false
1481
+ };
1482
+ export const PlatformQuotaSchema = {
1483
+ type: 'object',
1484
+ properties: {
1485
+ basic_clusters_max: {
1486
+ type: 'integer',
1487
+ minimum: 0,
1488
+ description: 'Maximum number of Basic clusters that can be created.',
1489
+ example: 999
1490
+ },
1491
+ basic_clusters_available: {
1492
+ type: 'integer',
1493
+ description: 'Available number of Basic clusters that can be created.',
1494
+ example: 999
1495
+ },
1496
+ pro_clusters_max: {
1497
+ type: 'integer',
1498
+ minimum: 0,
1499
+ description: 'Maximum number of Pro clusters that can be created.',
1500
+ example: 999
1501
+ },
1502
+ pro_clusters_available: {
1503
+ type: 'integer',
1504
+ description: 'Available number of Pro clusters that can be created.',
1505
+ example: 999
1506
+ },
1507
+ fleets_max: {
1508
+ type: 'integer',
1509
+ minimum: 0,
1510
+ description: 'Maximum number of fleets that can be created per cluster.',
1511
+ example: 999
1512
+ },
1513
+ cluster_tiers: {
1514
+ type: 'array',
1515
+ items: {
1516
+ type: 'string',
1517
+ example: 'basic'
1518
+ },
1519
+ minItems: 0,
1520
+ description: 'List of Cloudfleet cluster tiers available for the organization.'
1521
+ },
1522
+ regions: {
1523
+ type: 'array',
1524
+ items: {
1525
+ type: 'string',
1526
+ example: 'northamerica-central-1'
1527
+ },
1528
+ minItems: 1,
1529
+ description: 'List of Cloudfleet control plane regions available for the organization.'
1530
+ },
1531
+ versions: {
1532
+ type: 'array',
1533
+ items: {
1534
+ type: 'object',
1535
+ properties: {
1536
+ id: {
1537
+ type: 'string',
1538
+ description: 'Id of the control plane version. Used in API calls.',
1539
+ example: '1.33.x-cfke.x'
1540
+ },
1541
+ label: {
1542
+ type: 'string',
1543
+ description: 'Label of the control plane version. Used in frontent UI.',
1544
+ example: '1.33.x (Always latest 1.33 patch version)'
1545
+ }
1546
+ },
1547
+ required: [
1548
+ 'id',
1549
+ 'label'
1550
+ ],
1551
+ additionalProperties: false
1552
+ },
1553
+ minItems: 1,
1554
+ description: 'List of CFKE control plane versions available for the organization.'
1555
+ },
1556
+ cfcr_storage_gb: {
1557
+ type: 'integer',
1558
+ minimum: -1,
1559
+ description: 'Organization-level maximum CFCR storage volume in GB. -1 means no limit.',
1560
+ example: 500
1561
+ }
1562
+ },
1563
+ required: [
1564
+ 'basic_clusters_max',
1565
+ 'basic_clusters_available',
1566
+ 'pro_clusters_max',
1567
+ 'pro_clusters_available',
1568
+ 'fleets_max',
1569
+ 'cluster_tiers',
1570
+ 'regions',
1571
+ 'versions',
1572
+ 'cfcr_storage_gb'
1573
+ ],
1574
+ additionalProperties: false
1575
+ };
1576
+ export const RegistryRepositorySchema = {
1577
+ type: 'object',
1578
+ properties: {
1579
+ name: {
1580
+ type: 'string',
1581
+ description: 'Repository name.',
1582
+ example: 'my-app'
1583
+ },
1584
+ region: {
1585
+ type: 'string',
1586
+ description: 'Registry region.',
1587
+ example: 'northamerica'
1588
+ },
1589
+ uri: {
1590
+ type: 'string',
1591
+ description: 'Full URI of the repository.',
1592
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
1593
+ }
1594
+ },
1595
+ required: [
1596
+ 'name',
1597
+ 'region',
1598
+ 'uri'
1599
+ ],
1600
+ additionalProperties: false
1601
+ };
1602
+ export const RegistryRepositoryWithTagsSchema = {
1603
+ type: 'object',
1604
+ properties: {
1605
+ name: {
1606
+ type: 'string',
1607
+ description: 'Repository name.',
1608
+ example: 'my-app'
1609
+ },
1610
+ region: {
1611
+ type: 'string',
1612
+ description: 'Registry region.',
1613
+ example: 'northamerica'
1614
+ },
1615
+ uri: {
1616
+ type: 'string',
1617
+ description: 'Full URI of the repository.',
1618
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app'
1619
+ },
1620
+ tags: {
1621
+ type: 'array',
1622
+ items: {
1623
+ type: 'object',
1624
+ properties: {
1625
+ name: {
1626
+ type: 'string',
1627
+ description: 'Tag name.',
1628
+ example: 'latest'
1629
+ },
1630
+ size: {
1631
+ type: 'number',
1632
+ format: 'float',
1633
+ description: 'Size of the tag in bytes.',
1634
+ example: 123456789
1635
+ },
1636
+ mediaType: {
1637
+ type: 'string',
1638
+ description: 'Media type of the manifest.',
1639
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1640
+ },
1641
+ platforms: {
1642
+ type: 'array',
1643
+ items: {
1644
+ type: 'string'
1645
+ },
1646
+ description: 'Array of platform strings for multi-arch images (e.g., linux/amd64, linux/arm64).',
1647
+ example: [
1648
+ 'linux/amd64',
1649
+ 'linux/arm64'
1650
+ ]
1651
+ }
1652
+ },
1653
+ required: [
1654
+ 'name',
1655
+ 'size'
1656
+ ],
1657
+ additionalProperties: false
1658
+ },
1659
+ description: 'Array of tags in the repository.'
1660
+ },
1661
+ totalSize: {
1662
+ type: 'number',
1663
+ format: 'float',
1664
+ description: 'Total size of all tags in the repository in bytes.',
1665
+ example: 987654321
1666
+ }
1667
+ },
1668
+ required: [
1669
+ 'name',
1670
+ 'region',
1671
+ 'uri',
1672
+ 'tags',
1673
+ 'totalSize'
1674
+ ],
1675
+ additionalProperties: false
1676
+ };
1677
+ export const RegistryTagSchema = {
1678
+ type: 'object',
1679
+ properties: {
1680
+ name: {
1681
+ type: 'string',
1682
+ description: 'Tag name.',
1683
+ example: 'latest'
1684
+ },
1685
+ digest: {
1686
+ type: 'string',
1687
+ description: 'Manifest digest for pulling by digest.',
1688
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1689
+ },
1690
+ mediaType: {
1691
+ type: 'string',
1692
+ description: 'Media type of the manifest.',
1693
+ example: 'application/vnd.docker.distribution.manifest.v2+json'
1694
+ },
1695
+ config: {
1696
+ type: 'object',
1697
+ properties: {
1698
+ size: {
1699
+ type: 'number',
1700
+ format: 'float',
1701
+ description: 'Size of the config in bytes.',
1702
+ example: 1234
1703
+ }
1704
+ },
1705
+ required: [
1706
+ 'size'
1707
+ ],
1708
+ additionalProperties: false,
1709
+ description: 'Manifest config metadata.'
1710
+ },
1711
+ layers: {
1712
+ type: 'array',
1713
+ items: {
1714
+ type: 'object',
1715
+ properties: {
1716
+ digest: {
1717
+ type: 'string',
1718
+ description: 'Digest of the layer.',
1719
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1720
+ },
1721
+ size: {
1722
+ type: 'number',
1723
+ format: 'float',
1724
+ description: 'Size of the layer in bytes.',
1725
+ example: 5678
1726
+ }
1727
+ },
1728
+ required: [
1729
+ 'size'
1730
+ ],
1731
+ additionalProperties: false
1732
+ },
1733
+ description: 'Array of layer metadata.'
1734
+ },
1735
+ manifests: {
1736
+ type: 'array',
1737
+ items: {
1738
+ type: 'object',
1739
+ properties: {
1740
+ digest: {
1741
+ type: 'string',
1742
+ description: 'Digest of the manifest.',
1743
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1744
+ },
1745
+ platform: {
1746
+ type: 'object',
1747
+ properties: {
1748
+ architecture: {
1749
+ type: 'string',
1750
+ description: 'Architecture of the platform.',
1751
+ example: 'amd64'
1752
+ },
1753
+ os: {
1754
+ type: 'string',
1755
+ description: 'Operating system of the platform.',
1756
+ example: 'linux'
1757
+ },
1758
+ variant: {
1759
+ type: 'string',
1760
+ description: 'Variant of the platform (e.g., v7, v8 for ARM).',
1761
+ example: 'v8'
1762
+ }
1763
+ },
1764
+ required: [
1765
+ 'architecture',
1766
+ 'os'
1767
+ ],
1768
+ additionalProperties: false,
1769
+ description: 'Platform information for the manifest.'
1770
+ },
1771
+ layers: {
1772
+ type: 'array',
1773
+ items: {
1774
+ type: 'object',
1775
+ properties: {
1776
+ digest: {
1777
+ type: 'string',
1778
+ description: 'Digest of the layer.',
1779
+ example: 'sha256:abcd1234ef567890abcd1234ef567890abcd1234ef567890abcd1234ef567890'
1780
+ },
1781
+ size: {
1782
+ type: 'number',
1783
+ format: 'float',
1784
+ description: 'Size of the layer in bytes.',
1785
+ example: 5678
1786
+ }
1787
+ },
1788
+ required: [
1789
+ 'size'
1790
+ ],
1791
+ additionalProperties: false
1792
+ },
1793
+ description: 'Layers for this platform.'
1794
+ },
1795
+ size: {
1796
+ type: 'number',
1797
+ format: 'float',
1798
+ description: 'Total size of this platform manifest in bytes.',
1799
+ example: 12345678
1800
+ }
1801
+ },
1802
+ required: [
1803
+ 'digest'
1804
+ ],
1805
+ additionalProperties: false
1806
+ },
1807
+ description: 'Array of manifests for multi-arch images.'
1808
+ },
1809
+ size: {
1810
+ type: 'number',
1811
+ format: 'float',
1812
+ description: 'Total size of the tag in bytes.',
1813
+ example: 123456789
1814
+ },
1815
+ region: {
1816
+ type: 'string',
1817
+ description: 'Registry region.',
1818
+ example: 'northamerica'
1819
+ },
1820
+ repository: {
1821
+ type: 'string',
1822
+ description: 'Repository name.',
1823
+ example: 'my-app'
1824
+ },
1825
+ uri: {
1826
+ type: 'string',
1827
+ description: 'Full URI of the tag.',
1828
+ example: 'ssds123e-6651-4e5d-9c04-079f6532989b.northamerica.registry.cloudfleet.dev/my-app:latest'
1829
+ }
1830
+ },
1831
+ required: [
1832
+ 'name',
1833
+ 'digest',
1834
+ 'size',
1835
+ 'region',
1836
+ 'repository',
1837
+ 'uri'
1838
+ ],
1839
+ additionalProperties: false
1840
+ };
1841
+ export const TicketAttachmentSchema = {
1842
+ type: 'object',
1843
+ properties: {
1844
+ id: {
1845
+ type: 'string',
1846
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
1847
+ example: '60c72b2f9f1b2c001f8e4d3c'
1848
+ },
1849
+ filename: {
1850
+ type: 'string',
1851
+ description: 'Original filename as uploaded.',
1852
+ example: 'debug.log'
1853
+ },
1854
+ content_type: {
1855
+ type: 'string',
1856
+ description: 'MIME content type of the attachment.',
1857
+ example: 'text/plain'
1858
+ },
1859
+ size: {
1860
+ type: 'integer',
1861
+ description: 'Size of the attachment in bytes.',
1862
+ example: 12345
1863
+ }
1864
+ },
1865
+ required: [
1866
+ 'id',
1867
+ 'filename',
1868
+ 'content_type',
1869
+ 'size'
1870
+ ],
1871
+ additionalProperties: false
1872
+ };
1873
+ export const TicketCreateInputSchema = {
1874
+ type: 'object',
1875
+ properties: {
1876
+ category: {
1877
+ type: 'string',
1878
+ description: 'Ticket category. Drives auto-assignment and may carry a subcategory in `properties`.',
1879
+ example: 'technical',
1880
+ enum: [
1881
+ 'billing',
1882
+ 'technical',
1883
+ 'general'
1884
+ ]
1885
+ },
1886
+ body: {
1887
+ type: 'string',
1888
+ maxLength: 50000,
1889
+ minLength: 1,
1890
+ pattern: '\\S',
1891
+ description: 'Initial message body in markdown. There is no separate subject — the first message body is the description.',
1892
+ example: 'My cluster cannot reach the registry. Logs attached.'
1893
+ },
1894
+ properties: {
1895
+ type: 'object',
1896
+ additionalProperties: true,
1897
+ description: 'Free-form key/value bag set by the UI (e.g. `subcategory`, `cluster_id`, `cluster_name`, `region`).',
1898
+ example: {
1899
+ subcategory: 'cluster-question',
1900
+ cluster_id: '60c72b2f9f1b2c001f8e4d3a'
1901
+ }
1902
+ }
1903
+ },
1904
+ required: [
1905
+ 'category',
1906
+ 'body'
1907
+ ],
1908
+ additionalProperties: false
1909
+ };
1910
+ export const TicketListResponseSchema = {
1911
+ type: 'object',
1912
+ properties: {
1913
+ items: {
1914
+ type: 'array',
1915
+ items: {
1916
+ type: 'object',
1917
+ properties: {
1918
+ id: {
1919
+ type: 'string',
1920
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
1921
+ example: '60c72b2f9f1b2c001f8e4d3a'
1922
+ },
1923
+ status: {
1924
+ type: 'string',
1925
+ description: 'Current state of the ticket.',
1926
+ example: 'waiting_on_us',
1927
+ enum: [
1928
+ 'waiting_on_us',
1929
+ 'waiting_on_user',
1930
+ 'closed'
1931
+ ]
1932
+ },
1933
+ category: {
1934
+ type: 'string',
1935
+ description: 'Ticket category.',
1936
+ example: 'technical',
1937
+ enum: [
1938
+ 'billing',
1939
+ 'technical',
1940
+ 'general'
1941
+ ]
1942
+ },
1943
+ summary: {
1944
+ type: 'string',
1945
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
1946
+ example: 'My cluster cannot reach the registry. Logs attached.'
1947
+ },
1948
+ closed_at: {
1949
+ type: 'string',
1950
+ format: 'date-time',
1951
+ nullable: true,
1952
+ description: 'Closure timestamp. Null while the ticket is open.',
1953
+ example: '2026-05-18T16:08:14.338Z'
1954
+ },
1955
+ date_created: {
1956
+ type: 'string',
1957
+ format: 'date-time',
1958
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
1959
+ example: '2026-05-11T16:08:14.338Z'
1960
+ },
1961
+ date_updated: {
1962
+ type: 'string',
1963
+ format: 'date-time',
1964
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
1965
+ example: '2026-05-11T16:08:14.338Z'
1966
+ },
1967
+ messages: {
1968
+ type: 'array',
1969
+ items: {
1970
+ type: 'object',
1971
+ properties: {
1972
+ id: {
1973
+ type: 'string',
1974
+ description: 'Unique identifier of the message (Mongo ObjectId).',
1975
+ example: '60c72b2f9f1b2c001f8e4d3b'
1976
+ },
1977
+ type: {
1978
+ type: 'string',
1979
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
1980
+ example: 'customer_reply',
1981
+ enum: [
1982
+ 'customer_reply',
1983
+ 'agent_reply'
1984
+ ]
1985
+ },
1986
+ body: {
1987
+ type: 'string',
1988
+ description: 'Message body in markdown.',
1989
+ example: 'Thanks — that resolved it on my side.'
1990
+ },
1991
+ author_first_name: {
1992
+ type: 'string',
1993
+ nullable: true,
1994
+ description: 'First name of the author. Null when not provided.',
1995
+ example: 'Jane'
1996
+ },
1997
+ author_last_name: {
1998
+ type: 'string',
1999
+ nullable: true,
2000
+ description: 'Last name of the author. Null when not provided.',
2001
+ example: 'Doe'
2002
+ },
2003
+ attachments: {
2004
+ type: 'array',
2005
+ items: {
2006
+ type: 'object',
2007
+ properties: {
2008
+ id: {
2009
+ type: 'string',
2010
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2011
+ example: '60c72b2f9f1b2c001f8e4d3c'
2012
+ },
2013
+ filename: {
2014
+ type: 'string',
2015
+ description: 'Original filename as uploaded.',
2016
+ example: 'debug.log'
2017
+ },
2018
+ content_type: {
2019
+ type: 'string',
2020
+ description: 'MIME content type of the attachment.',
2021
+ example: 'text/plain'
2022
+ },
2023
+ size: {
2024
+ type: 'integer',
2025
+ description: 'Size of the attachment in bytes.',
2026
+ example: 12345
2027
+ }
2028
+ },
2029
+ required: [
2030
+ 'id',
2031
+ 'filename',
2032
+ 'content_type',
2033
+ 'size'
2034
+ ],
2035
+ additionalProperties: false
2036
+ },
2037
+ description: 'Attachments associated with this message.',
2038
+ example: []
2039
+ },
2040
+ date_created: {
2041
+ type: 'string',
2042
+ format: 'date-time',
2043
+ description: 'Creation date of the message. ISO 8601 UTC.',
2044
+ example: '2026-05-11T16:08:14.338Z'
2045
+ }
2046
+ },
2047
+ required: [
2048
+ 'id',
2049
+ 'type',
2050
+ 'body',
2051
+ 'date_created'
2052
+ ],
2053
+ additionalProperties: false
2054
+ },
2055
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
2056
+ }
2057
+ },
2058
+ required: [
2059
+ 'id',
2060
+ 'status',
2061
+ 'category',
2062
+ 'summary',
2063
+ 'date_created',
2064
+ 'date_updated'
2065
+ ],
2066
+ additionalProperties: false
2067
+ },
2068
+ description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
2069
+ }
2070
+ },
2071
+ required: [
2072
+ 'items'
2073
+ ],
2074
+ additionalProperties: false
2075
+ };
2076
+ export const TicketMessageInputSchema = {
2077
+ type: 'object',
2078
+ properties: {
2079
+ body: {
2080
+ type: 'string',
2081
+ maxLength: 50000,
2082
+ minLength: 1,
2083
+ pattern: '\\S',
2084
+ description: 'Reply body in markdown.',
2085
+ example: 'Thanks — that resolved it on my side.'
2086
+ }
2087
+ },
2088
+ required: [
2089
+ 'body'
2090
+ ],
2091
+ additionalProperties: false
2092
+ };
2093
+ export const TicketMessageSchema = {
2094
+ type: 'object',
2095
+ properties: {
2096
+ id: {
2097
+ type: 'string',
2098
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2099
+ example: '60c72b2f9f1b2c001f8e4d3b'
2100
+ },
2101
+ type: {
2102
+ type: 'string',
2103
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2104
+ example: 'customer_reply',
2105
+ enum: [
2106
+ 'customer_reply',
2107
+ 'agent_reply'
2108
+ ]
2109
+ },
2110
+ body: {
2111
+ type: 'string',
2112
+ description: 'Message body in markdown.',
2113
+ example: 'Thanks — that resolved it on my side.'
2114
+ },
2115
+ author_first_name: {
1478
2116
  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.'
2117
+ description: 'First name of the author. Null when not provided.',
2118
+ example: 'Jane'
1484
2119
  },
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'
2120
+ author_last_name: {
2121
+ type: 'string',
2122
+ description: 'Last name of the author. Null when not provided.',
2123
+ example: 'Doe'
2124
+ },
2125
+ attachments: {
2126
+ type: 'array',
2127
+ items: {
2128
+ type: 'object',
2129
+ properties: {
2130
+ id: {
2131
+ type: 'string',
2132
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2133
+ example: '60c72b2f9f1b2c001f8e4d3c'
2134
+ },
2135
+ filename: {
2136
+ type: 'string',
2137
+ description: 'Original filename as uploaded.',
2138
+ example: 'debug.log'
2139
+ },
2140
+ content_type: {
2141
+ type: 'string',
2142
+ description: 'MIME content type of the attachment.',
2143
+ example: 'text/plain'
2144
+ },
2145
+ size: {
2146
+ type: 'integer',
2147
+ description: 'Size of the attachment in bytes.',
2148
+ example: 12345
2149
+ }
1533
2150
  },
1534
- last_name: {
1535
- type: 'string',
1536
- description: 'Last name of the billing contact person.',
1537
- example: 'Doe'
1538
- }
2151
+ required: [
2152
+ 'id',
2153
+ 'filename',
2154
+ 'content_type',
2155
+ 'size'
2156
+ ],
2157
+ additionalProperties: false
1539
2158
  },
1540
- required: ['email', 'first_name', 'last_name'],
1541
- additionalProperties: false,
1542
- description: 'Organization contact information and billing address.'
2159
+ description: 'Attachments associated with this message.',
2160
+ example: []
2161
+ },
2162
+ date_created: {
2163
+ type: 'string',
2164
+ format: 'date-time',
2165
+ description: 'Creation date of the message. ISO 8601 UTC.',
2166
+ example: '2026-05-11T16:08:14.338Z'
1543
2167
  }
1544
2168
  },
1545
- required: ['contactInfo'],
2169
+ required: [
2170
+ 'id',
2171
+ 'type',
2172
+ 'body',
2173
+ 'date_created'
2174
+ ],
1546
2175
  additionalProperties: false
1547
2176
  };
1548
- export const PaymentMethodSchema = {
2177
+ export const TicketSchema = {
1549
2178
  type: 'object',
1550
2179
  properties: {
1551
2180
  id: {
1552
2181
  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'
2182
+ description: 'Unique identifier of the ticket (Mongo ObjectId).',
2183
+ example: '60c72b2f9f1b2c001f8e4d3a'
1556
2184
  },
1557
- setup: {
1558
- type: 'boolean',
1559
- description: 'Whether organization payment method was set up and ready to use for payments.',
1560
- example: true
2185
+ status: {
2186
+ type: 'string',
2187
+ description: 'Current state of the ticket.',
2188
+ example: 'waiting_on_us',
2189
+ enum: [
2190
+ 'waiting_on_us',
2191
+ 'waiting_on_user',
2192
+ 'closed'
2193
+ ]
1561
2194
  },
1562
- type: {
2195
+ category: {
1563
2196
  type: 'string',
1564
- nullable: true,
1565
- description: 'Payment method type type. Only `card` payments supported at the moment.',
1566
- example: 'card',
1567
- enum: ['card']
2197
+ description: 'Ticket category.',
2198
+ example: 'technical',
2199
+ enum: [
2200
+ 'billing',
2201
+ 'technical',
2202
+ 'general'
2203
+ ]
1568
2204
  },
1569
- last4: {
2205
+ summary: {
1570
2206
  type: 'string',
1571
- nullable: true,
1572
- description: 'Last 4 digits of the payment card number.',
1573
- example: '4242'
2207
+ description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
2208
+ example: 'My cluster cannot reach the registry. Logs attached.'
1574
2209
  },
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'
2210
+ closed_at: {
2211
+ type: 'string',
2212
+ format: 'date-time',
2213
+ description: 'Closure timestamp. Null while the ticket is open.',
2214
+ example: '2026-05-18T16:08:14.338Z'
1582
2215
  },
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'
2216
+ date_created: {
2217
+ type: 'string',
2218
+ format: 'date-time',
2219
+ description: 'Creation date of the ticket. ISO 8601 UTC.',
2220
+ example: '2026-05-11T16:08:14.338Z'
1589
2221
  },
1590
- brand: {
2222
+ date_updated: {
1591
2223
  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']
2224
+ format: 'date-time',
2225
+ description: 'Last update date of the ticket. ISO 8601 UTC.',
2226
+ example: '2026-05-11T16:08:14.338Z'
2227
+ },
2228
+ messages: {
2229
+ type: 'array',
2230
+ items: {
2231
+ type: 'object',
2232
+ properties: {
2233
+ id: {
2234
+ type: 'string',
2235
+ description: 'Unique identifier of the message (Mongo ObjectId).',
2236
+ example: '60c72b2f9f1b2c001f8e4d3b'
2237
+ },
2238
+ type: {
2239
+ type: 'string',
2240
+ description: 'Message type. Internal notes are filtered out of customer-facing responses.',
2241
+ example: 'customer_reply',
2242
+ enum: [
2243
+ 'customer_reply',
2244
+ 'agent_reply'
2245
+ ]
2246
+ },
2247
+ body: {
2248
+ type: 'string',
2249
+ description: 'Message body in markdown.',
2250
+ example: 'Thanks — that resolved it on my side.'
2251
+ },
2252
+ author_first_name: {
2253
+ type: 'string',
2254
+ description: 'First name of the author. Null when not provided.',
2255
+ example: 'Jane'
2256
+ },
2257
+ author_last_name: {
2258
+ type: 'string',
2259
+ description: 'Last name of the author. Null when not provided.',
2260
+ example: 'Doe'
2261
+ },
2262
+ attachments: {
2263
+ type: 'array',
2264
+ items: {
2265
+ type: 'object',
2266
+ properties: {
2267
+ id: {
2268
+ type: 'string',
2269
+ description: 'Unique identifier of the attachment (Mongo ObjectId).',
2270
+ example: '60c72b2f9f1b2c001f8e4d3c'
2271
+ },
2272
+ filename: {
2273
+ type: 'string',
2274
+ description: 'Original filename as uploaded.',
2275
+ example: 'debug.log'
2276
+ },
2277
+ content_type: {
2278
+ type: 'string',
2279
+ description: 'MIME content type of the attachment.',
2280
+ example: 'text/plain'
2281
+ },
2282
+ size: {
2283
+ type: 'integer',
2284
+ description: 'Size of the attachment in bytes.',
2285
+ example: 12345
2286
+ }
2287
+ },
2288
+ required: [
2289
+ 'id',
2290
+ 'filename',
2291
+ 'content_type',
2292
+ 'size'
2293
+ ],
2294
+ additionalProperties: false
2295
+ },
2296
+ description: 'Attachments associated with this message.',
2297
+ example: []
2298
+ },
2299
+ date_created: {
2300
+ type: 'string',
2301
+ format: 'date-time',
2302
+ description: 'Creation date of the message. ISO 8601 UTC.',
2303
+ example: '2026-05-11T16:08:14.338Z'
2304
+ }
2305
+ },
2306
+ required: [
2307
+ 'id',
2308
+ 'type',
2309
+ 'body',
2310
+ 'date_created'
2311
+ ],
2312
+ additionalProperties: false
2313
+ },
2314
+ description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
1596
2315
  }
1597
2316
  },
1598
- required: ['id', 'setup', 'type', 'last4', 'exp_month', 'exp_year', 'brand'],
2317
+ required: [
2318
+ 'id',
2319
+ 'status',
2320
+ 'category',
2321
+ 'summary',
2322
+ 'date_created',
2323
+ 'date_updated'
2324
+ ],
1599
2325
  additionalProperties: false
1600
2326
  };
1601
2327
  export const TokenCreateInputSchema = {
@@ -1613,10 +2339,16 @@ export const TokenCreateInputSchema = {
1613
2339
  type: 'string',
1614
2340
  description: 'Role assumed by the token.',
1615
2341
  example: 'User',
1616
- enum: ['Administrator', 'User']
2342
+ enum: [
2343
+ 'Administrator',
2344
+ 'User'
2345
+ ]
1617
2346
  }
1618
2347
  },
1619
- required: ['name', 'role'],
2348
+ required: [
2349
+ 'name',
2350
+ 'role'
2351
+ ],
1620
2352
  additionalProperties: false
1621
2353
  };
1622
2354
  export const TokenSchema = {
@@ -1634,7 +2366,10 @@ export const TokenSchema = {
1634
2366
  type: 'string',
1635
2367
  description: 'Role assumed by the token.',
1636
2368
  example: 'User',
1637
- enum: ['Administrator', 'User']
2369
+ enum: [
2370
+ 'Administrator',
2371
+ 'User'
2372
+ ]
1638
2373
  },
1639
2374
  id: {
1640
2375
  type: 'string',
@@ -1653,7 +2388,11 @@ export const TokenSchema = {
1653
2388
  example: '2023-12-20T13:53:32.000Z'
1654
2389
  }
1655
2390
  },
1656
- required: ['name', 'role', 'date_created'],
2391
+ required: [
2392
+ 'name',
2393
+ 'role',
2394
+ 'date_created'
2395
+ ],
1657
2396
  additionalProperties: false
1658
2397
  };
1659
2398
  export const TokenUpdateInputSchema = {
@@ -1671,9 +2410,127 @@ export const TokenUpdateInputSchema = {
1671
2410
  type: 'string',
1672
2411
  description: 'Role assumed by the token.',
1673
2412
  example: 'User',
1674
- enum: ['Administrator', 'User']
2413
+ enum: [
2414
+ 'Administrator',
2415
+ 'User'
2416
+ ]
2417
+ }
2418
+ },
2419
+ additionalProperties: false
2420
+ };
2421
+ export const UsageFacetsSchema = {
2422
+ type: 'object',
2423
+ properties: {
2424
+ cluster_id: {
2425
+ type: 'array',
2426
+ items: {
2427
+ type: 'string'
2428
+ },
2429
+ description: 'List of unique cluster IDs',
2430
+ example: [
2431
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
2432
+ ]
2433
+ },
2434
+ product: {
2435
+ type: 'array',
2436
+ items: {
2437
+ type: 'string'
2438
+ },
2439
+ description: 'List of unique products',
2440
+ example: [
2441
+ 'cfke_controlplane',
2442
+ 'cfke_connected_nodes'
2443
+ ]
2444
+ }
2445
+ },
2446
+ additionalProperties: false
2447
+ };
2448
+ export const UsageResponseSchema = {
2449
+ type: 'object',
2450
+ properties: {
2451
+ data: {
2452
+ type: 'array',
2453
+ items: {
2454
+ type: 'object',
2455
+ properties: {
2456
+ hour: {
2457
+ type: 'string',
2458
+ description: 'Hour of the usage',
2459
+ example: '2019-01-01T00:00:00.000Z'
2460
+ },
2461
+ cluster_id: {
2462
+ type: 'string',
2463
+ description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
2464
+ example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
2465
+ },
2466
+ product: {
2467
+ type: 'string',
2468
+ description: 'The product the usage is associated with',
2469
+ example: 'cfke_controlplane'
2470
+ },
2471
+ value: {
2472
+ type: 'number',
2473
+ format: 'float',
2474
+ description: 'Consumption',
2475
+ example: 4
2476
+ },
2477
+ price: {
2478
+ type: 'number',
2479
+ format: 'float',
2480
+ description: 'Price per unit',
2481
+ example: 0.01
2482
+ },
2483
+ total: {
2484
+ type: 'number',
2485
+ format: 'float',
2486
+ description: 'Total cost'
2487
+ }
2488
+ },
2489
+ required: [
2490
+ 'hour',
2491
+ 'cluster_id',
2492
+ 'product',
2493
+ 'value',
2494
+ 'price',
2495
+ 'total'
2496
+ ],
2497
+ additionalProperties: false
2498
+ },
2499
+ description: 'Usage data'
2500
+ },
2501
+ facets: {
2502
+ type: 'object',
2503
+ properties: {
2504
+ cluster_id: {
2505
+ type: 'array',
2506
+ items: {
2507
+ type: 'string'
2508
+ },
2509
+ description: 'List of unique cluster IDs',
2510
+ example: [
2511
+ '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
2512
+ ]
2513
+ },
2514
+ product: {
2515
+ type: 'array',
2516
+ items: {
2517
+ type: 'string'
2518
+ },
2519
+ description: 'List of unique products',
2520
+ example: [
2521
+ 'cfke_controlplane',
2522
+ 'cfke_connected_nodes'
2523
+ ]
2524
+ }
2525
+ },
2526
+ additionalProperties: false,
2527
+ description: 'Facets for filtering'
1675
2528
  }
1676
2529
  },
2530
+ required: [
2531
+ 'data',
2532
+ 'facets'
2533
+ ],
1677
2534
  additionalProperties: false
1678
2535
  };
1679
2536
  export const UsageSchema = {
@@ -1686,90 +2543,40 @@ export const UsageSchema = {
1686
2543
  },
1687
2544
  cluster_id: {
1688
2545
  type: 'string',
1689
- format: 'uuid',
1690
2546
  description: 'Unique identifier of the kubernetes cluster. UUID v4 string in canonical form',
1691
2547
  example: '6b5439b1-923a-4f2b-a371-d554e5ea23fa'
1692
2548
  },
1693
- cluster_tier: {
1694
- type: 'string',
1695
- description: 'Tier of the cluster.',
1696
- example: 'pro',
1697
- enum: ['']
1698
- },
1699
2549
  product: {
1700
2550
  type: 'string',
1701
2551
  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'
2552
+ example: 'cfke_controlplane'
1714
2553
  },
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
- ]
2554
+ value: {
2555
+ type: 'number',
2556
+ format: 'float',
2557
+ description: 'Consumption',
2558
+ example: 4
1728
2559
  },
1729
2560
  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
- ]
2561
+ type: 'number',
2562
+ format: 'float',
2563
+ description: 'Price per unit',
2564
+ example: 0.01
1756
2565
  },
1757
2566
  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
- ]
2567
+ type: 'number',
2568
+ format: 'float',
2569
+ description: 'Total cost'
1770
2570
  }
1771
2571
  },
1772
- required: ['cluster_id', 'cluster_tier', 'product', 'node_name', 'sku', 'cpu', 'price', 'value', 'total'],
2572
+ required: [
2573
+ 'hour',
2574
+ 'cluster_id',
2575
+ 'product',
2576
+ 'value',
2577
+ 'price',
2578
+ 'total'
2579
+ ],
1773
2580
  additionalProperties: false
1774
2581
  };
1775
2582
  export const UserCreateInputSchema = {
@@ -1804,22 +2611,34 @@ export const UserCreateInputSchema = {
1804
2611
  password: {
1805
2612
  type: 'string',
1806
2613
  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.'
2614
+ description: 'User password. Must be at least 8 characters long.'
1808
2615
  },
1809
2616
  status: {
1810
2617
  type: 'string',
1811
2618
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1812
2619
  example: 'active',
1813
- enum: ['active', 'inactive']
2620
+ enum: [
2621
+ 'active',
2622
+ 'inactive'
2623
+ ]
1814
2624
  },
1815
2625
  role: {
1816
2626
  type: 'string',
1817
- description: "User role. Can be 'Administrator', 'User'.",
2627
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1818
2628
  example: 'User',
1819
- enum: ['Administrator', 'User']
2629
+ enum: [
2630
+ 'Administrator',
2631
+ 'User'
2632
+ ]
1820
2633
  }
1821
2634
  },
1822
- required: ['email', 'first_name', 'last_name', 'code', 'password'],
2635
+ required: [
2636
+ 'email',
2637
+ 'first_name',
2638
+ 'last_name',
2639
+ 'code',
2640
+ 'password'
2641
+ ],
1823
2642
  additionalProperties: false
1824
2643
  };
1825
2644
  export const UserSchema = {
@@ -1847,15 +2666,21 @@ export const UserSchema = {
1847
2666
  },
1848
2667
  role: {
1849
2668
  type: 'string',
1850
- description: "User role. Can be 'Administrator', 'User'.",
2669
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1851
2670
  example: 'User',
1852
- enum: ['Administrator', 'User']
2671
+ enum: [
2672
+ 'Administrator',
2673
+ 'User'
2674
+ ]
1853
2675
  },
1854
2676
  status: {
1855
2677
  type: 'string',
1856
2678
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1857
2679
  example: 'active',
1858
- enum: ['active', 'inactive']
2680
+ enum: [
2681
+ 'active',
2682
+ 'inactive'
2683
+ ]
1859
2684
  },
1860
2685
  id: {
1861
2686
  type: 'string',
@@ -1868,31 +2693,17 @@ export const UserSchema = {
1868
2693
  format: 'date-time',
1869
2694
  description: 'Creation date of the user. ISO 8601 date string in UTC timezone',
1870
2695
  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
2696
  }
1894
2697
  },
1895
- required: ['email', 'first_name', 'last_name', 'role', 'status', 'id', 'date_created'],
2698
+ required: [
2699
+ 'email',
2700
+ 'first_name',
2701
+ 'last_name',
2702
+ 'role',
2703
+ 'status',
2704
+ 'id',
2705
+ 'date_created'
2706
+ ],
1896
2707
  additionalProperties: false
1897
2708
  };
1898
2709
  export const UserUpdateInputSchema = {
@@ -1920,15 +2731,21 @@ export const UserUpdateInputSchema = {
1920
2731
  },
1921
2732
  role: {
1922
2733
  type: 'string',
1923
- description: "User role. Can be 'Administrator', 'User'.",
2734
+ description: 'User role. Can be \'Administrator\', \'User\'.',
1924
2735
  example: 'User',
1925
- enum: ['Administrator', 'User']
2736
+ enum: [
2737
+ 'Administrator',
2738
+ 'User'
2739
+ ]
1926
2740
  },
1927
2741
  status: {
1928
2742
  type: 'string',
1929
2743
  description: 'Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.',
1930
2744
  example: 'active',
1931
- enum: ['active', 'inactive']
2745
+ enum: [
2746
+ 'active',
2747
+ 'inactive'
2748
+ ]
1932
2749
  }
1933
2750
  },
1934
2751
  additionalProperties: false