@cloudfleet/sdk 0.0.1-7a6b7de → 0.0.1-7aa2bb2

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.
@@ -2,6 +2,10 @@ export type ClientOptions = {
2
2
  baseUrl: 'https://api.cloudfleet.ai/v1' | (string & {});
3
3
  };
4
4
  export type BillingContact = {
5
+ /**
6
+ * Type of the organization. `business` for legal entities, `personal` for individuals.
7
+ */
8
+ type: 'business' | 'personal';
5
9
  /**
6
10
  * Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.
7
11
  */
@@ -190,6 +194,10 @@ export type ClusterJoinInformation = {
190
194
  * Cluster DNS IP address. This is the IP address of the kube-dns service in the cluster.
191
195
  */
192
196
  cluster_dns: string;
197
+ /**
198
+ * Pod CIDR for the cluster. Used to configure iptables rules on nodes to prevent Tailscale routing loops.
199
+ */
200
+ pod_cidr: string;
193
201
  /**
194
202
  * Authentication key for the cluster.
195
203
  */
@@ -259,6 +267,7 @@ export type Cluster = {
259
267
  */
260
268
  status: 'active' | 'disabled' | 'deleted' | 'creating' | 'deployed' | 'failed' | 'updating';
261
269
  endpoint?: string | '';
270
+ endpoint_public?: string | '';
262
271
  /**
263
272
  * Certificate authority data for the kubernetes cluster. This is the root certificate authority for the cluster.
264
273
  */
@@ -304,31 +313,56 @@ export type FleetCreateInput = {
304
313
  */
305
314
  limits?: {
306
315
  /**
307
- * CPU limit in cores.
316
+ * CPU limit in cores. Maximum 100,000.
308
317
  */
309
- cpu: number;
318
+ cpu?: number;
310
319
  };
311
320
  gcp?: {
312
- enabled?: boolean;
321
+ enabled: boolean;
313
322
  /**
314
- * Project GCP Project id to deploy instances into
323
+ * GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.
315
324
  */
316
- project: string;
325
+ project?: string;
317
326
  };
318
327
  hetzner?: {
319
- enabled?: boolean;
328
+ enabled: boolean;
320
329
  /**
321
- * Hetzner Cloud API key with read / write access
330
+ * Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.
322
331
  */
323
- apiKey: string;
332
+ apiKey?: string;
324
333
  };
325
334
  aws?: {
326
- enabled?: boolean;
335
+ enabled: boolean;
336
+ /**
337
+ * AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.
338
+ */
339
+ controllerRoleArn?: string;
340
+ };
341
+ /**
342
+ * Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.
343
+ */
344
+ constraints?: {
345
+ /**
346
+ * Allowed values for `karpenter.sh/capacity-type`.
347
+ */
348
+ 'karpenter.sh/capacity-type'?: Array<'on-demand' | 'spot'>;
349
+ /**
350
+ * Allowed values for `kubernetes.io/arch`.
351
+ */
352
+ 'kubernetes.io/arch'?: Array<'amd64' | 'arm64'>;
353
+ /**
354
+ * Allowed values for `cfke.io/instance-family`.
355
+ */
356
+ 'cfke.io/instance-family'?: Array<'a1' | 'a2' | 'a3' | 'a4' | 'c1' | 'c2' | 'c2d' | 'c3' | 'c3d' | 'c4' | 'c4a' | 'c4d' | 'c5' | 'c5a' | 'c5ad' | 'c5d' | 'c5n' | 'c6a' | 'c6g' | 'c6gd' | 'c6gn' | 'c6i' | 'c6id' | 'c6in' | 'c7a' | 'c7g' | 'c7gd' | 'c7gn' | 'c7i' | 'c7i-flex' | 'c8g' | 'c8gd' | 'cax' | 'ccx' | 'cpx' | 'cx' | 'd2' | 'd3' | 'd3en' | 'dl1' | 'dl2q' | 'e2' | 'f1' | 'f2' | 'g1' | 'g2' | 'g4ad' | 'g4dn' | 'g5' | 'g5g' | 'g6' | 'g6e' | 'gr6' | 'h1' | 'h3' | 'hpc6a' | 'hpc6id' | 'hpc7a' | 'hpc7g' | 'i2' | 'i3' | 'i3en' | 'i4g' | 'i4i' | 'i7i' | 'i7ie' | 'i8g' | 'im4gn' | 'inf1' | 'inf2' | 'is4gen' | 'm1' | 'm2' | 'm3' | 'm4' | 'm5' | 'm5a' | 'm5ad' | 'm5d' | 'm5dn' | 'm5n' | 'm5zn' | 'm6a' | 'm6g' | 'm6gd' | 'm6i' | 'm6id' | 'm6idn' | 'm6in' | 'm7a' | 'm7g' | 'm7gd' | 'm7i' | 'm7i-flex' | 'm8g' | 'm8gd' | 'n1' | 'n2' | 'n2d' | 'n4' | 'p3' | 'p3dn' | 'p4d' | 'p4de' | 'p5' | 'p5e' | 'p5en' | 'p6-b200' | 'r3' | 'r4' | 'r5' | 'r5a' | 'r5ad' | 'r5b' | 'r5d' | 'r5dn' | 'r5n' | 'r6a' | 'r6g' | 'r6gd' | 'r6i' | 'r6id' | 'r6idn' | 'r6in' | 'r7a' | 'r7g' | 'r7gd' | 'r7i' | 'r7iz' | 'r8g' | 'r8gd' | 't2' | 't2a' | 't2d' | 't3' | 't3a' | 't4g' | 'trn1' | 'trn1n' | 'u-3tb1' | 'u-6tb1' | 'u7i-12tb' | 'u7i-6tb' | 'u7i-8tb' | 'u7in-16tb' | 'u7in-24tb' | 'u7in-32tb' | 'vt1' | 'x1' | 'x1e' | 'x2gd' | 'x2idn' | 'x2iedn' | 'x2iezn' | 'x4' | 'x8g' | 'z1d' | 'z3'>;
327
357
  /**
328
- * ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.
358
+ * Allowed values for `topology.kubernetes.io/region`.
329
359
  */
330
- controllerRoleArn: string;
360
+ 'topology.kubernetes.io/region'?: Array<'africa-south1' | 'ap-northeast-1' | 'ap-northeast-2' | 'ap-northeast-3' | 'ap-south-1' | 'ap-southeast-1' | 'ap-southeast-2' | 'ash' | 'asia-east1' | 'asia-east2' | 'asia-northeast1' | 'asia-northeast2' | 'asia-northeast3' | 'asia-south1' | 'asia-south2' | 'asia-southeast1' | 'asia-southeast2' | 'australia-southeast1' | 'australia-southeast2' | 'ca-central-1' | 'eu-central-1' | 'eu-central-2' | 'eu-north-1' | 'eu-west-1' | 'eu-west-2' | 'eu-west-3' | 'europe-central2' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west10' | 'europe-west12' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west6' | 'europe-west8' | 'europe-west9' | 'fsn1' | 'hel1' | 'hil' | 'me-central1' | 'me-central2' | 'me-west1' | 'nbg1' | 'northamerica-northeast1' | 'northamerica-northeast2' | 'sa-east-1' | 'sin' | 'southamerica-east1' | 'southamerica-west1' | 'us-central1' | 'us-east-1' | 'us-east-2' | 'us-east1' | 'us-east4' | 'us-east5' | 'us-south1' | 'us-west-1' | 'us-west-2' | 'us-west1' | 'us-west2' | 'us-west3' | 'us-west4'>;
331
361
  };
362
+ /**
363
+ * Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.
364
+ */
365
+ scalingProfile?: 'aggressive' | 'conservative';
332
366
  /**
333
367
  * Unique identifier of the kubernetes fleet.
334
368
  */
@@ -340,31 +374,56 @@ export type Fleet = {
340
374
  */
341
375
  limits?: {
342
376
  /**
343
- * CPU limit in cores.
377
+ * CPU limit in cores. Maximum 100,000.
344
378
  */
345
- cpu: number;
379
+ cpu?: number;
346
380
  };
347
381
  gcp?: {
348
- enabled?: boolean;
382
+ enabled: boolean;
349
383
  /**
350
- * Project GCP Project id to deploy instances into
384
+ * GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.
351
385
  */
352
- project: string;
386
+ project?: string;
353
387
  };
354
388
  hetzner?: {
355
- enabled?: boolean;
389
+ enabled: boolean;
356
390
  /**
357
- * Hetzner Cloud API key with read / write access
391
+ * Redacted Hetzner API token. Returned as 64 asterisks when a token is configured; omitted otherwise. The real value is never echoed by the API.
358
392
  */
359
- apiKey: string;
393
+ apiKey?: string;
360
394
  };
361
395
  aws?: {
362
- enabled?: boolean;
396
+ enabled: boolean;
363
397
  /**
364
- * ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.
398
+ * AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.
365
399
  */
366
- controllerRoleArn: string;
400
+ controllerRoleArn?: string;
367
401
  };
402
+ /**
403
+ * Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.
404
+ */
405
+ constraints?: {
406
+ /**
407
+ * Allowed values for `karpenter.sh/capacity-type`.
408
+ */
409
+ 'karpenter.sh/capacity-type'?: Array<'on-demand' | 'spot'>;
410
+ /**
411
+ * Allowed values for `kubernetes.io/arch`.
412
+ */
413
+ 'kubernetes.io/arch'?: Array<'amd64' | 'arm64'>;
414
+ /**
415
+ * Allowed values for `cfke.io/instance-family`.
416
+ */
417
+ 'cfke.io/instance-family'?: Array<'a1' | 'a2' | 'a3' | 'a4' | 'c1' | 'c2' | 'c2d' | 'c3' | 'c3d' | 'c4' | 'c4a' | 'c4d' | 'c5' | 'c5a' | 'c5ad' | 'c5d' | 'c5n' | 'c6a' | 'c6g' | 'c6gd' | 'c6gn' | 'c6i' | 'c6id' | 'c6in' | 'c7a' | 'c7g' | 'c7gd' | 'c7gn' | 'c7i' | 'c7i-flex' | 'c8g' | 'c8gd' | 'cax' | 'ccx' | 'cpx' | 'cx' | 'd2' | 'd3' | 'd3en' | 'dl1' | 'dl2q' | 'e2' | 'f1' | 'f2' | 'g1' | 'g2' | 'g4ad' | 'g4dn' | 'g5' | 'g5g' | 'g6' | 'g6e' | 'gr6' | 'h1' | 'h3' | 'hpc6a' | 'hpc6id' | 'hpc7a' | 'hpc7g' | 'i2' | 'i3' | 'i3en' | 'i4g' | 'i4i' | 'i7i' | 'i7ie' | 'i8g' | 'im4gn' | 'inf1' | 'inf2' | 'is4gen' | 'm1' | 'm2' | 'm3' | 'm4' | 'm5' | 'm5a' | 'm5ad' | 'm5d' | 'm5dn' | 'm5n' | 'm5zn' | 'm6a' | 'm6g' | 'm6gd' | 'm6i' | 'm6id' | 'm6idn' | 'm6in' | 'm7a' | 'm7g' | 'm7gd' | 'm7i' | 'm7i-flex' | 'm8g' | 'm8gd' | 'n1' | 'n2' | 'n2d' | 'n4' | 'p3' | 'p3dn' | 'p4d' | 'p4de' | 'p5' | 'p5e' | 'p5en' | 'p6-b200' | 'r3' | 'r4' | 'r5' | 'r5a' | 'r5ad' | 'r5b' | 'r5d' | 'r5dn' | 'r5n' | 'r6a' | 'r6g' | 'r6gd' | 'r6i' | 'r6id' | 'r6idn' | 'r6in' | 'r7a' | 'r7g' | 'r7gd' | 'r7i' | 'r7iz' | 'r8g' | 'r8gd' | 't2' | 't2a' | 't2d' | 't3' | 't3a' | 't4g' | 'trn1' | 'trn1n' | 'u-3tb1' | 'u-6tb1' | 'u7i-12tb' | 'u7i-6tb' | 'u7i-8tb' | 'u7in-16tb' | 'u7in-24tb' | 'u7in-32tb' | 'vt1' | 'x1' | 'x1e' | 'x2gd' | 'x2idn' | 'x2iedn' | 'x2iezn' | 'x4' | 'x8g' | 'z1d' | 'z3'>;
418
+ /**
419
+ * Allowed values for `topology.kubernetes.io/region`.
420
+ */
421
+ 'topology.kubernetes.io/region'?: Array<'africa-south1' | 'ap-northeast-1' | 'ap-northeast-2' | 'ap-northeast-3' | 'ap-south-1' | 'ap-southeast-1' | 'ap-southeast-2' | 'ash' | 'asia-east1' | 'asia-east2' | 'asia-northeast1' | 'asia-northeast2' | 'asia-northeast3' | 'asia-south1' | 'asia-south2' | 'asia-southeast1' | 'asia-southeast2' | 'australia-southeast1' | 'australia-southeast2' | 'ca-central-1' | 'eu-central-1' | 'eu-central-2' | 'eu-north-1' | 'eu-west-1' | 'eu-west-2' | 'eu-west-3' | 'europe-central2' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west10' | 'europe-west12' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west6' | 'europe-west8' | 'europe-west9' | 'fsn1' | 'hel1' | 'hil' | 'me-central1' | 'me-central2' | 'me-west1' | 'nbg1' | 'northamerica-northeast1' | 'northamerica-northeast2' | 'sa-east-1' | 'sin' | 'southamerica-east1' | 'southamerica-west1' | 'us-central1' | 'us-east-1' | 'us-east-2' | 'us-east1' | 'us-east4' | 'us-east5' | 'us-south1' | 'us-west-1' | 'us-west-2' | 'us-west1' | 'us-west2' | 'us-west3' | 'us-west4'>;
422
+ };
423
+ /**
424
+ * Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.
425
+ */
426
+ scalingProfile: 'aggressive' | 'conservative';
368
427
  /**
369
428
  * Unique identifier of the kubernetes fleet.
370
429
  */
@@ -376,31 +435,66 @@ export type FleetUpdateInput = {
376
435
  */
377
436
  limits?: {
378
437
  /**
379
- * CPU limit in cores.
438
+ * CPU limit in cores. Maximum 100,000.
380
439
  */
381
- cpu: number;
440
+ cpu?: number;
382
441
  };
383
442
  gcp?: {
384
- enabled?: boolean;
443
+ enabled: boolean;
385
444
  /**
386
- * Project GCP Project id to deploy instances into
445
+ * GCP project ID to deploy instances into. 6-30 chars, lowercase letters/digits/hyphens, must start with a letter and not end with a hyphen. Omit when GCP is disabled.
387
446
  */
388
- project: string;
447
+ project?: string;
389
448
  };
390
449
  hetzner?: {
391
- enabled?: boolean;
450
+ enabled: boolean;
392
451
  /**
393
- * Hetzner Cloud API key with read / write access
452
+ * Hetzner Cloud API token with read / write access (64 alphanumeric characters). Omit this field to keep the existing value.
394
453
  */
395
- apiKey: string;
454
+ apiKey?: string;
396
455
  };
397
456
  aws?: {
398
- enabled?: boolean;
457
+ enabled: boolean;
399
458
  /**
400
- * ControllerRoleArn is the AWS IAM role that Karpenter uses to manage resources.
459
+ * AWS IAM role ARN that Karpenter uses to manage resources. Omit when AWS is disabled.
401
460
  */
402
- controllerRoleArn: string;
461
+ controllerRoleArn?: string;
403
462
  };
463
+ /**
464
+ * Constraints define scheduling and provisioning requirements for the fleet. Each field restricts the values allowed for a given Kubernetes label key. Multiple constraints are ANDed together. Omit a field to place no restriction on that key.
465
+ */
466
+ constraints?: {
467
+ /**
468
+ * Allowed values for `karpenter.sh/capacity-type`.
469
+ */
470
+ 'karpenter.sh/capacity-type'?: Array<'on-demand' | 'spot'>;
471
+ /**
472
+ * Allowed values for `kubernetes.io/arch`.
473
+ */
474
+ 'kubernetes.io/arch'?: Array<'amd64' | 'arm64'>;
475
+ /**
476
+ * Allowed values for `cfke.io/instance-family`.
477
+ */
478
+ 'cfke.io/instance-family'?: Array<'a1' | 'a2' | 'a3' | 'a4' | 'c1' | 'c2' | 'c2d' | 'c3' | 'c3d' | 'c4' | 'c4a' | 'c4d' | 'c5' | 'c5a' | 'c5ad' | 'c5d' | 'c5n' | 'c6a' | 'c6g' | 'c6gd' | 'c6gn' | 'c6i' | 'c6id' | 'c6in' | 'c7a' | 'c7g' | 'c7gd' | 'c7gn' | 'c7i' | 'c7i-flex' | 'c8g' | 'c8gd' | 'cax' | 'ccx' | 'cpx' | 'cx' | 'd2' | 'd3' | 'd3en' | 'dl1' | 'dl2q' | 'e2' | 'f1' | 'f2' | 'g1' | 'g2' | 'g4ad' | 'g4dn' | 'g5' | 'g5g' | 'g6' | 'g6e' | 'gr6' | 'h1' | 'h3' | 'hpc6a' | 'hpc6id' | 'hpc7a' | 'hpc7g' | 'i2' | 'i3' | 'i3en' | 'i4g' | 'i4i' | 'i7i' | 'i7ie' | 'i8g' | 'im4gn' | 'inf1' | 'inf2' | 'is4gen' | 'm1' | 'm2' | 'm3' | 'm4' | 'm5' | 'm5a' | 'm5ad' | 'm5d' | 'm5dn' | 'm5n' | 'm5zn' | 'm6a' | 'm6g' | 'm6gd' | 'm6i' | 'm6id' | 'm6idn' | 'm6in' | 'm7a' | 'm7g' | 'm7gd' | 'm7i' | 'm7i-flex' | 'm8g' | 'm8gd' | 'n1' | 'n2' | 'n2d' | 'n4' | 'p3' | 'p3dn' | 'p4d' | 'p4de' | 'p5' | 'p5e' | 'p5en' | 'p6-b200' | 'r3' | 'r4' | 'r5' | 'r5a' | 'r5ad' | 'r5b' | 'r5d' | 'r5dn' | 'r5n' | 'r6a' | 'r6g' | 'r6gd' | 'r6i' | 'r6id' | 'r6idn' | 'r6in' | 'r7a' | 'r7g' | 'r7gd' | 'r7i' | 'r7iz' | 'r8g' | 'r8gd' | 't2' | 't2a' | 't2d' | 't3' | 't3a' | 't4g' | 'trn1' | 'trn1n' | 'u-3tb1' | 'u-6tb1' | 'u7i-12tb' | 'u7i-6tb' | 'u7i-8tb' | 'u7in-16tb' | 'u7in-24tb' | 'u7in-32tb' | 'vt1' | 'x1' | 'x1e' | 'x2gd' | 'x2idn' | 'x2iedn' | 'x2iezn' | 'x4' | 'x8g' | 'z1d' | 'z3'>;
479
+ /**
480
+ * Allowed values for `topology.kubernetes.io/region`.
481
+ */
482
+ 'topology.kubernetes.io/region'?: Array<'africa-south1' | 'ap-northeast-1' | 'ap-northeast-2' | 'ap-northeast-3' | 'ap-south-1' | 'ap-southeast-1' | 'ap-southeast-2' | 'ash' | 'asia-east1' | 'asia-east2' | 'asia-northeast1' | 'asia-northeast2' | 'asia-northeast3' | 'asia-south1' | 'asia-south2' | 'asia-southeast1' | 'asia-southeast2' | 'australia-southeast1' | 'australia-southeast2' | 'ca-central-1' | 'eu-central-1' | 'eu-central-2' | 'eu-north-1' | 'eu-west-1' | 'eu-west-2' | 'eu-west-3' | 'europe-central2' | 'europe-north1' | 'europe-southwest1' | 'europe-west1' | 'europe-west10' | 'europe-west12' | 'europe-west2' | 'europe-west3' | 'europe-west4' | 'europe-west6' | 'europe-west8' | 'europe-west9' | 'fsn1' | 'hel1' | 'hil' | 'me-central1' | 'me-central2' | 'me-west1' | 'nbg1' | 'northamerica-northeast1' | 'northamerica-northeast2' | 'sa-east-1' | 'sin' | 'southamerica-east1' | 'southamerica-west1' | 'us-central1' | 'us-east-1' | 'us-east-2' | 'us-east1' | 'us-east4' | 'us-east5' | 'us-south1' | 'us-west-1' | 'us-west-2' | 'us-west1' | 'us-west2' | 'us-west3' | 'us-west4'>;
483
+ };
484
+ /**
485
+ * Controls scale-up / scale-down responsiveness. `aggressive` prioritizes cost-optimization. `conservative` prioritizes stability of the fleet.
486
+ */
487
+ scalingProfile: 'aggressive' | 'conservative';
488
+ };
489
+ export type InviteCreateInput = {
490
+ /**
491
+ * Email address of the user to invite.
492
+ */
493
+ email: string;
494
+ /**
495
+ * Role the invited user will be assigned on redemption. Can be 'Administrator' or 'User'.
496
+ */
497
+ role?: 'Administrator' | 'User';
404
498
  };
405
499
  export type Invite = {
406
500
  /**
@@ -423,6 +517,10 @@ export type Invite = {
423
517
  * Generated unique invite code.
424
518
  */
425
519
  code?: string;
520
+ /**
521
+ * Role the invited user will be assigned on redemption. Can be 'Administrator' or 'User'.
522
+ */
523
+ role?: 'Administrator' | 'User';
426
524
  };
427
525
  export type Invoice = {
428
526
  /**
@@ -543,6 +641,10 @@ export type MarketplaceListing = {
543
641
  };
544
642
  };
545
643
  export type OrganizationCreateInput = {
644
+ /**
645
+ * Type of the organization. `business` for legal entities, `personal` for individuals.
646
+ */
647
+ type: 'business' | 'personal';
546
648
  /**
547
649
  * Email address used for billing as a string.
548
650
  */
@@ -564,6 +666,12 @@ export type OrganizationCreateInput = {
564
666
  */
565
667
  password: string;
566
668
  };
669
+ export type OrganizationCreateOutput = {
670
+ /**
671
+ * Unique identifier of the newly created organization. Generated by the API and safe to use for client-side tracking immediately.
672
+ */
673
+ id: string;
674
+ };
567
675
  export type Organization = {
568
676
  /**
569
677
  * Unique identifier of the organization. UUID v4 string in canonical form
@@ -573,6 +681,10 @@ export type Organization = {
573
681
  * Name of the legal entity. This name will be used in invoices. Use your first and last name for individual accounts.
574
682
  */
575
683
  name?: string;
684
+ /**
685
+ * Type of the organization. `business` for legal entities, `personal` for individuals.
686
+ */
687
+ type: 'business' | 'personal';
576
688
  /**
577
689
  * Creation date of the organization. ISO 8601 date string in UTC timezone
578
690
  */
@@ -631,36 +743,52 @@ export type Organization = {
631
743
  * Status of the organization. Can be `active` or `closed`, or `suspended`.
632
744
  */
633
745
  status: 'active' | 'closed' | 'suspended';
746
+ /**
747
+ * Verification status of the organization, which determines the assigned quota. `none` when billing information is incomplete, `submitted` when billing information is complete but the organization is not yet verified, `verified` when the organization is verified.
748
+ */
749
+ verification: 'none' | 'submitted' | 'verified';
634
750
  };
635
751
  export type PaymentMethod = {
636
752
  /**
637
- * Unique identifier of the organization. UUID v4 string in canonical form.
753
+ * Payment method identifier. Stripe payment method id for cards/SEPA; the constant `bank_transfer` for the invoice/bank-transfer method. Used to set as default or delete the payment method.
638
754
  */
639
755
  id: string;
640
756
  /**
641
- * Whether organization payment method was set up and ready to use for payments.
642
- */
643
- setup: boolean;
644
- /**
645
- * Payment method type type. Only `card` payments supported at the moment.
757
+ * Payment method type. `card`, `sepa_debit` for SEPA Direct Debit (business accounts only), or `bank_transfer` for paying invoices by bank transfer.
646
758
  */
647
- type: 'card';
759
+ type: 'card' | 'sepa_debit' | 'bank_transfer';
648
760
  /**
649
- * Last 4 digits of the payment card number.
761
+ * Last 4 digits of the payment card number, of the bank account (IBAN) for SEPA Direct Debit, or of the destination IBAN for bank transfer.
650
762
  */
651
763
  last4: string;
652
764
  /**
653
- * Two-digit number representing the card's expiration month.
765
+ * Two-digit number representing the card's expiration month. Null for SEPA Direct Debit and bank transfer.
654
766
  */
655
767
  exp_month: number;
656
768
  /**
657
- * Four-digit number representing the card's expiration year.
769
+ * Four-digit number representing the card's expiration year. May be in the past for an expired card still on file. Null for SEPA Direct Debit and bank transfer.
658
770
  */
659
771
  exp_year: number;
660
772
  /**
661
- * Payment card brand. Can be `amex`, `diners`, `discover`, `eftpos_au`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`.
773
+ * Payment card brand as reported by Stripe, e.g. `visa`, `mastercard`, `amex`, `cartes_bancaires`, or `unknown`. Null for SEPA Direct Debit and bank transfer.
774
+ */
775
+ brand: string;
776
+ /**
777
+ * Full destination IBAN to send bank transfers to. Set only for `bank_transfer`; null otherwise. This is Cloudfleet's virtual receiving account, shown in full so the customer can pay into it.
778
+ */
779
+ iban: string;
780
+ /**
781
+ * BIC/SWIFT of the destination bank for bank transfers. Set only for `bank_transfer`; null otherwise.
782
+ */
783
+ bic: string;
784
+ /**
785
+ * Account holder name of the destination bank account for bank transfers. Set only for `bank_transfer`; null otherwise.
786
+ */
787
+ account_holder_name: string;
788
+ /**
789
+ * Whether this payment method is the default used for invoices and active subscriptions. Always false for `bank_transfer` (it cannot be a Stripe default payment method).
662
790
  */
663
- brand: 'amex' | 'diners' | 'discover' | 'eftpos_au' | 'jcb' | 'mastercard' | 'unionpay' | 'visa' | 'unknown';
791
+ is_default: boolean;
664
792
  };
665
793
  export type PlatformQuota = {
666
794
  /**
@@ -857,6 +985,258 @@ export type RegistryTag = {
857
985
  */
858
986
  uri: string;
859
987
  };
988
+ export type TicketAttachment = {
989
+ /**
990
+ * Unique identifier of the attachment (Mongo ObjectId).
991
+ */
992
+ id: string;
993
+ /**
994
+ * Original filename as uploaded.
995
+ */
996
+ filename: string;
997
+ /**
998
+ * MIME content type of the attachment.
999
+ */
1000
+ content_type: string;
1001
+ /**
1002
+ * Size of the attachment in bytes.
1003
+ */
1004
+ size: number;
1005
+ };
1006
+ export type TicketCreateInput = {
1007
+ /**
1008
+ * Ticket category. Drives auto-assignment and may carry a subcategory in `properties`.
1009
+ */
1010
+ category: 'billing' | 'technical' | 'general';
1011
+ /**
1012
+ * Initial message body in markdown. There is no separate subject — the first message body is the description.
1013
+ */
1014
+ body: string;
1015
+ /**
1016
+ * Free-form key/value bag set by the UI (e.g. `subcategory`, `cluster_id`, `cluster_name`, `region`).
1017
+ */
1018
+ properties?: {
1019
+ [key: string]: unknown;
1020
+ };
1021
+ };
1022
+ export type TicketListResponse = {
1023
+ /**
1024
+ * Tickets for the organization, ordered newest first. Messages are omitted from list responses.
1025
+ */
1026
+ items: Array<{
1027
+ /**
1028
+ * Unique identifier of the ticket (Mongo ObjectId).
1029
+ */
1030
+ id: string;
1031
+ /**
1032
+ * Current state of the ticket.
1033
+ */
1034
+ status: 'waiting_on_us' | 'waiting_on_user' | 'closed';
1035
+ /**
1036
+ * Ticket category.
1037
+ */
1038
+ category: 'billing' | 'technical' | 'general';
1039
+ /**
1040
+ * First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.
1041
+ */
1042
+ summary: string;
1043
+ /**
1044
+ * Closure timestamp. Null while the ticket is open.
1045
+ */
1046
+ closed_at?: string;
1047
+ /**
1048
+ * Creation date of the ticket. ISO 8601 UTC.
1049
+ */
1050
+ date_created: string;
1051
+ /**
1052
+ * Last update date of the ticket. ISO 8601 UTC.
1053
+ */
1054
+ date_updated: string;
1055
+ /**
1056
+ * Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.
1057
+ */
1058
+ messages?: Array<{
1059
+ /**
1060
+ * Unique identifier of the message (Mongo ObjectId).
1061
+ */
1062
+ id: string;
1063
+ /**
1064
+ * Message type. Internal notes are filtered out of customer-facing responses.
1065
+ */
1066
+ type: 'customer_reply' | 'agent_reply';
1067
+ /**
1068
+ * Message body in markdown.
1069
+ */
1070
+ body: string;
1071
+ /**
1072
+ * First name of the author. Null when not provided.
1073
+ */
1074
+ author_first_name?: string;
1075
+ /**
1076
+ * Last name of the author. Null when not provided.
1077
+ */
1078
+ author_last_name?: string;
1079
+ /**
1080
+ * Attachments associated with this message.
1081
+ */
1082
+ attachments?: Array<{
1083
+ /**
1084
+ * Unique identifier of the attachment (Mongo ObjectId).
1085
+ */
1086
+ id: string;
1087
+ /**
1088
+ * Original filename as uploaded.
1089
+ */
1090
+ filename: string;
1091
+ /**
1092
+ * MIME content type of the attachment.
1093
+ */
1094
+ content_type: string;
1095
+ /**
1096
+ * Size of the attachment in bytes.
1097
+ */
1098
+ size: number;
1099
+ }>;
1100
+ /**
1101
+ * Creation date of the message. ISO 8601 UTC.
1102
+ */
1103
+ date_created: string;
1104
+ }>;
1105
+ }>;
1106
+ };
1107
+ export type TicketMessageInput = {
1108
+ /**
1109
+ * Reply body in markdown.
1110
+ */
1111
+ body: string;
1112
+ };
1113
+ export type TicketMessage = {
1114
+ /**
1115
+ * Unique identifier of the message (Mongo ObjectId).
1116
+ */
1117
+ id: string;
1118
+ /**
1119
+ * Message type. Internal notes are filtered out of customer-facing responses.
1120
+ */
1121
+ type: 'customer_reply' | 'agent_reply';
1122
+ /**
1123
+ * Message body in markdown.
1124
+ */
1125
+ body: string;
1126
+ /**
1127
+ * First name of the author. Null when not provided.
1128
+ */
1129
+ author_first_name?: string;
1130
+ /**
1131
+ * Last name of the author. Null when not provided.
1132
+ */
1133
+ author_last_name?: string;
1134
+ /**
1135
+ * Attachments associated with this message.
1136
+ */
1137
+ attachments?: Array<{
1138
+ /**
1139
+ * Unique identifier of the attachment (Mongo ObjectId).
1140
+ */
1141
+ id: string;
1142
+ /**
1143
+ * Original filename as uploaded.
1144
+ */
1145
+ filename: string;
1146
+ /**
1147
+ * MIME content type of the attachment.
1148
+ */
1149
+ content_type: string;
1150
+ /**
1151
+ * Size of the attachment in bytes.
1152
+ */
1153
+ size: number;
1154
+ }>;
1155
+ /**
1156
+ * Creation date of the message. ISO 8601 UTC.
1157
+ */
1158
+ date_created: string;
1159
+ };
1160
+ export type Ticket = {
1161
+ /**
1162
+ * Unique identifier of the ticket (Mongo ObjectId).
1163
+ */
1164
+ id: string;
1165
+ /**
1166
+ * Current state of the ticket.
1167
+ */
1168
+ status: 'waiting_on_us' | 'waiting_on_user' | 'closed';
1169
+ /**
1170
+ * Ticket category.
1171
+ */
1172
+ category: 'billing' | 'technical' | 'general';
1173
+ /**
1174
+ * First 128 characters of the initial message body, with markdown formatting and newlines stripped. Used for ticket list previews.
1175
+ */
1176
+ summary: string;
1177
+ /**
1178
+ * Closure timestamp. Null while the ticket is open.
1179
+ */
1180
+ closed_at?: string;
1181
+ /**
1182
+ * Creation date of the ticket. ISO 8601 UTC.
1183
+ */
1184
+ date_created: string;
1185
+ /**
1186
+ * Last update date of the ticket. ISO 8601 UTC.
1187
+ */
1188
+ date_updated: string;
1189
+ /**
1190
+ * Messages on the ticket in chronological order. Internal notes are excluded. Returned by the detail endpoint only.
1191
+ */
1192
+ messages?: Array<{
1193
+ /**
1194
+ * Unique identifier of the message (Mongo ObjectId).
1195
+ */
1196
+ id: string;
1197
+ /**
1198
+ * Message type. Internal notes are filtered out of customer-facing responses.
1199
+ */
1200
+ type: 'customer_reply' | 'agent_reply';
1201
+ /**
1202
+ * Message body in markdown.
1203
+ */
1204
+ body: string;
1205
+ /**
1206
+ * First name of the author. Null when not provided.
1207
+ */
1208
+ author_first_name?: string;
1209
+ /**
1210
+ * Last name of the author. Null when not provided.
1211
+ */
1212
+ author_last_name?: string;
1213
+ /**
1214
+ * Attachments associated with this message.
1215
+ */
1216
+ attachments?: Array<{
1217
+ /**
1218
+ * Unique identifier of the attachment (Mongo ObjectId).
1219
+ */
1220
+ id: string;
1221
+ /**
1222
+ * Original filename as uploaded.
1223
+ */
1224
+ filename: string;
1225
+ /**
1226
+ * MIME content type of the attachment.
1227
+ */
1228
+ content_type: string;
1229
+ /**
1230
+ * Size of the attachment in bytes.
1231
+ */
1232
+ size: number;
1233
+ }>;
1234
+ /**
1235
+ * Creation date of the message. ISO 8601 UTC.
1236
+ */
1237
+ date_created: string;
1238
+ }>;
1239
+ };
860
1240
  export type TokenCreateInput = {
861
1241
  /**
862
1242
  * Human readable access token name.
@@ -1000,14 +1380,6 @@ export type UserCreateInput = {
1000
1380
  * User password. Must be at least 8 characters long.
1001
1381
  */
1002
1382
  password: string;
1003
- /**
1004
- * Status of the user. Can be `active` or `inactive`. Inactive users cannot log in or manage organization resources.
1005
- */
1006
- status?: 'active' | 'inactive';
1007
- /**
1008
- * User role. Can be 'Administrator', 'User'.
1009
- */
1010
- role?: 'Administrator' | 'User';
1011
1383
  };
1012
1384
  export type User = {
1013
1385
  /**
@@ -1085,44 +1457,112 @@ export type GetUsageResponses = {
1085
1457
  200: UsageResponse;
1086
1458
  };
1087
1459
  export type GetUsageResponse = GetUsageResponses[keyof GetUsageResponses];
1088
- export type GetPaymentMethodData = {
1460
+ export type GetPaymentMethodSecretData = {
1089
1461
  body?: never;
1090
1462
  path?: never;
1091
1463
  query?: never;
1092
1464
  url: '/billing/payment-method';
1093
1465
  };
1094
- export type GetPaymentMethodErrors = {
1466
+ export type GetPaymentMethodSecretResponses = {
1095
1467
  /**
1096
- * Returns 404 Not Found if the organization does not have a payment method set up.
1468
+ * The client secret. Used for client-side retrieval using a publishable key. The client secret can be used to complete a payment from your frontend. It should not be stored, logged, or exposed to anyone other than the customer. Make sure that you have TLS enabled on any page that includes the client secret.
1469
+ *
1097
1470
  */
1098
- 404: unknown;
1471
+ 200: {
1472
+ /**
1473
+ * The client secret.
1474
+ */
1475
+ id?: string;
1476
+ };
1477
+ };
1478
+ export type GetPaymentMethodSecretResponse = GetPaymentMethodSecretResponses[keyof GetPaymentMethodSecretResponses];
1479
+ export type ListPaymentMethodsData = {
1480
+ body?: never;
1481
+ path?: never;
1482
+ query?: never;
1483
+ url: '/billing/payment-methods';
1484
+ };
1485
+ export type ListPaymentMethodsErrors = {
1486
+ /**
1487
+ * Not authenticated
1488
+ */
1489
+ 401: unknown;
1099
1490
  };
1100
- export type GetPaymentMethodResponses = {
1491
+ export type ListPaymentMethodsResponses = {
1101
1492
  /**
1102
- * Redacted payment card information.
1493
+ * An array of payment methods.
1103
1494
  */
1104
- 200: PaymentMethod;
1495
+ 200: Array<PaymentMethod>;
1105
1496
  };
1106
- export type GetPaymentMethodResponse = GetPaymentMethodResponses[keyof GetPaymentMethodResponses];
1107
- export type GetPaymentMethodSecretData = {
1497
+ export type ListPaymentMethodsResponse = ListPaymentMethodsResponses[keyof ListPaymentMethodsResponses];
1498
+ export type SetDefaultPaymentMethodData = {
1108
1499
  body?: never;
1109
- path?: never;
1500
+ path: {
1501
+ /**
1502
+ * Stripe payment method identifier.
1503
+ */
1504
+ paymentMethodId: string;
1505
+ };
1110
1506
  query?: never;
1111
- url: '/billing/payment-method';
1507
+ url: '/billing/payment-methods/{paymentMethodId}/default';
1112
1508
  };
1113
- export type GetPaymentMethodSecretResponses = {
1509
+ export type SetDefaultPaymentMethodErrors = {
1114
1510
  /**
1115
- * The client secret. Used for client-side retrieval using a publishable key. The client secret can be used to complete a payment from your frontend. It should not be stored, logged, or exposed to anyone other than the customer. Make sure that you have TLS enabled on any page that includes the client secret.
1116
- *
1511
+ * The bank transfer payment method cannot be set as the default.
1117
1512
  */
1118
- 200: {
1513
+ 400: unknown;
1514
+ /**
1515
+ * Not authenticated
1516
+ */
1517
+ 401: unknown;
1518
+ /**
1519
+ * Payment method not found.
1520
+ */
1521
+ 404: unknown;
1522
+ };
1523
+ export type SetDefaultPaymentMethodResponses = {
1524
+ /**
1525
+ * Default payment method updated.
1526
+ */
1527
+ 204: void;
1528
+ };
1529
+ export type SetDefaultPaymentMethodResponse = SetDefaultPaymentMethodResponses[keyof SetDefaultPaymentMethodResponses];
1530
+ export type DeletePaymentMethodData = {
1531
+ body?: never;
1532
+ path: {
1119
1533
  /**
1120
- * The client secret.
1534
+ * Stripe payment method identifier.
1121
1535
  */
1122
- id?: string;
1536
+ paymentMethodId: string;
1123
1537
  };
1538
+ query?: never;
1539
+ url: '/billing/payment-methods/{paymentMethodId}';
1124
1540
  };
1125
- export type GetPaymentMethodSecretResponse = GetPaymentMethodSecretResponses[keyof GetPaymentMethodSecretResponses];
1541
+ export type DeletePaymentMethodErrors = {
1542
+ /**
1543
+ * The bank transfer payment method cannot be removed.
1544
+ */
1545
+ 400: unknown;
1546
+ /**
1547
+ * Not authenticated
1548
+ */
1549
+ 401: unknown;
1550
+ /**
1551
+ * Payment method not found.
1552
+ */
1553
+ 404: unknown;
1554
+ /**
1555
+ * Cannot delete the only remaining payment method.
1556
+ */
1557
+ 409: unknown;
1558
+ };
1559
+ export type DeletePaymentMethodResponses = {
1560
+ /**
1561
+ * Payment method deleted.
1562
+ */
1563
+ 204: void;
1564
+ };
1565
+ export type DeletePaymentMethodResponse = DeletePaymentMethodResponses[keyof DeletePaymentMethodResponses];
1126
1566
  export type ListInvoicesData = {
1127
1567
  body?: never;
1128
1568
  path?: never;
@@ -1556,30 +1996,6 @@ export type UpdateClusterResponses = {
1556
1996
  200: Cluster;
1557
1997
  };
1558
1998
  export type UpdateClusterResponse = UpdateClusterResponses[keyof UpdateClusterResponses];
1559
- export type GetClusterCaData = {
1560
- body?: never;
1561
- path: {
1562
- /**
1563
- * Unique identifier of the cluster. UUID v4 string in canonical form
1564
- */
1565
- cluster_id: string;
1566
- };
1567
- query?: never;
1568
- url: '/clusters/{cluster_id}/ca';
1569
- };
1570
- export type GetClusterCaErrors = {
1571
- /**
1572
- * Cluster not found, or its certificate authority is not available yet.
1573
- */
1574
- 404: unknown;
1575
- };
1576
- export type GetClusterCaResponses = {
1577
- /**
1578
- * PEM-encoded certificate authority of the cluster.
1579
- */
1580
- 200: string;
1581
- };
1582
- export type GetClusterCaResponse = GetClusterCaResponses[keyof GetClusterCaResponses];
1583
1999
  export type GetJoinInformationData = {
1584
2000
  body?: never;
1585
2001
  path: {
@@ -1624,12 +2040,7 @@ export type ListInvitesResponses = {
1624
2040
  };
1625
2041
  export type ListInvitesResponse = ListInvitesResponses[keyof ListInvitesResponses];
1626
2042
  export type CreateInviteData = {
1627
- body: {
1628
- /**
1629
- * User email address
1630
- */
1631
- email?: string;
1632
- };
2043
+ body: InviteCreateInput;
1633
2044
  path?: never;
1634
2045
  query?: never;
1635
2046
  url: '/invites';
@@ -1654,9 +2065,18 @@ export type GetInviteData = {
1654
2065
  };
1655
2066
  export type GetInviteResponses = {
1656
2067
  /**
1657
- * Returns a single object containing invite details.
2068
+ * The invitation code is valid. Returns the invited email and organization.
1658
2069
  */
1659
- 200: Invite;
2070
+ 200: {
2071
+ /**
2072
+ * Email address the invite was issued to.
2073
+ */
2074
+ email?: string;
2075
+ /**
2076
+ * Identifier of the organization the invite grants access to.
2077
+ */
2078
+ organization_id?: string;
2079
+ };
1660
2080
  };
1661
2081
  export type GetInviteResponse = GetInviteResponses[keyof GetInviteResponses];
1662
2082
  export type DeleteInviteData = {
@@ -1786,10 +2206,12 @@ export type CreateOrganizationData = {
1786
2206
  };
1787
2207
  export type CreateOrganizationResponses = {
1788
2208
  /**
1789
- * Successfully created a new organization.
2209
+ * Organization signup accepted. Returns the generated organization id immediately; provisioning (billing, Keycloak realm, user) continues asynchronously in the background.
2210
+ *
1790
2211
  */
1791
- 200: unknown;
2212
+ 200: OrganizationCreateOutput;
1792
2213
  };
2214
+ export type CreateOrganizationResponse = CreateOrganizationResponses[keyof CreateOrganizationResponses];
1793
2215
  export type ListRepositoriesData = {
1794
2216
  body?: never;
1795
2217
  path?: never;
@@ -1928,6 +2350,111 @@ export type GetTagResponses = {
1928
2350
  200: RegistryTag;
1929
2351
  };
1930
2352
  export type GetTagResponse = GetTagResponses[keyof GetTagResponses];
2353
+ export type ListTicketsData = {
2354
+ body?: never;
2355
+ path?: never;
2356
+ query?: never;
2357
+ url: '/tickets';
2358
+ };
2359
+ export type ListTicketsResponses = {
2360
+ /**
2361
+ * Tickets for the organization.
2362
+ */
2363
+ 200: TicketListResponse;
2364
+ };
2365
+ export type ListTicketsResponse = ListTicketsResponses[keyof ListTicketsResponses];
2366
+ export type CreateTicketData = {
2367
+ body: {
2368
+ /**
2369
+ * JSON-encoded TicketCreateInput.
2370
+ */
2371
+ payload?: string;
2372
+ attachments?: Array<Blob | File>;
2373
+ };
2374
+ path?: never;
2375
+ query?: never;
2376
+ url: '/tickets';
2377
+ };
2378
+ export type CreateTicketResponses = {
2379
+ /**
2380
+ * Ticket created.
2381
+ */
2382
+ 200: Ticket;
2383
+ };
2384
+ export type CreateTicketResponse = CreateTicketResponses[keyof CreateTicketResponses];
2385
+ export type CloseTicketData = {
2386
+ body?: never;
2387
+ path: {
2388
+ ticket_id: string;
2389
+ };
2390
+ query?: never;
2391
+ url: '/tickets/{ticket_id}';
2392
+ };
2393
+ export type CloseTicketResponses = {
2394
+ /**
2395
+ * Ticket closed.
2396
+ */
2397
+ 200: Ticket;
2398
+ };
2399
+ export type CloseTicketResponse = CloseTicketResponses[keyof CloseTicketResponses];
2400
+ export type GetTicketData = {
2401
+ body?: never;
2402
+ path: {
2403
+ ticket_id: string;
2404
+ };
2405
+ query?: never;
2406
+ url: '/tickets/{ticket_id}';
2407
+ };
2408
+ export type GetTicketResponses = {
2409
+ /**
2410
+ * Ticket with messages (internal notes excluded).
2411
+ */
2412
+ 200: Ticket;
2413
+ };
2414
+ export type GetTicketResponse = GetTicketResponses[keyof GetTicketResponses];
2415
+ export type ReplyTicketData = {
2416
+ body: {
2417
+ /**
2418
+ * JSON-encoded TicketMessageInput.
2419
+ */
2420
+ payload?: string;
2421
+ attachments?: Array<Blob | File>;
2422
+ };
2423
+ path: {
2424
+ ticket_id: string;
2425
+ };
2426
+ query?: never;
2427
+ url: '/tickets/{ticket_id}/messages';
2428
+ };
2429
+ export type ReplyTicketErrors = {
2430
+ /**
2431
+ * Ticket is closed. Open a new ticket instead.
2432
+ */
2433
+ 409: unknown;
2434
+ };
2435
+ export type ReplyTicketResponses = {
2436
+ /**
2437
+ * Reply appended.
2438
+ */
2439
+ 200: TicketMessage;
2440
+ };
2441
+ export type ReplyTicketResponse = ReplyTicketResponses[keyof ReplyTicketResponses];
2442
+ export type GetTicketAttachmentData = {
2443
+ body?: never;
2444
+ path: {
2445
+ ticket_id: string;
2446
+ attachment_id: string;
2447
+ };
2448
+ query?: never;
2449
+ url: '/tickets/{ticket_id}/attachments/{attachment_id}';
2450
+ };
2451
+ export type GetTicketAttachmentResponses = {
2452
+ /**
2453
+ * Attachment binary stream.
2454
+ */
2455
+ 200: Blob | File;
2456
+ };
2457
+ export type GetTicketAttachmentResponse = GetTicketAttachmentResponses[keyof GetTicketAttachmentResponses];
1931
2458
  export type ListTokensData = {
1932
2459
  body?: never;
1933
2460
  path?: never;