@cloudfleet/sdk 0.0.1-17d20e1 → 0.0.1-188944c

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.
@@ -582,6 +582,11 @@ export const ClusterJoinInformationSchema = {
582
582
  description: 'Authentication key for the cluster.',
583
583
  example: 'tskey-auth-kBV8wr1dk911CNTRL-...'
584
584
  },
585
+ login_server: {
586
+ type: 'string',
587
+ description: 'Coordination server the node registers against. Empty on data plane v1 clusters, where the node advertises its own tag instead. A non-empty value requires a client that declares the dataplane-v2 capability.',
588
+ example: 'https://415026b6-f00f-44f8-968d-fc6ef4d0fc6d.fabric.europe-central-1a.cfke.io'
589
+ },
585
590
  bootstrap_token: {
586
591
  type: 'string',
587
592
  description: 'Bootstrap token for the cluster.',
@@ -654,6 +659,7 @@ export const ClusterJoinInformationSchema = {
654
659
  'cluster_dns',
655
660
  'pod_cidr',
656
661
  'auth_key',
662
+ 'login_server',
657
663
  'bootstrap_token',
658
664
  'versions',
659
665
  'third_party_api_access_config'
@@ -1336,6 +1342,44 @@ export const FleetCreateInputSchema = {
1336
1342
  'conservative'
1337
1343
  ]
1338
1344
  },
1345
+ taints: {
1346
+ type: 'array',
1347
+ items: {
1348
+ type: 'object',
1349
+ properties: {
1350
+ key: {
1351
+ type: 'string',
1352
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
1353
+ example: 'dedicated'
1354
+ },
1355
+ value: {
1356
+ type: 'string',
1357
+ maxLength: 63,
1358
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
1359
+ description: 'Taint value. Optional.',
1360
+ example: 'ci'
1361
+ },
1362
+ effect: {
1363
+ type: 'string',
1364
+ description: 'Taint effect.',
1365
+ example: 'NoSchedule',
1366
+ enum: [
1367
+ 'NoSchedule',
1368
+ 'PreferNoSchedule',
1369
+ 'NoExecute'
1370
+ ]
1371
+ }
1372
+ },
1373
+ required: [
1374
+ 'key',
1375
+ 'effect'
1376
+ ],
1377
+ additionalProperties: false
1378
+ },
1379
+ maxItems: 50,
1380
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
1381
+ default: []
1382
+ },
1339
1383
  id: {
1340
1384
  type: 'string',
1341
1385
  maxLength: 63,
@@ -1725,6 +1769,44 @@ export const FleetSchema = {
1725
1769
  'conservative'
1726
1770
  ]
1727
1771
  },
1772
+ taints: {
1773
+ type: 'array',
1774
+ items: {
1775
+ type: 'object',
1776
+ properties: {
1777
+ key: {
1778
+ type: 'string',
1779
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
1780
+ example: 'dedicated'
1781
+ },
1782
+ value: {
1783
+ type: 'string',
1784
+ maxLength: 63,
1785
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
1786
+ description: 'Taint value. Optional.',
1787
+ example: 'ci'
1788
+ },
1789
+ effect: {
1790
+ type: 'string',
1791
+ description: 'Taint effect.',
1792
+ example: 'NoSchedule',
1793
+ enum: [
1794
+ 'NoSchedule',
1795
+ 'PreferNoSchedule',
1796
+ 'NoExecute'
1797
+ ]
1798
+ }
1799
+ },
1800
+ required: [
1801
+ 'key',
1802
+ 'effect'
1803
+ ],
1804
+ additionalProperties: false
1805
+ },
1806
+ maxItems: 50,
1807
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
1808
+ default: []
1809
+ },
1728
1810
  id: {
1729
1811
  type: 'string',
1730
1812
  maxLength: 63,
@@ -1757,6 +1839,7 @@ export const FleetSchema = {
1757
1839
  required: [
1758
1840
  'constraints',
1759
1841
  'scalingProfile',
1842
+ 'taints',
1760
1843
  'id',
1761
1844
  'ready',
1762
1845
  'created_at',
@@ -2136,6 +2219,44 @@ export const FleetUpdateInputSchema = {
2136
2219
  'aggressive',
2137
2220
  'conservative'
2138
2221
  ]
2222
+ },
2223
+ taints: {
2224
+ type: 'array',
2225
+ items: {
2226
+ type: 'object',
2227
+ properties: {
2228
+ key: {
2229
+ type: 'string',
2230
+ description: 'Taint key: a Kubernetes qualified name with an optional DNS subdomain prefix. Keys under `node.kubernetes.io`, `node.cloudprovider.kubernetes.io`, `node.cilium.io`, `karpenter.sh` and `cfke.io` (and their subdomains) are reserved.',
2231
+ example: 'dedicated'
2232
+ },
2233
+ value: {
2234
+ type: 'string',
2235
+ maxLength: 63,
2236
+ pattern: '^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$',
2237
+ description: 'Taint value. Optional.',
2238
+ example: 'ci'
2239
+ },
2240
+ effect: {
2241
+ type: 'string',
2242
+ description: 'Taint effect.',
2243
+ example: 'NoSchedule',
2244
+ enum: [
2245
+ 'NoSchedule',
2246
+ 'PreferNoSchedule',
2247
+ 'NoExecute'
2248
+ ]
2249
+ }
2250
+ },
2251
+ required: [
2252
+ 'key',
2253
+ 'effect'
2254
+ ],
2255
+ additionalProperties: false
2256
+ },
2257
+ maxItems: 50,
2258
+ description: 'Taints applied to every node the fleet provisions, so only pods that tolerate them schedule there. Each key and effect pair may appear once. Full-overwrite: omit to remove all taints.',
2259
+ default: []
2139
2260
  }
2140
2261
  },
2141
2262
  additionalProperties: false,
@@ -2213,6 +2334,170 @@ export const InviteSchema = {
2213
2334
  ],
2214
2335
  additionalProperties: false
2215
2336
  };
2337
+ export const InvoicePaymentAttemptSchema = {
2338
+ type: 'object',
2339
+ properties: {
2340
+ invoice_id: {
2341
+ type: 'string',
2342
+ description: 'Identifier of the invoice.',
2343
+ example: 'in_1234567890xCrwxghOTj1234'
2344
+ },
2345
+ number: {
2346
+ type: 'string',
2347
+ nullable: true,
2348
+ description: 'Invoice number. Null if the invoice has no number.',
2349
+ example: 'CF-0042'
2350
+ },
2351
+ amount: {
2352
+ type: 'number',
2353
+ format: 'float',
2354
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2355
+ example: 4200
2356
+ },
2357
+ currency: {
2358
+ type: 'string',
2359
+ description: 'Currency of the invoice.',
2360
+ example: 'eur'
2361
+ },
2362
+ status: {
2363
+ type: 'string',
2364
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2365
+ example: 'paid',
2366
+ enum: [
2367
+ 'paid',
2368
+ 'processing',
2369
+ 'requires_action',
2370
+ 'failed'
2371
+ ]
2372
+ },
2373
+ client_secret: {
2374
+ type: 'string',
2375
+ nullable: true,
2376
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2377
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
2378
+ },
2379
+ failure_code: {
2380
+ type: 'string',
2381
+ nullable: true,
2382
+ description: 'Decline code. Set only when `status` is `failed`.',
2383
+ example: 'insufficient_funds'
2384
+ },
2385
+ failure_message: {
2386
+ type: 'string',
2387
+ nullable: true,
2388
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2389
+ example: 'Your card has insufficient funds.'
2390
+ }
2391
+ },
2392
+ required: [
2393
+ 'invoice_id',
2394
+ 'number',
2395
+ 'amount',
2396
+ 'currency',
2397
+ 'status',
2398
+ 'client_secret',
2399
+ 'failure_code',
2400
+ 'failure_message'
2401
+ ],
2402
+ additionalProperties: false
2403
+ };
2404
+ export const InvoicePaymentResultSchema = {
2405
+ type: 'object',
2406
+ properties: {
2407
+ code: {
2408
+ type: 'string',
2409
+ description: 'Overall outcome: `paid` (nothing outstanding), `processing` (all accepted, not yet settled), `action_required` (one or more await customer authentication), `partially_paid`, `failed`, `nothing_due`, or `bank_transfer_due` (the organization pays by bank transfer; nothing was charged).',
2410
+ example: 'partially_paid',
2411
+ enum: [
2412
+ 'paid',
2413
+ 'processing',
2414
+ 'action_required',
2415
+ 'partially_paid',
2416
+ 'failed',
2417
+ 'nothing_due',
2418
+ 'bank_transfer_due'
2419
+ ]
2420
+ },
2421
+ message: {
2422
+ type: 'string',
2423
+ description: 'Summary of the outcome, suitable for display.',
2424
+ example: '1 of 2 open invoices was paid. Invoice CF-0043 was declined: Your card has insufficient funds.'
2425
+ },
2426
+ results: {
2427
+ type: 'array',
2428
+ items: {
2429
+ type: 'object',
2430
+ properties: {
2431
+ invoice_id: {
2432
+ type: 'string',
2433
+ description: 'Identifier of the invoice.',
2434
+ example: 'in_1234567890xCrwxghOTj1234'
2435
+ },
2436
+ number: {
2437
+ type: 'string',
2438
+ description: 'Invoice number. Null if the invoice has no number.',
2439
+ example: 'CF-0042'
2440
+ },
2441
+ amount: {
2442
+ type: 'number',
2443
+ format: 'float',
2444
+ description: 'Amount outstanding when the charge was attempted, in the smallest currency unit.',
2445
+ example: 4200
2446
+ },
2447
+ currency: {
2448
+ type: 'string',
2449
+ description: 'Currency of the invoice.',
2450
+ example: 'eur'
2451
+ },
2452
+ status: {
2453
+ type: 'string',
2454
+ description: 'Outcome for this invoice: `paid`, `processing` (accepted, not yet settled), `requires_action` (awaiting customer authentication), or `failed` (declined).',
2455
+ example: 'paid',
2456
+ enum: [
2457
+ 'paid',
2458
+ 'processing',
2459
+ 'requires_action',
2460
+ 'failed'
2461
+ ]
2462
+ },
2463
+ client_secret: {
2464
+ type: 'string',
2465
+ description: 'Client secret used to complete customer authentication. Set only when `status` is `requires_action`.',
2466
+ example: 'pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH'
2467
+ },
2468
+ failure_code: {
2469
+ type: 'string',
2470
+ description: 'Decline code. Set only when `status` is `failed`.',
2471
+ example: 'insufficient_funds'
2472
+ },
2473
+ failure_message: {
2474
+ type: 'string',
2475
+ description: 'Explanation of the decline, suitable for display. Set only when `status` is `failed`.',
2476
+ example: 'Your card has insufficient funds.'
2477
+ }
2478
+ },
2479
+ required: [
2480
+ 'invoice_id',
2481
+ 'number',
2482
+ 'amount',
2483
+ 'currency',
2484
+ 'status',
2485
+ 'client_secret',
2486
+ 'failure_code',
2487
+ 'failure_message'
2488
+ ],
2489
+ additionalProperties: false
2490
+ },
2491
+ description: 'One entry per invoice charged, oldest first.'
2492
+ }
2493
+ },
2494
+ required: [
2495
+ 'code',
2496
+ 'message',
2497
+ 'results'
2498
+ ],
2499
+ additionalProperties: false
2500
+ };
2216
2501
  export const InvoiceSchema = {
2217
2502
  type: 'object',
2218
2503
  properties: {
@@ -3114,6 +3399,73 @@ export const RegistryTagSchema = {
3114
3399
  ],
3115
3400
  additionalProperties: false
3116
3401
  };
3402
+ export const RoadmapItemCreateInputSchema = {
3403
+ type: 'object',
3404
+ properties: {
3405
+ text: {
3406
+ type: 'string',
3407
+ maxLength: 500,
3408
+ minLength: 1,
3409
+ description: 'Your suggestion in one or two sentences. It is reviewed before it appears on the roadmap.',
3410
+ example: 'Support for ARM nodes on Hetzner.'
3411
+ }
3412
+ },
3413
+ required: [
3414
+ 'text'
3415
+ ],
3416
+ additionalProperties: false
3417
+ };
3418
+ export const RoadmapItemSchema = {
3419
+ type: 'object',
3420
+ properties: {
3421
+ id: {
3422
+ type: 'string',
3423
+ description: 'Unique identifier of the roadmap item (Mongo ObjectId).',
3424
+ example: '60c72b2f9f1b2c001f8e4d3a'
3425
+ },
3426
+ text: {
3427
+ type: 'string',
3428
+ description: 'Short description of the roadmap item.',
3429
+ example: 'Support for ARM nodes on Hetzner.'
3430
+ },
3431
+ vote: {
3432
+ type: 'integer',
3433
+ nullable: true,
3434
+ description: 'The caller\'s vote on this item: -1 (down), 1 (up), 2 (double up), or null if the caller has not voted.',
3435
+ example: 1,
3436
+ enum: [
3437
+ -1,
3438
+ 1,
3439
+ 2
3440
+ ]
3441
+ }
3442
+ },
3443
+ required: [
3444
+ 'id',
3445
+ 'text',
3446
+ 'vote'
3447
+ ],
3448
+ additionalProperties: false
3449
+ };
3450
+ export const RoadmapVoteInputSchema = {
3451
+ type: 'object',
3452
+ properties: {
3453
+ value: {
3454
+ type: 'integer',
3455
+ description: 'Vote value: -1 (down), 1 (up), or 2 (double up).',
3456
+ example: 1,
3457
+ enum: [
3458
+ -1,
3459
+ 1,
3460
+ 2
3461
+ ]
3462
+ }
3463
+ },
3464
+ required: [
3465
+ 'value'
3466
+ ],
3467
+ additionalProperties: false
3468
+ };
3117
3469
  export const TicketAttachmentSchema = {
3118
3470
  type: 'object',
3119
3471
  properties: {
@@ -3175,6 +3527,11 @@ export const TicketCreateInputSchema = {
3175
3527
  subcategory: 'cluster-question',
3176
3528
  cluster_id: '60c72b2f9f1b2c001f8e4d3a'
3177
3529
  }
3530
+ },
3531
+ grant_support_access: {
3532
+ type: 'boolean',
3533
+ description: 'Grant Cloudfleet support staff access to the organization\'s resources while the ticket is open. Access cannot be revoked; it ends when the ticket is closed.',
3534
+ example: true
3178
3535
  }
3179
3536
  },
3180
3537
  required: [
@@ -3183,172 +3540,6 @@ export const TicketCreateInputSchema = {
3183
3540
  ],
3184
3541
  additionalProperties: false
3185
3542
  };
3186
- export const TicketListResponseSchema = {
3187
- type: 'object',
3188
- properties: {
3189
- items: {
3190
- type: 'array',
3191
- items: {
3192
- type: 'object',
3193
- properties: {
3194
- id: {
3195
- type: 'string',
3196
- description: 'Unique identifier of the ticket (Mongo ObjectId).',
3197
- example: '60c72b2f9f1b2c001f8e4d3a'
3198
- },
3199
- status: {
3200
- type: 'string',
3201
- description: 'Current state of the ticket.',
3202
- example: 'waiting_on_us',
3203
- enum: [
3204
- 'waiting_on_us',
3205
- 'waiting_on_user',
3206
- 'closed'
3207
- ]
3208
- },
3209
- category: {
3210
- type: 'string',
3211
- description: 'Ticket category.',
3212
- example: 'technical',
3213
- enum: [
3214
- 'billing',
3215
- 'technical',
3216
- 'general'
3217
- ]
3218
- },
3219
- summary: {
3220
- type: 'string',
3221
- description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3222
- example: 'My cluster cannot reach the registry. Logs attached.'
3223
- },
3224
- closed_at: {
3225
- type: 'string',
3226
- format: 'date-time',
3227
- nullable: true,
3228
- description: 'Closure timestamp. Null while the ticket is open.',
3229
- example: '2026-05-18T16:08:14.338Z'
3230
- },
3231
- date_created: {
3232
- type: 'string',
3233
- format: 'date-time',
3234
- description: 'Creation date of the ticket. ISO 8601 UTC.',
3235
- example: '2026-05-11T16:08:14.338Z'
3236
- },
3237
- date_updated: {
3238
- type: 'string',
3239
- format: 'date-time',
3240
- description: 'Last update date of the ticket. ISO 8601 UTC.',
3241
- example: '2026-05-11T16:08:14.338Z'
3242
- },
3243
- messages: {
3244
- type: 'array',
3245
- items: {
3246
- type: 'object',
3247
- properties: {
3248
- id: {
3249
- type: 'string',
3250
- description: 'Unique identifier of the message (Mongo ObjectId).',
3251
- example: '60c72b2f9f1b2c001f8e4d3b'
3252
- },
3253
- type: {
3254
- type: 'string',
3255
- description: 'Message type. Internal notes are filtered out of customer-facing responses.',
3256
- example: 'customer_reply',
3257
- enum: [
3258
- 'customer_reply',
3259
- 'agent_reply'
3260
- ]
3261
- },
3262
- body: {
3263
- type: 'string',
3264
- description: 'Message body in markdown.',
3265
- example: 'Thanks — that resolved it on my side.'
3266
- },
3267
- author_first_name: {
3268
- type: 'string',
3269
- nullable: true,
3270
- description: 'First name of the author. Null when not provided.',
3271
- example: 'Jane'
3272
- },
3273
- author_last_name: {
3274
- type: 'string',
3275
- nullable: true,
3276
- description: 'Last name of the author. Null when not provided.',
3277
- example: 'Doe'
3278
- },
3279
- attachments: {
3280
- type: 'array',
3281
- items: {
3282
- type: 'object',
3283
- properties: {
3284
- id: {
3285
- type: 'string',
3286
- description: 'Unique identifier of the attachment (Mongo ObjectId).',
3287
- example: '60c72b2f9f1b2c001f8e4d3c'
3288
- },
3289
- filename: {
3290
- type: 'string',
3291
- description: 'Original filename as uploaded.',
3292
- example: 'debug.log'
3293
- },
3294
- content_type: {
3295
- type: 'string',
3296
- description: 'MIME content type of the attachment.',
3297
- example: 'text/plain'
3298
- },
3299
- size: {
3300
- type: 'integer',
3301
- description: 'Size of the attachment in bytes.',
3302
- example: 12345
3303
- }
3304
- },
3305
- required: [
3306
- 'id',
3307
- 'filename',
3308
- 'content_type',
3309
- 'size'
3310
- ],
3311
- additionalProperties: false
3312
- },
3313
- description: 'Attachments associated with this message.',
3314
- example: []
3315
- },
3316
- date_created: {
3317
- type: 'string',
3318
- format: 'date-time',
3319
- description: 'Creation date of the message. ISO 8601 UTC.',
3320
- example: '2026-05-11T16:08:14.338Z'
3321
- }
3322
- },
3323
- required: [
3324
- 'id',
3325
- 'type',
3326
- 'body',
3327
- 'date_created'
3328
- ],
3329
- additionalProperties: false
3330
- },
3331
- description: 'Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.'
3332
- }
3333
- },
3334
- required: [
3335
- 'id',
3336
- 'status',
3337
- 'category',
3338
- 'summary',
3339
- 'date_created',
3340
- 'date_updated'
3341
- ],
3342
- additionalProperties: false
3343
- },
3344
- description: 'Tickets for the organization, ordered newest first. Messages are omitted from list responses.'
3345
- }
3346
- },
3347
- required: [
3348
- 'items'
3349
- ],
3350
- additionalProperties: false
3351
- };
3352
3543
  export const TicketMessageInputSchema = {
3353
3544
  type: 'object',
3354
3545
  properties: {
@@ -3390,11 +3581,13 @@ export const TicketMessageSchema = {
3390
3581
  },
3391
3582
  author_first_name: {
3392
3583
  type: 'string',
3584
+ nullable: true,
3393
3585
  description: 'First name of the author. Null when not provided.',
3394
3586
  example: 'Jane'
3395
3587
  },
3396
3588
  author_last_name: {
3397
3589
  type: 'string',
3590
+ nullable: true,
3398
3591
  description: 'Last name of the author. Null when not provided.',
3399
3592
  example: 'Doe'
3400
3593
  },
@@ -3483,9 +3676,22 @@ export const TicketSchema = {
3483
3676
  description: 'First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.',
3484
3677
  example: 'My cluster cannot reach the registry. Logs attached.'
3485
3678
  },
3679
+ support_access_granted: {
3680
+ type: 'boolean',
3681
+ description: 'Whether Cloudfleet support staff currently have access to the organization\'s resources. True once access is granted and until the ticket is closed.',
3682
+ example: true
3683
+ },
3684
+ support_access_granted_at: {
3685
+ type: 'string',
3686
+ format: 'date-time',
3687
+ nullable: true,
3688
+ description: 'When support access was granted. Null if it never was. Kept after the ticket is closed.',
3689
+ example: '2026-05-11T16:08:14.338Z'
3690
+ },
3486
3691
  closed_at: {
3487
3692
  type: 'string',
3488
3693
  format: 'date-time',
3694
+ nullable: true,
3489
3695
  description: 'Closure timestamp. Null while the ticket is open.',
3490
3696
  example: '2026-05-18T16:08:14.338Z'
3491
3697
  },
@@ -3595,6 +3801,8 @@ export const TicketSchema = {
3595
3801
  'status',
3596
3802
  'category',
3597
3803
  'summary',
3804
+ 'support_access_granted',
3805
+ 'support_access_granted_at',
3598
3806
  'date_created',
3599
3807
  'date_updated'
3600
3808
  ],
@@ -3710,12 +3918,21 @@ export const UsageFacetsSchema = {
3710
3918
  product: {
3711
3919
  type: 'array',
3712
3920
  items: {
3713
- type: 'string'
3921
+ type: 'string',
3922
+ enum: [
3923
+ 'cfke_controlplane_basic',
3924
+ 'cfke_controlplane_pro',
3925
+ 'cfke_controlplane_enterprise',
3926
+ 'cfke_connected_nodes_basic',
3927
+ 'cfke_connected_nodes_pro',
3928
+ 'cfke_connected_nodes_enterprise',
3929
+ 'cfcr_storage'
3930
+ ]
3714
3931
  },
3715
3932
  description: 'List of unique products',
3716
3933
  example: [
3717
- 'cfke_controlplane',
3718
- 'cfke_connected_nodes'
3934
+ 'cfke_controlplane_pro',
3935
+ 'cfke_connected_nodes_pro'
3719
3936
  ]
3720
3937
  }
3721
3938
  },
@@ -3742,7 +3959,16 @@ export const UsageResponseSchema = {
3742
3959
  product: {
3743
3960
  type: 'string',
3744
3961
  description: 'The product the usage is associated with',
3745
- example: 'cfke_controlplane'
3962
+ example: 'cfke_controlplane_pro',
3963
+ enum: [
3964
+ 'cfke_controlplane_basic',
3965
+ 'cfke_controlplane_pro',
3966
+ 'cfke_controlplane_enterprise',
3967
+ 'cfke_connected_nodes_basic',
3968
+ 'cfke_connected_nodes_pro',
3969
+ 'cfke_connected_nodes_enterprise',
3970
+ 'cfcr_storage'
3971
+ ]
3746
3972
  },
3747
3973
  value: {
3748
3974
  type: 'number',
@@ -3790,12 +4016,21 @@ export const UsageResponseSchema = {
3790
4016
  product: {
3791
4017
  type: 'array',
3792
4018
  items: {
3793
- type: 'string'
4019
+ type: 'string',
4020
+ enum: [
4021
+ 'cfke_controlplane_basic',
4022
+ 'cfke_controlplane_pro',
4023
+ 'cfke_controlplane_enterprise',
4024
+ 'cfke_connected_nodes_basic',
4025
+ 'cfke_connected_nodes_pro',
4026
+ 'cfke_connected_nodes_enterprise',
4027
+ 'cfcr_storage'
4028
+ ]
3794
4029
  },
3795
4030
  description: 'List of unique products',
3796
4031
  example: [
3797
- 'cfke_controlplane',
3798
- 'cfke_connected_nodes'
4032
+ 'cfke_controlplane_pro',
4033
+ 'cfke_connected_nodes_pro'
3799
4034
  ]
3800
4035
  }
3801
4036
  },
@@ -3825,7 +4060,16 @@ export const UsageSchema = {
3825
4060
  product: {
3826
4061
  type: 'string',
3827
4062
  description: 'The product the usage is associated with',
3828
- example: 'cfke_controlplane'
4063
+ example: 'cfke_controlplane_pro',
4064
+ enum: [
4065
+ 'cfke_controlplane_basic',
4066
+ 'cfke_controlplane_pro',
4067
+ 'cfke_controlplane_enterprise',
4068
+ 'cfke_connected_nodes_basic',
4069
+ 'cfke_connected_nodes_pro',
4070
+ 'cfke_connected_nodes_enterprise',
4071
+ 'cfcr_storage'
4072
+ ]
3829
4073
  },
3830
4074
  value: {
3831
4075
  type: 'number',