openapi: 3.0.0
info:
  title: Telco Cloud Automation Cluster API.
  description: Telco Cloud Automation Cluster API.
  termsOfService: https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/product/vmware-product-guide.pdf
  contact:
    name: VMware
  license:
    name: Copyright (c) 2020-2021 VMware, Inc. All rights reserved.
  version: "1.0"
servers:
- url: /hybridity/api/
tags:
- name: Cluster
  description: Telco Cloud Automation Cluster API
paths:
  /infra/k8s/clusters:
    get:
      tags:
      - Cluster
      description: Api to get clusters for Telco Cloud Automation
      operationId: getClusters
      responses:
        "200":
          description: Returns clusters
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/cluster'
    post:
      tags:
      - Infra
      summary: Api to deploy Kubernetes Cluster for Telco Cloud Automation
      description: Api to deploy Kubernetes Cluster for Telco Cloud Automation
      operationId: deployCluster
      requestBody:
        description: create cluster
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/clusterRequest'
        required: true
      responses:
        "200":
          description: Successfully deployed cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/clusters/{clusterId}:
    get:
      tags:
      - Cluster
      description: Get K8 cluster
      operationId: getK8Cluster
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: returns cluster with given id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cluster'
    put:
      tags:
      - Infra
      summary: Api to edit a cluster for Telco Cloud Automation
      description: Api to edit a cluster for Telco Cloud Automation
      operationId: editCluster
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Edit cluster
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/cluster'
        required: true
      responses:
        "200":
          description: Successfully updated cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
    post:
      tags:
      - Infra
      description: Collects the specifications of the cluster and returns back the
        payload which can be used to deploy cluster of the same configuration. It
        may result in creation of new cluster template as well.
      operationId: genereateSpec
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: action
        in: query
        required: true
        style: form
        explode: true
        schema:
          type: string
          enum:
          - genereateSpec
      responses:
        "200":
          description: Successfully generated the specifications of the cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterSpec'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
    delete:
      tags:
      - Cluster
      description: Delete K8 cluster
      operationId: undeployInfra
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Delete K8 cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200'
  /infra/k8s/clusters/{clusterId}/tasks:
    get:
      tags:
      - Cluster
      description: Get cluster tasks
      operationId: getClusterTasks
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Get cluster tasks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_1'
  /infra/k8s/clusters/query:
    post:
      tags:
      - Cluster
      summary: Api to query Kubernetes Cluster for Telco Cloud Automation
      description: Api to query Kubernetes Cluster for Telco Cloud Automation
      operationId: infraClusterQuery
      requestBody:
        description: query cluster
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/body'
        required: true
      responses:
        "200":
          description: Query cluster response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cluster'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/cluster/{clusterId}/nodepool/{nodePoolId}:
    get:
      tags:
      - Infra
      description: Get K8 cluster node pool
      operationId: getK8ClusterNodePool
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: nodePoolId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: returns cluster with given id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/nodePool'
    put:
      tags:
      - Infra
      summary: Api to edit a node pool
      description: Api to edit a nodepool
      operationId: editNodePool
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: nodePoolId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: edit cluster node pool
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/nodePool'
        required: true
      responses:
        "200":
          description: Successfully updated cluster node pool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
    delete:
      tags:
      - Infra
      description: Delete K8 cluster node pool
      operationId: deleteNodePool
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: nodePoolId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Delete K8 cluster nodepool
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
  /infra/k8s/cluster/{clusterId}/nodepool/{nodePoolId}/upgrade:
    post:
      tags:
      - Infra
      description: Upgrade Nodepool. This Upgrades the nodepools to use latest features
        of Cluster Automation. This is mandatory to be done on all nodepools created
        in TCA 1.7. This is one time operation on upgrading TCA to 1.8 and once successfully
        upgraded all the operations on nodepool will be enabled. Upgrade can be repeated
        on nodepool incase of any failure.
      operationId: upgradeNodePool
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: nodePoolId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Successfully initiated upgrade cluster node pool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/cluster/{clusterId}/nodepool/{nodePoolId}/pause:
    put:
      tags:
      - Infra
      summary: Pause a Nodepool in a cluster
      description: Pause a Nodepool in a cluster
      operationId: pauseNodePool
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: nodePoolId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Successfully paused a cluster node pool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/cluster/{clusterId}/nodepool/{nodePoolId}/unpause:
    put:
      tags:
      - Infra
      summary: Unpause a Nodepool in a cluster
      description: Unpause a Nodepool in a cluster
      operationId: unpauseNodePool
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: nodePoolId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Successfully unpaused a cluster node pool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/cluster/{clusterId}/configurations:
    get:
      tags:
      - Infra
      description: Get K8 cluster configurations
      operationId: getClusterConfig
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: returns cluster configurations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterConfigurations'
    put:
      tags:
      - Infra
      summary: Api to edit cluster config
      description: Api to edit cluster config
      operationId: editClusterConfig
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Edit Cluster Config
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/clusterConfigurations'
        required: true
      responses:
        "200":
          description: Successfully edited cluster config.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
  /infra/k8s/cluster/{clusterId}/nodepool:
    post:
      tags:
      - Infra
      description: Create K8 cluster Node Pools
      operationId: createClusterNodePool
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: create cluster node pool
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/nodePool'
        required: true
      responses:
        "200":
          description: Successfully created cluster node pool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
  /infra/k8s/cluster/{clusterId}/nodepools:
    get:
      tags:
      - Infra
      description: Api to get node pools for Telco Cloud Automation
      operationId: getClustersNodePools
      parameters:
      - name: clusterId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Returns nodepools
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/nodePoolList'
  /infra/k8s/clusters/{id}/changePassword:
    put:
      tags:
      - Infra
      summary: Api to edit Cluster password
      description: Api to edit Cluster password
      operationId: changeClusterPassword
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: Edit Cluster Password
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/body_1'
        required: true
      responses:
        "200":
          description: Successfully triggered update of cluster password
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/clusters/{id}/k8sUpgrade:
    put:
      tags:
      - Infra
      summary: Api to upgrade K8s version of Cluster for Telco Cloud Automation
      description: Api to upgrade K8s version of Cluster for Telco Cloud Automation
      operationId: upgradeCluster
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        description: upgrade kubernetes version
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/clusterUpgradeRequest'
        required: true
      responses:
        "200":
          description: Successfully triggered update of cluster password
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/clusters/{id}/k8sUpgradeValidationResponse:
    get:
      tags:
      - Infra
      summary: Api to validate  K8s version upgrade of Cluster for Telco Cloud Automation
      description: Api to validate  K8s version upgrade of Cluster for Telco Cloud
        Automation
      operationId: validateUpgradeCluster
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Successfully triggered update of cluster password
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/validateResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/supportedK8sVersions:
    get:
      tags:
      - Infra
      summary: Api to get all the supported  K8s versions of cluster for Telco Cloud
        Automation
      description: Api to get all the supported  K8s versions of cluster for Telco
        Cloud Automation
      operationId: supportedKubernetesVersions
      responses:
        "200":
          description: Returns supported kubernetes versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/supportedVersionsList'
  /infra/k8s/clusters/{id}/k8sUpgradeHistory:
    get:
      tags:
      - Infra
      summary: Api to get the K8s versions upgrade history of cluster for Telco Cloud
        Automation
      description: Api to get the K8s versions upgrade history of cluster for Telco
        Cloud Automation
      operationId: upgradeHistory
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Returns cluster upgrade history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/upgradeHistory'
  /infra/k8s/k8sVersionUpgradeMatrix/query:
    post:
      tags:
      - Infra
      summary: Api to get the K8s versions upgrade matrix for Telco Cloud Automation
      description: Api to get the K8s versions upgrade matrix for Telco Cloud Automation
      operationId: kuberenetesVersionUpgradeMatrix
      requestBody:
        description: Filter object.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/filter'
        required: true
      responses:
        "200":
          description: Successfully retrieved version matrix.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/upgradeMatrixList'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/operations/{operationId}/retry:
    post:
      tags:
      - Infra
      description: Retry K8s Cluster Operation
      operationId: retryClusterOperation
      parameters:
      - name: operationId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Successfully restarted cluster operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/operations/{operationId}/abort:
    post:
      tags:
      - Infra
      description: Abort K8s Cluster Operation
      operationId: abortClusterOperation
      parameters:
      - name: operationId
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Successfully aborted cluster operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clusterAPIResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /infra/k8s/clusters/{id}/esxinfo:
    put:
      tags:
      - Infra
      summary: Api to sync Esx Info for Workload Clusters on demand
      description: Api to sync Esx Info for Workload Clusters on demand. TCA automatically
        syncs required ESX Info for the workload clusters but if for some reason there
        is a notifcation miss, then this API can be called to forcefully trigger the
        ESX Info Sync
      operationId: syncEsxInfo
      parameters:
      - name: id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Successfully triggered sync of esx info for the cluster
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_200_2'
        "500":
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        "400":
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
components:
  schemas:
    clusterRequest:
      required:
      - clusterTemplateId
      - clusterType
      - endpointIP
      - hcxCloudUrl
      - masterNodes
      - name
      - placementParams
      - vmTemplate
      type: object
      properties:
        clusterPassword:
          type: string
        clusterTemplateId:
          type: string
        clusterType:
          type: string
          enum:
          - MANAGEMENT
          - WORKLOAD
        description:
          type: string
        location:
          $ref: '#/components/schemas/location'
        clusterConfig:
          $ref: '#/components/schemas/clusterRequest_clusterConfig'
        hcxCloudUrl:
          type: string
        endpointIP:
          type: string
        managementClusterId:
          type: string
        masterNodes:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_masterNodes'
        name:
          pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?'
          type: string
        placementParams:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_placementParams'
        vmTemplate:
          type: string
        workerNodes:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_workerNodes'
    clusterAPIResponse:
      type: object
      properties:
        id:
          type: string
        operationId:
          type: string
    cluster:
      type: object
      properties:
        id:
          type: string
        clusterName:
          type: string
        clusterType:
          type: string
        vsphereClusterName:
          type: string
        managementClusterId:
          type: string
        hcxUUID:
          type: string
        status:
          type: string
        activeTasksCount:
          type: integer
          description: Number of operations in processing or queued state on the cluster
        clusterTemplate:
          $ref: '#/components/schemas/cluster_clusterTemplate'
        clusterConfig:
          $ref: '#/components/schemas/clusterConfig'
        clusterId:
          type: string
        clusterUrl:
          type: string
        kubeConfig:
          type: string
        endpointIP:
          type: string
        masterNodes:
          maxItems: 1
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/cluster_masterNodes'
        workerNodes:
          type: array
          items:
            $ref: '#/components/schemas/cluster_workerNodes'
        vimId:
          type: string
        error:
          type: string
    clusterConfigurations:
      type: object
      properties:
        cni:
          type: array
          items:
            $ref: '#/components/schemas/clusterConfigurations_cni'
        csi:
          type: array
          items:
            $ref: '#/components/schemas/clusterConfigurations_csi'
        kubernetesVersion:
          type: string
        tools:
          type: array
          items:
            $ref: '#/components/schemas/clusterConfigurations_tools'
        systemSettings:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_clusterConfig_systemSettings'
    clusterTask:
      type: object
      properties:
        entityDetails:
          $ref: '#/components/schemas/clusterTask_entityDetails'
        type:
          type: string
        status:
          type: string
        progress:
          type: integer
        message:
          type: string
        startTime:
          type: integer
        request:
          $ref: '#/components/schemas/clusterRequest'
        steps:
          type: array
          items:
            type: object
        taskId:
          type: string
    nodePool:
      required:
      - cpu
      - labels
      - memory
      - name
      - networks
      - placementParams
      - replica
      - storage
      type: object
      properties:
        cloneMode:
          type: string
          enum:
          - fullClone
          - linkedClone
        cpu:
          minimum: 2
          type: integer
        id:
          type: string
        labels:
          minItems: 1
          type: array
          items:
            type: string
        memory:
          minimum: 2048
          type: integer
        name:
          pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(.[a-z0-9])'
          type: string
        networks:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/cluster_networks'
        placementParams:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_placementParams'
        replica:
          minimum: 1
          type: integer
        storage:
          type: integer
        config:
          $ref: '#/components/schemas/nodePool_config'
        status:
          type: string
        activeTasksCount:
          type: integer
          description: Number of operations in processing or queued state on the node
            pool
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/nodePool_nodes'
        isNodeCustomizationDeprecated:
          type: boolean
    upgradeHistory:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/upgradeHistory_items'
    nodePoolList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/nodePool'
    supportedVersionsList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/supportedVersionsList_items'
    upgradeMatrixList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/upgradeMatrixList_items'
    clusterUpgradeRequest:
      required:
      - kubernetesVersion
      - vmTemplate
      type: object
      properties:
        kubernetesVersion:
          type: string
        vmTemplate:
          type: string
        skipValidation:
          type: boolean
          description: Set to true if validation phase is to be skipped.Set to false
            otherwise.
    errorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
    validateResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/warning'
    filter:
      type: object
      properties:
        filter:
          $ref: '#/components/schemas/filter_filter'
    clusterSpec:
      required:
      - clusterTemplateId
      - clusterType
      - hcxCloudUrl
      - masterNodes
      - placementParams
      - vmTemplate
      type: object
      properties:
        clusterTemplateId:
          type: string
        clusterType:
          type: string
          enum:
          - MANAGEMENT
          - WORKLOAD
        description:
          type: string
        clusterConfig:
          $ref: '#/components/schemas/clusterSpec_clusterConfig'
        hcxCloudUrl:
          type: string
        managementClusterId:
          type: string
        masterNodes:
          type: array
          items:
            $ref: '#/components/schemas/clusterSpec_masterNodes'
        placementParams:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_placementParams'
        vmTemplate:
          type: string
        workerNodes:
          type: array
          items:
            $ref: '#/components/schemas/clusterSpec_workerNodes'
    versionMatrixFilter:
      type: object
      properties:
        filter:
          $ref: '#/components/schemas/filter_filter'
    location:
      required:
      - city
      - cityAscii
      - country
      - latitude
      - longitude
      type: object
      properties:
        city:
          type: string
        country:
          type: string
        cityAscii:
          type: string
        latitude:
          type: string
        longitude:
          type: string
    clusterConfig:
      type: object
      properties:
        cni:
          type: array
          items:
            $ref: '#/components/schemas/clusterConfig_cni'
        csi:
          type: array
          items:
            $ref: '#/components/schemas/clusterConfig_csi'
        kubernetesVersion:
          type: string
        tools:
          type: array
          items:
            $ref: '#/components/schemas/clusterConfig_tools'
        systemSettings:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_clusterConfig_systemSettings'
    error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    warning:
      type: object
      properties:
        message:
          type: string
    inline_response_200:
      type: object
      properties:
        taskId:
          type: string
    inline_response_200_1:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/clusterTask'
    infrak8sclustersquery_filter:
      type: object
      properties:
        clusterType:
          type: string
        status:
          type: string
    body:
      type: object
      properties:
        filter:
          $ref: '#/components/schemas/infrak8sclustersquery_filter'
    body_1:
      required:
      - clusterPassword
      - existingClusterPassword
      type: object
      properties:
        existingClusterPassword:
          type: string
        clusterPassword:
          type: string
    inline_response_200_2:
      type: object
      properties:
        jobId:
          type: string
    clusterRequest_clusterConfig_properties:
      type: object
      properties:
        serverIP:
          type: string
          description: NFS Server IP Address. Valid only if type is nfs_client (Mandatory)
        mountPath:
          type: string
          description: Mount Path of NFS Server. Valid only if type is nfs_client
            (Mandatory)
        datastoreUrl:
          type: string
          description: |
            Datastore Url for vSphere CSI. If no datastore is provided master node datastore is considered. Valid only if type is vsphere-csi (Optional)
    clusterRequest_clusterConfig_csi:
      type: object
      properties:
        name:
          type: string
          enum:
          - nfs_client
          - vsphere-csi
        properties:
          $ref: '#/components/schemas/clusterRequest_clusterConfig_properties'
    clusterRequest_clusterConfig_properties_1:
      type: object
      properties:
        extensionId:
          type: string
        password:
          type: string
        type:
          type: string
          enum:
          - extension
          - repo
        url:
          type: string
        username:
          type: string
    clusterRequest_clusterConfig_tools:
      required:
      - name
      - properties
      type: object
      properties:
        name:
          type: string
          enum:
          - harbor
        properties:
          $ref: '#/components/schemas/clusterRequest_clusterConfig_properties_1'
    clusterRequest_clusterConfig_properties_2:
      type: object
      properties:
        host:
          type: string
        port:
          minimum: 0
          type: integer
        protocol:
          type: string
          enum:
          - udp
          - tcp
    clusterRequest_clusterConfig_systemSettings:
      required:
      - name
      - properties
      type: object
      properties:
        name:
          type: string
          enum:
          - syslog
        properties:
          $ref: '#/components/schemas/clusterRequest_clusterConfig_properties_2'
    clusterRequest_clusterConfig:
      type: object
      properties:
        csi:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_clusterConfig_csi'
        tools:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_clusterConfig_tools'
        systemSettings:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_clusterConfig_systemSettings'
    clusterRequest_networks:
      required:
      - label
      - networkName
      type: object
      properties:
        label:
          type: string
        networkName:
          type: string
        nameservers:
          type: array
          items:
            type: string
    clusterRequest_placementParams:
      required:
      - name
      - type
      type: object
      properties:
        name:
          type: string
        type:
          type: string
    clusterRequest_masterNodes:
      required:
      - name
      type: object
      properties:
        name:
          pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(.[a-z0-9])'
          type: string
        networks:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_networks'
        placementParams:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_placementParams'
    clusterRequest_workerNodes:
      required:
      - name
      type: object
      properties:
        name:
          pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(.[a-z0-9])'
          type: string
        networks:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_networks'
        placementParams:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_placementParams'
    cluster_clusterTemplate:
      type: object
      properties:
        name:
          type: string
        version:
          type: string
        id:
          type: string
    cluster_masterNodes:
      required:
      - name
      - replica
      type: object
      properties:
        cpu:
          minimum: 1
          type: integer
        memory:
          minimum: 2048
          type: integer
        name:
          pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(.[a-z0-9])'
          type: string
        networks:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_networks'
        storage:
          minimum: 20
          type: integer
        replica:
          minimum: 1
          type: integer
        labels:
          type: array
          items:
            type: string
        cloneMode:
          type: string
          enum:
          - fullClone
          - linkedClone
    cluster_networks:
      required:
      - networkName
      type: object
      properties:
        label:
          type: string
        networkName:
          type: string
        nameservers:
          type: array
          items:
            type: string
    cluster_config_cpuManagerPolicy_properties_kubeReserved:
      type: object
      properties:
        cpu:
          minimum: 1
          type: integer
        memoryInGiB:
          minimum: 1
          type: integer
    cluster_config_cpuManagerPolicy_properties:
      type: object
      properties:
        kubeReserved:
          $ref: '#/components/schemas/cluster_config_cpuManagerPolicy_properties_kubeReserved'
        systemReserved:
          $ref: '#/components/schemas/cluster_config_cpuManagerPolicy_properties_kubeReserved'
    cluster_config_cpuManagerPolicy:
      type: object
      properties:
        type:
          type: string
          enum:
          - kubernetes
        policy:
          type: string
          enum:
          - static
          - default
        properties:
          $ref: '#/components/schemas/cluster_config_cpuManagerPolicy_properties'
    cluster_config_healthCheck_unhealthyConditions:
      required:
      - status
      - timeout
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - Ready
          - MemoryPressure
          - DiskPressure
          - PIDPressure
          - NetworkUnavailable
        status:
          type: string
          enum:
          - "True"
          - "False"
          - Unknown
        timeout:
          type: string
    cluster_config_healthCheck:
      required:
      - unhealthyConditions
      type: object
      properties:
        nodeStartupTimeout:
          type: string
          description: |
            NodeStartupTimeout determines how long a MachineHealthCheck should wait for a Node to join the cluster, before considering a Machine unhealthy
        unhealthyConditions:
          minItems: 1
          type: array
          description: |
            Conditions to check on Nodes for matched Machines, if any condition is matched for the duration of its timeout, the Machine is considered unhealthy
          items:
            $ref: '#/components/schemas/cluster_config_healthCheck_unhealthyConditions'
    cluster_config:
      type: object
      properties:
        cpuManagerPolicy:
          $ref: '#/components/schemas/cluster_config_cpuManagerPolicy'
        healthCheck:
          $ref: '#/components/schemas/cluster_config_healthCheck'
    cluster_workerNodes:
      required:
      - name
      - replica
      type: object
      properties:
        cpu:
          minimum: 1
          type: integer
        memory:
          minimum: 2048
          type: integer
        name:
          pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(.[a-z0-9])'
          type: string
        networks:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/cluster_networks'
        storage:
          minimum: 20
          type: integer
        replica:
          minimum: 1
          type: integer
        labels:
          type: array
          items:
            type: string
        cloneMode:
          type: string
          enum:
          - fullClone
          - linkedClone
        config:
          $ref: '#/components/schemas/cluster_config'
    clusterConfigurations_cni:
      required:
      - name
      type: object
      properties:
        name:
          type: string
          description: |
            For workload clusters, one of antrea or calico must be present.
          enum:
          - calico
          - multus
          - antrea
          - whereabouts
        properties:
          type: object
    clusterConfigurations_properties:
      type: object
      properties:
        name:
          type: string
          description: |
            Name of the storage class. Defaults to 'vsphere-sc' for type vsphere-csi. Defaults to 'nfs-client' for type nfs_client. Input can be given only if type is vsphere-csi (Optional).
        isDefault:
          type: boolean
          description: |
            Default storage class in k8s for pvc claim.  Defaults to True for type vsphere-csi. Defaults to False for type nfs_client.  Only one type of storage class can be default storage class. (Optional)
        serverIP:
          type: string
          description: NFS Server IP Address. Valid only if type is nfs_client (Mandatory)
        mountPath:
          type: string
          description: Mount Path of NFS Server. Valid only if type is nfs_client
            (Mandatory)
        datastoreUrl:
          type: string
          description: |
            Datastore Url for vSphere CSI. If no datastore is provided master node datastore is considered. Valid only if type is vsphere-csi (Optional)
        timeout:
          type: string
          description: |
            Timeout of all calls to CSI driver.  If not speified default value is 300 seconds. Valid only if type is vsphere-csi (Optional).
    clusterConfigurations_csi:
      required:
      - name
      type: object
      properties:
        name:
          type: string
          enum:
          - vsphere-csi
          - nfs_client
        properties:
          $ref: '#/components/schemas/clusterConfigurations_properties'
    clusterConfigurations_tools:
      required:
      - name
      type: object
      properties:
        name:
          type: string
          enum:
          - helm
          - harbor
          - nodeconfig-operator
          - vmconfig-operator
        version:
          type: string
        properties:
          type: object
    clusterTask_entityDetails:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        name:
          type: string
    nodePool_config_healthCheck:
      required:
      - unhealthyConditions
      type: object
      properties:
        nodeStartupTimeout:
          type: string
          description: |
            NodeStartupTimeout determines how long a MachineHealthCheck should wait for a Node to join the cluster, before considering a Machine unhealthy
          default: 20m0s
        unhealthyConditions:
          minItems: 1
          type: array
          description: |
            Conditions to check on Nodes for matched Machines, if any condition is matched for the duration of its timeout, the Machine is considered unhealthy
          items:
            $ref: '#/components/schemas/cluster_config_healthCheck_unhealthyConditions'
    nodePool_config:
      type: object
      properties:
        cpuManagerPolicy:
          $ref: '#/components/schemas/cluster_config_cpuManagerPolicy'
        healthCheck:
          $ref: '#/components/schemas/nodePool_config_healthCheck'
    nodePool_nodes:
      type: object
      properties:
        ip:
          type: string
        vmName:
          type: string
    upgradeHistory_items:
      type: object
      properties:
        clusterId:
          type: string
        oldKubernetesVersion:
          type: string
        newKubernetesVersion:
          type: string
        status:
          type: string
        upgradedOn:
          type: string
    supportedVersionsList_items:
      type: object
      properties:
        clusterType:
          type: string
        supportedVersions:
          type: array
          items:
            type: object
    upgradeMatrixList_items:
      type: object
      properties:
        clusterType:
          type: string
        version:
          type: string
        supportedUpgradeVersions:
          type: array
          items:
            type: string
    filter_filter:
      type: object
      properties:
        clusterType:
          type: string
        versions:
          type: array
          items:
            type: string
    clusterSpec_clusterConfig_properties:
      type: object
      properties:
        serverIP:
          type: string
        mountPath:
          type: string
        datastoreUrl:
          type: string
    clusterSpec_clusterConfig_csi:
      type: object
      properties:
        name:
          type: string
          enum:
          - nfs_client
          - vsphere-csi
        properties:
          $ref: '#/components/schemas/clusterSpec_clusterConfig_properties'
    clusterSpec_clusterConfig_properties_1:
      type: object
      properties:
        extensionId:
          type: string
        type:
          type: string
          enum:
          - extension
          - repo
        url:
          type: string
        username:
          type: string
    clusterSpec_clusterConfig_tools:
      required:
      - name
      - properties
      type: object
      properties:
        name:
          type: string
          enum:
          - harbor
        properties:
          $ref: '#/components/schemas/clusterSpec_clusterConfig_properties_1'
    clusterSpec_clusterConfig:
      type: object
      properties:
        csi:
          type: array
          items:
            $ref: '#/components/schemas/clusterSpec_clusterConfig_csi'
        tools:
          type: array
          items:
            $ref: '#/components/schemas/clusterSpec_clusterConfig_tools'
        systemSettings:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_clusterConfig_systemSettings'
    clusterSpec_masterNodes:
      required:
      - name
      type: object
      properties:
        name:
          type: string
        networks:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_networks'
        placementParams:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_placementParams'
    clusterSpec_workerNodes:
      required:
      - name
      type: object
      properties:
        name:
          type: string
        networks:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_networks'
        placementParams:
          type: array
          items:
            $ref: '#/components/schemas/clusterRequest_placementParams'
    clusterConfig_cni:
      required:
      - name
      type: object
      properties:
        name:
          type: string
          enum:
          - calico
          - multus
          - whereabouts
          - antrea
        properties:
          type: object
    clusterConfig_properties:
      type: object
      properties:
        name:
          type: string
          description: |
            Name of the storage class. Defaults to 'vsphere-sc' for type vsphere-csi. Defaults to 'nfs-client' for type nfs_client.
        isDefault:
          type: boolean
          description: Default storage class in k8s for pvc claim.
        serverIP:
          type: string
          description: NFS Server IP Address. Valid only if type is nfs_client (Mandatory)
        mountPath:
          type: string
          description: Mount Path of NFS Server. Valid only if type is nfs_client
            (Mandatory)
        datastoreUrl:
          type: string
          description: |
            Datastore Url for vSphere CSI. If no datastore is provided master node datastore is considered. Valid only if type is vsphere-csi (Optional)
        timeout:
          type: string
          description: |
            Timeout of all calls to CSI driver.  If not speified default value is 300 seconds. Valid only if type is vsphere-csi (Optional).
    clusterConfig_csi:
      required:
      - name
      type: object
      properties:
        name:
          type: string
          enum:
          - vsphere-csi
          - nfs_client
        properties:
          $ref: '#/components/schemas/clusterConfig_properties'
    clusterConfig_tools:
      required:
      - name
      type: object
      properties:
        name:
          type: string
          description: Specifying any version of helm is deprecated from 1.9. It is
            recommend to use TCA certified helm versions.
          enum:
          - helm
          - harbor
          - nodeconfig-operator
          - vmconfig-operator
        version:
          type: string
        properties:
          type: object
  responses:
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
  securitySchemes:
    x-hm-authorization:
      type: apiKey
      description: Obtained from /hybridity/api/session
      name: x-hm-authorization
      in: header
