> ## Documentation Index
> Fetch the complete documentation index at: https://www.qovery.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a cluster



## OpenAPI

````yaml /api-reference/openapi.yaml post /organization/{organizationId}/cluster
openapi: 3.0.0
info:
  version: 1.0.4
  title: Qovery API
  description: >
    - Qovery is the fastest way to deploy your full-stack apps on any Cloud
    provider.

    - ℹ️ The API is stable and still in development.
  contact:
    name: Qovery Product Team
    url: https://www.qovery.com
    email: support+api+documentation@qovery.com
  x-logo:
    url: https://console.qovery.com/assets/logos/logo-white.svg
    altText: Qovery
servers:
  - url: https://api.qovery.com
security:
  - bearerAuth: []
  - ApiKeyAuth: []
tags:
  - name: Account
  - name: Account Info
  - name: Alert Receivers
  - name: Alert Rules
  - name: Admin
  - name: ArgoCD
  - name: Application
  - name: Application Actions
  - name: Application Configuration
  - name: Application Database
  - name: Application Deployment Restriction
  - name: Application Deployment History
  - name: Application Environment Variable
  - name: Application Logs
  - name: Application Main Calls
  - name: Application Secret
  - name: Application Annotations Group
  - name: Applications
  - name: AutoscalingPolicy
  - name: Container
  - name: Container Actions
  - name: Container Configuration
  - name: Container Database
  - name: Container Deployment History
  - name: Container Environment Variable
  - name: Container Logs
  - name: Container Main Calls
  - name: Container Registry
  - name: Container Secret
  - name: Container Annotations Group
  - name: Containers
  - name: Deployment Stage Main Calls
  - name: Job
  - name: Job Actions
  - name: Job Configuration
  - name: Job Database
  - name: Job Deployment Restriction
  - name: Job Deployment History
  - name: Job Environment Variable
  - name: Job Logs
  - name: Job Main Calls
  - name: Job Registry
  - name: Job Secret
  - name: Job Annotations Group
  - name: Jobs
  - name: KedaTriggerAuthentication
  - name: Helm
  - name: Helm Actions
  - name: Helm Configuration
  - name: Helm Database
  - name: Helm Deployment Restriction
  - name: Helm Deployment History
  - name: Helm Logs
  - name: Helm Main Calls
  - name: Helm Repository
  - name: Helms
  - name: Backups
  - name: Billing
  - name: Cloud Provider
  - name: Cloud Provider Credentials
  - name: Clusters
  - name: Custom Domain
  - name: Container Custom Domain
  - name: Database
  - name: Database Actions
  - name: Database Application
  - name: Database Container
  - name: Database Deployment History
  - name: Database Main Calls
  - name: Database Annotations Group
  - name: Databases
  - name: Environment
  - name: Environment Actions
  - name: Environment Deployment History
  - name: Environment Deployment Rule
  - name: Environment Logs
  - name: Environment Main Calls
  - name: Environment Secret
  - name: Environment Variable
  - name: Environments
  - name: Git
  - name: Github App
  - name: Git repositories
  - name: Members
  - name: Organization
  - name: Organization Account Git Repositories
  - name: Organization Cluster Lock
  - name: Organization Main Calls
  - name: Organization Custom Role
  - name: Organization Event
  - name: Organization Api Token
  - name: Organization Webhook
  - name: Organization Annotations Group
  - name: Organization Labels Group
  - name: Organization Enterprise Connection
  - name: Project
  - name: Project Deployment Rule
  - name: Project Environment Variable
  - name: Project Main Calls
  - name: Project Secret
  - name: Projects
  - name: Referral & Rewards
  - name: Terraforms
  - name: Terraform Main Calls
  - name: Terraform Resources
  - name: Terraform Deployment History
  - name: Terraform Deployment Restriction
  - name: Container Registries
  - name: Helm Repositories
  - name: User Sign Up
  - name: Variable Main Calls
  - name: Helm Custom Domain
  - name: Lifecycle Template Main Calls
paths:
  /organization/{organizationId}/cluster:
    post:
      tags:
        - Clusters
      summary: Create a cluster
      operationId: createCluster
      parameters:
        - $ref: '#/components/parameters/organizationId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterRequest'
      responses:
        '201':
          description: Create cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cluster'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
components:
  parameters:
    organizationId:
      name: organizationId
      in: path
      description: Organization ID
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    ClusterRequest:
      type: object
      required:
        - name
        - region
        - cloud_provider
      properties:
        name:
          type: string
          description: name is case-insensitive
        description:
          type: string
        region:
          type: string
        cloud_provider:
          $ref: '#/components/schemas/CloudVendorEnum'
        cloud_provider_credentials:
          $ref: '#/components/schemas/ClusterCloudProviderInfoRequest'
        min_running_nodes:
          type: integer
          default: 1
        max_running_nodes:
          type: integer
          default: 1
        disk_size:
          type: integer
          example: 50
          default: 40
          description: Unit is in GB. The disk size to be used for the node configuration
        disk_iops:
          type: integer
          example: 7800
          minimum: 3000
          maximum: 16000
          description: >-
            Unit is operation/seconds. The disk IOPS to be used for the node
            configuration
        disk_throughput:
          type: integer
          example: 255
          minimum: 125
          maximum: 1000
          description: >-
            Unit is in MB/s. The disk thoughput to be used for the node
            configuration
        instance_type:
          type: string
          example: T3A_LARGE
          description: >-
            the instance type to be used for this cluster. The list of values
            can be retrieved via the endpoint /{CloudProvider}/instanceType
        kubernetes:
          $ref: '#/components/schemas/KubernetesEnum'
        production:
          type: boolean
          description: specific flag to indicate that this cluster is a production one
        ssh_keys:
          description: >-
            Indicate your public ssh_key to remotely connect to your EC2
            instance.
          type: array
          items:
            type: string
        features:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
                nullable: false
              value:
                nullable: true
                oneOf:
                  - type: string
                  - type: boolean
                  - $ref: '#/components/schemas/ClusterFeatureAwsExistingVpc'
                  - $ref: '#/components/schemas/ClusterFeatureGcpExistingVpc'
                  - $ref: '#/components/schemas/ClusterFeatureKarpenterParameters'
        metrics_parameters:
          $ref: '#/components/schemas/MetricsParameters'
        infrastructure_charts_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureChartsParameters'
        keda:
          $ref: '#/components/schemas/ClusterKeda'
        labels_groups:
          $ref: '#/components/schemas/ClusterLabelsGroupList'
        secret_manager_accesses:
          $ref: '#/components/schemas/SecretManagerAccessRequestList'
    Cluster:
      allOf:
        - $ref: '#/components/schemas/Base'
        - type: object
          required:
            - organization
            - name
            - region
            - cloud_provider
          properties:
            organization:
              $ref: '#/components/schemas/ReferenceObject'
            name:
              type: string
              description: name is case-insensitive
            description:
              type: string
            region:
              type: string
            cloud_provider:
              $ref: '#/components/schemas/CloudVendorEnum'
            min_running_nodes:
              type: integer
              default: 1
            max_running_nodes:
              type: integer
              default: 1
            disk_size:
              type: integer
              example: 50
              default: 20
              description: >-
                Unit is in GB. The disk size to be used for the node
                configuration
            disk_iops:
              type: integer
              example: 7800
              minimum: 3000
              maximum: 16000
              description: >-
                Unit is operation/seconds. The disk IOPS to be used for the node
                configuration
            disk_throughput:
              type: integer
              example: 255
              minimum: 125
              maximum: 1000
              description: >-
                Unit is in MB/s. The disk thoughput to be used for the node
                configuration
            instance_type:
              type: string
              example: T3A_LARGE
              description: >-
                the instance type to be used for this cluster. The list of
                values can be retrieved via the endpoint
                /{CloudProvider}/instanceType
            kubernetes:
              $ref: '#/components/schemas/KubernetesEnum'
            cpu:
              type: integer
              example: 10000
              description: unit is millicores (m). 1000m = 1 cpu
            memory:
              type: integer
              example: 4096
              description: unit is MB. 1024 MB = 1GB
            estimated_cloud_provider_cost:
              type: integer
              description: >-
                This is an estimation of the cost this cluster will represent on
                your cloud proider bill, based on your current configuration
            status:
              $ref: '#/components/schemas/ClusterStateEnum'
            has_access:
              type: boolean
            version:
              type: string
            is_default:
              type: boolean
            is_demo:
              type: boolean
              description: specific flag to indicate that this cluster is a demo one
            production:
              type: boolean
              description: specific flag to indicate that this cluster is a production one
            ssh_keys:
              description: >-
                Indicate your public ssh_key to remotely connect to your EC2
                instance.
              type: array
              items:
                type: string
            features:
              type: array
              items:
                $ref: '#/components/schemas/ClusterFeatureResponse'
            deployment_status:
              $ref: '#/components/schemas/ClusterDeploymentStatusEnum'
            metrics_parameters:
              $ref: '#/components/schemas/MetricsParameters'
            infrastructure_outputs:
              $ref: '#/components/schemas/InfrastructureOutputs'
            infrastructure_charts_parameters:
              $ref: '#/components/schemas/ClusterInfrastructureChartsParameters'
            keda:
              $ref: '#/components/schemas/ClusterKeda'
            labels_groups:
              $ref: '#/components/schemas/ClusterLabelsGroupList'
            secret_manager_accesses:
              $ref: '#/components/schemas/SecretManagerAccessList'
    CloudVendorEnum:
      type: string
      enum:
        - AWS
        - SCW
        - GCP
        - DO
        - AZURE
        - OVH
        - CIVO
        - HETZNER
        - ORACLE
        - IBM
        - ON_PREMISE
    ClusterCloudProviderInfoRequest:
      type: object
      properties:
        cloud_provider:
          $ref: '#/components/schemas/CloudProviderEnum'
        credentials:
          type: object
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        region:
          type: string
    KubernetesEnum:
      type: string
      enum:
        - MANAGED
        - SELF_MANAGED
        - PARTIALLY_MANAGED
      default: MANAGED
    ClusterFeatureAwsExistingVpc:
      type: object
      required:
        - aws_vpc_eks_id
        - eks_subnets_zone_a_ids
        - eks_subnets_zone_b_ids
        - eks_subnets_zone_c_ids
      properties:
        aws_vpc_eks_id:
          type: string
        eks_subnets_zone_a_ids:
          type: array
          items:
            type: string
        eks_subnets_zone_b_ids:
          type: array
          items:
            type: string
        eks_subnets_zone_c_ids:
          type: array
          items:
            type: string
        documentdb_subnets_zone_a_ids:
          type: array
          nullable: true
          items:
            type: string
        documentdb_subnets_zone_b_ids:
          type: array
          nullable: true
          items:
            type: string
        documentdb_subnets_zone_c_ids:
          type: array
          nullable: true
          items:
            type: string
        elasticache_subnets_zone_a_ids:
          type: array
          nullable: true
          items:
            type: string
        elasticache_subnets_zone_b_ids:
          type: array
          nullable: true
          items:
            type: string
        elasticache_subnets_zone_c_ids:
          type: array
          nullable: true
          items:
            type: string
        rds_subnets_zone_a_ids:
          type: array
          nullable: true
          items:
            type: string
        rds_subnets_zone_b_ids:
          type: array
          nullable: true
          items:
            type: string
        rds_subnets_zone_c_ids:
          type: array
          nullable: true
          items:
            type: string
        eks_karpenter_fargate_subnets_zone_a_ids:
          type: array
          x-stoplight:
            id: 8rttrya00wmkr
          nullable: true
          items:
            x-stoplight:
              id: rtxx96v011irr
            type: string
        eks_karpenter_fargate_subnets_zone_b_ids:
          type: array
          x-stoplight:
            id: xnbtr8676culs
          nullable: true
          items:
            x-stoplight:
              id: 1w592qk4spodn
            type: string
        eks_karpenter_fargate_subnets_zone_c_ids:
          type: array
          x-stoplight:
            id: st5domzqqkcoh
          nullable: true
          items:
            x-stoplight:
              id: xyjjh50ckrzee
            type: string
        eks_create_nodes_in_private_subnet:
          type: boolean
          default: true
    ClusterFeatureGcpExistingVpc:
      type: object
      required:
        - vpc_name
      properties:
        vpc_name:
          type: string
        vpc_project_id:
          type: string
          nullable: true
        subnetwork_name:
          type: string
          nullable: true
        ip_range_services_name:
          type: string
          nullable: true
        ip_range_pods_name:
          type: string
          nullable: true
        additional_ip_range_pods_names:
          type: array
          items:
            type: string
    ClusterFeatureKarpenterParameters:
      title: ClusterFeatureKarpenterParameters
      x-stoplight:
        id: fzprvq41bcge1
      type: object
      required:
        - spot_enabled
        - disk_size_in_gib
        - default_service_architecture
        - qovery_node_pools
      properties:
        spot_enabled:
          type: boolean
          x-stoplight:
            id: fuolcs5q8ncp8
        disk_size_in_gib:
          type: integer
        disk_iops:
          type: integer
          example: 7800
          minimum: 3000
          maximum: 16000
          description: >-
            Unit is operation/seconds. The disk IOPS to be used for the node
            configuration
        disk_throughput:
          type: integer
          x-stoplight:
            id: nwpjqw3bf7px0
          minimum: 125
          maximum: 1000
          example: 255
          description: >-
            Unit is in MB/s. The disk throughput to be used for the node
            configuration
        default_service_architecture:
          $ref: '#/components/schemas/CpuArchitectureEnum'
        qovery_node_pools:
          $ref: '#/components/schemas/KarpenterNodePool'
    MetricsParameters:
      title: MetricsParameters
      x-stoplight:
        id: 25tfm065x6c64
      type: object
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: 0y1427jsrtwmg
        configuration:
          x-stoplight:
            id: 1e9r2at0nxziv
          oneOf:
            - $ref: '#/components/schemas/MetricsConfigurationManagedByQovery'
          discriminator:
            propertyName: kind
            mapping:
              MANAGED_BY_QOVERY:
                $ref: '#/components/schemas/MetricsConfigurationManagedByQovery'
    ClusterInfrastructureChartsParameters:
      type: object
      properties:
        nginx_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureNginxChartParameters'
        cert_manager_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureCertManagerChartParameters'
        metal_lb_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureMetalLbChartParameters'
        eks_anywhere_parameters:
          $ref: '#/components/schemas/ClusterInfrastructureEksAnywhereParameters'
    ClusterKeda:
      title: ClusterKeda
      x-stoplight:
        id: apznbrc98va7j
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: 46c6f1rqdvu55
    ClusterLabelsGroupList:
      title: ClusterLabelsGroupList
      x-stoplight:
        id: imn8c9l4fab56
      type: array
      items:
        $ref: '#/components/schemas/ClusterLabelsGroup'
    SecretManagerAccessRequestList:
      title: SecretManagerAccessRequestList
      type: array
      items:
        $ref: '#/components/schemas/SecretManagerAccessRequest'
    Base:
      type: object
      required:
        - id
        - created_at
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          readOnly: true
          format: date-time
        updated_at:
          type: string
          readOnly: true
          format: date-time
    ReferenceObject:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
    ClusterStateEnum:
      type: string
      enum:
        - BUILDING
        - BUILD_ERROR
        - CANCELED
        - CANCELING
        - DELETED
        - DELETE_ERROR
        - DELETE_QUEUED
        - DELETING
        - DEPLOYED
        - DEPLOYING
        - DEPLOYMENT_ERROR
        - DEPLOYMENT_QUEUED
        - DRY_RUN
        - QUEUED
        - READY
        - STOPPED
        - STOPPING
        - STOP_ERROR
        - STOP_QUEUED
        - RESTART_QUEUED
        - RESTARTING
        - RESTARTED
        - RESTART_ERROR
        - INVALID_CREDENTIALS
    ClusterFeatureResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
        title:
          type: string
          nullable: false
        description:
          type: string
          nullable: true
        cost_per_month_in_cents:
          type: integer
          example: 9900
          deprecated: true
          nullable: true
        cost_per_month:
          type: number
          example: 99
          deprecated: true
          nullable: true
        currency_code:
          type: string
          example: USD
          deprecated: true
          nullable: true
        is_cloud_provider_paying_feature:
          type: boolean
          nullable: false
          example: true
        cloud_provider_feature_documentation:
          type: string
          example: https://cloud.provider.doc/feature
          nullable: true
        is_qovery_paying_feature:
          type: boolean
          nullable: false
          example: true
        qovery_feature_documentation:
          type: string
          example: https://qovery.doc/feature
          nullable: true
        value_type:
          type: string
          nullable: false
          enum:
            - BOOLEAN
        value_object:
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/ClusterFeatureStringResponse'
            - $ref: '#/components/schemas/ClusterFeatureBooleanResponse'
            - $ref: '#/components/schemas/ClusterFeatureAwsExistingVpcResponse'
            - $ref: '#/components/schemas/ClusterFeatureGcpExistingVpcResponse'
            - $ref: '#/components/schemas/ClusterFeatureKarpenterParametersResponse'
          discriminator:
            propertyName: type
            mapping:
              STRING:
                $ref: '#/components/schemas/ClusterFeatureStringResponse'
              BOOLEAN:
                $ref: '#/components/schemas/ClusterFeatureBooleanResponse'
              AWS_USER_PROVIDED_NETWORK:
                $ref: '#/components/schemas/ClusterFeatureAwsExistingVpcResponse'
              GCP_USER_PROVIDED_NETWORK:
                $ref: '#/components/schemas/ClusterFeatureGcpExistingVpcResponse'
              KARPENTER:
                $ref: '#/components/schemas/ClusterFeatureKarpenterParametersResponse'
        is_value_updatable:
          type: boolean
          default: false
        accepted_values:
          type: array
          items:
            oneOf:
              - type: string
              - type: boolean
    ClusterDeploymentStatusEnum:
      type: string
      enum:
        - NEVER_DEPLOYED
        - OUT_OF_DATE
        - UP_TO_DATE
    InfrastructureOutputs:
      type: object
      required:
        - kind
      discriminator:
        propertyName: kind
        mapping:
          AKS:
            $ref: '#/components/schemas/AksInfrastructureOutputs'
          EKS:
            $ref: '#/components/schemas/EksInfrastructureOutputs'
          GKE:
            $ref: '#/components/schemas/GkeInfrastructureOutputs'
          SCW_KAPSULE:
            $ref: '#/components/schemas/KapsuleInfrastructureOutputs'
      oneOf:
        - $ref: '#/components/schemas/AksInfrastructureOutputs'
        - $ref: '#/components/schemas/EksInfrastructureOutputs'
        - $ref: '#/components/schemas/GkeInfrastructureOutputs'
        - $ref: '#/components/schemas/KapsuleInfrastructureOutputs'
    SecretManagerAccessList:
      title: SecretManagerAccessList
      type: array
      items:
        $ref: '#/components/schemas/SecretManagerAccess'
    CloudProviderEnum:
      type: string
      enum:
        - AWS
        - SCW
        - GCP
        - ON_PREMISE
        - AZURE
    CpuArchitectureEnum:
      title: CpuArchitectureEnum
      x-stoplight:
        id: jlrd3r03vjzoy
      enum:
        - AMD64
        - ARM64
    KarpenterNodePool:
      title: KarpenterNodePool
      x-stoplight:
        id: q8vks57rql8x1
      type: object
      required:
        - requirements
      properties:
        requirements:
          x-stoplight:
            id: pkowctfxv7q77
          type: array
          items:
            $ref: '#/components/schemas/KarpenterNodePoolRequirement'
        stable_override:
          $ref: '#/components/schemas/KarpenterStableNodePoolOverride'
        default_override:
          $ref: '#/components/schemas/KarpenterDefaultNodePoolOverride'
        gpu_override:
          $ref: '#/components/schemas/KarpenterGpuNodePoolOverride'
        cronjob_override:
          $ref: '#/components/schemas/KarpenterCronjobNodePoolOverride'
    MetricsConfigurationManagedByQovery:
      title: MetricsConfigurationManagedByQovery
      x-stoplight:
        id: d6oy3aiodk659
      type: object
      properties:
        kind:
          x-stoplight:
            id: i8z3rzufjt5uk
          enum:
            - MANAGED_BY_QOVERY
        resource_profile:
          $ref: '#/components/schemas/ObservabilityResourceProfile'
        cloud_watch_export_config:
          $ref: '#/components/schemas/CloudWatchExportConfig'
        high_availability:
          type: boolean
          x-stoplight:
            id: zs2zhdd1p5e6q
        internal_network_monitoring:
          $ref: '#/components/schemas/InternalNetworkMonitoring'
        alerting:
          $ref: '#/components/schemas/AlertingConfig'
    ClusterInfrastructureNginxChartParameters:
      title: ClusterInfrastructureNginxChartParameters
      x-stoplight:
        id: c9r0h8ey6ugzr
      type: object
      properties:
        replica_count:
          type: integer
          x-stoplight:
            id: zdwoxwir7ygnw
          minimum: 0
        default_ssl_certificate:
          type: string
          x-stoplight:
            id: z1l1xmwud3yjq
        publish_status_address:
          type: string
          x-stoplight:
            id: da9klqdcxew6n
        annotation_metal_lb_load_balancer_ips:
          type: string
          x-stoplight:
            id: 4ji26purdr956
        annotation_external_dns_kubernetes_target:
          type: string
          x-stoplight:
            id: ytwsmm8mzre3g
    ClusterInfrastructureCertManagerChartParameters:
      title: InfrastructureCertManagerChartParameters
      x-stoplight:
        id: xsidu7mikkhq3
      type: object
      properties:
        kubernetes_namespace:
          type: string
          x-stoplight:
            id: y5txd86avhe6j
    ClusterInfrastructureMetalLbChartParameters:
      title: InfrastructureMetalLbChartParameters
      x-stoplight:
        id: evxswes22ykhd
      type: object
      properties:
        ip_address_pools:
          type: array
          x-stoplight:
            id: sfxtfy7n1uddw
          items:
            x-stoplight:
              id: lstjwwfo9ys6i
            type: string
    ClusterInfrastructureEksAnywhereParameters:
      type: object
      required:
        - git_repository
        - yaml_file_path
      properties:
        git_repository:
          $ref: '#/components/schemas/ClusterEksAnywhereGitRepository'
        yaml_file_path:
          type: string
          description: Path to the EKS Anywhere cluster YAML file in the git repository
          example: /clusters/cluster-a.yaml
        cluster_backup:
          $ref: >-
            #/components/schemas/ClusterInfrastructureEksAnywhereBackupParameters
    ClusterLabelsGroup:
      title: ClusterLabelsGroup
      x-stoplight:
        id: mmho7lnvhxeqm
      type: object
      properties:
        id:
          type: string
          x-stoplight:
            id: 3b5pacfwyt1p2
          format: uuid
    SecretManagerAccessRequest:
      type: object
      required:
        - name
        - endpoint
        - authentication
      properties:
        id:
          type: string
          format: uuid
          nullable: true
        name:
          type: string
        endpoint:
          $ref: '#/components/schemas/SecretManagerEndpointConfigurationDto'
        authentication:
          $ref: '#/components/schemas/SecretManagerAuthenticationDto'
    ClusterFeatureStringResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          type: string
    ClusterFeatureBooleanResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          type: boolean
    ClusterFeatureAwsExistingVpcResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          $ref: '#/components/schemas/ClusterFeatureAwsExistingVpc'
    ClusterFeatureGcpExistingVpcResponse:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          $ref: '#/components/schemas/ClusterFeatureGcpExistingVpc'
    ClusterFeatureKarpenterParametersResponse:
      title: ClusterFeatureKarpenterParametersResponse
      x-stoplight:
        id: q33tdlz4ychh5
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: '#/components/schemas/ClusterFeatureResponseTypeEnum'
        value:
          $ref: '#/components/schemas/ClusterFeatureKarpenterParameters'
    AksInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
        - cluster_oidc_issuer
      properties:
        kind:
          enum:
            - AKS
        cluster_name:
          type: string
        cluster_oidc_issuer:
          type: string
    EksInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
        - cluster_arn
        - cluster_oidc_issuer
        - vpc_id
      properties:
        kind:
          enum:
            - EKS
        cluster_name:
          type: string
        cluster_arn:
          type: string
        cluster_oidc_issuer:
          type: string
        vpc_id:
          type: string
    GkeInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
        - cluster_self_link
      properties:
        kind:
          enum:
            - GKE
        cluster_name:
          type: string
        cluster_self_link:
          type: string
    KapsuleInfrastructureOutputs:
      type: object
      required:
        - kind
        - cluster_name
      properties:
        kind:
          enum:
            - SCW_KAPSULE
        cluster_name:
          type: string
    SecretManagerAccess:
      type: object
      required:
        - id
        - name
        - created_at
        - updated_at
        - endpoint
        - authentication
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        endpoint:
          $ref: '#/components/schemas/SecretManagerEndpointConfigurationDto'
        authentication:
          $ref: '#/components/schemas/SecretManagerAuthenticationDto'
    KarpenterNodePoolRequirement:
      title: KarpenterNodePoolRequirement
      x-stoplight:
        id: 4ebed64emvn09
      type: object
      required:
        - key
        - operator
        - values
      properties:
        key:
          $ref: '#/components/schemas/KarpenterNodePoolRequirementKey'
        operator:
          $ref: '#/components/schemas/KarpenterNodePoolRequirementOperator'
        values:
          type: array
          x-stoplight:
            id: qf036o7tch5ed
          items:
            x-stoplight:
              id: 02kz5mierypik
            type: string
    KarpenterStableNodePoolOverride:
      title: KarpenterStableNodePoolOverride
      type: object
      properties:
        consolidation:
          $ref: '#/components/schemas/KarpenterNodePoolConsolidation'
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        consolidate_after:
          type: string
          description: >-
            Time to wait before consolidating empty or underutilized nodes
            (e.g., 1m, 10m, 1h). Maximum: 24h
          example: 30s
          pattern: ^\d+(s|m|h)$
    KarpenterDefaultNodePoolOverride:
      title: KarpenterDefaultNodePoolOverride
      type: object
      properties:
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        consolidate_after:
          type: string
          description: >-
            Time to wait before consolidating empty or underutilized nodes
            (e.g., 1m, 10m, 1h). Maximum: 24h
          example: 1m
          pattern: ^\d+(s|m|h)$
    KarpenterGpuNodePoolOverride:
      title: KarpenterGpuNodePoolOverride
      x-stoplight:
        id: fi2s446xdrdu1
      type: object
      properties:
        consolidation:
          $ref: '#/components/schemas/KarpenterNodePoolConsolidation'
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        requirements:
          type: array
          x-stoplight:
            id: 38pdri17ozql9
          items:
            $ref: '#/components/schemas/KarpenterNodePoolRequirement'
        disk_size_in_gib:
          type: integer
          x-stoplight:
            id: xq5ycmme7o025
          minimum: 0
          default: 100
          example: 150
        disk_iops:
          type: integer
          x-stoplight:
            id: gpu1d1skiops
          minimum: 3000
          maximum: 16000
          example: 7800
          description: >-
            Unit is operation/seconds. The disk IOPS to be used for the GPU node
            pool configuration
        disk_throughput:
          type: integer
          x-stoplight:
            id: gpu1d1skthr
          minimum: 125
          maximum: 1000
          example: 255
          description: >-
            Unit is in MB/s. The disk throughput to be used for the GPU node
            pool configuration
        spot_enabled:
          type: boolean
          x-stoplight:
            id: rjzxs0e2rn0ij
          default: false
        consolidate_after:
          type: string
          description: >-
            Time to wait before consolidating empty or underutilized nodes
            (e.g., 1m, 10m, 1h). Maximum: 24h
          example: 30s
          pattern: ^\d+(s|m|h)$
    KarpenterCronjobNodePoolOverride:
      title: KarpenterCronjobNodePoolOverride
      type: object
      properties:
        consolidation:
          $ref: '#/components/schemas/KarpenterNodePoolConsolidation'
        limits:
          $ref: '#/components/schemas/KarpenterNodePoolLimits'
        consolidate_after:
          type: string
          description: >-
            Time to wait before consolidating empty or underutilized nodes
            (e.g., 1m, 10m, 1h). Maximum: 24h
          example: 30s
          pattern: ^\d+(s|m|h)$
    ObservabilityResourceProfile:
      title: ObservabilityResourceProfile
      x-stoplight:
        id: 3a3rea0t85miz
      enum:
        - LOW
        - NORMAL
        - HIGH
    CloudWatchExportConfig:
      title: CloudWatchExportConfig
      x-stoplight:
        id: 69hi4weirghk5
      type: object
      required:
        - enabled
      properties:
        enabled:
          description: To enable the cloudwatch exporter.
          type: boolean
          x-stoplight:
            id: zxwl3n47xffu4
    InternalNetworkMonitoring:
      title: InternalNetworkMonitoring
      x-stoplight:
        id: d9zr14swvmont
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: 8fvsh62tnjurc
    AlertingConfig:
      title: AlertingConfig
      x-stoplight:
        id: 079kamufdt1pm
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          x-stoplight:
            id: spv3usiee6mc9
        default_rule_labels:
          type: object
          additionalProperties:
            type: string
          nullable: true
          description: Key-value pairs of default labels to be applied to alert rules
          x-stoplight:
            id: tsp767d421sed
        spec_config_secret:
          type: string
          x-stoplight:
            id: vhloqa7s6ta17
        spec_external_url:
          type: string
          x-stoplight:
            id: 53c0p049mktbg
        config_name:
          type: string
          x-stoplight:
            id: 6ueyhx8jelz3f
    ClusterEksAnywhereGitRepository:
      type: object
      required:
        - url
        - git_token_id
      properties:
        url:
          type: string
          format: uri
          description: EKS Anywhere git repository URL
          example: https://github.com/Qovery/eks-anywhere-config.git
        branch:
          type: string
          description: |
            Name of the branch to use. This is optional.
            If not specified, the default branch of the repository is used.
          example: main
        commit_id:
          type: string
          description: >
            Optional git commit SHA to pin EKS Anywhere configuration on a
            specific revision.

            If omitted, the latest commit from the selected branch is used.
          example: 4e3128725f47140002fa47d65d83195a51f5140f
        git_token_id:
          type: string
          format: uuid
          description: Qovery git token id used to access the repository
        provider:
          $ref: '#/components/schemas/GitProviderEnum'
    ClusterInfrastructureEksAnywhereBackupParameters:
      type: object
      required:
        - s3
      properties:
        enabled:
          type: boolean
          default: true
          description: Enable or disable EKS Anywhere cluster backup.
        timeout_seconds:
          type: integer
          format: int64
          default: 300
          description: Timeout in seconds for backup operations.
        certs_secret_name:
          type: string
          description: Optional Kubernetes secret name holding etcd certificates.
        s3:
          $ref: >-
            #/components/schemas/ClusterInfrastructureEksAnywhereBackupS3Parameters
    SecretManagerEndpointConfigurationDto:
      oneOf:
        - $ref: '#/components/schemas/AwsSecretManagerEndpointDto'
        - $ref: '#/components/schemas/AwsParameterStoreEndpointDto'
        - $ref: '#/components/schemas/GcpSecretManagerEndpointDto'
      discriminator:
        propertyName: mode
        mapping:
          AWS_SECRET_MANAGER:
            $ref: '#/components/schemas/AwsSecretManagerEndpointDto'
          AWS_PARAMETER_STORE:
            $ref: '#/components/schemas/AwsParameterStoreEndpointDto'
          GCP_SECRET_MANAGER:
            $ref: '#/components/schemas/GcpSecretManagerEndpointDto'
    SecretManagerAuthenticationDto:
      oneOf:
        - $ref: '#/components/schemas/AutomaticallyConfiguredAuthDto'
        - $ref: '#/components/schemas/AwsRoleArnAuthDto'
        - $ref: '#/components/schemas/AwsStaticCredentialsAuthDto'
        - $ref: '#/components/schemas/GcpJsonCredentialsAuthDto'
      discriminator:
        propertyName: mode
        mapping:
          AUTOMATICALLY_CONFIGURED:
            $ref: '#/components/schemas/AutomaticallyConfiguredAuthDto'
          AWS_ROLE_ARN:
            $ref: '#/components/schemas/AwsRoleArnAuthDto'
          AWS_STATIC_CREDENTIALS:
            $ref: '#/components/schemas/AwsStaticCredentialsAuthDto'
          GCP_JSON_CREDENTIALS:
            $ref: '#/components/schemas/GcpJsonCredentialsAuthDto'
    ClusterFeatureResponseTypeEnum:
      type: string
      enum:
        - STRING
        - BOOLEAN
        - AWS_USER_PROVIDED_NETWORK
        - GCP_USER_PROVIDED_NETWORK
        - KARPENTER
    KarpenterNodePoolRequirementKey:
      title: KarpenterNodePoolRequirementKey
      x-stoplight:
        id: eancn656efy06
      enum:
        - InstanceFamily
        - InstanceSize
        - Arch
        - SkuFamily
        - SkuVersion
    KarpenterNodePoolRequirementOperator:
      title: KarpenterNodePoolRequirementOperator
      x-stoplight:
        id: wkzlvifywpa0t
      enum:
        - In
    KarpenterNodePoolConsolidation:
      title: KarpenterNodePoolConsolidation
      type: object
      required:
        - enabled
        - days
        - start_time
        - duration
      properties:
        enabled:
          type: boolean
          default: false
          nullable: false
        days:
          type: array
          nullable: false
          items:
            $ref: '#/components/schemas/WeekdayEnum'
        start_time:
          description: |
            The start date of the consolidation.
            The format should follow ISO-8601 convention: "PThh:mm"
          type: string
          example: PT22:30
          nullable: false
        duration:
          description: |
            The duration during the consolidation will be active.
            The format should follow ISO-8601 convention: "PThhHmmM"
          type: string
          example: PT2H45M
          nullable: false
    KarpenterNodePoolLimits:
      title: KarpenterNodePoolLimits
      type: object
      required:
        - enabled
        - max_cpu_in_vcpu
        - max_memory_in_gibibytes
        - max_gpu
      properties:
        enabled:
          type: boolean
          default: false
          nullable: false
        max_cpu_in_vcpu:
          type: integer
          description: >-
            CPU limit that will be applied for the node pool (in vCPU unit: 1
            vCPU = 1000 millicores)
        max_memory_in_gibibytes:
          type: integer
          description: >-
            Memory limit that will be applied for the node pool (in Gibibytes
            unit: 1Gi = 1024 mebibytes)
        max_gpu:
          type: integer
          x-stoplight:
            id: fn3k34ck5abe4
          default: 0
          example: 10
          minimum: 0
          description: GPU limit that will be applied for the node pool
    GitProviderEnum:
      type: string
      enum:
        - BITBUCKET
        - GITHUB
        - GITLAB
    ClusterInfrastructureEksAnywhereBackupS3Parameters:
      type: object
      required:
        - bucket
        - region
        - role_arn
      properties:
        bucket:
          type: string
          description: S3 bucket name used to store EKS Anywhere backup artifacts.
        region:
          type: string
          description: AWS region where the backup bucket is hosted.
        role_arn:
          type: string
          description: IAM role ARN assumed to upload backup artifacts.
        key_prefix:
          type: string
          description: Optional S3 key prefix used for backup object keys.
    AwsSecretManagerEndpointDto:
      type: object
      required:
        - mode
        - region
      properties:
        mode:
          type: string
          enum:
            - AWS_SECRET_MANAGER
        region:
          type: string
    AwsParameterStoreEndpointDto:
      type: object
      required:
        - mode
        - region
      properties:
        mode:
          type: string
          enum:
            - AWS_PARAMETER_STORE
        region:
          type: string
    GcpSecretManagerEndpointDto:
      type: object
      required:
        - mode
        - region
        - projectId
      properties:
        mode:
          type: string
          enum:
            - GCP_SECRET_MANAGER
        region:
          type: string
        projectId:
          type: string
    AutomaticallyConfiguredAuthDto:
      type: object
      required:
        - mode
      properties:
        mode:
          type: string
          enum:
            - AUTOMATICALLY_CONFIGURED
    AwsRoleArnAuthDto:
      type: object
      required:
        - mode
        - role_arn
      properties:
        mode:
          type: string
          enum:
            - AWS_ROLE_ARN
        role_arn:
          type: string
    AwsStaticCredentialsAuthDto:
      type: object
      required:
        - mode
        - region
        - access_key
      properties:
        mode:
          type: string
          enum:
            - AWS_STATIC_CREDENTIALS
        region:
          type: string
        access_key:
          type: string
        secret_key:
          type: string
          nullable: true
    GcpJsonCredentialsAuthDto:
      type: object
      required:
        - mode
      properties:
        mode:
          type: string
          enum:
            - GCP_JSON_CREDENTIALS
        json_credentials:
          type: string
          nullable: true
    WeekdayEnum:
      type: string
      enum:
        - MONDAY
        - TUESDAY
        - WEDNESDAY
        - THURSDAY
        - FRIDAY
        - SATURDAY
        - SUNDAY
      example: MONDAY
  responses:
    '400':
      description: Bad request
    '401':
      description: Access token is missing or invalid
    '403':
      description: Access forbidden
    '404':
      description: Resource not found
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        JWT tokens should be used with OIDC account (human to machine). JWT
        tokens used by the Qovery console to communicate with the API have a
        TTL. Curl Example ' curl https://console.qovery.com/organization -H
        "Authorization: Bearer $qovery_token" '
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Token API are generated by Qovery to manage machine to machine
        interaction and do not have a TTL. Curl Example ' curl
        https://console.qovery.com/organization -H "Authorization: Token
        $qovery_token" '

````