NVIDIA Run:ai Clusters API

Use these endpoints to create, manage and delete NVIDIA Run:ai Kubernetes clusters.

OpenAPI Specification

runai-clusters-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: latest
  description: '# Introduction


    The NVIDIA Run:ai Control-Plane API reference is a guide that provides an easy-to-use programming interface for adding various tasks to your application, including workload submission, resource management, and administrative operations.


    NVIDIA Run:ai APIs are accessed using *bearer tokens*. To obtain a token, you need to create a **Service account** through the NVIDIA Run:ai user interface.

    To create a service account, in your UI, go to Access → Service Accounts (for organization-level service accounts) or User settings → Access Keys (for user access keys), and create a new one.


    After you have created a new service account, you will need to assign it access rules.

    To assign access rules to the service account, see [Create access rules](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/accessrules#create-or-delete-rules).

    Make sure you assign the correct rules to your service account. Use the [Roles](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/roles) to assign the correct access rules.


    To get your access token, follow the instructions in [Request a token](https://run-ai-docs.nvidia.com/saas/reference/api/rest-auth/#request-an-api-token).

    '
  title: NVIDIA Run:ai Access Keys Clusters API
  x-logo:
    url: https://api.redocly.com/registry/raw/runai-xq8/saas/latest/public/runai-logo-api.png
    altText: NVIDIA Run:ai
    href: https://run.ai
  license:
    name: NVIDIA Run:ai
    url: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-software-license-agreement/
servers:
- url: https://app.run.ai
security:
- bearerAuth: []
tags:
- name: Clusters
  description: Use these endpoints to create, manage and delete NVIDIA Run:ai Kubernetes clusters.
paths:
  /api/v1/clusters:
    get:
      summary: Get a list of clusters.
      description: Retrieve a list of clusters with details.
      operationId: get_clusters
      tags:
      - Clusters
      parameters:
      - $ref: '#/components/parameters/QueryVerbosity'
      - $ref: '#/components/parameters/QueryIncludeRequestedForDelete'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DisplayedCluster'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a cluster.
      description: Use to create a Kubernetes cluster.
      operationId: create_cluster
      tags:
      - Clusters
      requestBody:
        description: The cluster to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterCreationRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisplayedCluster'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/clusters/{clusterUuid}:
    get:
      summary: Get cluster by id.
      description: Retrieve cluster details by Universally Unique Identifier (UUID).
      operationId: get_cluster_by_uuid
      tags:
      - Clusters
      parameters:
      - $ref: '#/components/parameters/ClusterUuid'
      - $ref: '#/components/parameters/QueryVerbosity'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DisplayedCluster'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a cluster by id.
      description: "Use to delete a cluster by Universally Unique Identifier (UUID). \nWill return 202 for success if this api was called on a cluster that its version is >=2.20, \nand force query param is false or not provided.\nWill return 204 for success if force query param is true, or if cluster is in a version < 2.20\n"
      operationId: delete_cluster
      tags:
      - Clusters
      parameters:
      - $ref: '#/components/parameters/ClusterUuid'
      - $ref: '#/components/parameters/QueryForceDelete'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '204':
          $ref: '#/components/responses/204NoContent'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a cluster by id.
      description: Use to update the details of a Kubernetes cluster by Universally Unique Identifier (UUID).
      operationId: updateCluster
      tags:
      - Clusters
      parameters:
      - $ref: '#/components/parameters/ClusterUuid'
      requestBody:
        description: The cluster details to update
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterUpdateRequest'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/clusters/{clusterUuid}/metrics:
    get:
      summary: Get the cluster metrics data.
      description: Retrieve the metrics data for a Kubernetes cluster by Universally Unique Identifier (UUID).
      operationId: get_cluster_metrics
      tags:
      - Clusters
      parameters:
      - $ref: '#/components/parameters/ClusterUuid'
      - $ref: '#/components/parameters/StartRequired'
      - $ref: '#/components/parameters/EndRequired'
      - $ref: '#/components/parameters/NumberOfSamples'
      - $ref: '#/components/parameters/MetricsType'
      - $ref: '#/components/parameters/ClusterMetricsGroupBy'
      - $ref: '#/components/parameters/FilterByNodepoolName'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupedMetricsResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupedMetricsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '422':
          $ref: '#/components/responses/422UnprocessableEntity'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/clusters/{clusterUuid}/cluster-install-info:
    get:
      summary: Retrieve the installation instructions of a cluster by ID.
      description: "Use to retrieve installation instruction for a cluster by Universally Unique Identifier (UUID). \nSupports clusters version 2.15 or above.\n"
      operationId: get_cluster_install_info_by_uuid
      tags:
      - Clusters
      parameters:
      - $ref: '#/components/parameters/ClusterUuid'
      - $ref: '#/components/parameters/ClusterVersion'
      - $ref: '#/components/parameters/ClusterRemoteURL'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterInstallationInfoResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /v1/k8s/clusters/{cluster_uuid}/installfile:
    get:
      tags:
      - Clusters
      summary: Get cluster installation file by id.
      description: "Retrieve the installation values file of a cluster by Retrieve the installation values file of a given cluster by ID. \nSupports clusters 2.13 and lower.\n"
      operationId: getInstallFile
      parameters:
      - name: cluster_uuid
        in: path
        required: true
        description: Unique identifier of the cluster.
        schema:
          type: string
          format: uuid
      - in: query
        name: cloud
        description: Cloud type identifier.
        schema:
          type: string
          enum:
          - gke
          - aws
          - aks
          - op
          - airgapped
          - openshift
      - in: query
        name: clusterip
        description: Comma-separated list of IP addresses that provide access to the cluster.
        schema:
          type: string
      - in: query
        name: format
        description: Format of the output file.
        schema:
          type: string
          enum:
          - json
          - yaml
          default: yaml
      responses:
        '200':
          $ref: '#/components/responses/OK'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/k8s/clusters/{clusterUuid}/metrics:
    get:
      tags:
      - Clusters
      summary: Get cluster metrics.
      operationId: getClusterMetrics
      deprecated: true
      description: Get current cluster metrics. If time range query parameters supplied, then historical data will be returned as well. Deprecated - please use api/v1/clusters/{clusterUuid}/metrics
      parameters:
      - $ref: '#/components/parameters/ClusterUuid'
      - $ref: '#/components/parameters/Start'
      - $ref: '#/components/parameters/End'
      - $ref: '#/components/parameters/NumberOfSamples'
      - $ref: '#/components/parameters/NodepoolName'
      responses:
        '200':
          description: A Clusters metrics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cluster'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
components:
  schemas:
    HttpResponse:
      required:
      - code
      - message
      properties:
        code:
          type: integer
          minimum: 100
          maximum: 599
        message:
          type: string
    NodepoolName:
      type: string
      example: nodepoola
    ClusterInstallationInfoResponse:
      type: object
      required:
      - installationStr
      - repositoryName
      - chartRepoURL
      - clientSecret
      properties:
        installationStr:
          type: string
        repositoryName:
          type: string
        chartRepoURL:
          type: string
        clientSecret:
          type: string
      example:
        installationStr: helm update --update repo/runai-cluster -n runai --set cluster.url=test_cluster
        repositoryName: runai
        chartRepoURL: https://runai.jfrog.io/artifactory/charts
        clientSecret: ABC333DDD
    ClusterReportedStatus:
      type: object
      description: the cluster status reported by the cluster
      properties:
        conditions:
          items:
            description: Condition contains details for one aspect of the current state of this API Resource
            properties:
              lastTransitionTime:
                description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                format: date-time
                type: string
              message:
                description: message is a human readable message indicating details about the transition. This may be an empty string.
                maxLength: 32768
                type: string
              observedGeneration:
                description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
                format: int64
                minimum: 0
                type: integer
              reason:
                description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
                maxLength: 1024
                minLength: 1
                pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                type: string
              status:
                description: status of the condition, one of True, False, Unknown.
                enum:
                - 'True'
                - 'False'
                - Unknown
                type: string
              type:
                description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
                maxLength: 316
                type: string
            required:
            - lastTransitionTime
            - message
            - reason
            - status
            - type
            type: object
          type: array
        operands:
          additionalProperties:
            description: Status specifies the status of an operand. And operand manages resources, some of which are not immediately available and need their status monitored, such as Deployments, Daemonsets, Ingressess etc. Some resources are immediately available and should not be monitored once accepted by the cluster, such as Services, ConfigMaps, Secrets etc. If all resources of an operand are ready, a Status with Ready set to 'true' and a nil 'Reasons' slice should be returned, otherwise, a Status with 'Reasons' slice containig the reason why the Operand is not ready (Deployment pods are not ready for example.)
            properties:
              lastTransitionTime:
                description: LastTransitionTime specifies the last time the operand readiness changed
                format: date-time
                type: string
              ready:
                description: Ready specifies if the operand is ready or not
                type: boolean
              reasons:
                description: Reasons specifies the reasons why the operand is not ready
                items:
                  type: string
                type: array
              unreadyThresholdCrossed:
                description: UnreadyThresholdCrossed specifies if the operand has been unready for longer than the threshold
                type: boolean
            required:
            - ready
            type: object
          description: OperandStatuses specifies the status of the managed operands
          type: object
        platform:
          type:
          - object
          - 'null'
          properties:
            type:
              type:
              - string
              - 'null'
              enum:
              - vanilla
              - openshift
              - rke
              - gke
              - aks
              - eks
              description: the cluster platform type
            kubeVersion:
              type:
              - string
              - 'null'
              description: the cluster kubernetes version
        config:
          $ref: '#/components/schemas/ClusterReportedConfig'
        dependencies:
          $ref: '#/components/schemas/ClusterDependenciesStatus'
    ResourceData:
      type: object
      description: quota equals to the given resources and allocated equal to the real count of used resources
      required:
      - quota
      - allocated
      properties:
        quota:
          type: number
          example: 3
        allocated:
          type: number
          example: 2.5
        utilization:
          type: number
          example: 0.765
    Error1:
      required:
      - code
      - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
    cluster:
      type: object
      required:
      - metadata
      - current
      properties:
        metadata:
          type: object
          required:
          - clusterId
          - clusterName
          properties:
            clusterId:
              $ref: '#/components/schemas/ClusterId'
            clusterName:
              $ref: '#/components/schemas/ClusterName'
        current:
          type: object
          description: Current reported metrics data. resources holds data that is summed up to the cluster level and projectResources explains the division of it to projects
          required:
          - resources
          - projectResources
          properties:
            resources:
              type: array
              items:
                allOf:
                - $ref: '#/components/schemas/ResourcesData'
                - type: object
                  required:
                  - nodepoolName
                  properties:
                    nodepoolName:
                      $ref: '#/components/schemas/NodepoolName'
            projectResources:
              type: array
              items:
                allOf:
                - $ref: '#/components/schemas/ResourcesData'
                - type: object
                  required:
                  - projectName
                  - departmentName
                  - nodepoolName
                  properties:
                    projectName:
                      $ref: '#/components/schemas/ProjectName1'
                    departmentName:
                      $ref: '#/components/schemas/DepartmentName'
                    nodepoolName:
                      $ref: '#/components/schemas/nodepoolName'
        timeRange:
          $ref: '#/components/schemas/TimeRange'
    ClusterUpdateRequest:
      type: object
      required:
      - name
      properties:
        name:
          type: string
    ProjectName1:
      type: string
      example: project-a
    ResourcesDataOvertime:
      allOf:
      - $ref: '#/components/schemas/ResourcesData'
      - type: object
        required:
        - timestamp
        properties:
          timestamp:
            type: string
            format: date-time
            example: '2023-06-06T12:09:18.211Z'
    ClusterReportedConfig:
      description: Holds cluster configuration values.
      type:
      - object
      - 'null'
      properties:
        workloadOwnershipProtection:
          type:
          - boolean
          - 'null'
          description: indicates if the cluster workload ownership protection is enabled
          example: false
        subdomainEnabled:
          type:
          - boolean
          - 'null'
          description: indicates if the cluster subdomain is enabled
          example: false
        ingressClass:
          type:
          - string
          - 'null'
          description: the ingress class that is configured for the cluster
          example: nginx
    DisplayedCluster:
      type: object
      required:
      - uuid
      - tenantId
      - name
      - createdAt
      properties:
        uuid:
          type: string
          format: uuid
        tenantId:
          $ref: '#/components/schemas/TenantId'
        name:
          type: string
        createdAt:
          type: string
          format: date-time
        domain:
          type:
          - string
          - 'null'
        version:
          type:
          - string
          - 'null'
        status:
          $ref: '#/components/schemas/ClusterDisplayedStatus'
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
        lastLiveness:
          type:
          - string
          - 'null'
          format: date-time
        deleteRequestedAt:
          description: the timestamp value of when the cluster deletion request was received
          type:
          - string
          - 'null'
          format: date-time
      example:
        uuid: A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
        name: example
        tenantId: 1001
        domain: my.company.com
        status: {}
        createdAt: '2020-01-01T00:00:00Z'
        updatedAt: '2020-01-02T00:00:00Z'
        lastLiveness: '2020-01-02T00:00:00Z'
        version: 2.15.0
    nodepoolName:
      type: string
      example: nodepoola
    MetricsType:
      type: string
      description: specifies what data to request
      enum:
      - TOTAL_GPU_NODES
      - GPU_UTILIZATION
      - GPU_UTILIZATION_DISTRIBUTION
      - GPU_MEMORY_UTILIZATION
      - CPU_UTILIZATION
      - CPU_MEMORY_UTILIZATION
      - TOTAL_GPU
      - GPU_QUOTA
      - ALLOCATED_GPU
      - UNALLOCATED_GPU
      - AVG_WORKLOAD_WAIT_TIME
      - WORKLOADS_COUNT
    TimeRange:
      type: object
      description: Overtime metrics data. Returned only if both start and end query parameters are set.
      required:
      - resources
      properties:
        resources:
          type: array
          items:
            $ref: '#/components/schemas/ResourcesDataOvertime'
    ResourcesData:
      type: object
      required:
      - numberOfPendingWorkloads
      - gpu
      - cpu
      - memory
      properties:
        numberOfPendingWorkloads:
          type: integer
          example: 1
        gpu:
          description: GPU resources in fractions. 0.7 = 70% of a gpu
          $ref: '#/components/schemas/ResourceData'
        cpu:
          description: CPU resources in millicpus. 1000 = 1 cpu
          $ref: '#/components/schemas/ResourceData'
        memory:
          description: Memory resources in megabytes. 1 = 10^6  (1000*1000)
          $ref: '#/components/schemas/ResourceData'
    TenantId:
      description: The id of the tenant.
      type: integer
      format: int32
      example: 1001
    GroupedMetricsResponse:
      type: object
      required:
      - measurements
      properties:
        measurements:
          type: array
          items:
            $ref: '#/components/schemas/GroupedMeasurementResponse'
    ClusterId:
      description: The id of the cluster.
      type: string
      format: uuid
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
    ClusterName:
      type: string
      example: cluster-a
    ClusterDependenciesStatus:
      type: object
      required:
      - required
      - optional
      properties:
        required:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ClusterDependencyStatus'
        optional:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ClusterDependencyStatus'
    GroupedMeasurementResponse:
      type: object
      required:
      - type
      - values
      properties:
        type:
          type: string
          description: specifies what data returned
          example: ALLOCATED_GPU
        labels:
          type:
          - object
          - 'null'
          description: labels of the metric measurement
          example: '{''gpu'': ''3''}'
          additionalProperties:
            type: string
        values:
          type:
          - array
          - 'null'
          items:
            type: object
            required:
            - value
            - timestamp
            properties:
              value:
                type: string
                example: '85'
              timestamp:
                type:
                - string
                - 'null'
                format: date-time
                example: '2023-06-06 12:09:18.211'
        groups:
          type: array
          description: Group information for this measurement
          items:
            $ref: '#/components/schemas/GroupedMeasurementGroup'
    ClusterDependencyStatus:
      type: object
      required:
      - available
      properties:
        available:
          type: boolean
          description: whether the dependency is available
        reason:
          type: string
          description: the reason for the dependency status
        components:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ClusterDependencyStatus'
    DepartmentName:
      type: string
      example: default
    GroupedMeasurementGroup:
      type: object
      required:
      - key
      - value
      properties:
        key:
          type: string
          example: Nodepool
          description: The grouping key
        value:
          type: string
          example: gpu-pool-1
          description: The grouping value
    Error:
      required:
      - code
      - message
      properties:
        code:
          type: integer
          minimum: 100
          maximum: 599
        message:
          type: string
        details:
          type: string
      example:
        code: 400
        message: Bad request - Resource should have a name
    ClusterDisplayedStatus:
      type:
      - object
      - 'null'
      description: The cluster's displayed status.
      allOf:
      - $ref: '#/components/schemas/ClusterReportedStatus'
      - type: object
        properties:
          state:
            $ref: '#/components/schemas/ClusterState'
    ClusterCreationRequest:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        domain:
          type: string
        version:
          type: string
    ClusterState:
      type: string
      description: The cluster's state.
      enum:
      - WaitingToConnect
      - Connected
      - Disconnected
      - MissingPrerequisites
      - ServiceIssues
      - Unknown
  responses:
    401Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 401
            message: Issuer is not familiar.
    403Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 403
            message: You do not have sufficient permissions.
    422UnprocessableEntity:
      description: Unprocessable entity - The request was well-formed but contains semantic errors.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 422
            message: Validation failed - Invalid workload configuration
    202Accepted:
      description: Accepted.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpResponse'
          example:
            code: 202
            message: Request has been accepted.
    404NotFound:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 404
            message: Resource id not found.
    500InternalServerError:
      description: unexpected error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 500
            message: Something went wrong.
    204NoContent:
      description: No Content.
    OK:
      description: OK
      content:
        application/json:
          schema:
            type: string
            format: text
    400BadRequest:
      description: Bad request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 400
            message: Required parameter is missing
    503ServiceUnavailable:
      description: unexpected error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 503
            message: Please try again in few minutes.
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error1'
  parameters:
    QueryIncludeRequestedForDelete:
      name: includeRequestedForDelete
      in: query
      required: false
      example: true
      schema:
        type: boolean
      description: When true, includes clusters that are marked for deletion
    NumberOfSamples:
      name: numberOfSamples
      in: query
      description: The number of samples to take in the specified time range.
      required: false
      schema:
        type: integer
        example: 20
        maximum: 1000
        minimum: 0
        default: 20
    ClusterRemoteURL:
      name: remoteClusterUrl
      in: query
      required: false
      description: The remote URL of the runai cluster
      schema:
        type: string
        example: https://cluster.runai
    ClusterVersion:
      name: version
      in: query
      required: true
      description: The cluster version to install
      schema:
        type: string
        example: 2.16
    End:
      name: end
      in: query
      description: End of time range to fetch data from in UTC format.
      required: false
      schema:
        type: string
        format: date-time
        example: '2023-06-07 12:09:18.211'
    EndRequired:
      name: end
      in: query
      description: End date of time range to fetch data in ISO 8601 timestamp format.
      required: true
      schema:
        type: string
        format: date-time
        example: '2023-06-07T12:09:18.211Z'
    QueryForceDelete:
      name: force
      in: query
      required: false
      description: 'if true will force cluster instant deletion otherwise will start cluster graceful deletion process.

        '
      example: true
      schema:
        type: boolean
        default: false
    NodepoolName:
      in: query
      name: nodepoolName
      schema:
        type: string
        example: default
      required: false
    

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/runai/refs/heads/main/openapi/runai-clusters-api-openapi.yml