openapi: 3.1.0
info:
  title: OKS API
  description: |
    The OKS API enables you to interact with OUTSCALE Kubernetes as a Service (OKS), a managed Kubernetes service on the OUTSCALE Cloud.
    
    In OKS, each cluster is linked to a project. In a project, you can have several clusters. Templates are also available for different resources.<br />For more information about the service, see [About OKS](https://docs.outscale.com/en/userguide/About-OKS.html).

     An OpenAPI description of this API is also available for download here: [oks.yaml](https://docs.outscale.com/_attachments/oks.yaml).
  version: '1.0'
paths:
  /projects:
    post:
      tags:
      - Projects
      summary: Create Project
      description: Creates a new project.
      operationId: CreateProject
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectInput'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Projects
      summary: Get Projects
      description: Lists one or more of your projects. The response can be filtered using the parameters.
      operationId: ListProjects
      parameters:
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        description: The name of the projects.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          enum:
          - pending
          - ready
          - deploying
          - updating
          - upgrading
          - failed
          - deleting
          title: Status
        description: The status of the projects.
      - name: cidr
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          default: 10.50.0.0/16
          title: Cidr
        description: "The IP ranges for the projects, IN CIDR notation (for example, `192.0.2.0/16`)."
      - name: deleted
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Deleted
        description: If true, returns deleted projects.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponseList'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /projects/{project_id}:
    get:
      tags:
      - Projects
      summary: Get Project
      description: Gets information about a specific project.
      operationId: GetProject
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
        description: The ID of the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - Projects
      summary: Update Project
      description: Updates the details of an existing project.
      operationId: UpdateProject
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
        description: The ID of the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Projects
      summary: Delete Project
      description: Deletes a specific project.
      operationId: DeleteProject
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
        description: The ID of the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DetailResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /projects/{project_id}/quotas:
    get:
      tags:
      - Projects
      summary: Get Project Quotas
      description: Gets the quota details for a specific project.
      operationId: GetProjectQuotas
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
        description: The ID of the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuotasResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters:
    post:
      tags:
      - Clusters
      summary: Create Cluster
      description: Creates a cluster with the provided configuration.
      operationId: CreateCluster
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterInput-Input'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Clusters
      summary: Get Clusters
      description: Lists one or more clusters associated with a project. The response can be filtered using the parameters.
      operationId: ListClustersByProjectID
      parameters:
      - name: project_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Project Id
        description: The ID of the project.
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        description: The name of the clusters.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
        description: The status of the clusters.
      - name: version
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
        description: The version of the clusters.
      - name: deleted
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Deleted
        description: If true, returns deleted clusters.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResponseList'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters/all:
    get:
      tags:
      - Clusters
      summary: Get All Clusters
      description: Lists one or more of your clusters. The response can be filtered using the parameters.
      operationId: ListAllClusters
      parameters:
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        description: The name of the clusters.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
        description: The status of the clusters.
      - name: version
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Version
        description: The version of the clusters.
      - name: deleted
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Deleted
        description: If true, returns deleted clusters.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResponseList'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters/{cluster_id}:
    get:
      tags:
      - Clusters
      summary: Get Cluster
      description: Gets information about a specific cluster.
      operationId: GetCluster
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
          title: Cluster Id
        description: The name of the cluster.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - Clusters
      summary: Update Cluster
      description: Updates the configuration of an existing cluster.
      operationId: UpdateCluster
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
          title: Cluster Id
        description: The ID of the cluster.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Clusters
      summary: Delete Cluster
      description: Deletes a specific cluster.
      operationId: DeleteCluster
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
          title: Cluster Id
        description: The ID of the cluster.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DetailResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters/{cluster_id}/kubeconfig:
    get:
      tags:
      - Clusters
      summary: Get Cluster Kubeconfig
      description: Gets the kubeconfig file for a specific cluster. You can specify query parameters for the kubeconfig file.
      operationId: GetKubeconfig
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
          title: Cluster Id
        description: The ID of the cluster.
      - name: user
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: User
        description: The user of the kubeconfig file.
      - name: group
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Group
        description: The group of the kubeconfig file.
      - name: ttl
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Ttl
        description: The time to live (TTL) of the kubeconfig file.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KubeconfigResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Clusters
      summary: Post Cluster Kubeconfig
      description: Gets the kubeconfig file for a specific cluster, optionally encrypted with a NaCl public key. For more information, see the [NaCl website](https://nacl.cr.yp.to/). You can specify query parameters for the kubeconfig file.
      operationId: GetKubeconfigWithPubkeyNACL
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
          title: Cluster Id
        description: The ID of the cluster.
      - name: user
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: User
        description: The user of the kubeconfig file.
      - name: group
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Group
        description: The group of the kubeconfig file.
      - name: ttl
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Ttl
        description: The time to live (TTL) of the kubeconfig file.
      - name: x-encrypt-nacl
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Encrypt-Nacl
        description: The header to encrypt the kubeconfig file.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KubeconfigResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters/{cluster_id}/upgrade:
    patch:
      tags:
      - Clusters
      summary: Upgrade Cluster
      description: Upgrades a specific cluster to the latest available version of Kubernetes. For more information, see [GetKubernetesVersions](#getkubenetesversions).
      operationId: UpgradeCluster
      parameters:
      - name: cluster_id
        in: path
        required: true
        schema:
          type: string
          title: Cluster Id
        description: The ID of the cluster.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters/limits/kubernetes_versions:
    get:
      tags:
      - Clusters
      summary: Get Kubernetes Versions
      description: Gets the available Kubernetes versions for cluster creation or upgrades.
      operationId: GetKubenetesVersions
      parameters: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KubernetesVersionsResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters/limits/cp_subregions:
    get:
      tags:
      - Clusters
      summary: Get Cp Subregions
      description: Gets the Subregions where you can deploy control planes for your clusters.
      operationId: GetCPSubregions
      parameters: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CPSubregionsResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /clusters/limits/control_plane_plans:
    get:
      tags:
      - Clusters
      summary: Get Control Plane Plans
      description: Gets the control plane types that you can use to create your clusters.
      operationId: GetControlPlanePlans
      parameters: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ControlPlanesResponse'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /templates/project:
    get:
      tags:
      - Templates
      summary: Get Project Template
      description: Gets the default project template, including the predefined network configurations, Region, and metadata.
      operationId: GetProjectTemplate
      parameters: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateResponse_ProjectInput_'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /templates/cluster:
    get:
      tags:
      - Templates
      summary: Get Cluster Template
      description: Gets the default cluster template, including the predefined control plane configurations, networking settings, and maintenance schedules.
      operationId: GetClusterTemplate
      parameters: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateResponse_ClusterInput_'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /templates/nodepool:
    get:
      tags:
      - Templates
      summary: Get Nodepool Template
      description: Gets the default node pool template, including the predefined configurations for node scaling, storage, and upgrade strategies.
      operationId: GetNodepoolTemplate
      parameters: []
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateResponse_Nodepool_'
        '422':
          description: The HTTP 422 response (Validation Error).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    AdmissionFlags:
      properties:
        disable_admission_plugins:
          items:
            type: string
          type: array
          title: Disable Admission Plugins
          description: The list of Kubernetes admission plugins that are disabled.
          default: []
        enable_admission_plugins:
          items:
            type: string
          type: array
          title: Enable Admission Plugins
          description: The list of Kubernetes admission plugins that are enabled.
          default: []
        applied_admission_plugins:
          items:
            type: string
          type: array
          title: Applied Admission Plugins
          description: The list of admission plugins that are currently applied to the cluster.
          default:
          - CertificateApproval
          - CertificateSigning
          - CertificateSubjectRestriction
          - ClusterTrustBundleAttest
          - DefaultIngressClass
          - DefaultStorageClass
          - DefaultTolerationSeconds
          - LimitRanger
          - MutatingAdmissionWebhook
          - NamespaceLifecycle
          - PersistentVolumeClaimResize
          - PodSecurity
          - Priority
          - ResourceQuota
          - RuntimeClass
          - ServiceAccount
          - StorageObjectInUseProtection
          - TaintNodesByCondition
          - ValidatingAdmissionPolicy
          - ValidatingAdmissionWebhook
      type: object
      title: AdmissionFlags
    AdmissionFlagsInput:
      properties:
        disable_admission_plugins:
          items:
            type: string
          type: array
          title: Disable Admission Plugins
          description: The list of Kubernetes admission plugins to disable.
          default: []
        enable_admission_plugins:
          items:
            type: string
          type: array
          title: Enable Admission Plugins
          description: The list of Kubernetes admission plugins to enable.
          default: []
      type: object
      title: AdmissionFlagsInput
    AutoMaintenances:
      properties:
        minor_upgrade_maintenance:
          allOf:
          - $ref: '#/components/schemas/MaintenanceWindow'
          title: Minor Upgrade Maintenance
          description: The maintenance window configuration for minor Kubernetes upgrades.
        patch_upgrade_maintenance:
          allOf:
          - $ref: '#/components/schemas/MaintenanceWindow'
          title: Patch Upgrade Maintenance
          description: The maintenance window configuration for patch Kubernetes upgrades.
      type: object
      required:
      - minor_upgrade_maintenance
      - patch_upgrade_maintenance
      title: AutoMaintenances
    AutoUpgradeMaintenance:
      properties:
        durationHours:
          type: integer
          title: Duration Hours
          description: The duration of the maintenance window, in hours.
        startHour:
          type: integer
          maximum: 23.0
          minimum: 0.0
          title: Start Hour
          description: The starting time of the maintenance window, in hours.
        weekDay:
          type: string
          enum:
          - Mon
          - Tue
          - Wed
          - Thu
          - Fri
          - Sat
          - Sun
          title: Week Day
          description: The weekday on which the maintenance window begins.
      type: object
      required:
      - durationHours
      - startHour
      - weekDay
      title: AutoUpgradeMaintenance
    CPSubregionsResponse:
      properties:
        ResponseContext:
          allOf:
          - $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext'
          title: Response Context
          description: Information about the context of the response.
        CPSubregions:
          items:
            type: string
          type: array
          title: CP Subregions
          description: The list of Subregions where you can deploy control planes for your clusters.
      type: object
      required:
      - ResponseContext
      - CPSubregions
    Cluster:
      properties:
        project_id:
          type: string
          title: Project ID
          description: The ID of the project this cluster belongs to.
        id:
          type: string
          title: Cluster ID
          description: The Universally Unique Identifier (UUID) of the cluster.
        name:
          type: string
          title: Cluster Name
          description: A unique name for the cluster within the project.
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: An optional description of the cluster.
        cp_subregions:
          items:
            type: string
          type: array
          title: Control Plane Subregions
          description: The Subregions on which the control plane components are deployed.
        version:
          type: string
          title: Kubernetes Version
          description: The Kubernetes version deployed for the cluster. For more information, see [GetKubernetesVersions](#getkubenetesversions).
        cni:
          type: string
          title: CNI
          description: The Container Network Interface (CNI) used in the cluster.
        admin_lbu:
          type: boolean
          title: Admin LBU
          description: If true, load balancer administration is enabled for cluster management. If false, it is disabled.
        admission_flags:
          allOf:
          - $ref: '#/components/schemas/AdmissionFlags'
          title: Admission Flags
          description: The configuration of the Kubernetes admission controllers.
          default:
            disable_admission_plugins: []
            enable_admission_plugins: []
            applied_admission_plugins:
            - CertificateApproval
            - CertificateSigning
            - CertificateSubjectRestriction
            - ClusterTrustBundleAttest
            - DefaultIngressClass
            - DefaultStorageClass
            - DefaultTolerationSeconds
            - LimitRanger
            - MutatingAdmissionWebhook
            - NamespaceLifecycle
            - PersistentVolumeClaimResize
            - PodSecurity
            - Priority
            - ResourceQuota
            - RuntimeClass
            - ServiceAccount
            - StorageObjectInUseProtection
            - TaintNodesByCondition
            - ValidatingAdmissionPolicy
            - ValidatingAdmissionWebhook
        cidr_pods:
          anyOf:
          - type: string
          - type: 'null'
          title: Pods CIDR
          description: The CIDR block of the Kubernetes pods' network.
        cidr_service:
          anyOf:
          - type: string
          - type: 'null'
          title: Service CIDR
          description: The CIDR block of the Kubernetes services' network.
        cluster_dns:
          anyOf:
          - type: string
          - type: 'null'
          title: Cluster DNS
          description: The IP address of the cluster's DNS service.
        tags:
          type: object
          title: Tags
          description: The key/value combinations of the tags associated with the cluster, in the following format&#58; "tags":{"TAGKEY1":"TAGVALUE1","TAGKEY2":"TAGVALUE2"}.
          additionalProperties:
            type: string
            description: Additional information about tags.
          example:
            key: value
        auto_maintenances:
          allOf:
          - $ref: '#/components/schemas/AutoMaintenances'
          title: Auto Maintenances
          description: The configuration of the automated maintenance windows.
        control_planes:
          type: string
          title: Control Planes
          description: The control plane sizing of the cluster.
        admin_whitelist:
          items:
            type: string
          type: array
          title: Admin Whitelist
          description: The list of CIDR blocks or IP addresses allowed to access the cluster via the Kubernetes API.
        statuses:
          allOf:
          - $ref: '#/components/schemas/Statuses'
          description: The status information of the cluster.
        disable_api_termination:
          type: boolean
          title: Disable API Termination
          description: If true, cluster deletion through the API is disabled. If false, it is enabled.
          default: false
          example: false
      type: object
      required:
      - project_id
      - id
      - name
      - cp_subregions
      - version
      - cni
      - admin_lbu
      - cidr_pods
      - cidr_service
      - cluster_dns
      - tags
      - auto_maintenances
      - control_planes
      - admin_whitelist
      - statuses
      title: Cluster
    ClusterInput-Input:
      properties:
        name:
          type: string
          maxLength: 40
          minLength: 1
          pattern: ^[a-z][a-z0-9-]*[a-z0-9]$
          title: Cluster Name
          description:	A unique name for the cluster within the project.
          example: awesome-cluster
        project_id:
          type: string
          title: Project ID
          description: The ID of the project in which you want to create a cluster.
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: A description of the cluster.
        cp_subregions:
          items:
            type: string
          type: array
          title: Control Plane Subregions
          description: The list of Subregions where control plane components are deployed.
          default:
          - 2a
        version:
          type: string
          title: Kubernetes Version
          description: The Kubernetes version to be deployed for the cluster. For more information, see [GetKubernetesVersions](#getkubenetesversions).
          default: '1.30'
        admin_lbu:
          type: boolean
          title: Admin LBU
          description: If true, load balancer administration is enabled for cluster management. If false, it is disabled.
          default: false
        admission_flags:
          allOf:
          - $ref: '#/components/schemas/AdmissionFlagsInput'
          title: Admission Flags
          description: The configuration for Kubernetes admission controllers.
          default:
            disable_admission_plugins: []
            enable_admission_plugins: []
        cidr_pods:
          type: string
          title: Pods CIDR
          description: The CIDR block for Kubernetes pods' network.
          example: 10.91.0.0/16
        cidr_service:
          type: string
          title: Service CIDR
          description: The CIDR block for the Kubernetes services' network.
          example: 10.92.0.0/16
        cluster_dns:
          type: string
          title: Cluster DNS
          description: The IP address for the cluster's DNS service.
          example: 10.92.0.10
        tags:
          type: object
          title: Tags
          description: The key/value combinations of the tags associated with the cluster's metadata, in the following format&#58; "tags":{"TAGKEY1":"TAGVALUE1","TAGKEY2":"TAGVALUE2"}.
          additionalProperties:
            type: string
            description: Additional information about tags.
          example:
            key: value
        auto_maintenances:
          allOf:
          - $ref: '#/components/schemas/AutoMaintenances'
          title: Auto Maintenances
          description: The configurations for automated maintenance windows.
        control_planes:
          type: string
          title: Control Planes
          description: The size of control plane deployment for the cluster. For more information, see [About OKS > Control Planes](https://docs.outscale.com/en/userguide/About-OKS.html#_control_planes).
          default: cp.3.masters.small
        admin_whitelist:
          items:
            type: string
          type: array
          title: Admin Whitelist
          description: The list of CIDR blocks or IP addresses allowed to access the cluster via the Kubernetes API.
        quirks:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Quirks
          description: The list of special configurations or behaviors for the cluster.
        disable_api_termination:
          type: boolean
          title: Disable API Termination
          description: If true, cluster deletion through the API is disabled. If false, it is enabled.
          default: false
          example: false
      type: object
      required:
      - name
      - project_id
      - auto_maintenances
      - admin_whitelist
    ClusterInput-Output:
      properties:
        name:
          type: string
          maxLength: 40
          minLength: 1
          pattern: ^[a-z][a-z0-9-]*[a-z0-9]$
          title: Cluster Name
          description: A unique cluster name per project. Must start with a letter and contain only lowercase letters, numbers, or hyphens.
          example: awesome-cluster
        project_id:
          type: string
          title: Project ID
          description: The ID of the project to which this cluster belongs to.
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: The description of the cluster.
        cp_subregions:
          items:
            type: string
          type: array
          title: Control Plane Subregions
          description: A list of Subregions where control plane components are deployed.
          default:
          - 2a
        version:
          type: string
          title: Kubernetes Version
          description: The Kubernetes version deployed for the cluster. For more information, see [GetKubernetesVersions](#getkubenetesversions).
          default: '1.30'
        admin_lbu:
          type: boolean
          title: Admin LBU
          description: If true, the admin load balancer for cluster management is enabled.
          default: false
        admission_flags:
          allOf:
          - $ref: '#/components/schemas/AdmissionFlagsInput'
          title: Admission Flags
          description: The configuration for the Kubernetes admission controllers.
          default:
            disable_admission_plugins: []
            enable_admission_plugins: []
        cidr_pods:
          type: string
          title: Pods CIDR
          description: The CIDR block of the Kubernetes pods' network.
          example: 10.91.0.0/16
        cidr_service:
          type: string
          title: Service CIDR
          description: The CIDR block of the Kubernetes pods' network.
          example: 10.92.0.0/16
        cluster_dns:
          type: string
          title: Cluster DNS
          description: The IP address for the cluster DNS service.
          example: 10.92.0.10
        tags:
          type: object
          title: Tags
          description: "The key/value combinations of the tags associated with the cluster's metadata, in the following format: \"tags\":{\"TAGKEY1\":\"TAGVALUE1\",\"TAGKEY2\":\"TAGVALUE2\"}."
          additionalProperties:
            type: string
            description: Additional information about tags.
          example:
            key: value
        auto_maintenances:
          allOf:
          - $ref: '#/components/schemas/AutoMaintenances'
          title: Auto Maintenances
          description: The configuration for the automated maintenance windows.
        control_planes:
          type: string
          title: Control Planes
          description: The control plane type of the cluster.
          default: cp.3.masters.small
        admin_whitelist:
          items:
            type: string
          type: array
          title: Admin Whitelist
          description: The list of CIDR blocks or IP addresses allowed to access the cluster via the Kubernetes API.
        quirks:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Quirks
          description: A list of special configurations or behaviors for the cluster.
        disable_api_termination:
          type: boolean
          title: Disable API Termination
          description: If true, cluster deletion through the API is disabled. If false, it is enabled.
          default: false
          example: false
      type: object
      required:
      - name
      - project_id
      - auto_maintenances
      - admin_whitelist
    ClusterResponse:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext'
          description: Information about the context of the response.
        Cluster:
          $ref: '#/components/schemas/Cluster'
      type: object
      required:
      - ResponseContext
      - Cluster
    ClusterResponseList:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext'
          description: Information about the context of the response.
        Clusters:
          items:
            $ref: '#/components/schemas/Cluster'
          type: array
          title: Clusters
      type: object
      required:
      - ResponseContext
      - Clusters
    ClusterUpdate:
      properties:
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: The updated description of the cluster.
        admission_flags:
          anyOf:
          - $ref: '#/components/schemas/AdmissionFlagsInput'
          - type: 'null'
          title: Admission Flags
          description: The updated configuration for the Kubernetes admission controllers.
        tags:
          anyOf:
          - additionalProperties:
              type: string
              description: Additional information about tags.
            type: object
          - type: 'null'
          title: Tags
          description: "The updated key/value combinations of the tags associated with the cluster's metadata, in the following format: \"tags\":{\"TAGKEY1\":\"TAGVALUE1\",\"TAGKEY2\":\"TAGVALUE2\"}."
        auto_maintenances:
          anyOf:
          - $ref: '#/components/schemas/AutoMaintenances'
          - type: 'null'
          title: Auto Maintenances
          description: The updated configuration for the automated maintenance windows.
        admin_whitelist:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Admin Whitelist
          description: The updated list of CIDR blocks or IP addresses allowed to access the cluster via the Kubernetes API.
        quirks:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Quirks
          description: The updated list of special configurations or behaviors for the cluster.
        disable_api_termination:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Disable API Termination
          description: If true, cluster deletion through the API is disabled. If false, it is enabled.
        version:
          anyOf:
          - type: string
          - type: 'null'
          title: Kubernetes Version
          description: The updated version of Kubernetes for the cluster. For more information, see [GetKubernetesVersions](#getkubenetesversions).
      type: object
      title: ClusterUpdate
    ControlPlanesResponse:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext'
          description: Information about the context of the response.
        ControlPlanes:
          items:
            type: string
          type: array
          title: Control Planes
          description: The list of available control plane types.
      type: object
      required:
      - ResponseContext
      - ControlPlanes
    DetailResponse:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/projects__project_schema__ResponseContext'
          description: Information about the context of the response.
        detail:
          type: string
          title: Detail
          description: A detailed message related to the API response.
      type: object
      required:
      - ResponseContext
      - detail
      title: DetailResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    KubeconfigData:
      properties:
        name:
          type: string
          title: Name
          description: The name of the cluster.
        kubeconfig:
          type: string
          title: Kubeconfig
          description: A file containing access configuration to the cluster.
      type: object
      required:
      - name
      - kubeconfig
      title: KubeconfigData
    KubeconfigResponse:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext'
          description: Information about the context of the response.
        Cluster:
          $ref: '#/components/schemas/clusters__cluster_schema__RPCResponse'
      type: object
      required:
      - ResponseContext
      - Cluster
    KubernetesVersionsResponse:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/clusters__cluster_schema__ResponseContext'
          description: Information about the context of the response.
        Versions:
          items:
            type: string
          type: array
          title: Versions
          description: A list of available Kubernetes versions.
      type: object
      required:
      - ResponseContext
      - Versions
    MaintenanceWindow:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: If true, a maintenance window is enabled.
          default: true
        duration_hours:
          type: integer
          maximum: 23.0
          minimum: 0.0
          title: Duration Hours
          description: The duration of the maintenance window, in hours.
          default: 0
        start_hour:
          type: integer
          maximum: 23.0
          minimum: 0.0
          title: Start Hour
          description: The starting time of the maintenance window, in hours.
          default: 12
        week_day:
          type: string
          enum:
          - Mon
          - Tue
          - Wed
          - Thu
          - Fri
          - Sat
          - Sun
          - string
          title: Week Day
          description: The weekday on which the maintenance window begins.
          default: Tue
        tz:
          type: string
          title: Timezone
          description: The timezone for the maintenance window.
          default: UTC
      type: object
      title: MaintenanceWindow
    Metadata:
      properties:
        name:
          type: string
          title: Name
          description: An ID for the node pool.
      type: object
      required:
      - name
      title: Metadata
    Nodepool:
      properties:
        apiVersion:
          type: string
          title: API Version
          description: The node pool API version in use.
        kind:
          type: string
          title: Kind
          description: The resource type, always `Nodepool` for node pool resources.
        metadata:
          allOf:
          - $ref: '#/components/schemas/Metadata'
          description: The metadata information for the node pool.
        spec:
          allOf:
          - $ref: '#/components/schemas/Spec'
          description: The specification for the node pool configuration.
      type: object
      required:
      - apiVersion
      - kind
      - metadata
      - spec
      title: Nodepool
    Project:
      properties:
        id:
          type: string
          title: Project ID
          description: The ID of the project.
        name:
          type: string
          title: Project Name
          description: The name of the project.
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: A description for the project.
        cidr:
          type: string
          title: VPC CIDR
          description: The CIDR block associated with the Net of the project.
        region:
          type: string
          title: Region
          description: The Region on which the project is deployed.
        status:
          type: string
          title: Status
          description: The status of the project.
        tags:
          additionalProperties:
            type: string
            description: Additional information about tags.
          type: object
          title: Tags
          description: "The key/value combinations of the tags associated with the resource, in the following format: \"tags\":{\"TAGKEY1\":\"TAGVALUE1\",\"TAGKEY2\":\"TAGVALUE2\"}."
        disable_api_termination:
          type: boolean
          title: Disable API Termination
          description: If true, cluster deletion through the API is disabled. If false, it is enabled.
          default: false
          example: false
        created_at:
          type: string
          format: date-time
          title: Created At
          description: The timestamp when the project was created.
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: The timestamp when the project was last updated.
        deleted_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Deleted At
          description: The timestamp when the project was deleted (if applicable).
      type: object
      required:
      - id
      - name
      - cidr
      - region
      - status
      - tags
      - created_at
      - updated_at
      title: Project
    ProjectInput:
      properties:
        name:
          type: string
          maxLength: 40
          minLength: 1
          pattern: ^[a-z][a-z0-9-]*[a-z0-9]$
          title: Project Name
          description: A unique name for the project. Must start with a letter and contain only lowercase letters, numbers, or hyphens.
          example: awesome-project
        description:
          type: string
          title: Description
          description: A description for the project.
        cidr:
          type: string
          title: VPC CIDR
          description: The CIDR block to associate with the Net of the project.
        region:
          type: string
          title: Region
          description: The Region on which the project is deployed.
        tags:
          type: object
          title: Tags
          description: "The key/value combinations of the tags associated with the resource, in the following format: \"tags\":{\"TAGKEY1\":\"TAGVALUE1\",\"TAGKEY2\":\"TAGVALUE2\"}."
          example:
            key: value
        quirks:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Quirks
          description: A list of special configurations or behaviors for the project.
        disable_api_termination:
          type: boolean
          title: Disable API Termination
          description: If true, cluster deletion through the API is disabled. If false, it is enabled.
          default: false
          example: false
      type: object
      required:
      - name
      - cidr
      - region
      title: ProjectInput
    ProjectResponse:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/projects__project_schema__ResponseContext'
          description: Information about the context of the response.
        Project:
          $ref: '#/components/schemas/Project'
      type: object
      required:
      - ResponseContext
      - Project
    ProjectResponseList:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/projects__project_schema__ResponseContext'
          description: Information about the context of the response.
        Projects:
          items:
            $ref: '#/components/schemas/Project'
          type: array
          title: Projects
          description: The list of retrieved projects.
      type: object
      required:
      - ResponseContext
      - Projects
      title: ProjectResponseList
    ProjectUpdate:
      properties:
        description: 
          anyOf:
          - type: string
          - type: 'null'
          title: Description
          description: The updated description for the project.
        tags:
          anyOf:
          - additionalProperties:
              type: string
              description: Additional information about tags.
            type: object
          - type: 'null'
          title: Tags
          description: "The updated key/value combinations of the tags associated with the project’s metadata, in the following format: \"tags\":{\"TAGKEY1\":\"TAGVALUE1\",\"TAGKEY2\":\"TAGVALUE2\"}."
          example:
            key: value
        quirks:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Quirks
          description: The updated list of special configurations or behaviors for the project.
        disable_api_termination:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Disable API Termination
          description: If true, cluster deletion through the API is disabled. If false, it is enabled.
      type: object
      title: ProjectUpdate
    Quotas:
      properties:
        ShortDescription:
          type: string
          title: Short Description
          description: A brief summary of the quota.
        QuotaCollection:
          type: string
          title: Quota Collection
          description: A category or group to which the quota belongs to.
        AccountId:
          type: string
          title: Account ID
          description: The ID of the account.
        Description:
          type: string
          title: Description
          description: A detailed description of the quota.
        MaxValue:
          type: integer
          title: Max Value
          description: The maximum allowed value for the quota.
        UsedValue:
          type: integer
          title: Used Value
          description: The current usage value for the quota.
        Name:
          type: string
          title: Name
          description: The name of the quota.
      type: object
      required:
      - ShortDescription
      - QuotaCollection
      - AccountId
      - Description
      - MaxValue
      - UsedValue
      - Name
      title: Quotas
    QuotasData:
      properties:
        quotas:
          items:
            $ref: '#/components/schemas/Quotas'
          type: array
          title: Quotas
          description: A list of quota details.
      type: object
      required:
      - quotas
      title: QuotasData
    QuotasResponse:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/projects__project_schema__ResponseContext'
          description: Information about the context of the response.
        Project:
          allOf:
          - $ref: '#/components/schemas/projects__project_schema__RPCResponse'
          title: Project Quotas
          description: The quota details associated with the project.
      type: object
      required:
      - ResponseContext
      - Project
      title: QuotasResponse
    Spec:
      properties:
        desiredNodes:
          type: string
          title: Desired Nodes
          description: The number of desired nodes in the node pool.
        nodeType:
          type: string
          title: Node Type
          description: The type of VM for the nodes.
        zones:
          items:
            type: string
          type: array
          title: Zones
          description: A list of Subregions where nodes should be deployed.
        volumes:
          items:
            $ref: '#/components/schemas/Volume'
          type: array
          title: Volumes
          description: A list of volume configurations for the nodes.
        upgradeStrategy:
          allOf:
          - $ref: '#/components/schemas/UpgradeStrategy'
          title: Upgrade Strategy
          description: The configuration for managing node pool upgrades.
        autoHealing:
          type: boolean
          title: Auto Healing
          description: If true, the automatic healing of failed nodes is enabled.
      type: object
      required:
      - desiredNodes
      - nodeType
      - zones
      - volumes
      - upgradeStrategy
      - autoHealing
      title: Spec
    Statuses:
      properties:
        created_at:
          type: string
          format: date-time
          title: Created At
          description: The timestamp when the cluster was created.
        deleted_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Deleted At
          description: The timestamp when the cluster was deleted (if applicable).
        updated_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Updated At
          description: The timestamp when the cluster was last updated.
        status:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
          description: The status of the cluster.
        available_upgrade:
          type: string
          title: Available Upgrade
          description: Any available version of Kubernetes for upgrade (if applicable). For more information, see [GetKubernetesVersions](#getkubenetesversions).
          default: ''
      type: object
      required:
      - created_at
      title: Statuses
    TemplateResponse_ClusterInput_:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/templates__template_schema__ResponseContext'
          description: Information about the context of the response.
        Template:
          allOf:
          - $ref: '#/components/schemas/ClusterInput-Output'
          title: Template
          description: The returned template resource.
      type: object
      required:
      - ResponseContext
      - Template
      title: TemplateResponse[ClusterInput]
    TemplateResponse_Nodepool_:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/templates__template_schema__ResponseContext'
          description: Information about the context of the response.
        Template:
          allOf:
          - $ref: '#/components/schemas/Nodepool'
          title: Template
          description: The returned template resource.
      type: object
      required:
      - ResponseContext
      - Template
      title: TemplateResponse[Nodepool]
    TemplateResponse_ProjectInput_:
      properties:
        ResponseContext:
          $ref: '#/components/schemas/templates__template_schema__ResponseContext'
          description: Information about the context of the response.
        Template:
          allOf:
          - $ref: '#/components/schemas/ProjectInput'
          title: Template
          description: The returned template resource.
      type: object
      required:
      - ResponseContext
      - Template
      title: TemplateResponse[ProjectInput]
    UpgradeStrategy:
      properties:
        maxUnavailable:
          type: integer
          title: Max Unavailable
          description: The maximum number of nodes that can be unavailable during an upgrade.
        maxSurge:
          type: integer
          title: Max Surge
          description: The maximum number of extra nodes that can be created during an upgrade.
        autoUpgradeEnabled:
          type: boolean
          title: Auto Upgrade Enabled
          description: If true, automatic upgrades for the node pool are enabled.
        autoUpgradeMaintenance:
          allOf:
          - $ref: '#/components/schemas/AutoUpgradeMaintenance'
          title: Auto Upgrade Maintenance
          description: The configuration for the automated upgrade maintenance window.
      type: object
      required:
      - maxUnavailable
      - maxSurge
      - autoUpgradeEnabled
      - autoUpgradeMaintenance
      title: UpgradeStrategy
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    Volume:
      properties:
        device:
          type: string
          title: Device
          description: The device name for the volume.
        type:
          type: string
          title: Type
          description: The type of the volume (gp2, io1, standard).
        size:
          type: integer
          title: Size
          description: The size of the volume.
        dir:
          type: string
          title: Directory
          description: The mount point directory path for the volume.
      type: object
      required:
      - device
      - type
      - size
      - dir
      title: Volume
    clusters__cluster_schema__RPCResponse:
      properties:
        request_id:
          type: string
          title: Request ID
          description: The ID of the API request.
        data:
          allOf:
          - $ref: '#/components/schemas/KubeconfigData'
          title: Data
          description: The kubeconfig data for the cluster.
      type: object
      required:
      - request_id
      - data
    clusters__cluster_schema__ResponseContext:
      properties:
        RequestId:
          type: string
          title: Request ID
          description: The ID of the API request.
      type: object
      required:
      - RequestId
    projects__project_schema__RPCResponse:
      properties:
        request_id:
          type: string
          title: Request ID
          description: The ID of the API request.
        data:
          allOf:
          - $ref: '#/components/schemas/QuotasData'
          title: Data
          description: The quota information related to the request.
      type: object
      required:
      - request_id
      - data
    projects__project_schema__ResponseContext:
      properties:
        RequestId:
          type: string
          title: Request ID
          description: The ID of the API request.
      type: object
      required:
      - RequestId
    templates__template_schema__ResponseContext:
      properties:
        RequestId:
          type: string
          title: Request ID
          description: The ID of the API request.
      type: object
      required:
      - RequestId
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: "A header in the form `Basic XXXX`, where `XXXX` is the Base64 encoding of your root account's login and password joined by a colon (`:`). Note that with Curl, you can use the `--user LOGIN:PASSWORD` option as a shortcut for this and Curl will format the header for you."
    AccessKeyAuth:
      type: apiKey
      in: header
      name: AccessKey
      description: A header with an access key of your root acount. You cannot use EIM users' access keys with OKS.
    SecretKeyAuth:
      type: apiKey
      in: header
      name: SecretKey
      description: A header with the corresponding secret key of the access key.
    AccessTokenAuth:
      type: apiKey
      in: header
      name: AccessToken
      description: In the case of JWT authentication, a header with an access token.
    RefreshTokenAuth:
      type: apiKey
      in: header
      name: RefreshToken
      description: In the case of JWT authentication, a header with the corresponding refresh token.
    OTPCodeAuth:
      type: apiKey
      in: header
      name: X-OTP-Code
      description: (optional) If multi-factor authentication (MFA) is set up on your account, a header with your OTP token.
security:
- BasicAuth: []
  OTPCodeAuth: []
- AccessKeyAuth: []
  SecretKeyAuth: []
  OTPCodeAuth: []
- AccessTokenAuth: []
  RefreshTokenAuth: []
servers:
- url: https://api.eu-west-2.oks.outscale.com/api/v2
- url: https://api.cloudgouv-eu-west-1.oks.outscale.com/api/v2
