openapi: 3.0.3
info:
  version: "2.25"
  title: NVIDIA Run:ai
  x-logo:
    url: ./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: Organizations
  - name: Authentication and Authorization
  - name: Audit
  - name: Datavolumes
  - name: Workloads
  - name: Workload assets
  - name: Policies
  - name: Notifications
  - name: AI Applications
  - name: Clusters
    x-parent: Organizations
    description: Use these endpoints to create, manage and delete NVIDIA Run:ai Kubernetes clusters.
  - name: Departments
    x-parent: Organizations
    description: ""
  - name: Reports
    x-parent: Organizations
  - name: NodePools
    x-parent: Organizations
    description: "Node pools assist in managing heterogeneous resources effectively. \nA node pool is a set of nodes grouped into a bucket of resources using a predefined (for example, GPU-Type) or \nadministrator-defined label (for example, key & value). \nFor more information, see [Node Pools](https://run-ai-docs.nvidia.com/self-hosted/2.25/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"
  - name: Nodes
    x-parent: Organizations
    description: "Nodes are worker machines in Kubernetes and may be either a virtual or a physical machine, depending on the cluster. \nEach Node is managed by the NVIDIA Run:ai control plane. For more information, see [Nodes](https://run-ai-docs.nvidia.com/self-hosted/2.25/platform-management/aiinitiatives/resources/nodes).\n"
  - name: Projects
    x-parent: Organizations
    description: "Projects implement resource allocation policies and create segregation between \ndifferent initiatives. It can represent a team, an individual, or an initiative that \nshares resources or has a specific resources budget (quota). \nSee [Projects](https://run-ai-docs.nvidia.com/self-hosted/2.25/platform-management/aiinitiatives/organization/projects) \nfor more information.\n"
  - name: Logo
    x-parent: Organizations
    description: Use to manage tenant logo files.
  - name: Researcher Command Line Interface
    x-parent: Organizations
  - name: Researcher Command Line Interface Deprecated
    x-parent: Organizations
  - name: Network Topologies
    x-parent: Organizations
    description: The Network Topologies API enables administrators to reflect the hierarchical network topology connectivity of nodes in a data center, such as racks, blocks, and other organizational units, to improve pod scheduling decisions for communication-intensive AI/ML workloads. To support topology-aware scheduling, this API allows administrators to define a multi-level network topology element using ordered Kubernetes node labels that represent the network connectivity of nodes in the data center. Nodes are labeled with the same key-value pairs labels that represent their location in the data center network. These labels are used by the NVIDIA Run:ai Scheduler to prefer scheduling pods on nodes that are "closer" to each other, minimizing communication overhead and optimizing workload performance.
  - name: Access Keys
    x-parent: Authentication and Authorization
    description: |
      Access Keys allow users to authenticate and interact programmatically with the NVIDIA Run:ai API.
      Each access key consists of a client ID and secret that can be used to obtain authentication tokens.
      Access keys can be managed by individual users for their own use, or by administrators for organization-wide access.
      For more information, see [Access control](https://run-ai-docs.nvidia.com/self-hosted/2.25/infrastructure-setup/authentication/overview/#role-based-access-control).
  - name: Access rules
    x-parent: Authentication and Authorization
    description: "Access rules provide user authorization to system resources and entities.\nIt is managed using Role-based access control (RBAC) which is a policy-neutral \naccess control mechanism defined around roles and privileges. \nThe components of RBAC make it simple to manage access to system resources and entities.\nFor more information, see [Access control](https://run-ai-docs.nvidia.com/self-hosted/2.25/infrastructure-setup/authentication/overview/#role-based-access-control).\n"
  - name: Permissions
    x-parent: Authentication and Authorization
    description: "Permissions define the actions that users can perform on specific resources within the NVIDIA Run:ai platform. \nEach permission consists of a resource type and an allowed action. \nThe Permission Sets API provides a catalog of all available permission sets in the NVIDIA Run:ai platform. \nEach permission set is a predefined collection of permissions that represent the permissions required for a role to perform specific operations. \nPermission sets serve as the building blocks for roles and are used in both NVIDIA Run:ai predefined roles and custom roles defined through the [Roles API](/2.25/#tag/Roles).\n"
  - name: Applications
    x-parent: Authentication and Authorization
    description: |
      **DEPRECATED:** Applications have been renamed to Service Accounts. Please use the [Service Accounts](/2.25/#tag/Service-Accounts) endpoints instead.

      Create and manage applications in the tenant.
  - name: Service Accounts
    x-parent: Authentication and Authorization
    description: "Service accounts enable programmatic access to the NVIDIA Run:ai API, allowing applications or automated systems to authenticate and interact securely. \nEach service account is associated with an access key which includes a client ID and secret used to generate access token. \nService accounts can be managed organization-wide or with a defined scope.\n"
  - name: Roles
    x-parent: Authentication and Authorization
    description: "The Roles API allows administrators to define and manage roles within the NVIDIA Run:ai platform. \nA role represents a collection of permission sets that determine what actions can be performed across NVIDIA Run:ai resources.\nNVIDIA Run:ai provides a list of predefined roles that cover common operational needs, such as managing workloads, projects, or data and storage. \nAdministrators can also use this API to create custom roles by combining specific permission sets to match their organization's access model.\n"
  - name: Tokens
    x-parent: Authentication and Authorization
    description: "Use tokens to facilitate authentication to the NVIDIA Run:ai API. \nThe API server must be configured to use the NVIDIA Run:ai identity \nservice to validate authentication tokens.\n"
  - name: Users
    x-parent: Authentication and Authorization
  - name: User Applications
    x-parent: Authentication and Authorization
    description: |
      **DEPRECATED:** User Applications have been renamed to Access Keys. Please use the [Access Keys](/2.25/#tag/Access-Keys) endpoints instead.

      User Applications allow users to authenticate and interact programmatically with the NVIDIA Run:ai API.
  - name: Idps
    x-parent: Authentication and Authorization
  - name: Me
    x-parent: Authentication and Authorization
    description: "\"Me\" returns the authenticated user's permissions within the system. \nIt provides a comprehensive view of access rules (roles, subjects and scope) assigned to the current user.\nFor more information see [Access control](https://run-ai-docs.nvidia.com/self-hosted/2.25/infrastructure-setup/authentication/overview/#role-based-access-control).\n"
  - name: Settings
    x-parent: Authentication and Authorization
    description: |
      View and manage configuration settings for your organization.
  - name: Org unit
    x-parent: Authentication and Authorization
    description: Org unit.
  - name: AuditLogs
    x-parent: Audit
    description: The audit log provides audit trail information for user activity, changes to business objects and other important information. For more information, see [Audit log](https://run-ai-docs.nvidia.com/self-hosted/2.25/infrastructure-setup/procedures/event-history).
  - name: Datavolumes-API
    x-displayName: Datavolumes
    x-parent: Datavolumes
  - name: Events
    x-parent: Workloads
    description: Workload events that occurred while the workload was running. Use to diagnose issue around workload scheduling.
  - name: Pods
    x-parent: Workloads
    description: Retrieve data about workload pods from your NVIDIA Run:ai platform.
  - name: Workloads-API
    x-displayName: Workloads
    x-parent: Workloads
  - name: Workloads V2
    x-parent: Workloads
    description: |
      The Workloads V2 API allows you to create, retrieve, and delete workloads that originate from third-party ML frameworks, tools, or the broader Kubernetes ecosystem. These workloads are registered in the platform through the Workload Types API, some are already registered in NVIDIA Run:ai, while others can be added by administrators.
      Each submission combines the user's Kubernetes manifest with NVIDIA Run:ai scheduling metadata, enabling consistent orchestration, monitoring, and governance. See [Extending workload support](https://run-ai-docs.nvidia.com/self-hosted/2.25/workloads-in-nvidia-run-ai/workload-types/extending-workload-support) for more details.
  - name: NVIDIA NIM
    x-parent: Workloads
    description: |
      The NVIDIA NIM API provides endpoints to create and manage workloads that deploy NVIDIA Inference Microservices (NIM) through the NIM Operator. These workloads package optimized NVIDIA model servers and run as managed services on the NVIDIA Run:ai platform.
      Each request includes NVIDIA Run:ai scheduling metadata (for example, project, priority, and category) and a NIM service specification that defines the container image, compute resources, environment variables, storage, and networking configuration. Once submitted, NVIDIA Run:ai handles scheduling, orchestration, and lifecycle management of the NIM service to ensure reliable and efficient model serving.
  - name: Workspaces
    x-parent: Workloads
    description: "A Workspace is a simplified tool for researchers to conduct experiments, build AI models, access standard MLOps tools, and collaborate with their peers.\nWorkspaces abstract complex concepts related to running containerized workloads in a Kubernetes environment and are built from predefined setups that include\nnetworking, storage, secrets and other resources. All the setup and configurations for research, including container \nimages, data sets, resource requests, as well as all tools are included. for the research, in a single place. \nIt answers the research needs while ensuring infrastructure owners keep control and allocation efficiency.\nA workspace is associated with a specific NVIDIA Run:ai project and you can have multiple workspaces under a specific project. \nFor more information, see [Workspaces](https://run-ai-docs.nvidia.com/self-hosted/2.25/workloads-in-nvidia-run-ai/using-workspaces/running-workspace).\n"
  - name: Trainings
    x-parent: Workloads
    description: "Trainings are dedicated workloads that are specifically used for training models. \nThey are by design preemptible workloads because they are used in unattended sessions where the  \nscientists and researchers do not need to be present. These workloads are allowed to utilize \nresources over the project's quota.      \n"
  - name: Inferences
    x-parent: Workloads
    description: Inference workloads deploy trained models into a production environment to generate predictions from live data. These workloads are prioritized over Trainings and Workspaces during scheduling. NVIDIA Run:ai Inference workloads support auto-scaling to maintain service-level agreements (SLAs) by dynamically adjusting resources as demand changes.
  - name: Revisions
    x-parent: Workloads
    description: Revisions are associated with an inference workload and represent a snapshot of its configuration. A revision is created on each change to the inference workload.
  - name: Distributed
    x-parent: Workloads
    description: "Distributed Training, is the ability to split the training of a model among multiple processors. \nIt is often a necessity when multi-GPU training no longer applies; \ntypically when you require more GPUs than exist on a single node. \nEach such split is a pod (see definition above). NVIDIA Run:ai spawns an additional launcher process that manages and \ncoordinates the other worker pods. For more information, see [Distributed training](https://run-ai-docs.nvidia.com/self-hosted/2.25/workloads-in-nvidia-run-ai/using-training/distributed-training/distributed-training-models).\n"
  - name: Workloads batch
    x-parent: Workloads
  - name: Workload properties
    x-parent: Workloads
    description: |
      Workload properties define the behavioral and scheduling characteristics of a workload submitted to the NVIDIA Run:ai platform. These properties such as type, category, and priority determine how workloads are classified, monitored, and scheduled.
      - Type - Defines the functional behavior of a workload, such as training or inference, and serves as the foundation for how it is classified within the platform. Each workload type includes a default category (used for monitoring) and a default priority (used for scheduling within a project).
      - Category - Represents the role or purpose of a workload, such as  Build, Train, Deploy. Each workload type is assigned a default category to ensure consistent classification across the platform for monitoring purposes. See [Monitor workloads by category](https://run-ai-docs.nvidia.com/saas/platform-management/monitor-performance/workload-categories).
      - Priority - Determines the scheduling order of workloads within a project and whether a workload can be preempted. Higher-priority workloads are scheduled first and may become non-preemptible, preventing interruption by lower-priority workloads. See [Workload priority control](https://run-ai-docs.nvidia.com/saas/platform-management/runai-scheduler/scheduling/workload-priority-control).
  - name: Workload templates
    x-parent: Workloads
    description: "This set of endpoints manages workload templates used to define reusable workload configurations across various workload types in the NVIDIA Run:ai platform. \nTemplates help standardize workload definitions for consistent submission and resource usage across projects and users.\n"
  - name: Distributed Inferences
    x-parent: Workloads
    description: "Distributed inference enables running inference workloads across multiple pods, typically to scale model serving beyond a single container or node. This approach is useful when a single instance cannot meet resource requirements.NVIDIA Run:ai supports this model using Leader Worker Set (LWS). \nEach pod plays a specific role, either as a leader or worker, and together they form a coordinated service. NVIDIA Run:ai manages the orchestration and configuration of these pods to ensure efficient and scalable inference execution\n"
  - name: Compute
    x-parent: Workload assets
    description: "A compute resource is a building block that represents compute resources such as GPUs, CPU cores, and CPU memory.\nThe compute resources may consist of multiple physical resources, for example, 0.5 GPU, 8 cores and 200 Megabytes of CPU memory. \nA compute resource is available to a scope and and all of the organizational units within that scope. \n\nFor more information, see [Compute resource](https://run-ai-docs.nvidia.com/self-hosted/2.25/workloads-in-nvidia-run-ai/assets/compute-resources).\n"
  - name: Credentials
    x-parent: Workload assets
    description: Credentials are used to unlock protected resources such as applications, containers, and other assets. For more information, see [Credentials](https://run-ai-docs.nvidia.com/self-hosted/2.25/workloads-in-nvidia-run-ai/assets/credentials).
  - name: Datasources
    x-parent: Workload assets
    description: Data source assets.
  - name: Environment
    x-parent: Workload assets
    description: "An environment resource designates the container image, the image pull policy, working directory, security parameters, and others. \nIt exposes all the necessary tools (open source, 3rd party, or custom tools) along \nwith their connection interfaces including external node port and the container ports.\nYou can also specify a standard, distributed, or inference workload architecture for the environment.\nAn environment is a mandatory building block for the creation of a workload.\nFor more information, see [Environments](https://run-ai-docs.nvidia.com/self-hosted/2.25/workloads-in-nvidia-run-ai/assets/environments).\n"
  - name: Storage Classes
    x-parent: Workload assets
  - name: Storage Class Configuration
    x-parent: Workload assets
  - name: Git
    x-parent: Workload assets
    description: Use Git as a data source location for data sets that are relevant to the workload being submitted.
  - name: HostPath
    x-parent: Workload assets
    description: Use a HostPath as a data source location for data sets that are relevant to the workload being submitted.
  - name: NFS
    x-parent: Workload assets
    description: Use NFS as a data source location for data sets that are relevant to the workload being submitted.
  - name: PVC
    x-parent: Workload assets
    description: Use a PVC as a data source location for data sets that are relevant to the workload being submitted.
  - name: Registry
    x-parent: Workload assets
    description: Use an images registry to enable the listting of repositories and tags that can be used as a data source location for data sets that are relevant to the workload being submitted.
  - name: S3
    x-parent: Workload assets
    description: Use an S3 simple storage service as a data source location for data sets that are relevant to the workload being submitted.
  - name: ConfigMap
    x-parent: Workload assets
    description: Use a ConfigMap as a data source location for data sets that are relevant to the workload being submitted.
  - name: Secret
    x-parent: Workload assets
    description: Use a credentials as a data source location for data sets that are relevant to the workload being submitted.
  - name: Template
    x-parent: Workload assets
    description: Templates are a pre-set configuration used to quickly configure and submit workloads using existing assets.
  - name: Policy
    x-parent: Policies
    description: "Policies allow administrators to impose restrictions and set default values for researcher workloads. \nRestrictions and default values can be placed on CPUs, GPUs, and other resources or entities. \nFor more information, see [Policies](https://run-ai-docs.nvidia.com/self-hosted/2.25/platform-management/policies/#introduction).\n"
  - name: Notification State
    x-parent: Notifications
    description: Use to manage notification state.
  - name: Notification Types
    x-parent: Notifications
    description: Use to get notification types.
  - name: NotificationChannels
    x-parent: Notifications
    description: Notification Channels are the medium through which notifications are sent.
  - name: Slack
    x-parent: Notifications
    description: Configure Slack notifications for your organization.
  - name: Email
    x-parent: Notifications
    description: Configure Email notifications for your organization.
  - name: Subscriptions
    x-parent: Notifications
    description: Use to manage notifications subscriptions.
  - name: AI Applications-API
    x-displayName: AI Applications
    x-parent: AI Applications
  - name: Synchronization
    description: Internal interface for synchronizing assets between the clusters and the control plane.

paths:
  /api/v1/clusters/{clusterUuid}/nodes:
    get:
      summary: Get a list of nodes.
      description: Retrieve a list of nodes from the Kubernetes cluster. Deprecated - use `/api/v1/nodes` instead.
      operationId: get_nodes
      deprecated: true
      tags:
        - Nodes
      parameters:
        - $ref: '#/components/parameters/ClusterUuid'
        - $ref: '#/components/parameters/QueryNodeName'
        - $ref: '#/components/parameters/NodesFilter'
        - $ref: '#/components/parameters/NodesSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nodes'
        '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}/nodes/count:
    get:
      summary: Count nodes
      operationId: count_nodes
      description: Count nodes
      tags:
        - Nodes
      parameters:
        - $ref: '#/components/parameters/ClusterUuid'
        - $ref: '#/components/parameters/NodesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int64
                required:
                  - count
        '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:
    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/minimal:
    get:
      summary: Get clusters minimal data
      operationId: get_clusters_minimal_data
      description: Retrieve essential cluster data required for common operations (e.g., workload submission)
      tags:
        - Clusters
      parameters:
        - $ref: '#/components/parameters/ClustersMinimalFilterBy'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  clusters:
                    type: array
                    items:
                      $ref: '#/components/schemas/ClustersMinimalData'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/clusters/{clusterUuid}/minimal:
    get:
      summary: Get cluster minimal data by id
      operationId: get_cluster_minimal_data_by_id
      description: Retrieve essential data for a specific cluster by ID required for common operations (e.g., workload submission)
      tags:
        - Clusters
      parameters:
        - $ref: '#/components/parameters/ClusterUuid'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClustersMinimalData'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '404':
          $ref: '#/components/responses/404NotFound'
        '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}/nodepools/{nodepoolName}/metrics:
    get:
      summary: Get the node pool metrics data.
      description: Retrieve the node pool metrics data by Universally Unique Identifier (UUID).
      operationId: get_nodepool_metrics
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/ClusterUuid'
        - $ref: '#/components/parameters/NodepoolPath'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
        - $ref: '#/components/parameters/MetricsType'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/node-pools:
    post:
      summary: Create nodepool
      operationId: create_nodepool
      description: Create nodepool
      tags:
        - NodePools
      requestBody:
        description: Nodepool to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodepoolCreateFields'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nodepool'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get nodepools
      operationId: get_nodepools
      description: Get nodepools
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolsFilterBy'
        - $ref: '#/components/parameters/NodepoolsSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                x-schemaName: GetNodepools200Response
                type: object
                properties:
                  nodepools:
                    type: array
                    items:
                      $ref: '#/components/schemas/Nodepool'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/node-pools/count:
    get:
      summary: Count nodepools
      operationId: count_nodepools
      description: Count nodepools
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolsFilterBy'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int64
                required:
                  - count
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/node-pools/minimal:
    get:
      summary: Get nodepools minimal
      operationId: get_nodepools_minimal
      description: Retrieve essential node pool data required for common operations (e.g., workload submission)
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolsMinimalFilterBy'
        - $ref: '#/components/parameters/NodepoolsMinimalSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                x-schemaName: GetNodepoolsMinimal200Response
                type: object
                properties:
                  nodepools:
                    type: array
                    items:
                      $ref: '#/components/schemas/NodepoolMinimal'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/node-pools/{nodepoolId}:
    delete:
      summary: Delete nodepool
      operationId: delete_nodepool
      description: Delete nodepool
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    put:
      summary: Update nodepool
      operationId: update_nodepool
      description: Update nodepool
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolId'
      requestBody:
        description: Nodepool to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodepoolUpdateFields'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nodepool'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    patch:
      summary: Patch nodepool fields
      operationId: patch_nodepool
      description: Update only specific fields of a nodepool
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolId'
      requestBody:
        description: Fields to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodepoolUpdateFields'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nodepool'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    get:
      summary: Get nodepool
      operationId: get_nodepool
      description: Get nodepool
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolId'
      responses:
        '200':
          description: Requested nodepool
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nodepool'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/node-pools/{nodepoolId}/minimal:
    get:
      summary: Get nodepool minimal data by ID
      operationId: get_nodepool_minimal
      description: Retrieve essential data for a specific node pool by ID required for common operations (e.g., workload submission)
      tags:
        - NodePools
      parameters:
        - $ref: '#/components/parameters/NodepoolId'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodepoolMinimal'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/clusters/{clusterId}/node-pools/{nodepoolId}:
    delete:
      summary: Delete a Node Pool by id.
      operationId: legacy_delete_nodepool
      description: Use to delete a node pool by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools/{id} instead.
      deprecated: true
      tags:
        - NodePools
      parameters:
        - name: clusterId
          in: path
          description: Unique identifier of the cluster
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/NodepoolId'
      responses:
        '202':
          description: Node Pool deletion accepted
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '404':
          description: The specified resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorInt32'
        '503':
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorInt32'
    put:
      summary: Update a Node Pool.
      operationId: legacy_update_nodepool
      description: Use to update the details of a node pool by Universally Unique Identifier (UUID). Deprecated, please use PATCH /api/v1/node-pools/{id} instead.
      deprecated: true
      tags:
        - NodePools
      parameters:
        - name: clusterId
          in: path
          description: Unique identifier of the cluster
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/NodepoolId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegacyUpdateNodePoolRequest'
        required: true
      responses:
        '202':
          description: Node Pool update accepted.
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '404':
          description: The specified resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorInt32'
        '503':
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorInt32'
  /api/v1/clusters/{clusterId}/node-pools/{nodepoolId}/labels:
    put:
      summary: Update labels of a Node Pool.
      operationId: legacy_update_nodepool_labels
      description: Use to update the labels of a node pool. Deprecated, please use PATCH /api/v1/node-pools/{id} instead.
      deprecated: true
      tags:
        - NodePools
      parameters:
        - name: clusterId
          in: path
          description: Unique identifier of the cluster
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/NodepoolId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegacyNodePoolLabelsRequest'
        required: true
      responses:
        '202':
          description: Node Pool update accepted.
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '404':
          description: The specified resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorInt32'
        '503':
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorInt32'
  /api/v1/clusters/{clusterId}/node-pools:
    get:
      summary: Get the cluster's Node Pools.
      operationId: legacy_get_nodepools
      description: Retrieve all the node pools with details from the cluster by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools instead.
      deprecated: true
      tags:
        - NodePools
      parameters:
        - name: clusterId
          in: path
          description: Unique identifier of the cluster
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Node pools returned successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LegacyNodePool'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '404':
          description: The specified resource was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyErrorInt32'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
    post:
      summary: Create a Node Pool.
      operationId: legacy_create_nodepool
      description: Use to create a node pool in a cluster by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools instead.
      deprecated: true
      tags:
        - NodePools
      parameters:
        - name: clusterId
          in: path
          description: Unique identifier of the cluster
          required: true
          style: simple
          explode: false
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegacyNodePoolCreateRequest'
      responses:
        '201':
          description: Created
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        '409':
          description: conflict error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyError'
  /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'
  /api/v1/nodes:
    get:
      summary: Get a list of nodes.
      description: Retrieve a list of nodes from all the Kubernetes clusters of the tenant.
      operationId: get_tenant_nodes
      tags:
        - Nodes
      parameters:
        - $ref: '#/components/parameters/NodesFilter'
        - $ref: '#/components/parameters/NodesSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Nodes'
        '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/nodes/count:
    get:
      summary: Count tenant nodes
      operationId: count_tenant_nodes
      description: Count nodes from all the Kubernetes clusters of the tenant.
      tags:
        - Nodes
      parameters:
        - $ref: '#/components/parameters/NodesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    format: int64
                required:
                  - count
        '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/nodes/telemetry:
    get:
      summary: Get node telemetry data.
      description: Retrieve node telemetry data for use in analysis applications.
      operationId: get_node_telemetry
      tags:
        - Nodes
      parameters:
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/FilterByNodepoolName'
        - $ref: '#/components/parameters/TelemetryGroupBy'
        - $ref: '#/components/parameters/TelemetryType'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryResponse'
            text/csv: {}
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/nodes/{nodeId}/metrics:
    get:
      summary: Get the node metrics data.
      description: Retrieve the node metrics data by Universally Unique Identifier (UUID).
      operationId: get_node_metrics
      tags:
        - Nodes
      parameters:
        - $ref: '#/components/parameters/NodeId'
        - $ref: '#/components/parameters/NodeMetricTypes'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/network-topologies:
    get:
      summary: Get network topologies.
      description: Retrieve a list of network topologies with details.
      operationId: get_network_topologies
      tags:
        - Network Topologies
      parameters:
        - $ref: '#/components/parameters/NetworkTopologiesFilterBy'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  networkTopologies:
                    type: array
                    items:
                      $ref: '#/components/schemas/NetworkTopology'
        '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 network topologies
      description: Creates a network topology object based on the provided specification.
      operationId: create_network_topology
      tags:
        - Network Topologies
      requestBody:
        description: The network topology to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkTopologyCreateRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkTopology'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/network-topologies/count:
    get:
      summary: Count the amount of network topologies in a tenant.
      description: Retrieve the count of network topologies in a tenant group by selected attributes
      operationId: get_network_topologies_count
      tags:
        - Network Topologies
      parameters:
        - $ref: '#/components/parameters/NetworkTopologiesFilterBy'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '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/network-topologies/{networkTopologyId}:
    get:
      summary: Get network topology by id.
      description: Retrieve network topology details by Universally Unique Identifier (UUID).
      operationId: get_network_topology_by_id
      tags:
        - Network Topologies
      parameters:
        - $ref: '#/components/parameters/NetworkTopologyId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkTopology'
        '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 network topology by ID.
      description: Delete an existing network topology by its ID.
      operationId: delete_network_topology
      tags:
        - Network Topologies
      parameters:
        - $ref: '#/components/parameters/NetworkTopologyId'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '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/org-unit/priorities:
    get:
      summary: Get priorities
      operationId: get_priorities
      description: |
        Get priorities. Deprecated: use Get Ranks instead.
      deprecated: true
      tags:
        - Org unit
      responses:
        '200':
          description: List of all priorities
          content:
            application/json:
              schema:
                type: object
                properties:
                  priorities:
                    type: array
                    items:
                      $ref: '#/components/schemas/Priority'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/ranks:
    get:
      summary: Get ranks
      operationId: get_ranks
      description: Get ranks.
      tags:
        - Org unit
      responses:
        '200':
          description: List of all ranks
          content:
            application/json:
              schema:
                type: object
                properties:
                  ranks:
                    type: array
                    items:
                      $ref: '#/components/schemas/Rank'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/reports:
    get:
      summary: List reports
      operationId: list_reports
      tags:
        - Reports
      parameters:
        - $ref: '#/components/parameters/ReportsFilterBy'
        - $ref: '#/components/parameters/ReportsSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - reports
                properties:
                  reports:
                    $ref: '#/components/schemas/Reports'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a new report request.
      operationId: create_report
      tags:
        - Reports
      requestBody:
        description: Report to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportRequestFields'
      responses:
        '202':
          description: Accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/reports/count:
    get:
      summary: Count reports
      operationId: count_reports
      tags:
        - Reports
      parameters:
        - $ref: '#/components/parameters/ReportsFilterBy'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/reports/availability:
    get:
      summary: Reports availability
      operationId: are_reports_available
      tags:
        - Reports
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - isAvailable
                properties:
                  isAvailable:
                    type: boolean
                    example: true
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/reports/{reportId}:
    get:
      summary: Get report
      operationId: get_report_by_id
      parameters:
        - $ref: '#/components/parameters/ReportId'
      tags:
        - Reports
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete report
      operationId: delete_report_by_id
      parameters:
        - $ref: '#/components/parameters/ReportId'
      tags:
        - Reports
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/reports/{reportId}/file:
    get:
      summary: Download report
      operationId: download_report_by_id
      parameters:
        - $ref: '#/components/parameters/ReportId'
      tags:
        - Reports
      responses:
        '200':
          description: Executed successfully.
          content:
            text/csv: {}
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/departments:
    post:
      summary: Create department
      operationId: create_department
      description: Create Department
      tags:
        - Departments
      requestBody:
        description: Department to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepartmentCreationRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Department'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get departments
      operationId: get_departments
      description: list departments
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentsFilterBy'
        - $ref: '#/components/parameters/DepartmentsSortBy'
        - $ref: '#/components/parameters/DepartmentsVerbosity'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                required:
                  - departments
                properties:
                  departments:
                    type: array
                    items:
                      $ref: '#/components/schemas/DepartmentForList'
                  next:
                    type: integer
                    example: 1
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/departments/{departmentId}:
    put:
      summary: Update department
      operationId: update_department
      description: Update department by Id
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentId'
      requestBody:
        description: Department to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepartmentUpdateRequest'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Department'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get department
      operationId: get_department
      description: Get department by Id
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentId'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Department'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete department
      operationId: delete_department
      description: Delete department by Id
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentId'
      responses:
        '204':
          description: Deleted
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/departments/{departmentId}/resources:
    put:
      summary: Update department resources
      operationId: update_department_resources
      description: Update department resources by Id
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentId'
      requestBody:
        description: Department resources to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcesUpdateRequest'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Resources'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    patch:
      summary: Patch department resources
      operationId: patch_department_resources
      description: Partial updates to specific items in the list. Should be used for update one or more attributes of an item without modifying the entire resource.
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentId'
      requestBody:
        description: Department resources to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcesUpdateRequest'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Resources'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/org-unit/departments/{departmentId}/metrics:
    get:
      summary: Get department metrics data.
      operationId: get_department_metrics
      description: Retrieves department data metrics from the metrics database. Use in reporting and analysis tools.
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentId'
        - $ref: '#/components/parameters/OrgUnitMetricTypes'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
        - $ref: '#/components/parameters/FilterByNodepoolName'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/org-unit/departments/telemetry:
    get:
      summary: Get departments telemetry
      operationId: get_departments_telemetry
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/FilterByNodepoolName'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/TelemetryGroupByDepartment'
        - $ref: '#/components/parameters/TelemetryType1'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/departments/count:
    get:
      summary: Count departments
      operationId: count_departments
      description: count departments
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentsFilterBy'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/projects:
    post:
      summary: Create project
      operationId: create_project
      description: Create a project
      tags:
        - Projects
      requestBody:
        description: Project to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreationRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get projects
      operationId: get_projects
      description: List projects
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectsFilterBy'
        - $ref: '#/components/parameters/ProjectsSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                required:
                  - projects
                properties:
                  projects:
                    type: array
                    items:
                      $ref: '#/components/schemas/Project'
                  next:
                    type: integer
                    example: 1
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/projects/{projectId}:
    put:
      summary: Update project
      operationId: update_project
      description: Update project by Id
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        description: Project to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdateRequest'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get project
      operationId: get_project
      description: Get a project by id
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete project
      operationId: delete_project
      description: Delete a project
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      responses:
        '202':
          description: Accepted
        '204':
          description: Deleted
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/org-unit/projects/{projectId}/resources:
    put:
      summary: Update project resources
      operationId: update_project_resources
      description: Update projects resources
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        description: Project resources to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcesUpdateRequest'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Resources'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      summary: Patch project resources
      operationId: patch_project_resources
      description: Partial updates to specific items in the list. Should be used for update one or more attributes of an item without modifying the entire resource.
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectId'
      requestBody:
        description: Project resources to patch.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourcesUpdateRequest'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Resources'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/projects/{projectId}/metrics:
    get:
      summary: Get project metrics data.
      operationId: get_project_metrics
      description: Retrieves project data metrics from the metrics database. Use in reporting and analysis tools.
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - $ref: '#/components/parameters/OrgUnitMetricTypes'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
        - $ref: '#/components/parameters/FilterByNodepoolName'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/org-unit/projects/telemetry:
    get:
      summary: Get projects telemetry
      operationId: get_projects_telemetry
      description: Get projects telemetry data by the given query parameters
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/FilterByNodepoolId'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/TelemetryGroupByProject'
        - $ref: '#/components/parameters/TelemetryType1'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/projects/count:
    get:
      summary: Count projects
      operationId: count_projects
      description: count projects
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectsFilterBy'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/departments/node-pool-resources:
    get:
      summary: Get departments node pool resources
      operationId: get_department_node_pool_resources
      description: List departments node pool resources
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentNodePoolResourcesFilterBy'
        - $ref: '#/components/parameters/DepartmentNodePoolResourcesSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                required:
                  - nodePoolResources
                properties:
                  nodePoolResources:
                    type: array
                    items:
                      $ref: '#/components/schemas/DepartmentNodePoolResources'
                  next:
                    type: integer
                    example: 1
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/departments/node-pool-resources/count:
    get:
      summary: Count departments node pool resources
      operationId: count_department_node_pool_resources
      description: Count departments node pool resources
      tags:
        - Departments
      parameters:
        - $ref: '#/components/parameters/DepartmentNodePoolResourcesFilterBy'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/departments/node-pool-resources/batch-patch:
    post:
      summary: Patch multiple departments node pool resources in batch.
      operationId: batch_patch_department_node_pool_resources
      description: Partially updates node pool resource quotas for multiple departments in a single request.
      tags:
        - Departments
      requestBody:
        description: Batch of department resources patch requests.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchPatchNodePoolResourcesRequest'
      responses:
        '200':
          description: Batch patch processed. Returns succeeded and failed items with totals and a batch id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchPatchDepartmentResourcesResponse'
        '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/org-unit/projects/node-pool-resources:
    get:
      summary: Get projects node pool resources
      operationId: get_project_node_pool_resources
      description: List projects node pool resources
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectNodePoolResourcesFilterBy'
        - $ref: '#/components/parameters/ProjectNodePoolResourcesSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                required:
                  - nodePoolResources
                properties:
                  nodePoolResources:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectNodePoolResources'
                  next:
                    type: integer
                    example: 1
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/projects/node-pool-resources/count:
    get:
      summary: Count projects node pool resources
      operationId: count_project_node_pool_resources
      description: Count projects node pool resources
      tags:
        - Projects
      parameters:
        - $ref: '#/components/parameters/ProjectNodePoolResourcesFilterBy'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/org-unit/projects/node-pool-resources/batch-patch:
    post:
      summary: Patch multiple projects node pool resources in batch.
      operationId: batch_patch_project_node_pool_resources
      description: Partially updates node pool resource quotas for multiple projects in a single request.
      tags:
        - Projects
      requestBody:
        description: Batch of project resources patch requests.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchPatchNodePoolResourcesRequest'
      responses:
        '200':
          description: Batch patch processed. Returns succeeded and failed items with totals and a batch id.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchPatchProjectResourcesResponse'
        '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/asset/compute:
    get:
      summary: List compute assets.
      description: Use to retrieve a list of compute assets.
      operationId: list_compute_assets
      tags:
        - Compute
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/ComplyToReplicaType'
        - $ref: '#/components/parameters/includeDescendants'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create compute asset.
      description: Use to create a compute asset.
      operationId: create_compute_asset
      tags:
        - Compute
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComputeCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/compute/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Retrieve a compute asset.
      description: Use to retrieve the details of a compute asset by id.
      operationId: get_compute_asset_by_id
      tags:
        - Compute
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a compute asset.
      description: Use to update the details of a compute asset by id.
      operationId: update_compute_asset_by_id
      tags:
        - Compute
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComputeUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a compute asset.
      description: Use to delete a compute asset, by id.
      operationId: delete_compute_asset_by_id
      tags:
        - Compute
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials:
    get:
      summary: List credentials.
      description: Use to retrieve a list of all existing credentials.
      operationId: list_credentials_assets
      tags:
        - Credentials
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/includeDescendants'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialsListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/access-key:
    get:
      tags:
        - Credentials
      summary: List access keys.
      description: Use to retrieve a list of S3-compatible access key credentials.
      operationId: list_access_keys
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKeyListResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - Credentials
      summary: Create an access key.
      description: Use to create an S3-compatible access key credential.
      operationId: create_access_key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessKeyCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKey'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/access-key/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      tags:
        - Credentials
      summary: Get an access key.
      description: Use to retrieve the details of an S3-compatible access key credential by id.
      operationId: get_access_key_by_id
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKey'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - Credentials
      summary: Update an access key.
      description: Use to update the details of an S3-compatible access key credential by id.
      operationId: update_access_key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessKeyUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKey'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Credentials
      summary: Delete an access key.
      description: Use to delete an S3-compatible access key credential by id.
      operationId: delete_access_key
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '412':
          $ref: '#/components/responses/412PreconditionFailed'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/password:
    get:
      tags:
        - Credentials
      summary: List password credentials.
      description: Use to retrieve a list of password credentials.
      operationId: list_passwords
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasswordListResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - Credentials
      summary: Create a userid / password credential.
      description: Use to create a userid / password credential.
      operationId: create_password
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Password'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/password/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      tags:
        - Credentials
      summary: Get a userid / password credential.
      description: Use to retrieve the details of a userid / password credential asset by id.
      operationId: get_password_by_id
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Password'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - Credentials
      summary: Update a password credential.
      description: Use to Update the details of a password credential by id.
      operationId: update_password
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Password'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Credentials
      summary: Delete a password asset.
      description: Udse to delete a password credential by id.
      operationId: delete_password
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '412':
          $ref: '#/components/responses/412PreconditionFailed'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/docker-registry:
    get:
      tags:
        - Credentials
      summary: List docker registry credentials.
      description: Use to retrieve a list of docker registry credentials.
      operationId: list_docker_registries
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockerRegistryListResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - Credentials
      summary: Create a docker registry credential.
      description: Use to create a docker registry credential containing userid, password and url.
      operationId: create_docker_registry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DockerRegistryCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockerRegistry'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/docker-registry/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      tags:
        - Credentials
      summary: Get a docker registry credential.
      description: Use to retrieve the details of a docker registry credential by id.
      operationId: get_docker_registry_by_id
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockerRegistry'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - Credentials
      summary: Update a docker registry credential.
      description: Use to updates the details of a docker registry credentials by id.
      operationId: update_docker_registry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DockerRegistryUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DockerRegistry'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Credentials
      summary: Delete a docker registry credential.
      description: Use to deletes a docker registry credential by id.
      operationId: delete_docker_registry
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '412':
          $ref: '#/components/responses/412PreconditionFailed'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/generic-secret:
    get:
      tags:
        - Credentials
      summary: List generic-secrets.
      description: Retrieve a list of generic-secret assets.
      operationId: list_generic_secret
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericSecretListResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - Credentials
      summary: Create a generic-secret.
      description: Use to create a generic-secret asset.
      operationId: create_generic_secret
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericSecretCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericSecret'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/generic-secret/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      tags:
        - Credentials
      summary: Get a generic-secret.
      description: Returns the details of a generic-secret asset, by id.
      operationId: get_generic_secret_by_id
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericSecret'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - Credentials
      summary: Update a generic-secret.
      description: Updates the details of a generic-secret asset, by id.
      operationId: update_generic_secret
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericSecretUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericSecret'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Credentials
      summary: Delete a generic-secret.
      description: Use to delete a generic-secret asset, by id.
      operationId: delete_generic_secret
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '412':
          $ref: '#/components/responses/412PreconditionFailed'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/ngc-api-key:
    get:
      tags:
        - Credentials
      summary: List ngc-api-keys.
      description: Retrieve a list of ngcApiKey assets.
      operationId: list_ngc_api_key
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NgcApiKeyListResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - Credentials
      summary: Create a ngc-api-key.
      description: Use to create a ngc-api-key asset.
      operationId: create_ngc_api_key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NgcApiKeyCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NgcApiKey'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/credentials/ngc-api-key/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      tags:
        - Credentials
      summary: Get a ngc-api-key.
      description: Returns the details of a ngc-api-key asset, by id.
      operationId: get_ngc_api_key_by_id
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/IncludeStatus'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NgcApiKey'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - Credentials
      summary: Update a ngc-api-key.
      description: Updates the details of a ngc-api-key asset, by id.
      operationId: update_ngc_api_key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NgcApiKeyUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NgcApiKey'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Credentials
      summary: Delete a ngc-api-key.
      description: Use to delete a ngc-api-key asset, by id.
      operationId: delete_ngc_api_key
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '412':
          $ref: '#/components/responses/412PreconditionFailed'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/registries:
    get:
      tags:
        - Registry
      summary: Get registries.
      description: Retrieve a list of registries assets.
      operationId: list_registries
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistryListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - Registry
      summary: Create a registry asset.
      description: Use to create a registry asset containing a registry base url and credentials.
      operationId: create_registry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistryCreationRequest'
      responses:
        '201':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Registry'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/registries/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      tags:
        - Registry
      summary: Get a registry.
      description: Retrieve a registry asset by id.
      operationId: get_registry_by_id
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Registry'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Registry
      summary: Delete a registry asset.
      description: Use to delete a registry asset containing registry base url and credentials by id.
      operationId: delete_registry
      responses:
        '204':
          description: Registry has been deleted.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - Registry
      summary: Update a registry asset.
      description: Use to update a registry asset containing registry base url and credentials by id.
      operationId: update_registry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistryUpdateRequest'
      responses:
        '200':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Registry'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/registries/{AssetId}/repositories:
    get:
      tags:
        - Registry
      summary: Get the repositories in the registry.
      parameters:
        - $ref: '#/components/parameters/AssetId'
        - $ref: '#/components/parameters/SearchName'
      description: Retrieve a list of repositories from a registry asset.
      operationId: get_repositories
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Repositories'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/registries/{AssetId}/repositories/tags:
    get:
      tags:
        - Registry
      summary: Get the repositories tags in the registry.
      parameters:
        - $ref: '#/components/parameters/AssetId'
        - name: repository
          in: query
          required: true
          description: The repository name that its tags are requested.
          schema:
            type: string
          allowReserved: true
        - $ref: '#/components/parameters/SearchName'
      description: Retrieve a list of repository tags from a repository asset.
      operationId: get_repository_tags
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepositoryTags'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/environment:
    get:
      summary: List environment assets.
      description: Use to retrieve a list of environment assets.
      operationId: list_environment_assets
      tags:
        - Environment
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/DistributedFrameworkQuery'
        - $ref: '#/components/parameters/IsDistributedQuery'
        - $ref: '#/components/parameters/IsTrainingQuery'
        - $ref: '#/components/parameters/IsWorkspaceQuery'
        - $ref: '#/components/parameters/IsInferenceQuery'
        - $ref: '#/components/parameters/ComplyToReplicaType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/includeDescendants'
        - $ref: '#/components/parameters/IsDistributedInferenceQuery'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create an environment asset.
      description: Use to create an environment asset.
      operationId: create_environment_asset
      tags:
        - Environment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/environment/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get an environment asset.
      description: Use to retrieve the details of environment asset by id.
      operationId: get_environment_asset_by_id
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/ComplyToReplicaType'
        - $ref: '#/components/parameters/IncludeStatus'
      tags:
        - Environment
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update an environment asset.
      description: Use to update the details of environment asset by id.
      operationId: update_environment_asset_by_id
      tags:
        - Environment
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvironmentAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete an environment asset.
      description: Use to delete an environment asset by id.
      operationId: delete_environment_asset_by_id
      tags:
        - Environment
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource:
    get:
      summary: List datasource assets.
      description: Returns a combined list of data-sources.
      operationId: list_datasource_assets
      tags:
        - Datasources
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
        - $ref: '#/components/parameters/includeDescendants'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasourceListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/git:
    get:
      summary: List Git assets.
      description: Retrieve a list of Git datasource assets.
      operationId: list_git_assets
      tags:
        - Git
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a Git asset.
      description: Use to create a a Git datasource asset.
      operationId: create_git_asset
      tags:
        - Git
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/git/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get a Git asset.
      description: Use to retrieve the details of a Git datasource asset by id.
      operationId: get_git_asset_by_id
      tags:
        - Git
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a Git asset.
      description: Use to update the details of Git datasource asset by id.
      operationId: update_git_asset_by_id
      tags:
        - Git
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a Git asset.
      description: Use to delete a Git datasource asset by id.
      operationId: delete_git_asset_by_id
      tags:
        - Git
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/host-path:
    get:
      tags:
        - HostPath
      summary: List host path assets.
      description: Retrieve a list of hostPath datasource assets.
      operationId: list_host_path_assets
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostPathListResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - HostPath
      summary: Create a host path asset.
      description: Use to create a hostPath datasource asset.
      operationId: create_host_path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostPathCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostPathAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/host-path/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      tags:
        - HostPath
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      summary: Get a hostPath asset.
      description: Use to retrieve the details of a hostPath datasource by id.
      operationId: get_host_path_by_id
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostPathAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - HostPath
      summary: Update a hostPath asset.
      description: Use to update the details of a hostPath datasource by id.
      operationId: update_host_path_by_id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostPathUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostPathAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - HostPath
      summary: Delete a hostPath asset.
      description: Use to delete a hostPath datasource asset by id.
      operationId: delete_host_path_by_id
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '412':
          $ref: '#/components/responses/412PreconditionFailed'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/nfs:
    get:
      summary: List NFS assets.
      description: Retrieve a list of NFS datasource assets.
      operationId: list_nfs_assets
      tags:
        - NFS
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NFSListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create an NFS asset.
      description: Use to create an NFS datasource asset.
      operationId: create_nfs_asset
      tags:
        - NFS
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NFSCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/S3Asset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/nfs/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get an NFS asset.
      description: Use to retrieve the details of NFS datasource asset by id.
      operationId: get_nfs_asset_by_id
      tags:
        - NFS
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NFSAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update an NFS asset.
      description: Use to update the details of NFS datasource asset by id.
      operationId: update_nfs_asset_by_id
      tags:
        - NFS
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NFSUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NFSAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete an NFS asset.
      description: Use to delete an NFS datasource asset by id.
      operationId: delete_nfs_asset_by_id
      tags:
        - NFS
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/pvc:
    get:
      summary: List PVC assets.
      description: Retrieves a list of PVC datasource assets.
      operationId: list_pvc_assets
      tags:
        - PVC
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PVCListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a PVC asset.
      description: Use to create a PVC datasource asset.
      operationId: create_pvc_asset
      tags:
        - PVC
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PVCCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PVCAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/pvc/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get a PVC asset.
      description: Retrieve the details of a PVC datasource asset by id.
      operationId: get_pvc_asset_by_id
      tags:
        - PVC
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PVCAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a PVC asset.
      description: Use to update the details of a PVC datasource asset by id.
      operationId: update_pvc_asset_by_id
      tags:
        - PVC
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PVCUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PVCAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a PVC asset.
      description: Use to delete a PVC datasource asset by id.
      operationId: delete_pvc_asset_by_id
      tags:
        - PVC
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/pvc/{AssetId}/history:
    get:
      summary: Get the PVC history.
      description: Retrieve PVC history details, including events, using a PVC id.
      operationId: get_pvc_history
      tags:
        - PVC
      parameters:
        - $ref: '#/components/parameters/AssetId'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PVCHistoryResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/s3:
    get:
      summary: List S3 assets.
      description: Retrieve a list of S3 compatible datasource assets.
      operationId: list_s3_assets
      tags:
        - S3
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/S3ListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create an S3 asset.
      description: Use to create an S3 compatible datasource asset.
      operationId: create_s3_asset
      tags:
        - S3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/S3CreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/S3Asset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/s3/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get an S3 asset.
      description: Retrieve the details of S3 compatible datasource asset by id.
      operationId: get_s3_asset_by_id
      tags:
        - S3
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/S3Asset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update an S3 asset.
      description: Use to update the details of an S3 compatible datasource asset by id.
      operationId: update_s3_asset_by_id
      tags:
        - S3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/S3UpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/S3Asset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete an S3 asset.
      description: Use to delete an S3 compatible datasource asset by id.
      operationId: delete_s3_asset_by_id
      parameters:
        - $ref: '#/components/parameters/AssetId'
      tags:
        - S3
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/workload-template:
    get:
      summary: List templates.
      description: Retrieve a list of templates.
      operationId: list_templates
      deprecated: true
      tags:
        - Template
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/DistributedFrameworkQuery'
        - $ref: '#/components/parameters/IsDistributedQuery'
        - $ref: '#/components/parameters/IsTrainingQuery'
        - $ref: '#/components/parameters/IsWorkspaceQuery'
        - $ref: '#/components/parameters/IsDistributedInferenceQuery'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadTemplateListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a template.
      description: Use to create a template.
      operationId: create_template
      deprecated: true
      tags:
        - Template
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadTemplateCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/workload-template/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get a template.
      description: Retrieve the details of a template by id.
      operationId: get_template_by_id
      deprecated: true
      tags:
        - Template
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadTemplate'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a template.
      description: Use to update the details of a template by id.
      operationId: update_template
      deprecated: true
      tags:
        - Template
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadTemplateUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a template.
      description: Use to delete a template by id.
      operationId: delete_template_by_id
      deprecated: true
      tags:
        - Template
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /v1/k8s/clusters/{clusterUuid}/workspaces:
    parameters:
      - $ref: '#/components/parameters/ClusterUuid'
  /v1/k8s/clusters/{clusterUuid}/trainings:
    parameters:
      - $ref: '#/components/parameters/ClusterUuid'
  /api/v1/asset/datasource/config-map:
    get:
      summary: List ConfigMap datasource assets.
      description: Retrieve a list of ConfigMap datasource assets.
      operationId: list_config_map_assets
      tags:
        - ConfigMap
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigMapListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a ConfigMap datasource asset.
      description: Use to create a ConfigMap datasource asset.
      operationId: create_config_map_asset
      tags:
        - ConfigMap
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigMapCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigMapAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/config-map/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get a ConfigMap asset.
      description: Retrieve the details of ConfigMap datasource asset by id.
      operationId: get_config_map_asset_by_id
      tags:
        - ConfigMap
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigMapAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a ConfigMap asset.
      description: Use to update the details of a ConfigMap datasource asset by id.
      operationId: update_config_map_asset_by_id
      tags:
        - ConfigMap
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigMapUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfigMapAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a ConfigMap asset.
      description: Use to delete a ConfigMap datasource asset by id.
      operationId: delete_config_map_asset_by_id
      tags:
        - ConfigMap
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/secrets:
    get:
      summary: List Secret datasource assets.
      description: Retrieve a list of Secret datasource assets.
      operationId: list_secret_assets
      tags:
        - Secret
      parameters:
        - $ref: '#/components/parameters/AssetNameFilter'
        - $ref: '#/components/parameters/AssetScopeFilter'
        - $ref: '#/components/parameters/AssetProjectFilter'
        - $ref: '#/components/parameters/AssetDepartmentFilter'
        - $ref: '#/components/parameters/AssetClusterFilter'
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/AssetIdsFilter'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretAssetListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a Secret datasource asset.
      description: Use to create a Secret datasource asset.
      operationId: create_secret_asset
      tags:
        - Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretAssetCreationRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretAsset'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/asset/datasource/secrets/{AssetId}:
    parameters:
      - $ref: '#/components/parameters/AssetId'
    get:
      summary: Get a Secret asset.
      description: Retrieve the details of Secret datasource asset by id.
      operationId: get_secret_asset_by_id
      tags:
        - Secret
      parameters:
        - $ref: '#/components/parameters/IncludeUsageInfo'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/IncludeStatus'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a Secret asset.
      description: Use to update the details of a Secret datasource asset by id.
      operationId: update_Secret_asset_by_id
      tags:
        - Secret
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SecretAssetUpdateRequest'
      responses:
        '202':
          description: Request accepted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecretAsset'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        default:
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a Secret asset.
      description: Use to delete a Secret datasource asset by id.
      operationId: delete_secret_asset_by_id
      tags:
        - Secret
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/policy:
    get:
      summary: List policies
      description: Retrieve a list of all the applied policies.
      operationId: list_policies
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/WorkloadType'
        - name: scope
          in: query
          required: false
          description: filter by this scope.
          schema:
            type: string
            enum:
              - tenant
              - cluster
              - department
              - project
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/IncludeFallbackPolicies'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/policy/trainings:
    patch:
      summary: Update a training policy.
      description: Use to apply changes to a training policy for a given organizational unit.
      operationId: update_training_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrainingPolicyChangeRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingPolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Overwrite a training policy.
      description: Use to apply a training policy for a given organizational unit.
      operationId: overwrite_training_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrainingPolicyOverwriteRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingPolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get a training policy.
      description: Retrieve the details of a training policy for a given organizational unit.
      operationId: get_training_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingPolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a training policy.
      description: Use to delete a training policy for a given organizational unit.
      operationId: delete_training_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      responses:
        '204':
          description: The policy was deleted successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/policy/workspaces:
    patch:
      summary: Update a workspace policy.
      description: Use to apply changes to a workspace policy for a given organizational unit.
      operationId: update_workspace_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspacePolicyChangeRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspacePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Overwrite a workspace policy.
      description: Ue to apply a workspace policy for a given organizational unit.
      operationId: overwrite_workspace_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspacePolicyOverwriteRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspacePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get a workspace policy.
      description: Retrieve the details of a workspace policy for a given organizational unit.
      operationId: get_workspace_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspacePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a workspace policy.
      description: Use to delete a workspace policy for a given organizational unit.
      operationId: delete_workspace_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      responses:
        '204':
          description: The policy was deleted successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/policy/distributed:
    patch:
      summary: Update a distributed policy.
      description: Use to apply changes to a distributed policy for a given organizational unit.
      operationId: update_distributed_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedPolicyChangeRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedPolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Overwrite a distributed policy.
      description: Use to apply a distributed policy for a given organizational unit.
      operationId: overwrite_distributed_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedPolicyOverwriteRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedPolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get a distributed policy.
      description: Retrieve the details of a distributed policy for a given organizational unit.
      operationId: get_distributed_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedPolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a distributed policy.
      description: Use to delete a distributed policy for a given organizational unit.
      operationId: delete_distributed_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      responses:
        '204':
          description: The policy was deleted successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/policy/inferences:
    patch:
      summary: Update an inference policy.
      description: Use to apply changes to an inference policy for a given organizational unit.
      operationId: update_inference_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InferencePolicyChangeRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferencePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Overwrite an inference policy.
      description: Use to apply an inference policy for a given organizational unit.
      operationId: overwrite_inference_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InferencePolicyOverwriteRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferencePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get an inference policy.
      description: Retrieve the details of an inference policy for a given organizational unit.
      operationId: get_inference_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferencePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete an inference policy.
      description: Use to delete an inference policy for a given organizational unit.
      operationId: delete_inference_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      responses:
        '204':
          description: The policy was deleted successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/policy/distributed-inferences:
    patch:
      summary: Update a distributed inference policy.
      description: Use to apply changes to a distributed inference policy for a given organizational unit.
      operationId: update_distributed_inference_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedInferencePolicyChangeRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedInferencePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Overwrite a distributed inference policy.
      description: Use to apply a distributed inference policy for a given organizational unit.
      operationId: overwrite_distributed_inference_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedInferencePolicyOverwriteRequestV2'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedInferencePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get a distributed inference policy.
      description: Retrieve the details of a distributed inference policy for a given organizational unit.
      operationId: get_distributed_inference_policy_v2
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedInferencePolicyV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a distributed inference policy.
      description: Use to delete a distributed inference policy for a given organizational unit.
      operationId: delete_distributed_inference_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/ApproveClusterDeletion'
      responses:
        '204':
          description: The policy was deleted successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/policy/nim-services:
    patch:
      summary: Update NVIDIA NIM service policy.
      description: Use to apply changes to NVIDIA NIM service policy for a given organizational unit.
      operationId: update_nim_service_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NimServicePolicyChangeRequest'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServicePolicy'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Overwrite NVIDIA NIM service policy.
      description: Use to apply NVIDIA NIM service policy for a given organizational unit.
      operationId: overwrite_nim_service_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/ValidateOnly'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NimServicePolicyOverwriteRequest'
      responses:
        '200':
          description: Policy applied.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServicePolicy'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get NVIDIA NIM service policy.
      description: Retrieve the details of NVIDIA NIM service policy for a given organizational unit.
      operationId: get_nim_service_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServicePolicy'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete NVIDIA NIM service policy.
      description: Use to delete NVIDIA NIM service policy for a given organizational unit.
      operationId: delete_nim_service_policy
      tags:
        - Policy
      parameters:
        - $ref: '#/components/parameters/PolicyScope'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/FilterByProject'
        - $ref: '#/components/parameters/FilterByCluster'
      responses:
        '204':
          description: The policy was deleted successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /v1/k8s/clusters/{uuid}/storage-classes:
    parameters:
      - $ref: '#/components/parameters/uuid'
    get:
      summary: Get all storageClasses from a cluster.
      description: this API is used by cluster versions < 2.20
      deprecated: true
      operationId: V1GetStorageClasses
      tags:
        - Storage Classes
      parameters:
        - name: includeNone
          in: query
          description: Include runai-none storage class to be able to create PVCs without a storage class
          required: false
          schema:
            type: boolean
      responses:
        '200':
          $ref: '#/components/responses/V1StorageClassNames'
        '401':
          $ref: '#/components/responses/V1Unauthorized'
        '404':
          $ref: '#/components/responses/V1NotFound'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1Error'
  /v1/k8s/clusters/{uuid}/storage-classes/{storage_class_name}:
    parameters:
      - $ref: '#/components/parameters/uuid'
      - $ref: '#/components/parameters/V1Storage_class_name'
  /v1/k8s/clusters/{uuid}/storage-classes/sync:
    parameters:
      - $ref: '#/components/parameters/uuid'
  /api/v1/storage-classes:
    get:
      summary: get a Storage Class/Classes for a given cluster
      operationId: getStorageClasses
      tags:
        - Storage Classes
      parameters:
        - $ref: '#/components/parameters/ClusterIdRequired'
        - $ref: '#/components/parameters/nameFilter'
        - name: includeNone
          in: query
          description: Include runai-none storage class, which is used for static provisioning of PVC. In static provisioning storage is omitted.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageClasses'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/storage-classes:
    get:
      summary: get a Storage Class/Classes for a given cluster
      operationId: getStorageClassesV2
      tags:
        - Storage Classes
      parameters:
        - $ref: '#/components/parameters/ClusterIdRequired'
        - $ref: '#/components/parameters/nameFilter'
        - name: includeNone
          in: query
          description: Include runai-none storage class, which is used for static provisioning of PVC. In static provisioning storage is omitted.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageClassesV2'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/storage-class-configuration:
    get:
      summary: List storage class configurations
      description: Retrieves a list of storage class configurations defined in the system.
      operationId: list_storage_class_configuration
      tags:
        - Storage Class Configuration
      x-csp: true
      parameters:
        - $ref: '#/components/parameters/StorageClassConfigurationFilterBy'
        - $ref: '#/components/parameters/StorageClassConfigurationSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageClassConfigurationListResponse'
        '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 storage class configuration
      description: |
        Creates a new storage class configuration in the NVIDIA Run:ai platform.
        This endpoint enables administrators to define storage class behavior and customize their usage settings.
      operationId: create_storage_class_configuration
      tags:
        - Storage Class Configuration
      x-csp: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StorageClassConfigurationCreationRequest'
      responses:
        '201':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageClassConfiguration'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/storage-class-configuration/{id}:
    get:
      summary: Get storage class configuration by id
      description: |
        Retrieves a specific storage class configuration by its unique identifier. Use this endpoint to view detailed information about the configuration, including its permissions and customization options.
      operationId: get_storage_class_configuration_by_id
      x-csp: true
      tags:
        - Storage Class Configuration
      parameters:
        - $ref: '#/components/parameters/StorageClassConfigurationId'
        - name: tenantId
          in: query
          required: false
          schema:
            type: integer
      responses:
        '200':
          description: Storage class configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageClassConfiguration'
        '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'
    patch:
      summary: Patch storage class configuration by id
      description: Partially updates an existing storage class configuration by its unique identifier. Use this endpoint to modify specific fields, such as permissions, customization values, or attributes, without replacing the entire configuration.
      operationId: patch_storage_class_configuration_by_id
      x-csp: true
      tags:
        - Storage Class Configuration
      parameters:
        - $ref: '#/components/parameters/StorageClassConfigurationId'
        - name: tenantId
          in: query
          required: false
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StorageClassConfigurationPatchRequest'
      responses:
        '200':
          description: Storage class configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageClassConfiguration'
        '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'
    put:
      summary: Update storage class configuration by id
      description: Updates an existing storage class configuration by its unique identifier. Use this endpoint to fully replace an existing configuration, including permissions and customization settings.
      operationId: update_storage_class_configuration_by_id
      x-csp: true
      tags:
        - Storage Class Configuration
      parameters:
        - $ref: '#/components/parameters/StorageClassConfigurationId'
        - name: tenantId
          in: query
          required: false
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StorageClassConfigurationUpdateRequest'
      responses:
        '200':
          description: Storage class configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageClassConfiguration'
        '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 storage class configuration by id
      description: Deletes a specific storage class configuration by its unique identifier. Use this endpoint to permanently remove configurations that are no longer needed.
      operationId: delete_storage_class_configuration_by_id
      x-csp: true
      tags:
        - Storage Class Configuration
      parameters:
        - $ref: '#/components/parameters/StorageClassConfigurationId'
        - name: tenantId
          in: query
          required: false
          schema:
            type: integer
      responses:
        '204':
          description: Storage class configuration deleted
        '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/authorization/roles:
    get:
      summary: Get a list of roles.
      description: Use to retrieve a list of roles. This endpoint is deprecated and will be removed in a future release. Use GET /api/v2/authorization/roles instead.
      operationId: get_roles_v1
      deprecated: true
      tags:
        - Roles
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RolesV1'
        '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/authorization/roles/{roleIdPath}:
    get:
      summary: Get a role by id.
      description: Retrieve the details of a role by id. This endpoint is deprecated and will be removed in a future release. Use GET /api/v2/authorization/roles/{roleIdPath} instead.
      operationId: get_role_v1
      deprecated: true
      tags:
        - Roles
      parameters:
        - $ref: '#/components/parameters/RoleIdPath'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleV1'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/v2/authorization/roles:
    post:
      summary: Create a role.
      description: Creates a custom role with the specified permission sets.
      operationId: create_role
      tags:
        - Roles
      requestBody:
        description: The role to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleCreationFieldsInternal'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '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'
    get:
      summary: Get a list of roles.
      description: Retrieves a list of all available roles, including both NVIDIA Run:ai predefined roles and custom roles. Use this endpoint to review role configurations, permission sets and permissions.
      operationId: get_roles
      tags:
        - Roles
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/RolesSort'
        - $ref: '#/components/parameters/RolesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - roles
                properties:
                  roles:
                    $ref: '#/components/schemas/Roles'
                  next:
                    type: integer
                    example: 1
        '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/v2/authorization/roles/{roleIdPath}:
    get:
      summary: Get a role by id.
      description: Retrieves details for a specific role, including its name, description, scope, and associated permission sets.
      operationId: get_role
      tags:
        - Roles
      parameters:
        - $ref: '#/components/parameters/RoleIdPath'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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 role by id.
      description: Deletes a custom role. Use this endpoint to permanently remove roles that are no longer needed. NVIDIA Run:ai predefined roles cannot be deleted.
      operationId: delete_role
      tags:
        - Roles
      parameters:
        - $ref: '#/components/parameters/RoleIdPath'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    put:
      summary: Update a role by id.
      description: Updates a custom role, including its name, description, or associated permission sets. NVIDIA Run:ai predefined roles cannot be updated.
      operationId: update_role
      tags:
        - Roles
      parameters:
        - $ref: '#/components/parameters/RoleIdPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleCreationFieldsInternal'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/v2/authorization/roles/{roleIdPath}/enable:
    post:
      summary: Enable a role by id.
      description: Enables a specific role. Disabled roles cannot be assigned to users and do not grant any permissions.
      operationId: role_enable
      tags:
        - Roles
      parameters:
        - $ref: '#/components/parameters/RoleIdPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleEnabledDisabledFields'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/v2/authorization/roles/{roleIdPath}/disable:
    post:
      summary: Disable a role by id.
      description: Disables a specific role. Disabled roles cannot be assigned to users and do not grant any permissions.
      operationId: role_disable
      tags:
        - Roles
      parameters:
        - $ref: '#/components/parameters/RoleIdPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleEnabledDisabledFields'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/authorization/permission-sets:
    get:
      summary: Get permission sets.
      description: Retrieve a list of all available permission sets. Each permission set defines a collection of permissions grouped by resource type and associated actions (such as create, read, update, or delete).
      operationId: get_permission_sets
      tags:
        - Permissions
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - permissionSets
                properties:
                  permissionSets:
                    $ref: '#/components/schemas/PermissionSets'
        '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/authorization/permission-sets/{permissionSetId}:
    get:
      summary: Get permission set by id.
      description: Returns information about a single permission set, including its name, description, and the list of permissions it contains.
      operationId: get_permission_set
      tags:
        - Permissions
      parameters:
        - $ref: '#/components/parameters/PermissionSetId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermissionSet'
        '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/authorization/access-rules:
    post:
      summary: Create an access rule.
      description: Use to bind a predefined role to a subject (user, group or application) in a scope.
      operationId: create_access_rule
      tags:
        - Access rules
      requestBody:
        description: The access rule to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessRuleCreationFields'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRule'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    get:
      summary: List the access rules.
      description: Retrieve a list of access rules.
      operationId: get_access_rules
      tags:
        - Access rules
      parameters:
        - $ref: '#/components/parameters/SubjectTypeOptional'
        - $ref: '#/components/parameters/SubjectIdOptional'
        - $ref: '#/components/parameters/SubjectIds'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/LastUpdated'
        - $ref: '#/components/parameters/IncludeDeleted'
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/ScopeTypeOptionalQueryDeprecated'
        - $ref: '#/components/parameters/ScopeIdOptional'
        - $ref: '#/components/parameters/RoleId'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/AccessRulesSort'
        - $ref: '#/components/parameters/AccessRulesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - totalRecords
                  - displayRecords
                  - accessRules
                properties:
                  totalRecords:
                    type: integer
                    example: 1
                  displayRecords:
                    type: integer
                    example: 1
                  accessRules:
                    $ref: '#/components/schemas/AccessRules'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/authorization/access-rules/{accessRuleId}:
    get:
      summary: Get an access rule.
      description: Use to retrieve the details of an access rule by id.
      operationId: get_access_rule
      tags:
        - Access rules
      parameters:
        - $ref: '#/components/parameters/AccessRuleId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRuleById'
        '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 an access rule.
      description: Use to delete the subject permissions assigned by access rule id.
      operationId: delete_access_rule
      tags:
        - Access rules
      parameters:
        - $ref: '#/components/parameters/AccessRuleId'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '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/authorization/access-rules/count:
    get:
      summary: Count access rules.
      description: Use to retrieve the number of access rules.
      operationId: count_access_rules
      tags:
        - Access rules
      parameters:
        - $ref: '#/components/parameters/IncludeDeleted'
        - $ref: '#/components/parameters/AccessRulesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                properties:
                  count:
                    type: integer
                    format: int64
                    example: 1
        '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/authorization/access-rules/batch:
    post:
      summary: Delete Multiple Access Rules
      operationId: access_rules_batch
      tags:
        - Access rules
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessRulesBatchFields'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRuleDeletionBatchResponse'
        '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/authorization/access-rules/batch-create:
    post:
      summary: Create Multiple Access Rules
      description: Creates a batch of access rules in a single operation. Requires a list of access rule objects, each specifying the subject, role, and scope. Returns the result of the operation, including which rules were successfully created and any that failed, along with error messages if applicable.
      operationId: access_rules_batch_create
      tags:
        - Access rules
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessRulesBatchCreateFields'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRulesBatchCreateResponse'
        '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/authorization/permissions:
    get:
      summary: Get a summary of user permissions.
      description: Retrieve a summary of user permissions.
      operationId: get_permissions
      tags:
        - Permissions
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Permissions'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/authorization/permitted-scopes:
    post:
      summary: Calculate permitted scopes.
      description: Use to calculate user permitted scopes for an action on a resource.
      operationId: get_permitted_scopes
      tags:
        - Permissions
      requestBody:
        description: The request parameters.
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - resourceType
              properties:
                resourceType:
                  $ref: '#/components/schemas/ResourceType'
                action:
                  nullable: true
                  type: string
                  enum:
                    - create
                    - read
                    - update
                    - delete
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermittedScopesActions'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/authorization/me/access-rules:
    get:
      summary: List the access rules assigned to the requesting user.
      description: Retrieve the access rules assigned to the requesting user.
      operationId: get_me_access_rules
      tags:
        - Me
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeAccessRulesResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/authorization/me/access-rules/count:
    get:
      summary: Count the access rules assigned to the requesting user.
      description: Use to retrieve the number of access rules assigned to the requesting user.
      operationId: count_me_access_rules
      tags:
        - Me
      parameters:
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                properties:
                  count:
                    type: integer
                    format: int64
                    example: 1
        '400':
          $ref: '#/components/responses/400BadRequest'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/idps:
    get:
      summary: Get external idps list
      operationId: get_idps
      tags:
        - Idps
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Idps'
              examples:
                saml:
                  value:
                    - alias: saml
                      type: saml
                      redirectUri: https://domain/auth/realms/name/broker/saml/endpoint
                      samlData:
                        signingCertificate: signingCertificateExample
                        singleSignOnServiceUrl: https://authhost/protocol/saml
                        entityId: example.run.ai/runai
                        serviceProviderMetadataUrl: https://example.runai.com/auth/realms/runai/broker/saml/endpoint/descriptor
                      mappers:
                        gid: GID
                        groups: GROUPS
                        supplementaryGroups: SUPPLEMENTARYGROUPS
                        uid: UID
                        email: email
                oidc:
                  value:
                    - alias: oidc
                      type: oidc
                      redirectUri: https://domain/auth/realms/name/broker/oidc/endpoint
                      oidcData:
                        clientId: my-client-id
                        clientSecret: '*******'
                        scopes:
                          - scope1
                          - scope2
                        mandatoryClaim:
                          claim: my-claim
                          values:
                            - val1
                            - val2
                      mappers:
                        gid: GID
                        groups: GROUPS
                        supplementaryGroups: SUPPLEMENTARYGROUPS
                        uid: UID
                        email: email
                openshift-v4:
                  value:
                    - alias: openshift-v4
                      type: openshift-v4
                      redirectUri: https://domain/auth/realms/name/broker/openshift-v4/endpoint
                      ocpData:
                        clientId: my-client-id
                        clientSecret: '*******'
                        idpBaseUrl: https://authhost/ocp
                        scopes:
                          - scope1
                          - scope2
                      mappers:
                        gid: metadata.gid
                        groups: groups
                        supplementaryGroups: supplementarygroups
                        uid: metadata.uid
                        email: metadata.name
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Configure external idp
      operationId: create_idp
      tags:
        - Idps
      requestBody:
        description: Idp configuration
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdpCreationRequest'
            examples:
              saml (by url):
                value:
                  type: saml
                  samlData:
                    metadataXmlType: url
                    metadataXmlUrl: https://authhost/saml/metadata.xml
                  mappers:
                    gid: GID
                    groups: GROUPS
                    supplementaryGroups: SUPPLEMENTARYGROUPS
                    uid: UID
                    email: email
              saml (by file):
                value:
                  type: saml
                  samlData:
                    metadataXmlType: file
                    fileName: descriptor.xml
                    metadataXmlFile: <file content in base64>
                  mappers:
                    gid: GID
                    groups: GROUPS
                    supplementaryGroups: SUPPLEMENTARYGROUPS
                    uid: UID
                    email: email
              oidc:
                value:
                  type: oidc
                  oidcData:
                    clientId: my-client-id
                    clientSecret: my-client-secret
                    discoverDocumentUrl: https://authhost/openid-configuration
                    mandatoryClaim:
                      claim: my-claim
                      values:
                        - val1
                        - val2
                  mappers:
                    gid: GID
                    groups: GROUPS
                    supplementaryGroups: SUPPLEMENTARYGROUPS
                    uid: UID
                    email: email
              openshift-v4:
                value:
                  type: openshift-v4
                  ocpData:
                    clientId: my-client-id
                    clientSecret: my-client-secret
                    idpBaseUrl: https://authhost/ocp
                  mappers:
                    gid: metadata.gid
                    groups: groups
                    supplementaryGroups: supplementarygroups
                    uid: metadata.uid
                    email: metadata.name
      responses:
        '201':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdpPostResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/idps/{idp}:
    get:
      summary: Get external idp by alias
      operationId: get_idp
      tags:
        - Idps
      parameters:
        - $ref: '#/components/parameters/idp'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              examples:
                saml:
                  value:
                    alias: saml
                    type: saml
                    redirectUri: https://domain/auth/realms/name/broker/saml/endpoint
                    samlData:
                      signingCertificate: signingCertificateExample
                      singleSignOnServiceUrl: https://authhost/protocol/saml
                      entityId: example.run.ai/runai
                      serviceProviderMetadataUrl: https://example.runai.com/auth/realms/runai/broker/saml/endpoint/descriptor
                    mappers:
                      gid: GID
                      groups: GROUPS
                      supplementaryGroups: SUPPLEMENTARYGROUPS
                      uid: UID
                      email: email
                oidc:
                  value:
                    alias: oidc
                    type: oidc
                    redirectUri: https://domain/auth/realms/name/broker/oidc/endpoint
                    oidcData:
                      clientId: my-client-id
                      clientSecret: '*******'
                      scopes:
                        - scope1
                        - scope2
                      mandatoryClaim:
                        claim: my-claim
                        values:
                          - val1
                          - val2
                    mappers:
                      gid: GID
                      groups: GROUPS
                      supplementaryGroups: SUPPLEMENTARYGROUPS
                      uid: UID
                      email: email
                openshift-v4:
                  value:
                    alias: openshift-v4
                    type: openshift-v4
                    redirectUri: https://domain/auth/realms/name/broker/openshift-v4/endpoint
                    ocpData:
                      clientId: my-client-id
                      clientSecret: '*******'
                      idpBaseUrl: https://authhost/ocp
                      scopes:
                        - scope1
                        - scope2
                    mappers:
                      gid: metadata.gid
                      groups: groups
                      supplementaryGroups: supplementarygroups
                      uid: metadata.uid
                      email: metadata.name
        '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 external idp by alias
      operationId: delete_idp
      tags:
        - Idps
      parameters:
        - $ref: '#/components/parameters/idp'
      responses:
        '200':
          description: Idp successfully deleted
        '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'
    put:
      summary: Update external idp by alias
      operationId: update_idp
      tags:
        - Idps
      parameters:
        - $ref: '#/components/parameters/idp'
      requestBody:
        description: Updated idp object
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdpCreationRequest'
            examples:
              saml (by url):
                value:
                  type: saml
                  samlData:
                    metadataXmlType: url
                    metadataXmlUrl: https://authhost/saml/metadata.xml
                  mappers:
                    gid: GID
                    groups: GROUPS
                    supplementaryGroups: SUPPLEMENTARYGROUPS
                    uid: UID
                    email: email
              saml (by file):
                value:
                  type: saml
                  samlData:
                    metadataXmlType: file
                    fileName: descriptor.xml
                    metadataXmlFile: <file content in base64>
                  mappers:
                    gid: GID
                    groups: GROUPS
                    supplementaryGroups: SUPPLEMENTARYGROUPS
                    uid: UID
                    email: email
              oidc:
                value:
                  type: oidc
                  oidcData:
                    clientId: my-client-id
                    clientSecret: my-client-secret
                    discoverDocumentUrl: https://authhost/openid-configuration
                    mandatoryClaim:
                      claim: my-claim
                      values:
                        - val1
                        - val2
                  mappers:
                    gid: GID
                    groups: GROUPS
                    supplementaryGroups: SUPPLEMENTARYGROUPS
                    uid: UID
                    email: email
              openshift-v4:
                value:
                  type: openshift-v4
                  ocpData:
                    clientId: my-client-id
                    clientSecret: my-client-secret
                    idpBaseUrl: https://authhost/ocp
                  mappers:
                    gid: metadata.gid
                    groups: groups
                    supplementaryGroups: supplementarygroups
                    uid: metadata.uid
                    email: metadata.name
      responses:
        '200':
          description: Idp successfully updated
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/idps/{idp}/mappers:
    get:
      summary: Get idp mappers
      operationId: get_idp_mappers
      tags:
        - Idps
      parameters:
        - $ref: '#/components/parameters/idp'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Mappers'
        '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'
    put:
      summary: Update idp mappers
      operationId: update_idp_mappers
      tags:
        - Idps
      parameters:
        - $ref: '#/components/parameters/idp'
      requestBody:
        description: Map of our mappers and their source in the external idp
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Mappers'
      responses:
        '202':
          description: Request accepted successfully.
        '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/users:
    get:
      summary: Get users.
      description: Retrieve a list of platform users.
      operationId: get_users
      tags:
        - Users
      parameters:
        - description: Filter results by user attribute.
          in: query
          name: filter
          required: false
          deprecated: true
          schema:
            type: string
          example: runai.is_local:true
        - $ref: '#/components/parameters/usersFilterBy'
        - $ref: '#/components/parameters/usersSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users'
        '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'
    post:
      summary: Create a local user.
      description: Use to create a local platform user.
      operationId: create_user
      tags:
        - Users
      requestBody:
        description: User object to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreationRequest'
      responses:
        '201':
          description: Created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPostResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/users/count:
    get:
      summary: Count users
      operationId: count_users
      description: count users
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/usersFilterBy'
        - $ref: '#/components/parameters/search'
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                properties:
                  count:
                    type: integer
                    format: int64
                    example: 1
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/users/{userId}/logout:
    post:
      summary: Logout a user.
      description: Use to force a user to logout.
      operationId: logout_user
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '200':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/users/{userId}/password:
    post:
      summary: Reset a user's password.
      description: Use to to reset a user's password.
      operationId: reset_user_password
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '200':
          description: Regenerated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  tempPassword:
                    type: string
                example:
                  tempPassword: asdasidjn9d
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/users/{userId}:
    get:
      summary: Get a user by id.
      description: Retrieve a user's details by id.
      operationId: get_user_by_id
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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 user by id.
      description: Use to delete a user by id.
      operationId: delete_user_by_id
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '204':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/me/password:
    post:
      summary: change user password
      operationId: change_user_password
      tags:
        - Users
      requestBody:
        description: Password to change
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserChangePasswordRequest'
      responses:
        '200':
          description: Password changed successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  currentPassword:
                    type: string
                  newPassword:
                    type: string
                example:
                  tempPassword: Abcd!234
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/apps:
    get:
      deprecated: true
      summary: Get a list of applications.
      description: Retrieve a list of applications.
      operationId: get_applications
      tags:
        - Applications
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Applications'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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:
      deprecated: true
      summary: Create an application.
      description: Used to create an application.
      operationId: create_application
      tags:
        - Applications
      requestBody:
        description: Application object to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationCreationRequest'
      responses:
        '201':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationPostResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/apps/{appId}:
    get:
      deprecated: true
      summary: Get application by id.
      description: Retrieve the details of an application by id.
      operationId: get_application_by_id
      tags:
        - Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Application'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    patch:
      deprecated: true
      summary: Update application details by id.
      description: Use to update the details of an application by id.
      operationId: update_application_by_id
      tags:
        - Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      requestBody:
        description: Application object that needs to be updated.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplicationPatchRequest'
      responses:
        '200':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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:
      deprecated: true
      summary: Delete an application by id.
      description: Use to delete an application by id.
      operationId: delete_application_by_id
      tags:
        - Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '204':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/apps/{appId}/secret:
    post:
      deprecated: true
      summary: Regenerate an application secret.
      description: Use to regenerate the application secret by id.
      operationId: regenerate_application_secret
      tags:
        - Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '200':
          description: Regenerated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  secret:
                    type: string
                example:
                  secret: 189ej2ijd92fj092k049fk0
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/service-accounts:
    get:
      summary: Get a list of service accounts.
      description: Retrieve a list of service accounts.
      operationId: get_service_accounts
      tags:
        - Service Accounts
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceAccounts'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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 service account.
      description: Used to create a service account.
      operationId: create_service_account
      tags:
        - Service Accounts
      requestBody:
        description: Service account object to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceAccountCreationRequest'
      responses:
        '201':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceAccountPostResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/service-accounts/{serviceAccountId}:
    get:
      summary: Get service account by id.
      description: Retrieve the details of a service account by id.
      operationId: get_service_account_by_id
      tags:
        - Service Accounts
      parameters:
        - $ref: '#/components/parameters/serviceAccountId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceAccount'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    patch:
      summary: Update service account details by id.
      description: Use to update the details of a service account by id.
      operationId: update_service_account_by_id
      tags:
        - Service Accounts
      parameters:
        - $ref: '#/components/parameters/serviceAccountId'
      requestBody:
        description: Service account object that needs to be updated.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceAccountPatchRequest'
      responses:
        '200':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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 service account by id.
      description: Use to delete a service account by id.
      operationId: delete_service_account_by_id
      tags:
        - Service Accounts
      parameters:
        - $ref: '#/components/parameters/serviceAccountId'
      responses:
        '204':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/service-accounts/{serviceAccountId}/secret:
    post:
      summary: Regenerate a service account secret.
      description: Use to regenerate the service account secret by id.
      operationId: regenerate_service_account_secret
      tags:
        - Service Accounts
      parameters:
        - $ref: '#/components/parameters/serviceAccountId'
      responses:
        '200':
          description: Regenerated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegenerateServiceAccountSecretResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/access-keys:
    get:
      summary: Get a list of access keys.
      description: Retrieve a list of the user's access keys.
      operationId: get_access_keys
      tags:
        - Access Keys
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKeys'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create an access key.
      description: Used to create an access key.
      operationId: create_access_key1
      tags:
        - Access Keys
      requestBody:
        description: Access key object to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessKeyCreationRequest1'
      responses:
        '201':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKeyPostResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/access-keys/{accessKeyId}:
    get:
      summary: Get access key by id.
      description: Retrieve the details of an access key by id.
      operationId: get_access_key_by_id1
      tags:
        - Access Keys
      parameters:
        - $ref: '#/components/parameters/accessKeyId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKey1'
        '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 an access key by id.
      description: Use to delete an access key by id.
      operationId: delete_access_key_by_id
      tags:
        - Access Keys
      parameters:
        - $ref: '#/components/parameters/accessKeyId'
      responses:
        '204':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/access-keys/{accessKeyId}/secret:
    post:
      summary: Regenerate an access key secret.
      description: Use to regenerate the access key secret by id.
      operationId: regenerate_access_key_secret
      tags:
        - Access Keys
      parameters:
        - $ref: '#/components/parameters/accessKeyId'
      responses:
        '200':
          description: Regenerated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  clientSecret:
                    type: string
                    description: Secret credential paired with the client ID. Used to obtain authentication tokens.
                example:
                  clientSecret: this-is-my-secret
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/administration/access-keys:
    get:
      summary: Get a list of all access keys.
      description: Retrieve a list of all access keys.
      operationId: get_access_keys_administration
      tags:
        - Access Keys
      parameters:
        - description: Filter results by clientId
          in: query
          name: clientId
          required: false
          schema:
            type: string
          example: 3434c-12323ab-4ce2ea6-b44fc-db344d
        - description: Filter results by creatdBy
          in: query
          name: createdBy
          required: false
          schema:
            type: string
          example: test@run.ai
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessKeysAdministration'
        '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/administration/access-keys/{accessKeyId}:
    delete:
      summary: Delete an access key by id for administrations.
      description: Use to delete an access key by id for administrations.
      operationId: delete_access_key_by_id_administration
      tags:
        - Access Keys
      parameters:
        - $ref: '#/components/parameters/accessKeyId'
      responses:
        '204':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/user-applications:
    get:
      deprecated: true
      summary: Get a list of users applications.
      description: Retrieve a list of the users applications.
      operationId: get_user_applications
      tags:
        - User Applications
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserApps'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      deprecated: true
      summary: Create a user application.
      description: Used to create a user application.
      operationId: create_user_application
      tags:
        - User Applications
      requestBody:
        description: Application object to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserAppCreationRequest'
      responses:
        '201':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAppPostResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/user-applications/{appId}:
    get:
      deprecated: true
      summary: Get user application by id.
      description: Retrieve the details of a user's application by app id.
      operationId: get_user_application_by_id
      tags:
        - User Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserApp'
        '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:
      deprecated: true
      summary: Delete a user application byid.
      description: Use to user a user application by id.
      operationId: delete_user_application_by_id
      tags:
        - User Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '204':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/user-applications/{appId}/secret:
    post:
      deprecated: true
      summary: Regenerate a user application secret.
      description: Use to regenerate the user application secret by id.
      operationId: regenerate_user_application_secret
      tags:
        - User Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '200':
          description: Regenerated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  clientSecret:
                    type: string
                    description: Secret credential paired with the client ID. Used to obtain authentication tokens.
                example:
                  clientSecret: this-is-my-secret
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/administration/user-applications:
    get:
      deprecated: true
      summary: Get a list of all users applications.
      description: Retrieve a list of all users applications.
      operationId: get_user_applications_administration
      tags:
        - User Applications
      parameters:
        - description: Filter results by clientId
          in: query
          name: clientId
          required: false
          schema:
            type: string
          example: 3434c-12323ab-4ce2ea6-b44fc-db344d
        - description: Filter results by creatdBy
          in: query
          name: createdBy
          required: false
          schema:
            type: string
          example: test@run.ai
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAppsAdministration'
        '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/administration/user-applications/{appId}:
    delete:
      deprecated: true
      summary: Delete a user application by id for adminstrations.
      description: Use to delete a user application by id for adminstrations.
      operationId: delete_user_application_by_id_administration
      tags:
        - User Applications
      parameters:
        - $ref: '#/components/parameters/appId'
      responses:
        '204':
          description: Executed successfully.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/token:
    post:
      tags:
        - Tokens
      summary: Create an access token v1
      deprecated: true
      description: |
        Create tokens using the `grant_type` parameter.
        This endpoint is deprecated. Use `/api/v2/token` instead.
      operationId: grant_token
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenRequest'
            examples:
              client_credentials:
                value:
                  grantType: client_credentials
                  clientID: clientID
                  clientSecret: clientSecret
                description: Obtain the clientID and the clientSecret using service accounts or access keys endpoints
              refresh_token:
                value:
                  grantType: refresh_token
                  refreshToken: refreshToken
                  clientID: clientID
              exchange_token:
                value:
                  grantType: exchange_token
                  code: code
                  clientID: clientID
                  redirectUri: redirectUri
              external_token_exchange:
                value:
                  grantType: external_token_exchange
                  externalToken: access token from external idp
              app_token (deprecated):
                value:
                  grantType: app_token
                  appID: appID
                  appSecret: appSecret
                description: Deprecated - Obtain the appID and the appSecret using applications or user applications endpoints
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/token:
    post:
      tags:
        - Tokens
      summary: Create an access token v2
      description: |
        Use this endpoint to obtain an access token. Compliant with standard OAuth2 protocol and supports the common OAuth2 grant types.
      operationId: grant_token_v2
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - grant_type
              properties:
                grant_type:
                  type: string
                  description: |
                    The OAuth2 grant type. Determines the authentication flow and which parameters are required:

                    `client_credentials` - Authenticate as a service account or user access key using clientId and clientSecret.

                    `password` - Authenticate as a local user using username and password.

                    `external_token_exchange` - Authenticate as a service account or user using a token issued by the configured identity provider (IdP) for a Run:ai token. Requires externalToken.
                  enum:
                    - client_credentials
                    - password
                    - external_token_exchange
                client_id:
                  type: string
                  description: The client identifier for a service account or user access key. Required when using the client_credentials grant type. Must be used together with clientSecret.
                client_secret:
                  type: string
                  description: The client secret corresponding to the clientId. Required when using the client_credentials grant type. Must be used together with clientId.
                  format: password
                username:
                  type: string
                  description: The username of a local user account. Required when using the password grant type. Must be used together with password.
                password:
                  type: string
                  description: The password for the specified username. Required when using the password grant type. Must be used together with username.
                  format: password
                external_token:
                  type: string
                  description: A valid token issued by the identity provider (IdP) that is configured in NVIDIA Run:ai. Required when using the external_token_exchange grant type.
            examples:
              client_credentials:
                value:
                  grant_type: client_credentials
                  client_id: my-client-id
                  client_secret: my-client-secret
                description: Obtain the clientID and the clientSecret using service accounts or access keys endpoints
              password:
                value:
                  grant_type: password
                  username: user@example.com
                  password: password123
                  client_id: my-client-id
              external_token_exchange:
                value:
                  grant_type: external_token_exchange
                  external_token: access_token_from_external_idp
                  client_id: my-client-id
                description: Exchange an external identity provider token for a Run:ai access token
      responses:
        '200':
          description: Successfully issued token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuth2TokenResponse'
              example:
                access_token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
                token_type: Bearer
                expires_in: 3600
                refresh_token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
                id_token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuth2Error'
        '401':
          description: Client authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuth2Error'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/security/settings:
    get:
      summary: Get security settings
      operationId: get_security_settings
      tags:
        - Settings
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsGetResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/security/settings/{key}:
    put:
      summary: Update security setting by key
      operationId: update_security_setting_by_key
      tags:
        - Settings
      parameters:
        - $ref: '#/components/parameters/settingsKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/UpdateAutoRedirectSsoSettingValue'
                - $ref: '#/components/schemas/UpdateBrowserSessionTimeoutSettingValue'
                - $ref: '#/components/schemas/UpdateLogoutRedirectUriSettingValue'
            examples:
              autoRedirectSSO:
                value:
                  enabled: false
                  idpAlias: oidc
              browserSessionTimeout:
                value:
                  idleTimeout: 60
              logoutRedirectUri:
                value:
                  uri: https://example.com/logout-success
      responses:
        '200':
          description: Setting successfully updated
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    get:
      summary: Get security setting by key
      operationId: get_security_setting_by_key
      tags:
        - Settings
      parameters:
        - $ref: '#/components/parameters/settingsKey'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Settings'
              examples:
                autoRedirectSSO:
                  value:
                    value:
                      enabled: false
                      idpAlias: oidc
                    displayName: Auto Redirect SSO
                    description: Automatically redirect users to the SSO login page after logging in to the application
                browserSessionTimeout:
                  value:
                    value:
                      idleTimeout: 60
                    displayName: Browser Session Timeout
                    description: The idle timeout duration in minutes for browser sessions
                logoutRedirectUri:
                  value:
                    value:
                      uri: https://example.com/logout-success
                    displayName: Logout Redirect URI
                    description: The URI where users will be redirected after logging out of the application
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/auth/oauth/apptoken:
    post:
      deprecated: true
      tags:
        - Tokens
      summary: get application token
      description: |
        Retrieve access token for an application.
        The application token is retrieved from the authorization server.
        This endpoint is deprecated.  Use /api/v1/token with the grantType parameter set to app_token instead, with AppID and appSecret set accordingly to get an application token
      operationId: app_token
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppTokenRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppTokenResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads:
    get:
      summary: List workloads.
      description: Retrieve a list of active workloads with details.
      operationId: get_workloads
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/Deleted'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/WorkloadsSort'
        - $ref: '#/components/parameters/WorkloadsFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - workloads
                properties:
                  next:
                    type: integer
                    example: 1
                  workloads:
                    $ref: '#/components/schemas/Workloads'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/{workloadId}:
    get:
      summary: Get a workload.
      operationId: get_workload
      description: Retrieve workload data using a `workloadId`.
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadDetailed'
        '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/workloads/count:
    get:
      summary: Count workloads.
      description: Retrieve the number of workloads.
      operationId: count_workloads
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/Deleted'
        - $ref: '#/components/parameters/WorkloadsFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                properties:
                  count:
                    type: integer
                    format: int64
                    example: 1
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/telemetry:
    get:
      summary: Get the workloads telemetry.
      operationId: get_workloads_telemetry
      description: |
        Retrieves workload data by telemetry type. Optionally filter by specific workload phases.

        Telemetry Types:
        - WORKLOADS_COUNT: Count of workloads
        - GPU_ALLOCATION: GPU allocation metrics
        - PENDING_TIME_DISTRIBUTION: Distribution of workloads by current pending time (time since entering Pending phase).






          For this type, results are automatically grouped by 4 time buckets and any additional groupBy parameters.
        - IDLE_ALLOCATED_GPUS: Sum of idle allocated GPU devices across workloads
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/FilterByCluster'
        - $ref: '#/components/parameters/FilterByNodepoolName'
        - $ref: '#/components/parameters/FilterByDepartment'
        - $ref: '#/components/parameters/TelemetryGroupBy1'
        - $ref: '#/components/parameters/TelemetryType2'
        - $ref: '#/components/parameters/FilterByPhases'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TelemetryResponse'
            text/csv: {}
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workloads/pods:
    get:
      summary: List pods.
      description: Retrieve a list of pods from a cluster.
      operationId: list_pods
      tags:
        - Pods
      parameters:
        - $ref: '#/components/parameters/Deleted'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/PodsSort'
        - $ref: '#/components/parameters/PodsFilter'
        - $ref: '#/components/parameters/PodsQueryVerbosity'
        - $ref: '#/components/parameters/Completed'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - pods
                properties:
                  next:
                    type: integer
                    example: 1
                  pods:
                    $ref: '#/components/schemas/Pods'
        '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/workloads/{workloadId}/pods/{podId}/metrics:
    get:
      summary: Get pod metrics data.
      description: Retrieve pod's metrics data for use in analysis applications.
      operationId: get_workload_pod_metrics
      tags:
        - Pods
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/PodId'
        - $ref: '#/components/parameters/PodMetricTypes'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsCompositeResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsCompositeResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workloads/{workloadId}/pods:
    get:
      summary: Get workload pods by id.
      description: Retrieve the details of workload pods by workload id.
      operationId: get_workload_pods
      tags:
        - Pods
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/Deleted'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/PodsSort'
        - $ref: '#/components/parameters/PodsFilter'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - pods
                properties:
                  next:
                    type: integer
                    example: 1
                  pods:
                    $ref: '#/components/schemas/Pods'
        '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/workloads/pods/count:
    get:
      summary: Get pods count.
      description: Retrieve the number of pods from a cluster.
      operationId: count_pods
      tags:
        - Pods
      parameters:
        - $ref: '#/components/parameters/Deleted'
        - $ref: '#/components/parameters/PodsFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                properties:
                  count:
                    type: integer
                    format: int64
                    example: 1
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/{workloadId}/events:
    get:
      summary: Get the workload events.
      description: Retrieve all the workload events using a workload id.
      operationId: get_workload_events
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/EventsSort'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - events
                properties:
                  next:
                    type: integer
                    example: 1
                  events:
                    $ref: '#/components/schemas/Events'
        '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/workloads/{workloadId}/history:
    get:
      summary: Get the workload history.
      description: Retrieve workload history details, including events, using a workload id.
      operationId: get_workload_history
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - records
                properties:
                  next:
                    type: integer
                    example: 1
                  records:
                    $ref: '#/components/schemas/HistoryRecords'
        '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/workloads/{workloadId}/metrics:
    get:
      summary: Get workload metrics data.
      operationId: get_workload_metrics
      description: Retrieves workloads data metrics from the metrics database. Use in reporting and analysis tools.
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/WorkloadMetricTypes'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsCompositeResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsCompositeResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workloads/{workloadId}/endpoints:
    get:
      summary: Get workload endpoints.
      description: Retrieve the network endpoints exposed by a workload using a workload ID.
      operationId: get_workload_endpoints
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - endpoints
                properties:
                  endpoints:
                    type: array
                    items:
                      $ref: '#/components/schemas/Endpoint'
        '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/workloads/workspaces:
    post:
      summary: Create a workspace.
      operationId: create_workspace1
      description: Create a new workspace in a specific project in the cluster.
      tags:
        - Workspaces
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workspace1'
        '400':
          $ref: '#/components/responses/400SubmissionErrorV2'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/workspaces/{workloadId}:
    delete:
      summary: Delete a workspace.
      description: Delete a workspace using the workspace id.
      operationId: delete_workspace
      tags:
        - Workspaces
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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'
    get:
      summary: Get workspace data.
      description: Retrieve workspace details using a workload id.
      operationId: get_workspace
      tags:
        - Workspaces
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workspace1'
        '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/workloads/workspaces/{workloadId}/suspend:
    post:
      summary: Suspend a workspace.
      description: Suspend a workspace using the workspace id.
      operationId: suspend_workspace
      tags:
        - Workspaces
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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/workloads/workspaces/{workloadId}/resume:
    post:
      summary: Resume a workspace.
      description: Resume the workspace operation using the workspace id.
      operationId: resume_workspace
      tags:
        - Workspaces
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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/workloads/trainings:
    post:
      summary: Create a training.
      operationId: create_training1
      description: Create a training workload using container related fields.
      tags:
        - Trainings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrainingCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Training1'
        '400':
          $ref: '#/components/responses/400SubmissionErrorV2'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/trainings/{workloadId}:
    delete:
      summary: Delete a training.
      operationId: delete_training
      description: Delete a training using a workload id.
      tags:
        - Trainings
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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'
    get:
      summary: Get training data.
      operationId: get_training
      description: Retrieve training details using a workload id.
      tags:
        - Trainings
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Training1'
        '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/workloads/trainings/{workloadId}/suspend:
    post:
      summary: Suspend a training.
      operationId: suspend_training
      description: Suspend a training from running using a workload id.
      tags:
        - Trainings
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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/workloads/trainings/{workloadId}/resume:
    post:
      summary: Resume a training.
      operationId: resume_training
      description: Resume a training that was suspended using a workload id.
      tags:
        - Trainings
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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/workloads/distributed:
    post:
      summary: Create a distributed training.
      description: Use to create a distributed training.
      operationId: create_distributed
      tags:
        - Distributed
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedWorkload'
        '400':
          $ref: '#/components/responses/400SubmissionErrorV2'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/distributed/{workloadId}:
    delete:
      summary: Delete a distributed training by id.
      description: Use to delete a distributed training by workload id.
      operationId: delete_distributed
      tags:
        - Distributed
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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'
    get:
      summary: Get distributed training's data. [Experimental]
      description: Retrieve the details of a distributed training by workload id.
      operationId: get_distributed
      tags:
        - Distributed
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedWorkload'
        '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/workloads/distributed/{workloadId}/suspend:
    post:
      summary: Suspend a distributed training.
      operationId: suspend_distributed
      description: Suspend a distributed training from running using a workload id.
      tags:
        - Distributed
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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/workloads/distributed/{workloadId}/resume:
    post:
      summary: Resume a distributed training.
      operationId: resume_distributed
      description: Resume a distributed training that was suspended using a workload id.
      tags:
        - Distributed
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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/workloads/distributed-inferences:
    post:
      summary: Create a distributed inference.
      operationId: create_distributed_inference
      description: Create a distributed inference using container related fields.
      tags:
        - Distributed Inferences
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedInferenceCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedInference'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/distributed-inferences/{workloadId}:
    delete:
      summary: Delete a distributed inference.
      operationId: delete_distributed_inference
      description: Delete a distributed inference using a workload id.
      tags:
        - Distributed Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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'
    get:
      summary: Get a distributed inference data.
      operationId: get_distributed_inference
      description: Retrieve a distributed inference details using a workload id.
      tags:
        - Distributed Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedInference'
        '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'
    patch:
      summary: Update distributed inference spec.
      operationId: update_distributed_inference_spec
      description: Update the specification of an existing distributed inference workload.
      tags:
        - Distributed Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRequest'
      responses:
        '202':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedInference'
        '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/workloads/inferences:
    post:
      summary: Create an inference.
      operationId: create_inference1
      description: Create an inference using container related fields.
      tags:
        - Inferences
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InferenceCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inference1'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/inferences/{workloadId}:
    delete:
      summary: Delete an inference.
      operationId: delete_inference
      description: Delete an inference using a workload id.
      tags:
        - Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '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'
    get:
      summary: Get inference data.
      operationId: get_inference
      description: Retrieve inference details using a workload id.
      tags:
        - Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inference1'
        '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'
    patch:
      summary: Update inference spec.
      operationId: update_inference_spec
      description: Update the specification of an existing inference workload.
      tags:
        - Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InferenceUpdateRequest'
      responses:
        '202':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Inference1'
        '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/workloads/inferences/{workloadId}/metrics:
    get:
      summary: Get inference metrics data.
      description: Retrieve inference metrics data by id. Supported from control-plane version 2.18 or later.
      operationId: get_inference_workload_metrics
      tags:
        - Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/InferenceWorkloadMetricTypes'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workloads/inferences/{workloadId}/pods/{podId}/metrics:
    get:
      summary: Get inference pod's metrics data.
      description: Retrieve inference metrics pod's data by workload and pod id. Supported from control-plane version 2.18 or later.
      operationId: get_inference_workload_pod_metrics
      tags:
        - Inferences
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/PodId'
        - $ref: '#/components/parameters/InferencePodMetricTypes'
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
            text/csv: {}
        '207':
          description: Partial success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workloads/inferences/{workloadId}/revisions:
    get:
      summary: Get inference workload revisions by id.
      description: Retrieve the details of inference workload revisions by workload id. Supported for clusters v2.21+.
      operationId: get_inference_workload_revisions
      tags:
        - Revisions
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/Deleted'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - revisions
                properties:
                  revisions:
                    type: array
                    items:
                      $ref: '#/components/schemas/Revision'
        '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/workloads/inferences/{workloadId}/revisions/count:
    get:
      summary: Get inference workload revisions count.
      description: Retrieve the number of an inference workload revisions from a cluster. Supported for clusters v2.21+.
      operationId: count_inference_workload_revisions
      tags:
        - Revisions
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/Deleted'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                properties:
                  count:
                    type: integer
                    format: int64
                    example: 1
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/inferences/revisions/{revisionId}:
    get:
      summary: Get revision data.
      operationId: get_revision
      description: Retrieve revision details using a revision id. Supported for clusters v2.21+.
      tags:
        - Revisions
      parameters:
        - $ref: '#/components/parameters/RevisionId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Revision'
        '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/workloads/inferences/revisions/{revisionId}/pods:
    get:
      summary: Get revision pods by id.
      description: Retrieve the details of revision pods by revision id. Supported for clusters v2.21+.
      operationId: get_revision_pods
      tags:
        - Pods
      parameters:
        - $ref: '#/components/parameters/RevisionId'
        - $ref: '#/components/parameters/Deleted'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - pods
                properties:
                  pods:
                    $ref: '#/components/schemas/Pods'
        '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/workloads/inferences/revisions/{revisionId}/events:
    get:
      summary: Get revision events by id.
      description: Retrieve all the revision events using a revision id. Supported for clusters v2.21+.
      operationId: get_revision_events
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/RevisionId'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/EventsSort'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - events
                properties:
                  next:
                    type: integer
                    example: 1
                  events:
                    $ref: '#/components/schemas/Events'
        '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/workloads/inferences/revisions/{revisionId}/history:
    get:
      summary: Get the revision history.
      description: Retrieve revision history details, including events, using a revision id. Supported for clusters v2.21+.
      operationId: get_revision_history
      tags:
        - Events
      parameters:
        - $ref: '#/components/parameters/RevisionId'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - records
                properties:
                  next:
                    type: integer
                    example: 1
                  records:
                    $ref: '#/components/schemas/HistoryRecords'
        '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/workload-templates:
    get:
      summary: List templates. [Experimental]
      description: Retrieve all available templates.
      operationId: list_templates1
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/TemplatesSort'
        - $ref: '#/components/parameters/TemplatesFilter'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToWorkloadType'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplatesListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-templates/name-availability:
    get:
      summary: Template name availability
      description: Check if a given template name creates naming conflicts under the given scope. Returns conflict (409) in case the name is not available, or 204 (no content) if it is ok.
      operationId: template_name_availability
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateName'
        - $ref: '#/components/parameters/ScopeType'
        - $ref: '#/components/parameters/ScopeId3'
      responses:
        '204':
          description: The name is available to use
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-templates/{templateId}:
    get:
      summary: Get a template, any type. [Experimental]
      operationId: get_template_by_id1
      description: Retrieve the details of a template using its id.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupersetTemplate'
        '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/workload-templates/count:
    get:
      summary: Count templates. [Experimental]
      description: Get the total number of templates.
      operationId: count_templates
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplatesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-templates/workspaces:
    post:
      summary: Create a new workspace template. [Experimental]
      operationId: create_workspace_template
      description: Create a new workspace template.
      tags:
        - Workload templates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceTemplateCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceTemplate'
        '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'
    get:
      summary: List all workspace templates. [Experimental]
      description: List all workspace templates.
      operationId: list_workspace_templates
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/TemplatesSort'
        - $ref: '#/components/parameters/TemplatesFilter'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/ComplyToProject'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceTemplatesListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-templates/workspaces/{templateId}:
    get:
      summary: Retrieve a specific workspace template by ID. [Experimental]
      operationId: get_workspace_template
      description: Retrieve a specific workspace template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceTemplate'
        '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 workspace template by ID. [Experimental]
      operationId: delete_workspace_template
      description: Delete a workspace template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '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'
    patch:
      summary: Patch a workspace template by ID. [Experimental]
      operationId: patch_workspace_template
      description: Patch a workspace template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceTemplatePatchRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    put:
      summary: Update a workspace template by ID. [Experimental]
      operationId: update_workspace_template
      description: Update a workspace template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkspaceTemplateUpdateRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workload-templates/trainings:
    post:
      summary: Create a new training template. [Experimental]
      operationId: create_training_template
      description: Create a new training template.
      tags:
        - Workload templates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrainingTemplateCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingTemplate'
        '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'
    get:
      summary: List all training templates. [Experimental]
      description: List all training templates.
      operationId: list_training_templates
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/TemplatesSort'
        - $ref: '#/components/parameters/TemplatesFilter'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/ComplyToProject'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingTemplatesListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-templates/trainings/{templateId}:
    get:
      summary: Retrieve a specific training template by ID. [Experimental]
      operationId: get_training_template
      description: Retrieve a specific training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingTemplate'
        '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 training template by ID. [Experimental]
      operationId: delete_training_template
      description: Delete a training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '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'
    patch:
      summary: Patch a training template by ID. [Experimental]
      operationId: patch_training_template
      description: Patch a training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrainingTemplatePatchRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    put:
      summary: Update a training template by ID. [Experimental]
      operationId: update_training_template
      description: Update a training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrainingTemplateUpdateRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workload-templates/distributed:
    post:
      summary: Create a new distributed training template. [Experimental]
      operationId: create_distributed_template
      description: Create a new distributed training template.
      tags:
        - Workload templates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedTemplateCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedTemplate'
        '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'
    get:
      summary: List all distributed training templates. [Experimental]
      description: List all distributed training templates.
      operationId: list_distributed_templates
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/TemplatesSort'
        - $ref: '#/components/parameters/TemplatesFilter'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/ComplyToProject'
        - $ref: '#/components/parameters/ComplyToReplicaType'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedTemplatesListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-templates/distributed/{templateId}:
    get:
      summary: Get a specific distributed training template by ID. [Experimental]
      operationId: get_distributed_template
      description: Get a specific distributed training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedTemplate'
        '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 distributed training template by ID. [Experimental]
      operationId: delete_distributed_template
      description: Delete a distributed training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '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'
    patch:
      summary: Patch a distributed training template by ID. [Experimental]
      operationId: patch_distributed_template
      description: Patch a distributed training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedTemplatePatchRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    put:
      summary: Update a distributed training template by ID. [Experimental]
      operationId: update_distributed_template
      description: Update a distributed training template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedTemplateUpdateRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedTemplate'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workload-templates/inferences:
    post:
      summary: Create a new inference template.
      operationId: create_inference_template
      description: Create a new inference template.
      tags:
        - Workload templates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InferenceTemplateCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferenceTemplate'
        '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'
    get:
      summary: List all inference templates.
      description: List all inference templates.
      operationId: list_inference_templates
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/TemplatesSort'
        - $ref: '#/components/parameters/TemplatesFilter'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/ComplyToProject'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferenceTemplatesListResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-templates/inferences/{templateId}:
    get:
      summary: Get a specific inference template by ID.
      operationId: get_inference_template
      description: Get a specific inference template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferenceTemplate'
        '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 an inference template by ID.
      operationId: delete_inference_template
      description: Delete an inference template by ID.
      tags:
        - Workload templates
      parameters:
        - $ref: '#/components/parameters/TemplateId'
      responses:
        '204':
          $ref: '#/components/responses/204NoContent'
        '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/workloads/batch:
    post:
      summary: Workload batch operations.
      operationId: batch_workloads
      tags:
        - Workloads batch
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadBatch'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponse'
        '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/workloads/{workloadId}/elements:
    get:
      summary: Get workload structure elements by workload id.
      description: |
        Retrieve the hierarchy structure elements for a workload. Returns a flat list ordered by level. Requires cluster version >= 2.25.
      operationId: get_workload_elements
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadElementsResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workloads/{workloadId}/elements/count:
    get:
      summary: Count workload structure elements.
      description: |
        Returns the total count of structure elements reported by the cluster and the count of elements stored in the database for the given workload. Requires cluster version >= 2.25.
      operationId: count_workload_elements
      tags:
        - Workloads-API
      parameters:
        - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - totalElementsCount
                  - storedElementsCount
                properties:
                  storedElementsCount:
                    type: integer
                    format: int32
                    minimum: 0
                    description: The number of structure elements stored for this workload. When truncation occurs, this will be less than totalElementsCount.
                  totalElementsCount:
                    type: integer
                    format: int32
                    minimum: 0
                    description: The total number of structure elements that exist for this workload. When no truncation occurred, this equals storedElementsCount.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/workload-categories:
    get:
      summary: List workload categories.
      description: Retrieves a list of workload categories. These categories are used to classify and monitor different types of workloads within the NVIDIA Run:ai platform.
      operationId: list_categories
      tags:
        - Workload properties
      responses:
        '200':
          description: List of categories retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - categories
                properties:
                  categories:
                    $ref: '#/components/schemas/WorkloadCategories'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-categories/{categoryId}:
    get:
      summary: Get workload category by id.
      description: Retrieves a specific workload category by its ID. Workload categories are used to classify and monitor different types of workloads within the NVIDIA Run:ai platform.
      operationId: get_category_by_id
      tags:
        - Workload properties
      parameters:
        - name: categoryId
          description: The unique identifier of the workload category.
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Category retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadCategory'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-types:
    get:
      summary: List workload types.
      description: Retrieves a list of workload types with their configurations - their corresponding workload categories and priorities.
      operationId: list_workload_types
      tags:
        - Workload properties
      parameters:
        - $ref: '#/components/parameters/ExternalTypesOnly'
        - $ref: '#/components/parameters/WorkloadTypesFilter'
      responses:
        '200':
          description: List of types retrieved successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - types
                properties:
                  types:
                    $ref: '#/components/schemas/WorkloadTypeConfigs'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create a workload type. [Experimental]
      description: Create a new workload type in the system by providing its identification details and configuration, making it available for use and management within the platform.
      operationId: create_workload_type
      tags:
        - Workload properties
      requestBody:
        description: Workload type to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadTypeCreateFields'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadTypeConfig'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workload-types/{workloadTypeId}:
    get:
      summary: List workload type by id.
      description: Retrieves a specific workload type by its ID.
      operationId: get_workload_type
      tags:
        - Workload properties
      parameters:
        - $ref: '#/components/parameters/WorkloadTypeId'
      responses:
        '200':
          description: Type retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadTypeConfig'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      summary: Update a workload type by id.
      description: Update the default category or priority assigned to a workload type.
      operationId: update_workload_type
      tags:
        - Workload properties
      parameters:
        - $ref: '#/components/parameters/WorkloadTypeId'
      requestBody:
        description: Workload type to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadTypeUpdateFields'
      responses:
        '200':
          description: Updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadTypeConfig'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete a workload type by id. [Experimental]
      description: Deletes a specific workload type by its ID.
      operationId: delete_workload_type
      tags:
        - Workload properties
      parameters:
        - $ref: '#/components/parameters/WorkloadTypeId'
      responses:
        '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'
  /api/v1/workload-priorities:
    get:
      summary: Get workload priorities.
      description: Retrieve the list of all workload priorities available in the system
      operationId: get_workload_priorities
      tags:
        - Workload properties
      parameters:
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/WorkloadsPrioritiesSort'
        - $ref: '#/components/parameters/WorkloadsPrioritiesFilter'
      responses:
        '200':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - priorities
                properties:
                  priorities:
                    $ref: '#/components/schemas/Priorities'
        '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/ai-applications:
    get:
      summary: List AI applications. [Experimental]
      description: List AI applications.
      operationId: list_applications
      tags:
        - AI Applications-API
      parameters:
        - $ref: '#/components/parameters/ApplicationQueryVerbosity'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/ApplicationsSort'
        - $ref: '#/components/parameters/ApplicationsFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: ok.
          content:
            application/json:
              schema:
                type: object
                required:
                  - applications
                properties:
                  next:
                    type: integer
                    example: 1
                  applications:
                    $ref: '#/components/schemas/AIApplications'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      summary: Create AI application.
      description: Create AI application.
      operationId: create_application1
      tags:
        - AI Applications-API
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AIApplicationCreationRequest'
      responses:
        '200':
          description: ok.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIApplication'
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
  /api/v1/ai-applications/count:
    get:
      summary: Count AI applications. [Experimental]
      description: Get the total number of AI applications.
      operationId: count_applications
      tags:
        - AI Applications-API
      parameters:
        - $ref: '#/components/parameters/ApplicationsFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CountResponse'
        '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/ai-applications/{aiApplicationId}:
    get:
      summary: Get AI application. [Experimental]
      description: Get AI application.
      operationId: get_application
      tags:
        - AI Applications-API
      parameters:
        - $ref: '#/components/parameters/ApplicationId'
      responses:
        '200':
          description: ok.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIApplication'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      summary: Delete AI application.
      description: Delete AI application.
      operationId: delete_application
      tags:
        - AI Applications-API
      parameters:
        - $ref: '#/components/parameters/ApplicationId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
  /api/v2/workloads:
    post:
      summary: Create a workload. [Experimental]
      description: Submit a workload with metadata and a Kubernetes manifest.
      operationId: create_workload_v2
      tags:
        - Workloads V2
      parameters:
        - $ref: '#/components/parameters/DryRun'
      requestBody:
        description: Workload metadata and manifest
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadV2CreateRequest'
      responses:
        '202':
          description: Workload creation request accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadV2'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/workloads/{WorkloadV2Id}:
    get:
      summary: Get a specific workload. [Experimental]
      description: Retrieve details of a specific workload by ID
      operationId: get_workload_v2_by_id
      tags:
        - Workloads V2
      parameters:
        - $ref: '#/components/parameters/WorkloadV2Id'
      responses:
        '200':
          description: Successfully retrieved the workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadV2GetResponse'
        '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 workload. [Experimental]
      description: Delete a specific workload by ID
      operationId: delete_workload_v2
      tags:
        - Workloads V2
      parameters:
        - $ref: '#/components/parameters/WorkloadV2Id'
      responses:
        '202':
          description: Deletion request accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadV2'
        '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'
    put:
      summary: Update workload spec. [Experimental]
      operationId: update_workload_v2
      description: Update the specification of an existing workload.
      tags:
        - Workloads V2
      parameters:
        - $ref: '#/components/parameters/WorkloadV2Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadV2UpdateRequest'
      responses:
        '202':
          description: Workload update request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadV2'
        '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/v2/workloads/nim-services:
    post:
      summary: Create a NVIDIA NIM service. [Experimental]
      description: Create a NVIDIA NIM service
      operationId: create_nim_service
      tags:
        - NVIDIA NIM
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NimServiceCreateRequest'
      responses:
        '202':
          description: Workload creation accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServiceResponse'
        '400':
          $ref: '#/components/responses/400SubmissionErrorV2'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/workloads/nim-services/{WorkloadV2Id}:
    get:
      summary: Get a NVIDIA NIM service. [Experimental]
      description: Retrieve details of a specific NVIDIA NIM service, by id
      operationId: get_nim_service_by_id
      tags:
        - NVIDIA NIM
      parameters:
        - $ref: '#/components/parameters/WorkloadV2Id'
      responses:
        '200':
          description: Successfully retrieved the workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServiceResponse'
        '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'
    patch:
      summary: Update NVIDIA NIM service spec. [Experimental]
      operationId: update_nim_service_spec
      description: Update the specification of an existing NVIDIA NIM service.
      tags:
        - NVIDIA NIM
      parameters:
        - $ref: '#/components/parameters/WorkloadV2Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NimServiceUpdateRequest'
      responses:
        '202':
          description: Workload update request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServiceResponse'
        '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/v2/workloads/settings:
    get:
      summary: Get workloads settings
      operationId: get_workloads_settings
      tags:
        - Settings
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadsSettingsGetResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/workloads/settings/{key}:
    put:
      summary: Update workloads setting by key
      operationId: update_workloads_setting_by_key
      tags:
        - Settings
      parameters:
        - $ref: '#/components/parameters/WorkloadSettingsKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/YamlSubmissionSetting'
            examples:
              yamlSubmission:
                value:
                  enabled: false
      responses:
        '200':
          description: Setting successfully updated
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    get:
      summary: Get workloads setting by key
      operationId: get_workloads_setting_by_key
      tags:
        - Settings
      parameters:
        - $ref: '#/components/parameters/WorkloadSettingsKey'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YamlSubmissionSetting'
              examples:
                yamlSubmission:
                  value:
                    enabled: false
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/logo:
    get:
      summary: Get tenant logo. (base64)
      description: Retrieve the base64 logo file.
      operationId: get_tenant_logo
      tags:
        - Logo
      responses:
        '200':
          description: Tenant logo (PNG or SVG).
          content:
            application/json:
              schema:
                type: object
                required:
                  - logo
                properties:
                  logo:
                    type: string
        '204':
          $ref: '#/components/responses/204NoContent'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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: Upload logo for tenant. (base64)
      description: Use to upload a base64 logo file (PNG or SVG). Max size 128kb.
      operationId: upload_tenant_logo
      tags:
        - Logo
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogoCreationRequest'
      responses:
        '200':
          description: Logo uploaded.
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '413':
          $ref: '#/components/responses/413RequestEntityTooLarge'
        '415':
          $ref: '#/components/responses/415UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/datavolumes:
    get:
      summary: List datavolumes in permitted scopes
      description: Get requested datavolumes.
      operationId: get_datavolumes
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DatavolumesRequestType'
        - $ref: '#/components/parameters/DatavolumesUsableInProjectId'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/DatavolumesSortBy'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/DatavolumesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - datavolumes
                properties:
                  next:
                    type: integer
                    example: 1
                  datavolumes:
                    $ref: '#/components/schemas/DatavolumesNoSharedScopes'
        '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'
    post:
      summary: Create a datavolume
      operationId: create_datavolume
      tags:
        - Datavolumes-API
      requestBody:
        description: The datavolume to create.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DatavolumeCreationFields'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Datavolume'
        '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/datavolumes/{datavolumeId}:
    get:
      summary: Get datavolume
      operationId: get_datavolume
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DatavolumeId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Datavolume'
        '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 datavolume
      operationId: delete_datavolume
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DatavolumeId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '204':
          $ref: '#/components/responses/204NoContent'
        '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'
    patch:
      summary: Patch datavolume
      operationId: patch_datavolume
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DatavolumeId'
      requestBody:
        description: Datavolume to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DatavolumePatchFields'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatavolumeNoSharedScopes'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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/datavolumes/name-availability:
    get:
      summary: Data volumes name availability.
      description: Checks if a specified data volume name is available under the given scope (e.g., project or department). Returns a 204 No Content response if the name is available, or 409 Conflict if the name is already in use.
      operationId: datavolume_name_availability
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DataVolumeName'
        - $ref: '#/components/parameters/ClusterIdRequired'
      responses:
        '204':
          description: The name is available to use
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/datavolumes/count:
    get:
      summary: Count data volumes.
      description: Retrieve the number of data volumes.
      operationId: count_datavolumes
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DatavolumesRequestType'
        - $ref: '#/components/parameters/DatavolumesUsableInProjectId'
        - $ref: '#/components/parameters/DatavolumesFilter'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                properties:
                  count:
                    type: integer
                    format: int64
                    example: 1
        '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/datavolumes/{datavolumeId}/sharedScopes:
    patch:
      summary: Patch the datavolume's shared scopes
      operationId: patch_datavolume_shared_scopes
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DatavolumeId'
      requestBody:
        description: Requested SharedScopes of the datavolume to patch.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharedScopesPatchRequest'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedScopes'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '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'
    get:
      summary: Get the datavolume's shared scopes
      operationId: get_datavolume_shared_scopes
      tags:
        - Datavolumes-API
      parameters:
        - $ref: '#/components/parameters/DatavolumeId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedScopes'
        '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/cli-exposer/installer/unix:
    get:
      summary: Download Unix installer script
      description: |
        This endpoint returns a unix script that can be used to install the Run:ai CLI.
      operationId: get_installer_unix
      tags:
        - Researcher Command Line Interface
      responses:
        '200':
          description: File download successful
          content:
            text/plain:
              schema:
                type: string
              example: Contents of the file
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/installer/unix/commands:
    get:
      summary: Get Unix installer script commands
      description: |
        This endpoint returns a unix script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_unix_commands
      tags:
        - Researcher Command Line Interface
      responses:
        '200':
          description: A text commands to install the CLI on Unix
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Unix
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/installer/mac:
    get:
      summary: Download Mac installer script
      description: |
        This endpoint returns a Mac script that can be used to install the Run:ai CLI.
      operationId: get_installer_mac
      tags:
        - Researcher Command Line Interface
      responses:
        '200':
          description: File download successful
          content:
            text/plain:
              schema:
                type: string
              example: Contents of the file
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/installer/mac/commands:
    get:
      summary: Get Mac installer script commands
      description: |
        This endpoint returns a Mac script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_mac_commands
      tags:
        - Researcher Command Line Interface
      responses:
        '200':
          description: A text commands to install the CLI on Mac
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Mac
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/installer/linux:
    get:
      summary: Download Linux installer script
      description: |
        This endpoint returns a Linux script that can be used to install the Run:ai CLI.
      operationId: get_installer_linux
      tags:
        - Researcher Command Line Interface
      responses:
        '200':
          description: File download successful
          content:
            text/plain:
              schema:
                type: string
              example: Contents of the file
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/installer/linux/commands:
    get:
      summary: Get Linux installer script commands
      description: |
        This endpoint returns a linux script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_linux_commands
      tags:
        - Researcher Command Line Interface
      responses:
        '200':
          description: A text commands to install the CLI on Linux
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Linux
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/installer/windows/commands:
    get:
      summary: Get Windows MSI installer script commands
      description: |
        This endpoint returns a windows script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_windows_commands
      tags:
        - Researcher Command Line Interface
      responses:
        '200':
          description: A text commands to install the CLI on Windows
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Windows
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/dist/{operatingSystem}/{architecture}/runai:
    get:
      summary: Download RunAI Researcher command line binary
      description: |
        This endpoint returns a binary file that run the Run:ai CLI.
      operationId: get_binary
      tags:
        - Researcher Command Line Interface
      parameters:
        - $ref: '#/components/parameters/OperatingSystem'
        - $ref: '#/components/parameters/Architecture'
      responses:
        '200':
          description: File download successful
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
              example: Contents of the file
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli-exposer/docs/{documentName}:
    get:
      summary: Get CLI document by name
      description: |
        This endpoint returns a document of help for the Run:ai CLI.
      operationId: get_manual_document
      tags:
        - Researcher Command Line Interface
      parameters:
        - $ref: '#/components/parameters/DocumentName'
      responses:
        '200':
          description: Executed successfully.
          content:
            text/html:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/installer/unix:
    get:
      deprecated: true
      summary: Download Unix installer script
      description: |
        This endpoint returns a unix script that can be used to install the Run:ai CLI.
      operationId: get_installer_unix_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      responses:
        '200':
          description: File download successful
          content:
            text/plain:
              schema:
                type: string
              example: Contents of the file
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/installer/unix/commands:
    get:
      deprecated: true
      summary: Get Unix installer script commands
      description: |
        This endpoint returns a unix script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_unix_commands_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      responses:
        '200':
          description: A text commands to install the CLI on Unix
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Unix
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/installer/mac:
    get:
      deprecated: true
      summary: Download Mac installer script
      description: |
        This endpoint returns a Mac script that can be used to install the Run:ai CLI.
      operationId: get_installer_mac_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      responses:
        '200':
          description: File download successful
          content:
            text/plain:
              schema:
                type: string
              example: Contents of the file
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/installer/mac/commands:
    get:
      deprecated: true
      summary: Get Mac installer script commands
      description: |
        This endpoint returns a Mac script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_mac_commands_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      responses:
        '200':
          description: A text commands to install the CLI on Mac
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Mac
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/installer/linux:
    get:
      deprecated: true
      summary: Download Linux installer script
      description: |
        This endpoint returns a Linux script that can be used to install the Run:ai CLI.
      operationId: get_installer_linux_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      responses:
        '200':
          description: File download successful
          content:
            text/plain:
              schema:
                type: string
              example: Contents of the file
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/installer/linux/commands:
    get:
      deprecated: true
      summary: Get Linux installer script commands
      description: |
        This endpoint returns a linux script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_linux_commands_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      responses:
        '200':
          description: A text commands to install the CLI on Linux
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Linux
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/installer/windows/commands:
    get:
      deprecated: true
      summary: Get Windows MSI installer script commands
      description: |
        This endpoint returns a windows script commands that can be used to install the Run:ai CLI.
      operationId: get_installer_windows_commands_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      responses:
        '200':
          description: A text commands to install the CLI on Windows
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Command1'
              example: Contents of the commands to install the CLI on Windows
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/dist/{operatingSystem}/{architecture}/runai:
    get:
      deprecated: true
      summary: Download RunAI Researcher command line binary
      description: |
        This endpoint returns a binary file that run the Run:ai CLI.
      operationId: get_binary_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      parameters:
        - $ref: '#/components/parameters/OperatingSystem'
        - $ref: '#/components/parameters/Architecture'
      responses:
        '200':
          description: File download successful
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
              example: Contents of the file
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/cli/docs/{documentName}:
    get:
      deprecated: true
      summary: Get CLI document by name
      description: |
        This endpoint returns a document of help for the Run:ai CLI.
      operationId: get_manual_document_deprecated
      tags:
        - Researcher Command Line Interface Deprecated
      parameters:
        - $ref: '#/components/parameters/DocumentName'
      responses:
        '200':
          description: Executed successfully.
          content:
            text/html:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/audit/log:
    get:
      description: Get audit logs based on query params filter
      summary: Get audit logs
      operationId: getAuditLogs
      tags:
        - AuditLogs
      parameters:
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/NumberOfSamples'
        - $ref: '#/components/parameters/SortOrder'
        - $ref: '#/components/parameters/AuditLogSort'
        - $ref: '#/components/parameters/AuditLogFilter'
      responses:
        '200':
          description: Executed successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - logs
                properties:
                  total:
                    type: integer
                    example: 2000
                  next:
                    type: integer
                    example: 100
                  audit_logs:
                    $ref: '#/components/schemas/AuditLogs'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/audit/log/file:
    get:
      description: Download audit logs as a file, based on query params filter
      summary: Download audit logs
      operationId: downloadAuditLogs
      tags:
        - AuditLogs
      parameters:
        - in: query
          name: file_type
          schema:
            type: string
            enum:
              - CSV
              - JSON
            default: CSV
          required: false
        - $ref: '#/components/parameters/StartRequired'
        - $ref: '#/components/parameters/EndRequired'
        - $ref: '#/components/parameters/NumberOfSamples'
        - $ref: '#/components/parameters/AuditLogFilter'
      responses:
        '200':
          description: File downloaded
          content:
            application/octet-stream: {}
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/notification-types:
    get:
      tags:
        - Notification Types
      operationId: getNotificationTypes
      summary: Get notification types
      description: Get list of available notification types
      responses:
        '200':
          description: Notification types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationTypes'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/notification-state:
    get:
      deprecated: true
      tags:
        - Notification State
      operationId: getNotificationState
      summary: Get notification state
      description: Get notification state
      responses:
        '200':
          description: Notification state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationState'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      deprecated: true
      tags:
        - Notification State
      operationId: updateNotificationState
      summary: Update notification state
      description: Update tenant notifications state
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationState'
      responses:
        '200':
          description: Notification Channel config
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationState'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/email:
    post:
      tags:
        - Email
      operationId: createEmail
      summary: Create email notification channel
      description: Create email notification channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailChannel'
      responses:
        '200':
          description: Email notification channel created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailChannel'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Email
      operationId: deleteEmail
      summary: Delete email notification channel
      description: Delete email notification channel
      responses:
        '204':
          description: Email notification channel deleted
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      tags:
        - Email
      operationId: getEmail
      summary: Get email notification channel
      description: Get email notification channel
      responses:
        '200':
          description: Email notification channel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailChannel'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - Email
      operationId: updateEmail
      summary: Update email notification channel
      description: Update email notification channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailChannel'
      responses:
        '200':
          description: Email notification channel updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailChannel'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      tags:
        - Email
      operationId: patchEmail
      summary: Patch email notification channel
      description: Patch email notification channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailChannelForPatch'
      responses:
        '200':
          description: Email notification channel patched
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailChannel'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/email/state:
    get:
      tags:
        - Email
      operationId: getEmailNotificationState
      summary: Get email notification state
      description: Get email notification state
      responses:
        '200':
          description: Email Notification state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationStateStatus'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      tags:
        - Email
      operationId: updateEmailNotificationState
      summary: Update email notification state
      description: Update tenant email notification state
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationStateStatus'
      responses:
        '200':
          description: Email Notification state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationStateStatus'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/email/validate:
    post:
      tags:
        - Email
      operationId: validateEmail
      summary: Validate configuration of Email Channel
      description: Validate configuration of Email Channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailChannelConfig'
      responses:
        '200':
          description: Email Channel validity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateSinkResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/notification-channels:
    get:
      tags:
        - NotificationChannels
      operationId: getNotificationChannels
      summary: Get supported Notification Channels
      description: Get supported Notification Channels
      responses:
        '200':
          description: Notification Channel types
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NotificationChannelMeta'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - NotificationChannels
      operationId: createNotificationChannel
      summary: Create notification channel
      description: Create notification channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationChannel'
      responses:
        '200':
          description: Notification channel created
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/slack:
    get:
      tags:
        - Slack
      operationId: getSlack
      summary: Get slack notification channel
      description: Get slack notification channel
      responses:
        '200':
          description: Slack notification channel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SlackNotificationChannel'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      tags:
        - Slack
      operationId: patchSlack
      summary: Patch slack notification channel
      description: Patch slack notification channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SlackNotificationChannelPatchRequest'
      responses:
        '200':
          description: Slack notification channel patched
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SlackNotificationChannel'
  /api/v1/slack/state:
    get:
      tags:
        - Slack
      operationId: getSlackNotificationState
      summary: Get slack notification state
      description: Get slack notification state
      responses:
        '200':
          description: Slack Notifications state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationStateStatus'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      tags:
        - Slack
      operationId: updateSlackNotificationState
      summary: Update slack notification state
      description: Update tenant slack notification state
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationStateStatus'
      responses:
        '200':
          description: Slack Notifications state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationStateStatus'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/slack/app:
    post:
      tags:
        - Slack
      operationId: createSlackApp
      summary: Create Slack app
      description: Create Slack app
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSlackAppRequestBody'
      responses:
        '200':
          description: Created Slack app response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSlackAppResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Slack
      operationId: deleteSlackApp
      summary: Delete Slack app
      description: Delete Slack app
      responses:
        '200':
          description: Deleted Slack app
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/slack/workspace:
    post:
      tags:
        - Slack
      operationId: connectSlackWorkspace
      summary: Connect Slack workspace
      description: Connect Slack workspace
      responses:
        '200':
          description: Slack OAuth redirect URL
          content:
            application/json:
              schema:
                type: object
                properties:
                  redirectUrl:
                    type: string
                    format: uri
                    example: https://slack.com/oauth/v2/authorize?...
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '500':
          $ref: '#/components/responses/500InternalServerError'
    delete:
      tags:
        - Slack
      operationId: disconnectSlackWorkspace
      summary: Disconnect Slack workspace
      description: Disconnect Slack workspace
      responses:
        '200':
          description: Disconnected Slack workspace
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /api/v1/slack/validate:
    post:
      tags:
        - Slack
      operationId: validateSlack
      summary: Validate configuration of Slack Channel
      description: Validate configuration of Slack Channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SlackNotificationChannelConfig'
      responses:
        '200':
          description: Slack Channel validity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateSinkResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/notification-channels/slack/create-app:
    post:
      deprecated: true
      tags:
        - Slack
      operationId: createSlackAppDeprecated
      summary: Create Slack app
      description: Create Slack app
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSlackAppRequestBody'
      responses:
        '200':
          description: Created Slack app response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSlackAppResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/notification-channels/{name}:
    parameters:
      - $ref: '#/components/parameters/NotificationChannelName'
    get:
      tags:
        - NotificationChannels
      operationId: getNotificationChannel
      summary: Get notification channel
      description: Get notification channel
      responses:
        '200':
          description: Notification channel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationChannelResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    patch:
      tags:
        - NotificationChannels
      operationId: patchNotificationChannel
      summary: Patch notification channel
      description: Patch notification channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationChannelForPatch'
      responses:
        '200':
          description: Notification channel patched
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    put:
      tags:
        - NotificationChannels
      operationId: updateNotificationChannel
      summary: Update notification channel
      description: Update notification channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationChannel'
      responses:
        '200':
          description: Notification channel updated
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - NotificationChannels
      operationId: deleteNotificationChannel
      summary: Delete notification channel
      description: Delete notification channel
      responses:
        '204':
          description: Notification channel deleted
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/validate-notification-channel:
    post:
      deprecated: true
      tags:
        - NotificationChannels
      operationId: validateNotificationChannel
      summary: Validate configuration of Notification Channel
      description: Validate configuration of Notification Channel
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationChannelForValidate'
      responses:
        '200':
          description: Notification Channel validity
          content:
            application/json:
              schema:
                example: true
                type: boolean
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/subscriptions:
    get:
      tags:
        - Subscriptions
      operationId: getUserSubscriptions
      summary: Get user subscriptions
      description: Get user subscriptions
      responses:
        '200':
          description: User subscriptions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscriptions'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    post:
      tags:
        - Subscriptions
      operationId: createSubscription
      summary: Create user subscription
      description: Create user subscription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Subscription'
      responses:
        '200':
          description: Subscription created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/subscriptions/{id}:
    parameters:
      - $ref: '#/components/parameters/SubscriptionId'
    put:
      tags:
        - Subscriptions
      operationId: updateSubscription
      summary: Update user subscription
      description: Update user subscription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionForPut'
      responses:
        '200':
          description: Subscription created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    delete:
      tags:
        - Subscriptions
      operationId: deleteSubscription
      summary: Delete user subscription
      description: Delete user subscription
      responses:
        '204':
          description: Subscription deleted successfully
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '501':
          $ref: '#/components/responses/501NotImplemented'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
components:
  schemas:
    ClusterIdOptional:
      description: The id of the cluster.
      type: string
      format: uuid
      minLength: 1
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
      nullable: true
    DepartmentIdOptional:
      description: The id of the department.
      type: string
      minLength: 1
      example: 2
      nullable: true
      pattern: .*
    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
    TenantId:
      description: The id of the tenant.
      type: integer
      format: int32
      example: 1001
    ClusterReportedStatusPlatform:
      nullable: true
      type: object
      properties:
        type:
          nullable: true
          type: string
          enum:
            - vanilla
            - openshift
            - rke
            - gke
            - aks
            - eks
          description: the cluster platform type
        kubeVersion:
          nullable: true
          type: string
          description: the cluster kubernetes version
    ClusterReportedConfig:
      description: Holds cluster configuration values.
      type: object
      properties:
        workloadOwnershipProtection:
          type: boolean
          nullable: true
          description: indicates if the cluster workload ownership protection is enabled
          example: false
        subdomainEnabled:
          type: boolean
          nullable: true
          description: indicates if the cluster subdomain is enabled
          example: false
        ingressClass:
          type: string
          nullable: true
          description: the ingress class that is configured for the cluster
          example: nginx
        gatewayName:
          type: string
          nullable: true
          description: the name of the Gateway API gateway resource configured for the cluster
          example: my-gateway
        gatewayNamespace:
          type: string
          nullable: true
          description: the namespace of the Gateway API gateway resource configured for the cluster
          example: gateway-system
      nullable: true
    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'
    ClusterDependenciesStatus:
      type: object
      required:
        - required
        - optional
      properties:
        required:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ClusterDependencyStatus'
        optional:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ClusterDependencyStatus'
    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:
          $ref: '#/components/schemas/ClusterReportedStatusPlatform'
        config:
          $ref: '#/components/schemas/ClusterReportedConfig'
        dependencies:
          $ref: '#/components/schemas/ClusterDependenciesStatus'
    ClusterState:
      type: string
      description: The cluster's state.
      enum:
        - WaitingToConnect
        - Connected
        - Disconnected
        - MissingPrerequisites
        - ServiceIssues
        - Unknown
    ClusterDisplayedStatus:
      type: object
      description: The cluster's displayed status.
      nullable: true
      allOf:
        - $ref: '#/components/schemas/ClusterReportedStatus'
        - type: object
          properties:
            state:
              $ref: '#/components/schemas/ClusterState'
    DisplayedCluster:
      type: object
      required:
        - uuid
        - tenantId
        - name
        - createdAt
      properties:
        uuid:
          type: string
          format: uuid
        tenantId:
          $ref: '#/components/schemas/TenantId'
        name:
          type: string
          minLength: 1
          maxLength: 253
        createdAt:
          type: string
          format: date-time
        domain:
          type: string
          nullable: true
          minLength: 1
          maxLength: 253
        version:
          type: string
          nullable: true
          minLength: 1
          maxLength: 50
        status:
          $ref: '#/components/schemas/ClusterDisplayedStatus'
        updatedAt:
          type: string
          format: date-time
          nullable: true
        deletedAt:
          type: string
          nullable: true
          format: date-time
        lastLiveness:
          type: string
          nullable: true
          format: date-time
        deleteRequestedAt:
          description: the timestamp value of when the cluster deletion request was received
          type: string
          format: date-time
          nullable: true
      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
    NodeFilterSortFields:
      type: string
      enum:
        - name
        - status
        - nodePool
        - gpuType
        - nvLinkDomainUid
        - nvLinkCliqueId
        - clusterUuid
    NodeStatusConditionDetails:
      type: object
      required:
        - type
        - reason
      properties:
        type:
          type: string
          description: Type of node condition.
        reason:
          type: string
          description: (brief) reason for the condition's last transition.
          example: KubeletNotReady
        message:
          type: string
          description: Human readable message indicating details about last transition.
          example: container runtime status check may not have completed yet
      x-schema-name: NodeStatusConditionDetails
    NodeTaint:
      type: object
      required:
        - key
        - effect
      properties:
        key:
          type: string
          description: The taint key to be applied to a node.
          example: foo
        value:
          type: string
          description: The taint value corresponding to the taint key.
          example: bar
        effect:
          type: string
          description: The effect of the taint on pods that do not tolerate the taint.
          enum:
            - NoSchedule
            - PreferNoSchedule
            - NoExecute
      x-schema-name: NodeTaint
    GpuInfo:
      type: object
      nullable: true
      required:
        - gpuType
        - gpuCount
      properties:
        gpuType:
          type: string
          example: Tesla-V100
        gpuCount:
          type: integer
      x-schema-name: GpuInfo
    LabelValue:
      type: string
      pattern: ^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$
      minLength: 1
      maxLength: 63
    NetworkTopologyLabel:
      type: object
      required:
        - labelKey
        - labelValue
      properties:
        labelKey:
          type: string
          description: The Kubernetes node label key that identifies a topology level (for example, topology.kubernetes.io/zone or cloud.provider.com/topology-rack).
        labelValue:
          $ref: '#/components/schemas/LabelValue'
          description: The value of the Kubernetes node label for the specified labelKey on this node (for example, zone-a or rack-1). This value identifies the node’s placement within the corresponding topology level.
    NetworkTopologyLabelsOptional:
      type: array
      items:
        $ref: '#/components/schemas/NetworkTopologyLabel'
      description: A list of Kubernetes node label key/value pairs that represent the node’s position in the cluster’s network topology (for example, region, zone, block, rack, or hostname). The topology is attached to the node pool on which the workload runs. The label order represents the hierarchy, from farthest (first) to closest (last). These labels are used by the NVIDIA Run:ai Scheduler when making placement decisions.
      nullable: true
    NodeInfo:
      type: object
      required:
        - status
        - nodePool
        - createdAt
      properties:
        status:
          type: string
          enum:
            - Ready
            - NotReady
            - Unknown
          description: The calculated status of the node.
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/NodeStatusConditionDetails'
        taints:
          type: array
          items:
            $ref: '#/components/schemas/NodeTaint'
        nodePool:
          type: string
          description: The node's NodePool.
          example: node-pool-1
        createdAt:
          type: string
          format: date-time
        gpuInfo:
          $ref: '#/components/schemas/GpuInfo'
        nvLinkDomainUid:
          type: string
          description: NV Link Domain Uid
          example: nvlink-domain-uid
          nullable: true
        nvLinkCliqueId:
          type: string
          description: NV Link Clique Id
          example: clique-id
          nullable: true
        networkTopologyLabels:
          $ref: '#/components/schemas/NetworkTopologyLabelsOptional'
      x-schema-name: NodeInfo
    NodeAdditionalFields:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the node
          example: worker-node-1
      x-schema-name: NodeAdditionalFields
    ClusterId:
      description: The id of the cluster.
      type: string
      format: uuid
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
    NodeAdditionalReadFields:
      type: object
      required:
        - clusterUuid
        - updatedAt
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the node.
        clusterUuid:
          $ref: '#/components/schemas/ClusterId'
        updatedAt:
          type: string
          format: date-time
      x-schema-name: NodeAdditionalReadFields
    Node:
      allOf:
        - $ref: '#/components/schemas/NodeInfo'
        - $ref: '#/components/schemas/NodeAdditionalFields'
        - $ref: '#/components/schemas/NodeAdditionalReadFields'
      x-schema-name: Node
    Nodes:
      type: object
      required:
        - nodes
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/Node'
      x-schema-name: Nodes
    NodeForSync:
      allOf:
        - $ref: '#/components/schemas/NodeAdditionalFields'
        - type: object
          required:
            - nodeInfo
          properties:
            nodeInfo:
              $ref: '#/components/schemas/NodeInfo'
      x-schema-name: NodeForSync
    ClusterCreationRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          minLength: 0
          maxLength: 253
        domain:
          type: string
          minLength: 0
          maxLength: 253
        version:
          type: string
          minLength: 0
          maxLength: 50
    ClustersMinimalData:
      type: object
      required:
        - uuid
        - tenantId
        - name
        - createdAt
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
          format: .*
        tenantId:
          $ref: '#/components/schemas/TenantId'
        version:
          type: string
          format: .*
          nullable: true
        domain:
          type: string
          format: .*
          nullable: true
        platform:
          $ref: '#/components/schemas/ClusterReportedStatusPlatform'
        state:
          $ref: '#/components/schemas/ClusterState'
        ingressClass:
          type: string
          nullable: true
          description: the ingress class that is configured for the cluster
          example: nginx
        dependenciesStatus:
          $ref: '#/components/schemas/ClusterDependenciesStatus'
    ClusterUpdateRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          minLength: 0
          maxLength: 253
    HttpResponse:
      required:
        - code
        - message
      properties:
        code:
          type: integer
          minimum: 100
          maximum: 599
        message:
          type: string
    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
    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
    GroupedMeasurementResponse:
      type: object
      required:
        - type
        - values
      properties:
        type:
          type: string
          description: specifies what data returned
          example: ALLOCATED_GPU
        labels:
          type: object
          nullable: true
          description: labels of the metric measurement
          example: '{''gpu'': ''3''}'
          additionalProperties:
            type: string
        values:
          type: array
          nullable: true
          items:
            type: object
            required:
              - value
              - timestamp
            properties:
              value:
                type: string
                example: '85'
              timestamp:
                type: string
                format: date-time
                nullable: true
                example: '2023-06-06 12:09:18.211'
        groups:
          type: array
          description: Group information for this measurement
          items:
            $ref: '#/components/schemas/GroupedMeasurementGroup'
    GroupedMetricsResponse:
      type: object
      required:
        - measurements
      properties:
        measurements:
          type: array
          items:
            $ref: '#/components/schemas/GroupedMeasurementResponse'
    MeasurementResponse:
      type: object
      required:
        - type
        - values
      properties:
        type:
          type: string
          description: specifies what data returned
          example: ALLOCATED_GPU
        labels:
          type: object
          nullable: true
          description: labels of the metric measurement
          example: '{''gpu'': ''3''}'
          additionalProperties:
            type: string
        values:
          type: array
          nullable: true
          items:
            type: object
            required:
              - value
              - timestamp
            properties:
              value:
                type: string
                example: '85'
              timestamp:
                type: string
                format: date-time
                nullable: true
                example: '2023-06-06 12:09:18.211'
    MetricsResponse:
      type: object
      required:
        - measurements
      properties:
        measurements:
          type: array
          items:
            $ref: '#/components/schemas/MeasurementResponse'
    PlacementStrategy:
      type: string
      enum:
        - spread
        - binpack
      example: spread
      nullable: true
    NodepoolGPUNetworkAccelerationDetection:
      type: string
      enum:
        - Use
        - DontUse
        - Auto
      nullable: true
      default: Auto
      description: GPUNetworkAccelerationDetection is a strategy to use for GPU Network Acceleration detection
    NetworkTopologyNameOptional:
      type: string
      nullable: true
      description: Name of the network topology
      maxLength: 63
      minLength: 1
      pattern: ^[a-z]([a-z0-9-]*[a-z0-9])?$
      example: default-topology
    NetworkTopologyIdOptional:
      type: string
      format: uuid
      nullable: true
      description: The unique identifier for the network topology
      example: 123e4567-e89b-12d3-a456-426614174000
    GPUResourceOptimization:
      type: object
      nullable: true
      properties:
        swapEnabled:
          type: boolean
          description: Indicates if swap is enabled on the node pool
          example: true
          default: false
          nullable: true
        cpuSwapMemorySize:
          type: string
          description: Size of the swap cpu memory. Only allowed when swapEnabled is true
          example: 10000M
          default: 100G
          nullable: true
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
        reservedGpuMemoryForSwapOperations:
          type: string
          description: Reserved GPU memory for swap operations. Only allowed when swapEnabled is true
          example: 10G
          default: 2G
          nullable: true
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
        nodeLevelSchedulerEnabled:
          type: boolean
          description: Indicates if node level scheduler is enabled on the node pool. Replaces the deprecated 'overProvisioningRatio' field
          example: true
          default: false
          nullable: true
    TimeBasedFairShareWindowType:
      type: string
      enum:
        - sliding
        - tumbling
      example: tumbling
      nullable: true
      default: sliding
      description: |
        The method for evaluating the usage window.
         - sliding: A moving window that always evaluates the most recent time period. For example, a 7-day sliding window always considers the last 7 days.
         - tumbling: Fixed, non-overlapping intervals that reset at the end of each cycle. Requires tumblingWindowStartTime to define the cycle anchor.
    TimeBasedFairShare:
      type: object
      nullable: true
      description: Time-based fairshare configuration for the node pool. [Experimental].
      properties:
        enabled:
          type: boolean
          example: true
          nullable: true
          default: false
          description: |
            Enables time-based fairshare for the node pool. When true, the Scheduler adjusts fairshare based on historical resource usage over a defined time window, allowing past consumption to influence scheduling order. When false, scheduling is based only on the current queue state. [Experimental]
        historicalUsageWeight:
          type: number
          format: float
          nullable: true
          example: 1.5
          default: 1
          description: |
            Set the weight value that determines how a project’s historical resource usage affects its fairshare.






             - 0.0: Ignore historical usage data (100% current usage).
             - 1.0: Historical usage data has higher impact, it may cause fairshare to be 0.
             - Values between 0.0 and 1.0 combine historical and current usage to maintain a balanced fairshare
             - Values above 1 will cause historical usage to have an even higher impact on fairshare.
        decayHalfLife:
          type: string
          nullable: true
          example: 24h
          default: 0h
          pattern: ^(0|[+]?((\d+(\.\d+)?)(m|h|d))+$)
          description: |
            Set the half-life time to define the decay rate of a project’s historical resource usage. The half-life defines how long it takes for past usage to diminish to half of its original influence on a project's fairshare.






             - 0: disables decay; all historical usage is weighted equally.
             - > 0: older usage gradually contributes less over time (e.g., with a 24-hour half-life, usage from 24 hours ago contributes 50%, from 48 hours ago 25%, and so on).
        windowType:
          $ref: '#/components/schemas/TimeBasedFairShareWindowType'
        windowDuration:
          type: string
          nullable: true
          example: 2d
          default: 7d
          pattern: ^(0|[+]?((\d+(\.\d+)?)(m|h|d))+$)
          description: |
            The time period over which historical usage is evaluated. Only usage within this window contributes to fairshare. For sliding windows, this is a moving period (e.g., 7d = always the last 7 days). For tumbling windows, this is the fixed cycle duration after which the window resets.
        tumblingWindowStartTime:
          type: string
          format: date-time
          nullable: true
          example: '2025-01-06T08:00:00Z'
          description: |
            An RFC-3339 timestamp that defines the start time for all tumbling windows. Used only when windowType = Tumbling. This timestamp marks the beginning of the first fixed window, and subsequent windows repeat at intervals equal to the configured WindowDuration.
            For example, with a 7-day window, an anchor of 2025-01-06T08:00:00Z produces weekly windows starting every Monday at 08:00 UTC.
    SchedulingConfiguration:
      type: object
      nullable: true
      properties:
        placementStrategy:
          description: Scheduling strategy per resource
          properties:
            cpu:
              $ref: '#/components/schemas/PlacementStrategy'
            gpu:
              $ref: '#/components/schemas/PlacementStrategy'
        minGuaranteedRuntime:
          description: Minimum duration (e.g., 5d8h40m) that a preemptible workload is guaranteed to run once scheduled and bound to a node. During this period, it is considered non-preemptible even if a higher-priority workload becomes eligible. Defaults to 0 (immediate preemption allowed).
          type: string
          example: 5d8h40m
          nullable: true
          pattern: ^(0|[+]?((\d+(\.\d+)?)(ns|us|µs|μs|ms|s|m|h|d|w))+$)
        timeBasedFairShare:
          $ref: '#/components/schemas/TimeBasedFairShare'
    NodepoolCreateResponseFields:
      type: object
      required:
        - name
        - labelKey
        - labelValue
        - clusterId
      properties:
        name:
          type: string
          example: v100
          minLength: 1
        labelKey:
          type: string
          description: Label key for associated nodes to the Node Pool (with value as in labelValue)
          example: node-type
          minLength: 1
        labelValue:
          type: string
          description: Label value for associated nodes to the Node Pool (with key as in labelKey)
          example: type-x
          minLength: 1
        clusterId:
          type: string
          format: uuid
          example: d73a738f-fab3-430a-8fa3-5241493d7128
        overProvisioningRatio:
          type: integer
          example: 1
          minimum: 1
          maximum: 5
          default: 1
          nullable: true
          deprecated: true
        placementStrategy:
          deprecated: true
          description: scheduling strategy per resource
          properties:
            cpu:
              $ref: '#/components/schemas/PlacementStrategy'
            gpu:
              $ref: '#/components/schemas/PlacementStrategy'
        gpuNetworkAccelerationLabelKey:
          description: Label key by which to determine GPUNetworkAccelerationDetection nodes
          type: string
        gpuNetworkAccelerationDetection:
          $ref: '#/components/schemas/NodepoolGPUNetworkAccelerationDetection'
        networkTopologyName:
          $ref: '#/components/schemas/NetworkTopologyNameOptional'
        networkTopologyId:
          $ref: '#/components/schemas/NetworkTopologyIdOptional'
        gpuResourceOptimization:
          $ref: '#/components/schemas/GPUResourceOptimization'
        schedulingConfiguration:
          $ref: '#/components/schemas/SchedulingConfiguration'
    NodepoolPhase:
      type: string
      enum:
        - Creating
        - Updating
        - Deleting
        - Empty
        - Unschedulable
        - Ready
        - Deleted
      description: Phase of Node Pool
    NodepoolSyncUpdateFields:
      type: object
      properties:
        labelKey:
          type: string
          description: Label key for associated nodes to the Node Pool (with value as in labelValue)
          example: node-type
          minLength: 1
          nullable: true
        labelValue:
          type: string
          description: Label value for associated nodes to the Node Pool (with key as in labelKey)
          example: type-x
          minLength: 1
          nullable: true
        overProvisioningRatio:
          type: integer
          example: 1
          minimum: 1
          maximum: 5
          default: 1
          nullable: true
          deprecated: true
        placementStrategy:
          description: scheduling strategy per resource
          deprecated: true
          properties:
            cpu:
              $ref: '#/components/schemas/PlacementStrategy'
            gpu:
              $ref: '#/components/schemas/PlacementStrategy'
        gpuNetworkAccelerationLabelKey:
          description: Label key by which to determine GPUNetworkAccelerationDetection nodes
          type: string
        gpuNetworkAccelerationDetection:
          $ref: '#/components/schemas/NodepoolGPUNetworkAccelerationDetection'
        gpuResourceOptimization:
          $ref: '#/components/schemas/GPUResourceOptimization'
        schedulingConfiguration:
          $ref: '#/components/schemas/SchedulingConfiguration'
    NodepoolConditionDetails:
      type: object
      required:
        - type
        - reason
      properties:
        type:
          type: string
          description: Type of Nodepool condition.
        reason:
          type: string
          description: (brief) reason for the condition's last transition.
          example: TopologyMismatch
        message:
          type: string
          description: Human readable message indicating details about last transition.
          example: Network Topology labels mismatch
        status:
          type: string
          description: The status of the condition, can be True or False
          enum:
            - 'True'
            - 'False'
        nodes:
          type: array
          description: Names of the nodes related to the nodepool condition
          items:
            type: string
          example:
            - node1
            - node2
      x-schema-name: NodepoolConditionDetails
    NodepoolSyncFields:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          example: v100
        phase:
          $ref: '#/components/schemas/NodepoolPhase'
        phaseMessage:
          type: string
          description: Message for status of Node Pool
          example: all nodes are down
        status:
          allOf:
            - $ref: '#/components/schemas/NodepoolSyncUpdateFields'
            - type: object
              properties:
                conditions:
                  type: array
                  items:
                    $ref: '#/components/schemas/NodepoolConditionDetails'
                gpuNetworkAccelerationDetected:
                  description: Signals to all relevant parties about GPUNetworkAcceleration being detected in some nodepool's nodes
                  type: boolean
                nodes:
                  type: array
                  items:
                    type: string
                    example: node1
    NodepoolCalculatedFields:
      type: object
      required:
        - id
        - tenantId
        - clusterName
        - createdBy
        - createdAt
        - updatedBy
        - updatedAt
        - isDefault
      properties:
        id:
          type: string
          description: The NodePool id
          readOnly: true
          example: 5
        tenantId:
          description: The id of the tenant.
          type: integer
          example: 1
          format: int32
        clusterName:
          type: string
          example: prod-cluster
        createdBy:
          type: string
          example: user@lab.com
        createdAt:
          type: string
          format: date-time
        updatedBy:
          type: string
          example: user@lab.com
        updatedAt:
          type: string
          format: date-time
        deletedBy:
          type: string
          example: user@lab.com
        deletedAt:
          type: string
          nullable: true
          format: date-time
        isDefault:
          type: boolean
          description: Is the Node Pool is the cluster default
          example: false
    Nodepool:
      allOf:
        - $ref: '#/components/schemas/NodepoolCreateResponseFields'
        - $ref: '#/components/schemas/NodepoolSyncFields'
        - $ref: '#/components/schemas/NodepoolCalculatedFields'
    NodepoolId:
      type: string
      description: The NodePool id
      readOnly: true
      example: 5
    NodepoolMinimal:
      type: object
      required:
        - id
        - name
        - clusterId
      properties:
        id:
          $ref: '#/components/schemas/NodepoolId'
        name:
          type: string
          example: v100
          minLength: 1
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        phase:
          $ref: '#/components/schemas/NodepoolPhase'
        gpuNetworkAccelerationDetected:
          type: boolean
          description: Signals to all relevant parties about GPUNetworkAcceleration being detected in some nodepool's nodes
    NodepoolSortFilterFields:
      type: string
      enum:
        - name
        - phase
        - clusterId
        - createdAt
        - updatedAt
        - networkTopologyName
        - gpuNetworkAccelerationDetection
        - gpuNetworkAccelerationDetected
        - gpuNetworkAccelerationLabelKey
        - swapEnabled
        - nodeLevelSchedulerEnabled
    LabelKey:
      type: string
      minLength: 1
      maxLength: 253
    NodepoolCreateFields:
      type: object
      required:
        - name
        - labelKey
        - labelValue
        - clusterId
      properties:
        name:
          type: string
          example: v100
          minLength: 1
          maxLength: 63
        labelKey:
          description: Label key for associated nodes to the Node Pool (with value as in labelValue)
          example: node-type
          allOf:
            - $ref: '#/components/schemas/LabelKey'
        labelValue:
          description: Label value for associated nodes to the Node Pool (with key as in labelKey)
          example: type-x
          allOf:
            - $ref: '#/components/schemas/LabelValue'
        clusterId:
          type: string
          format: uuid
          example: d73a738f-fab3-430a-8fa3-5241493d7128
        overProvisioningRatio:
          type: integer
          example: 1
          minimum: 1
          maximum: 5
          default: 1
          nullable: true
          deprecated: true
        placementStrategy:
          deprecated: true
          description: scheduling strategy per resource
          properties:
            cpu:
              $ref: '#/components/schemas/PlacementStrategy'
            gpu:
              $ref: '#/components/schemas/PlacementStrategy'
        gpuNetworkAccelerationLabelKey:
          description: Label key by which to determine GPUNetworkAccelerationDetection nodes
          type: string
          nullable: true
        gpuNetworkAccelerationDetection:
          $ref: '#/components/schemas/NodepoolGPUNetworkAccelerationDetection'
        gpuResourceOptimization:
          $ref: '#/components/schemas/GPUResourceOptimization'
        schedulingConfiguration:
          $ref: '#/components/schemas/SchedulingConfiguration'
        networkTopologyId:
          $ref: '#/components/schemas/NetworkTopologyIdOptional'
    NodepoolMinimalSortFields:
      type: string
      enum:
        - clusterId
      description: Fields available for sorting nodepool metadata
    NodepoolUpdateFields:
      type: object
      properties:
        labelKey:
          type: string
          nullable: true
          description: Label key for associated nodes to the Node Pool (with value as in labelValue)
          example: node-type
          allOf:
            - $ref: '#/components/schemas/LabelKey'
        labelValue:
          type: string
          nullable: true
          description: Label value for associated nodes to the Node Pool (with key as in labelKey)
          example: type-x
          allOf:
            - $ref: '#/components/schemas/LabelValue'
        overProvisioningRatio:
          type: integer
          example: 1
          minimum: 1
          maximum: 5
          default: 1
          nullable: true
          deprecated: true
        placementStrategy:
          deprecated: true
          description: scheduling strategy per resource
          properties:
            cpu:
              $ref: '#/components/schemas/PlacementStrategy'
            gpu:
              $ref: '#/components/schemas/PlacementStrategy'
        gpuNetworkAccelerationLabelKey:
          description: Label key by which to determine GPUNetworkAccelerationDetection nodes
          type: string
          nullable: true
        gpuNetworkAccelerationDetection:
          $ref: '#/components/schemas/NodepoolGPUNetworkAccelerationDetection'
        gpuResourceOptimization:
          $ref: '#/components/schemas/GPUResourceOptimization'
        schedulingConfiguration:
          $ref: '#/components/schemas/SchedulingConfiguration'
        networkTopologyId:
          $ref: '#/components/schemas/NetworkTopologyIdOptional'
    LegacyPlacementStrategy:
      properties:
        cpu:
          type: string
          enum:
            - spread
            - binpack
          description: scheduling strategy for cpu
          example: spread
        gpu:
          type: string
          enum:
            - spread
            - binpack
          description: scheduling strategy for gpu
          example: spread
    LegacyUpdateNodePoolRequest:
      properties:
        labelKey:
          type: string
          description: key of node label for pool
          example: node-type
        labelValue:
          type: string
          description: value of node label for pool
          example: type-x
        overProvisioningRatio:
          type: integer
          example: 1
          default: 1
        placementStrategy:
          $ref: '#/components/schemas/LegacyPlacementStrategy'
    LegacyError:
      required:
        - code
        - message
      properties:
        code:
          type: integer
          minimum: 100
          maximum: 599
        message:
          type: string
    LegacyErrorInt32:
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
          minimum: 100
          maximum: 599
        message:
          type: string
    LegacyNodePoolLabelsRequest:
      properties:
        labelKey:
          type: string
          description: key of node label for pool
          example: node-type
        labelValue:
          type: string
          description: value of node label for pool
          example: type-x
    LegacyNodePoolCreateRequest:
      properties:
        name:
          type: string
          description: Node Pool Name
          example: node-pool-a
        overProvisioningRatio:
          type: integer
          example: 1
          default: 1
        labelKey:
          type: string
          description: Label key for associated nodes to the Node Pool (with value as in labelValue)
          example: node-type
        labelValue:
          type: string
          description: Label value for associated nodes to the Node Pool (with key as in labelKey)
          example: type-x
        placementStrategy:
          $ref: '#/components/schemas/LegacyPlacementStrategy'
    LegacyNodePool:
      allOf:
        - $ref: '#/components/schemas/LegacyNodePoolCreateRequest'
        - properties:
            id:
              type: number
              description: Node Pool unique id
              readOnly: true
              example: 5
            clusterId:
              type: string
              format: uuid
              description: Node Pool cluster id
              example: 71f69d83-ba66-4822-adf5-55ce55efd210
            createdAt:
              type: string
              description: Node Pool creation time
              format: date-time
              example: '2021-12-14T16:04:15.099Z'
            updatedAt:
              type: string
              description: Node Pool update time
              format: date-time
              example: '2021-12-14T16:04:15.099Z'
            deletedAt:
              type: string
              description: Node Pool delete time
              format: date-time
              example: '2021-12-14T16:04:15.099Z'
            status:
              type: string
              enum:
                - Creating
                - Updating
                - Deleting
                - Empty
                - Unschedulable
                - Ready
                - Deleted
              description: Node Pool status
              example: Creating
            statusMessage:
              type: string
              description: Node Pool status details
              example: all nodes are down
            nodes:
              type: string
              description: List of Nodes that are assigned to this nodepool - as json string
              example:
                - node-a
                - node-b
            createdBy:
              type: string
              description: Node Pool creator
              example: user@run.ai
            updatedBy:
              type: string
              description: Node Pool updater
              example: user@run.ai
            isDefault:
              type: boolean
              description: Is the Node Pool the default Node Pool for all nodes not assigned to any other Node Pool
              example: false
    NetworkTopologiesSource:
      type: string
      description: Identifier of the the source of the topology. Useful for tracking where the topology data originated (i.e. Run:ai, Cluster).
      example: Run.ai
      minLength: 1
      maxLength: 63
      pattern: ^[a-zA-Z0-9][a-zA-Z0-9_.-]*[a-zA-Z0-9]$
    NetworkTopologyName:
      type: string
      description: Name of the network topology
      maxLength: 63
      minLength: 1
      pattern: ^[a-z]([a-z0-9-]*[a-z0-9])?$
      example: default-topology
    NetworkTopologyLevels:
      type: array
      minItems: 1
      maxItems: 10
      items:
        type: string
        pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
        minLength: 1
        maxLength: 63
      description: Ordered array of network topology levels
      example:
        - cloud.provider.com/topology-block
        - cloud.provider.com/topology-rack
        - kubernetes.io/hostname
    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
    NodeTelemetryType:
      type: string
      enum:
        - READY_GPU_NODES
        - READY_GPUS
        - TOTAL_GPU_NODES
        - TOTAL_GPUS
        - IDLE_ALLOCATED_GPUS
        - FREE_GPUS
        - ALLOCATED_GPUS
        - TOTAL_CPU_CORES
        - USED_CPU_CORES
        - ALLOCATED_CPU_CORES
        - TOTAL_GPU_MEMORY_BYTES
        - USED_GPU_MEMORY_BYTES
        - TOTAL_CPU_MEMORY_BYTES
        - USED_CPU_MEMORY_BYTES
        - ALLOCATED_CPU_MEMORY_BYTES
        - FULLY_FREE_GPU_NODES
    TelemetryResponse:
      type: object
      required:
        - type
        - timestamp
        - values
      properties:
        type:
          type: string
          description: specifies what data returned
          example: ALLOCATION_RATIO
        timestamp:
          type: string
          format: date-time
          example: '2023-06-06 12:09:18.211'
        values:
          type: array
          items:
            type: object
            required:
              - value
            properties:
              value:
                type: string
                example: '85'
              groups:
                type: array
                description: columns the data is grouped by
                maxItems: 2
                items:
                  type: object
                  required:
                    - key
                    - value
                  properties:
                    key:
                      type: string
                      example: department
                    value:
                      type: string
                      example: '1'
                    name:
                      type: string
                      example: department-A
    NodeMetricType:
      type: string
      description: Specify which metric data to request.
      enum:
        - GPU_UTILIZATION_PER_GPU
        - GPU_UTILIZATION
        - GPU_MEMORY_UTILIZATION_PER_GPU
        - GPU_MEMORY_UTILIZATION
        - GPU_MEMORY_USAGE_BYTES_PER_GPU
        - GPU_MEMORY_USAGE_BYTES
        - GPU_ALLOCATION_PER_GPU
        - GPU_MEMORY_ALLOCATION_BYTES_PER_GPU
        - GPU_IDLE_TIME_SECONDS_PER_GPU
        - CPU_USAGE_CORES
        - CPU_UTILIZATION
        - CPU_MEMORY_USAGE_BYTES
        - CPU_MEMORY_UTILIZATION
        - GPU_OOMKILL_BURST_COUNT_PER_GPU
        - GPU_OOMKILL_IDLE_COUNT_PER_GPU
        - GPU_OOMKILL_SWAP_OUT_OF_RAM_COUNT_PER_GPU
        - GPU_GRAPHICS_ENGINE_ACTIVITY_PER_GPU
        - GPU_SM_ACTIVITY_PER_GPU
        - GPU_SM_OCCUPANCY_PER_GPU
        - GPU_TENSOR_ACTIVITY_PER_GPU
        - GPU_FP64_ENGINE_ACTIVITY_PER_GPU
        - GPU_FP32_ENGINE_ACTIVITY_PER_GPU
        - GPU_FP16_ENGINE_ACTIVITY_PER_GPU
        - GPU_MEMORY_BANDWIDTH_UTILIZATION_PER_GPU
        - GPU_NVLINK_TRANSMITTED_BANDWIDTH_PER_GPU
        - GPU_NVLINK_RECEIVED_BANDWIDTH_PER_GPU
        - GPU_PCIE_TRANSMITTED_BANDWIDTH_PER_GPU
        - GPU_PCIE_RECEIVED_BANDWIDTH_PER_GPU
        - NVLINK_BANDWIDTH_TOTAL
        - NVLINK_BANDWIDTH_TOTAL_PER_GPU
    NetworkTopologyUpdateFields:
      type: object
      required:
        - levels
      properties:
        levels:
          $ref: '#/components/schemas/NetworkTopologyLevels'
      x-schema-name: NetworkTopologyUpdateFields
    NetworkTopologyCreateRequest:
      allOf:
        - $ref: '#/components/schemas/NetworkTopologyUpdateFields'
        - type: object
          required:
            - name
            - clusterId
          properties:
            name:
              $ref: '#/components/schemas/NetworkTopologyName'
            clusterId:
              $ref: '#/components/schemas/ClusterId'
      x-schema-name: NetworkTopologyCreateRequest
    NetworkTopologyId:
      type: string
      format: uuid
      description: The unique identifier for the network topology
      example: 123e4567-e89b-12d3-a456-426614174000
    NetworkTopology:
      allOf:
        - $ref: '#/components/schemas/NetworkTopologyCreateRequest'
        - type: object
          required:
            - id
            - tenantId
            - createdAt
            - status
          properties:
            id:
              $ref: '#/components/schemas/NetworkTopologyId'
            tenantId:
              $ref: '#/components/schemas/TenantId'
            createdAt:
              type: string
              format: date-time
              description: The timestamp for when the network topology was created
            createdBy:
              type: string
              description: Identifier of the user who created the network topology
              example: user@lab.com
            phase:
              type: string
              description: 'Phase of the network topology in the cluster. Enum: Creating, Ready'
              example: Ready
            source:
              $ref: '#/components/schemas/NetworkTopologiesSource'
            nodePools:
              type: array
              items:
                type: string
              nullable: true
              readOnly: true
              description: List of node-pools associated with this network topology
              example:
                - a100
      x-schema-name: NetworkTopology
    CountResponse:
      type: object
      required:
        - count
      properties:
        count:
          type: integer
          format: int64
          example: 1
    Metadata:
      type: object
      required:
        - id
        - createdAt
        - updatedAt
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        deletedAt:
          type: string
          nullable: true
          format: date-time
        tenantId:
          $ref: '#/components/schemas/TenantId'
    ClusterUserConfig:
      type: object
      description: Cluster configuration
      allOf:
        - $ref: '#/components/schemas/Metadata'
        - type: object
          properties:
            clusterId:
              type: string
              format: uuid
    ComplianceIssues:
      properties:
        complianceIssues:
          type: array
          items:
            type: object
            required:
              - details
              - field
            properties:
              field:
                type: string
                example: compute.gpuDevicesRequest
              details:
                type: string
                example: value must be no less than 3
      nullable: true
      type: object
    SubmissionError:
      allOf:
        - $ref: '#/components/schemas/Error'
        - $ref: '#/components/schemas/ComplianceIssues'
    ProjectId:
      description: The id of the project.
      type: string
      example: 1
      pattern: .*
    ScopeType:
      type: string
      enum:
        - system
        - tenant
        - cluster
        - department
        - project
    Priority:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
          description: The display name of the priority
          example: Low
        value:
          type: integer
          format: int
          description: The numeric value of the priority
          example: 100
        isDefault:
          type: boolean
          description: The field determines if the current priority value is default
          example: false
    Rank:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
          description: The display name of the rank
          example: Low
        value:
          type: integer
          format: int
          description: The numeric value of the rank
          example: 100
        isDefault:
          type: boolean
          description: The field determines if the current rank value is default
          example: false
    ReportFilterAndSortFields:
      type: string
      enum:
        - name
        - createdAt
        - createdBy
        - status
    ReportGroupByOptions:
      type: string
      nullable: true
      enum:
        - Nodepool
        - Project
        - Department
        - Cluster
    ReportRequestFields:
      type: object
      required:
        - name
        - start
        - end
      properties:
        name:
          type: string
          maxLength: 250
          example: 2023 GPU report
        description:
          type: string
          example: This report shows the GPU usage of all projects in the organization
        start:
          type: string
          format: date-time
          description: timestamp from when to fetch data in UTC
          example: '2023-06-07T09:09:18.211Z'
        end:
          type: string
          format: date-time
          description: timestamp until when to fetch data in UTC
          example: '2023-06-07T12:09:18.211Z'
        groupBy:
          $ref: '#/components/schemas/ReportGroupByOptions'
        filterBy:
          type: array
          description: Filter results by a parameter. Use the format field-name == value.
          default: []
          maxItems: 10
          items:
            type: string
            pattern: ^(projectName|departmentName|clusterId)(==).+$
          example:
            - projectName==some-name
    ReportStatus:
      type: string
      enum:
        - Pending
        - Processing
        - Ready
        - Failed
    ReportCalculatedFields:
      type: object
      required:
        - id
        - tenantId
        - createdAt
        - createdBy
        - status
        - statusUpdatedAt
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
          example: user@run.ai
        tenantId:
          type: integer
          format: int32
          description: ID of the tenant where the project is located.
          example: 2
        status:
          $ref: '#/components/schemas/ReportStatus'
        statusUpdatedAt:
          type: string
          format: date-time
        statusMessage:
          type: string
          example: Report in queue
    Report:
      allOf:
        - $ref: '#/components/schemas/ReportRequestFields'
        - $ref: '#/components/schemas/ReportCalculatedFields'
    Reports:
      type: array
      items:
        $ref: '#/components/schemas/Report'
    DepartmentFilterSortFields:
      type: string
      enum:
        - name
        - clusterId
        - totalGpuQuota
        - gpuAllocated
        - createdAt
        - avgGpuAllocation24h
        - avgGpuUtilization24h
        - avgGpuMemoryUtilization24h
        - avgGpuAllocation7d
        - avgGpuUtilization7d
        - avgGpuMemoryUtilization7d
        - avgGpuAllocation30d
        - avgGpuUtilization30d
        - avgGpuMemoryUtilization30d
    Verbosity:
      type: string
      enum:
        - meta
        - brief
        - verbose
    SchedulingRules:
      type: object
      nullable: true
      description: Scheduling rules that define time limits and idle GPU timeouts for workloads in this org-unit. These rules help manage resource utilization by automatically terminating or preempting idle or long-running workloads.
      properties:
        interactiveJobTimeLimitSeconds:
          type: integer
          description: interactive job time limit in seconds
          nullable: true
          example: 100
          minimum: 1
        interactiveJobMaxIdleDurationSeconds:
          type: integer
          description: interactive job max idle duration in seconds
          nullable: true
          example: 100
          minimum: 1
        interactiveJobPreemptIdleDurationSeconds:
          type: integer
          description: interactive job preempt idle duration in seconds
          nullable: true
          example: 100
          minimum: 1
        trainingJobMaxIdleDurationSeconds:
          type: integer
          description: training job max idle duration in seconds
          nullable: true
          example: 100
          minimum: 1
        trainingJobTimeLimitSeconds:
          type: integer
          description: training job time limit in seconds
          nullable: true
          example: 100
          minimum: 1
    NodeTypesPerWorkload:
      description: Node type configurations for different workload types (training, workspace). Specifies which node types are allowed for each workload type. Enforced when no node type is configured in the workload policy.
      properties:
        training:
          type: array
          maxItems: 20
          description: ids of the node types for training workloads
          items:
            type: string
        workspace:
          type: array
          maxItems: 20
          description: ids of the node types for workspace workloads
          items:
            type: string
        names:
          nullable: true
          type: object
          maxProperties: 20
          additionalProperties:
            type: string
          description: mapping of ids to names
    DataUpdatableDepartmentFields:
      type: object
      description: Updatable fields
      required:
        - resources
      properties:
        description:
          type: string
          description: The description of the department.
        schedulingRules:
          $ref: '#/components/schemas/SchedulingRules'
        defaultNodePools:
          description: An ordered list of node pools that defines the default scheduling preference for workloads in this department. The Scheduler will attempt to schedule workloads on node pools in this order. This setting is enforced if no node pool list is defined in the workload policy.
          type: array
          maxItems: 20
          nullable: true
          items:
            type: string
        nodeTypes:
          $ref: '#/components/schemas/NodeTypesPerWorkload'
    OvertimeRangeData:
      type: object
      description: Average data for the specified time range, or for the lifetime of the project/department if it exists for less than the time range.
      properties:
        averageGpuAllocation:
          type: number
          format: double
          example: 10
          description: The average gpu devices allocation of the project/department.
        averageGpuUtilization:
          type: number
          format: double
          example: 95
          description: The average gpu utilization percentage of the project/department.
        averageGpuMemoryUtilization:
          type: number
          format: double
          example: 95
          description: The average gpu memory utilization percentage of the project/department. Only available for cluster versions >= 2.22.
          nullable: true
        updatedAt:
          type: string
          format: date-time
          example: '2021-08-01T00:00:00Z'
    OvertimeData:
      type: object
      properties:
        range24hData:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/OvertimeRangeData'
        range7dData:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/OvertimeRangeData'
        range30dData:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/OvertimeRangeData'
    DataDepartmentFields:
      allOf:
        - $ref: '#/components/schemas/DataUpdatableDepartmentFields'
        - type: object
          required:
            - name
            - clusterId
          properties:
            name:
              description: The unique name of the department within the cluster. Must be a valid Kubernetes name (lowercase, alphanumeric, hyphens allowed).
              type: string
              maxLength: 63
              example: organization1
            clusterId:
              $ref: '#/components/schemas/ClusterId'
            overtimeData:
              $ref: '#/components/schemas/OvertimeData'
    DepartmentProjectChild:
      type: object
      description: Department or project child
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
          example: 9f55253e-11ed-47c7-acef-fc4054768dbc
        name:
          type: string
          example: organization1
        children:
          type: array
          items:
            $ref: '#/components/schemas/DepartmentProjectChild'
    QuotaStatusResource:
      type: object
      properties:
        gpu:
          type: number
          format: double
          description: The number of GPUs (allocated/requested/...).
          example: 0
        cpu:
          type: number
          format: double
          description: CPU in Millicores (allocated/requested/...).
          example: 1000
        memory:
          type: number
          format: double
          description: Memory in MB (allocated/requested/...).
          example: 1000
    QuotaStatus:
      type: object
      description: Sum of all quota statuses of all the node pools
      properties:
        allocated:
          $ref: '#/components/schemas/QuotaStatusResource'
        allocatedNonPreemptible:
          $ref: '#/components/schemas/QuotaStatusResource'
        requested:
          $ref: '#/components/schemas/QuotaStatusResource'
    TotalResources:
      type: object
      properties:
        gpuQuota:
          type: number
          format: double
          description: Total gpu quota of the org unit
          nullable: true
        cpuQuota:
          type: number
          format: double
          description: Total cpu quota of the org unit in Millicores
          nullable: true
        memoryQuota:
          type: number
          format: double
          description: Total memory quota of the org unit in MB
          nullable: true
    NonNullResource:
      properties:
        deserved:
          type: number
          format: double
          description: The GPU quota assigned to this org-unit.
          example: 1000
          default: 0
        limit:
          type: number
          format: double
          description: The maximum GPU device allocation the org-unit can get from this node pool, representing the maximum sum of assigned quota and over-quota GPUs. Set to null for unlimited.
          nullable: true
          example: 0
        overQuotaWeight:
          type: number
          format: double
          description: |
            The weight assigned to determine the org-unit's share of over-quota resources within its rank. When multiple org-units share the same rank in a node pool, resources are distributed proportionally based on their weights. Valid values: 1–20. Requires over-quota weight to be enabled. When enabled, the default is 2. See [GPU over quota](https://run-ai-docs.nvidia.com/self-hosted/2.25/platform-management/aiinitiatives/organization/projects#gpu-over-quota) for more details.
          nullable: true
          example: 2
    Resource:
      properties:
        deserved:
          type: number
          format: double
          description: The resource quota assigned to this org-unit.
          nullable: true
          example: 1000
        limit:
          type: number
          format: double
          description: The maximum resource allocation for this org-unit. Set to null for unlimited.
          nullable: true
          example: 0
        overQuotaWeight:
          type: number
          format: double
          description: |
            The weight assigned to determine the org-unit's share of over-quota resources within its rank. When multiple org-units share the same rank in a node pool, resources are distributed proportionally based on their weights. Valid values: 1–20. Requires over-quota weight to be enabled. When enabled, the default is 2. See [GPU over quota](https://run-ai-docs.nvidia.com/self-hosted/2.25/platform-management/aiinitiatives/organization/projects#gpu-over-quota) for more details.
          nullable: true
          example: 2
    units:
      type: string
      description: The unit of measurement for CPU memory values.
      enum:
        - Mib
        - MB
        - GB
    Resources:
      required:
        - gpu
      properties:
        nodePool:
          required:
            - id
          properties:
            id:
              type: string
              description: The ID of the node pool.
              example: 22
            name:
              type: string
              description: The name of the node pool.
              example: default
          description: The node pool to which this resource configuration applies.
          type: object
          nullable: true
        gpu:
          required:
            - deserved
          allOf:
            - $ref: '#/components/schemas/NonNullResource'
            - description: Defines the GPU quota assignment, maximum GPU device allocation, and weight assigned that determines the fairshare of over-quota resources.
        cpu:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - description: Defines the CPU quota assignment in millicores (1000 millicores = 1 CPU core), maximum CPU allocation, and weight.
        memory:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - type: object
              description: Defines the CPU memory quota assignment, maximum allocation, and weight.
              required:
                - units
              properties:
                units:
                  $ref: '#/components/schemas/units'
        rank:
          type: string
          nullable: true
          description: The scheduling rank of this org-unit within the node pool. Determines the scheduling order of workloads between org-units. Workloads in higher-ranked org-units are scheduled before workloads in lower-ranked org-units. For example, all workloads in rank "High" will be scheduled before all workloads in rank "Medium".
          default: MediumLow
          example: High
        priority:
          deprecated: true
          description: Deprecated. Use rank instead. The scheduling priority for workloads in this node pool.
          type: string
          nullable: true
          example: Normal
    DepartmentForList:
      allOf:
        - $ref: '#/components/schemas/DataDepartmentFields'
        - type: object
          required:
            - id
            - createdAt
            - updatedAt
            - totalResources
          properties:
            id:
              type: string
              example: 50
            createdAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
            createdBy:
              type: string
            updatedBy:
              type: string
            children:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/DepartmentProjectChild'
            status:
              type: object
              nullable: true
              properties:
                quotaStatus:
                  $ref: '#/components/schemas/QuotaStatus'
            totalResources:
              $ref: '#/components/schemas/TotalResources'
              nullable: true
            resources:
              type: array
              items:
                $ref: '#/components/schemas/Resources'
              description: Resources assigned to this Organization per Node Pool
    ResourcesNullable:
      properties:
        nodePool:
          required:
            - id
          properties:
            id:
              type: string
              description: The ID of the node pool.
              example: 22
            name:
              type: string
              description: The name of the node pool.
              example: default
          description: The node pool to which this resource configuration applies.
          type: object
          nullable: true
        gpu:
          allOf:
            - $ref: '#/components/schemas/NonNullResource'
            - description: Defines the GPU quota assignment, maximum GPU device allocation, and weight assigned that determines the fairshare of over-quota resources.
        cpu:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - description: Defines the CPU quota assignment in millicores (1000 millicores = 1 CPU core), maximum CPU allocation, and weight.
        memory:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - type: object
              description: Defines the CPU memory quota assignment, maximum allocation, and weight.
              required:
                - units
              properties:
                units:
                  $ref: '#/components/schemas/units'
        rank:
          type: string
          nullable: true
          description: The scheduling rank of this org-unit within the node pool. Determines the scheduling order of workloads between org-units. Workloads in higher-ranked org-units are scheduled before workloads in lower-ranked org-units. For example, all workloads in rank "High" will be scheduled before all workloads in rank "Medium".
          default: MediumLow
          example: High
        priority:
          deprecated: true
          description: Deprecated. Use rank instead. The scheduling priority for workloads in this node pool.
          type: string
          nullable: true
          example: Normal
    DepartmentCreationRequest:
      allOf:
        - $ref: '#/components/schemas/DataDepartmentFields'
        - properties:
            resources:
              type: array
              items:
                $ref: '#/components/schemas/ResourcesNullable'
              description: An array of resource configurations for the department. Each entry defines GPU, CPU, and CPU memory assigned to a specific node pool.
    DeservedResource:
      properties:
        deserved:
          type: number
          format: double
          description: The project resource allocation that it is deserved to get in case the cluster has those resources
          nullable: true
          example: 1000
    AggregatedResources:
      type: object
      description: Sum of all resources assigned to the projects under this department per Node Pool
      required:
        - nodePool
      properties:
        nodePool:
          type: object
          description: the node pool which the resources refer to
          required:
            - id
            - name
          properties:
            id:
              type: string
              description: node pool id
              example: 22
            name:
              type: string
              description: node pool name
              example: default
        gpu:
          $ref: '#/components/schemas/DeservedResource'
        cpu:
          $ref: '#/components/schemas/DeservedResource'
        memory:
          allOf:
            - $ref: '#/components/schemas/DeservedResource'
            - type: object
              required:
                - units
              properties:
                units:
                  $ref: '#/components/schemas/units'
    QuotaStatusNodePool:
      allOf:
        - $ref: '#/components/schemas/QuotaStatus'
        - type: object
          required:
            - nodePoolName
            - nodePoolId
          properties:
            nodePoolName:
              type: string
              description: The node pool name which the current quota status refers to
            nodePoolId:
              type: string
              description: The node pool id which the current quota status refers to
    Department:
      allOf:
        - $ref: '#/components/schemas/DataDepartmentFields'
        - type: object
          required:
            - id
            - name
            - description
            - createdAt
            - updatedAt
            - totalResources
          properties:
            id:
              type: string
              example: 50
            createdAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
            createdBy:
              type: string
            updatedBy:
              type: string
            children:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/DepartmentProjectChild'
            projectsAggregatedResources:
              type: array
              nullable: true
              items:
                $ref: '#/components/schemas/AggregatedResources'
            status:
              type: object
              properties:
                nodePoolQuotaStatuses:
                  type: array
                  items:
                    $ref: '#/components/schemas/QuotaStatusNodePool'
                quotaStatus:
                  $ref: '#/components/schemas/QuotaStatus'
            totalResources:
              $ref: '#/components/schemas/TotalResources'
            resources:
              type: array
              items:
                $ref: '#/components/schemas/Resources'
              description: Resources assigned to this Organization per Node Pool
    DepartmentUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/DataUpdatableDepartmentFields'
        - properties:
            resources:
              type: array
              items:
                $ref: '#/components/schemas/ResourcesNullable'
              description: Resources assigned to this Organization per Node Pool
    ResourcesUpdateRequest:
      type: array
      items:
        $ref: '#/components/schemas/ResourcesNullable'
      description: Resources assigned to this Project per Node Pool
    OrgUnitMetricType:
      type: string
      description: Specify which metric data to request.
      enum:
        - GPU_QUOTA
        - CPU_QUOTA_MILLICORES
        - CPU_MEMORY_QUOTA_MB
        - GPU_ALLOCATION
        - CPU_ALLOCATION_MILLICORES
        - CPU_MEMORY_ALLOCATION_MB
        - GPU_MEMORY_UTILIZATION
        - GPU_UTILIZATION
        - CPU_UTILIZATION
        - CPU_MEMORY_UTILIZATION
        - WORKLOADS_COUNT
    OrgUnitTelemetryType:
      type: string
      description: Select a telemetry type.
      enum:
        - GPU_QUOTA
        - CPU_QUOTA
        - MEMORY_QUOTA
        - GPU_ALLOCATION
        - CPU_ALLOCATION
        - MEMORY_ALLOCATION
        - GPU_ALLOCATION_NON_PREEMPTIBLE
        - CPU_ALLOCATION_NON_PREEMPTIBLE
        - MEMORY_ALLOCATION_NON_PREEMPTIBLE
    ProjectFilterSortFields:
      type: string
      enum:
        - name
        - clusterId
        - departmentId
        - parentId
        - parentName
        - phase
        - totalGpuQuota
        - gpuAllocated
        - createdAt
        - avgGpuAllocation24h
        - avgGpuUtilization24h
        - avgGpuMemoryUtilization24h
        - avgGpuAllocation7d
        - avgGpuUtilization7d
        - avgGpuMemoryUtilization7d
        - avgGpuAllocation30d
        - avgGpuUtilization30d
        - avgGpuMemoryUtilization30d
    DataUpdatableFields:
      type: object
      description: Updatable fields
      required:
        - resources
      properties:
        description:
          type: string
          description: The description of the project.
        schedulingRules:
          $ref: '#/components/schemas/SchedulingRules'
        defaultNodePools:
          description: An ordered list of node pools that defines the default scheduling preference for workloads in this project. The Scheduler will attempt to schedule workloads on node pools in this order. This setting is enforced if no node pool list is defined in the workload policy.
          type: array
          maxItems: 20
          nullable: true
          items:
            type: string
        nodeTypes:
          $ref: '#/components/schemas/NodeTypesPerWorkload'
    ProjectPhase:
      type: string
      enum:
        - Creating
        - Updating
        - Deleting
        - Deleted
        - Initializing
        - Ready
        - NotReady
        - Unknown
    ProjectStatus:
      type: object
      properties:
        namespace:
          type: string
          description: the project's namespace
          nullable: true
          example: runai-proj1
        phase:
          $ref: '#/components/schemas/ProjectPhase'
          description: the project's phase
        phaseMessage:
          type: string
          description: the project's phase message
          nullable: true
          example: Project is ready
        lastUpdatedTime:
          type: string
          format: date-time
          nullable: true
        nodePoolQuotaStatuses:
          type: array
          items:
            $ref: '#/components/schemas/QuotaStatusNodePool'
        quotaStatus:
          $ref: '#/components/schemas/QuotaStatus'
        additionalStatusData:
          nullable: true
          type: object
          additionalProperties: true
    DepartmentProjectParent:
      type: object
      nullable: true
      description: Department or project parent
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
          example: 9f55253e-11ed-47c7-acef-fc4054768dbc
        name:
          type: string
          example: organization1
        parent:
          $ref: '#/components/schemas/DepartmentProjectParent'
    ProjectEffective:
      properties:
        schedulingRules:
          $ref: '#/components/schemas/SchedulingRules'
        defaultNodePools:
          description: default order of node pools for workloads. will be enforced if no list is defined in workload policy
          type: array
          nullable: true
          items:
            type: string
        nodeTypes:
          $ref: '#/components/schemas/NodeTypesPerWorkload'
    Project:
      allOf:
        - $ref: '#/components/schemas/DataUpdatableFields'
        - type: object
          required:
            - id
            - name
            - parentId
            - createdAt
            - updatedAt
            - totalResources
            - effective
            - status
            - description
            - enforceRunaiScheduler
            - clusterId
            - resources
          properties:
            id:
              type: string
              example: 33
            name:
              type: string
              example: organization1
            clusterId:
              $ref: '#/components/schemas/ClusterId'
            parentId:
              type: string
              description: department parent uuid
              example: 53a9228e-a722-420d-a102-9dc90da2efca
            requestedNamespace:
              type: string
              description: the project's namespace only if requested
              nullable: true
              example: runai-proj1
            enforceRunaiScheduler:
              type: boolean
              description: a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+
            status:
              $ref: '#/components/schemas/ProjectStatus'
            totalResources:
              $ref: '#/components/schemas/TotalResources'
            createdAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
            createdBy:
              type: string
            updatedBy:
              type: string
            parent:
              $ref: '#/components/schemas/DepartmentProjectParent'
            effective:
              $ref: '#/components/schemas/ProjectEffective'
            overtimeData:
              $ref: '#/components/schemas/OvertimeData'
            resources:
              type: array
              items:
                $ref: '#/components/schemas/Resources'
              description: Resources assigned to this Organization per Node Pool
    ProjectCreationRequest:
      allOf:
        - $ref: '#/components/schemas/DataUpdatableFields'
        - type: object
          required:
            - name
            - clusterId
            - resources
          properties:
            name:
              description: The unique name of the project within the cluster. Must be a valid Kubernetes name (lowercase, alphanumeric, hyphens allowed).
              type: string
              maxLength: 63
              example: organization1
            clusterId:
              $ref: '#/components/schemas/ClusterId'
            requestedNamespace:
              type: string
              description: The custom Kubernetes namespace name for the project. If not specified, a namespace will be auto-generated using the pattern runai-<project-name>.
              example: runai-proj1
            enforceRunaiScheduler:
              type: boolean
              description: When set to true, enforces that all pods in this project's namespace are scheduled using the NVIDIA Run:ai Scheduler (runai-scheduler). Supported for cluster version 2.21 and later.
              nullable: true
              default: true
            parentId:
              type: string
              description: The ID of the parent department. When specified, the project is created as a child of this department and inherits its quota, the quota of other projects within the department and its scheduling rules.
              example: 35000
              nullable: true
            resources:
              type: array
              items:
                $ref: '#/components/schemas/ResourcesNullable'
              description: An array of resource configurations for the project. Each entry defines GPU, CPU, and CPU memory assigned to a specific node pool.
    ProjectUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/DataUpdatableFields'
        - type: object
          required:
            - resources
          properties:
            enforceRunaiScheduler:
              type: boolean
              description: a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+
              nullable: true
            resources:
              type: array
              items:
                $ref: '#/components/schemas/ResourcesNullable'
              description: Resources assigned to this Organization per Node Pool
    ResourcesResetAction:
      type: string
      description: The action to apply
      enum:
        - QUOTAS_TO_DEFAULT
        - RANKS_TO_DEFAULT
        - WEIGHTS_TO_DEFAULT
        - WEIGHTS_TO_DESERVED
    DepartmentsResourcesResetRequest:
      type: object
      required:
        - clusterId
        - nodePoolIds
        - action
      properties:
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        nodePoolIds:
          type: array
          description: The node pool ids to which the request applies
          maxItems: 5
          items:
            type: string
            example: '22'
        action:
          $ref: '#/components/schemas/ResourcesResetAction'
    ProjectsResourcesResetRequest:
      allOf:
        - $ref: '#/components/schemas/DepartmentsResourcesResetRequest'
        - type: object
          properties:
            parentId:
              type: string
              description: apply only to projects under the specified department id
              example: 15
    DepartmentNodePoolResourcesFilterSortFields:
      type: string
      enum:
        - nodePoolName
        - nodePoolId
        - orgUnitId
        - orgUnitName
        - clusterId
        - gpuDeserved
        - gpuOverQuotaWeight
    ResourcesPerNodePool:
      type: object
      properties:
        gpu:
          allOf:
            - $ref: '#/components/schemas/Resource'
            - description: Defines the GPU quota assignment, maximum GPU device allocation, and weight assigned that determines the fairshare of over-quota resources.
        cpu:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - description: Defines the CPU quota assignment in millicores (1000 millicores = 1 CPU core), maximum CPU allocation, and weight.
        memory:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - type: object
              description: Defines the CPU memory quota assignment, maximum allocation, and weight.
              required:
                - units
              properties:
                units:
                  $ref: '#/components/schemas/units'
    DepartmentNodePoolResources:
      type: object
      required:
        - id
        - orgUnitId
        - orgUnitName
        - nodePoolId
        - nodePoolName
        - rank
        - resources
        - clusterId
      properties:
        id:
          description: The unique ID of the resources.
          type: string
        orgUnitId:
          description: The project/department ID.
          type: string
        orgUnitName:
          description: The project/department name.
          type: string
          example: organization1
        clusterId:
          type: string
        nodePoolId:
          type: string
        nodePoolName:
          type: string
        rank:
          type: string
        resources:
          $ref: '#/components/schemas/ResourcesPerNodePool'
    ResourcesPerNodePoolNullable:
      type: object
      nullable: true
      properties:
        gpu:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - description: Defines the GPU quota assignment, maximum GPU device allocation, and weight assigned that determines the fairshare of over-quota resources.
        cpu:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - description: Defines the CPU quota assignment in millicores (1000 millicores = 1 CPU core), maximum CPU allocation, and weight.
        memory:
          type: object
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Resource'
            - type: object
              description: Defines the CPU memory quota assignment, maximum allocation, and weight.
              required:
                - units
              properties:
                units:
                  $ref: '#/components/schemas/units'
    NodePoolResourcesPatchRequest:
      type: object
      required:
        - orgUnitId
        - nodePoolId
      properties:
        orgUnitId:
          description: The project/department ID.
          type: string
        nodePoolId:
          type: string
        rank:
          nullable: true
          type: string
        resources:
          $ref: '#/components/schemas/ResourcesPerNodePoolNullable'
    BatchPatchNodePoolResourcesRequest:
      type: object
      description: Batch of node pool resources patch requests.
      required:
        - patchRequests
      properties:
        patchRequests:
          type: array
          minItems: 1
          maxItems: 100
          description: Array of node pool resources patch requests.
          items:
            $ref: '#/components/schemas/NodePoolResourcesPatchRequest'
      example:
        patchRequests:
          - orgUnitId: '3845'
            nodePoolId: '22'
            rank: Low
            resources:
              gpu:
                deserved: 2
                limit: 2
                overQuotaWeight: 2
          - orgUnitId: '27552'
            nodePoolId: '33'
            resources:
              cpu:
                deserved: 20
                limit: 20
                overQuotaWeight: 20
    FailedNodePoolResourcesPatchRequest:
      type: object
      properties:
        payload:
          $ref: '#/components/schemas/NodePoolResourcesPatchRequest'
        code:
          type: integer
          description: HTTP error code.
        message:
          type: string
          description: Error message.
    BatchPatchDepartmentResourcesResponse:
      type: object
      required:
        - id
        - totalRequested
        - totalSuccessful
        - totalFailed
      properties:
        id:
          type: string
          format: uuid
          description: The unique ID of the batch operation.
        succeeded:
          type: array
          description: Successfully patched department node pool resources results.
          items:
            $ref: '#/components/schemas/DepartmentNodePoolResources'
        failed:
          type: array
          description: Failed patch operations with the original payload and error details.
          items:
            $ref: '#/components/schemas/FailedNodePoolResourcesPatchRequest'
        totalRequested:
          type: integer
          description: Total number of items requested in the batch.
        totalSuccessful:
          type: integer
          description: Number of items successfully processed.
        totalFailed:
          type: integer
          description: Number of items that failed.
      example:
        id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
        succeeded:
          - orgUnitId: '435'
            orgUnitName: proj1
            nodePoolId: '12'
            nodePoolName: default
            resources:
              - gpu:
                  deserved: 2
                  limit: 2
                  overQuotaWeight: 2
        failed:
          - payload:
              orgUnitId: '577'
              nodePoolId: '12'
              resources:
                - gpu:
                    deserved: 2
                    limit: 2
                    overQuotaWeight: 2
            code: 404
            message: department not found
        totalRequested: 2
        totalSuccessful: 1
        totalFailed: 1
    ProjectNodePoolResourcesFilterSortFields:
      type: string
      enum:
        - nodePoolName
        - nodePoolId
        - parentId
        - orgUnitId
        - orgUnitName
        - clusterId
        - gpuDeserved
        - gpuOverQuotaWeight
    ProjectNodePoolResources:
      type: object
      required:
        - id
        - orgUnitId
        - orgUnitName
        - parentId
        - nodePoolId
        - nodePoolName
        - resources
        - rank
        - clusterId
      properties:
        id:
          description: The unique ID of the resources.
          type: string
        orgUnitId:
          description: The project/department ID.
          type: string
        orgUnitName:
          description: The project/department name.
          type: string
          example: organization1
        parentId:
          type: string
        clusterId:
          type: string
        nodePoolId:
          type: string
        nodePoolName:
          type: string
        rank:
          type: string
        resources:
          $ref: '#/components/schemas/ResourcesPerNodePool'
        quotaStatus:
          $ref: '#/components/schemas/QuotaStatus'
    BatchPatchProjectResourcesResponse:
      type: object
      required:
        - id
        - totalRequested
        - totalSuccessful
        - totalFailed
      properties:
        id:
          type: string
          format: uuid
          description: The unique ID of the batch operation.
        succeeded:
          type: array
          description: Successfully patched project node pool resources results.
          items:
            $ref: '#/components/schemas/ProjectNodePoolResources'
        failed:
          type: array
          description: Failed patch operations with the original payload and error details.
          items:
            $ref: '#/components/schemas/FailedNodePoolResourcesPatchRequest'
        totalRequested:
          type: integer
          description: Total number of items requested in the batch.
        totalSuccessful:
          type: integer
          description: Number of items successfully processed.
        totalFailed:
          type: integer
          description: Number of items that failed.
      example:
        id: 497f6eca-6276-4993-bfeb-53cbbbba6f08
        succeeded:
          - orgUnitId: '435'
            orgUnitName: proj1
            nodePoolId: '12'
            nodePoolName: default
            parentId: '8755'
            resources:
              - gpu:
                  deserved: 2
                  limit: 2
                  overQuotaWeight: 2
        failed:
          - payload:
              orgUnitId: '577'
              nodePoolId: '12'
              resources:
                - gpu:
                    deserved: 2
                    limit: 2
                    overQuotaWeight: 2
            code: 400
            message: bad request
        totalRequested: 2
        totalSuccessful: 1
        totalFailed: 1
    ResourceV1Response:
      required:
        - deserved
        - overQuotaWeight
        - maxAllowed
      properties:
        deserved:
          type: number
          description: The amount of resources guaranteed to be allocated in case the cluster has those resources.
          example: 0
          nullable: true
        maxAllowed:
          type: number
          description: Maximum amount of resources that can be allocated. If equal to deserved, no over-quota will be allowed. Use "-1" for unlimited over quota.
          example: 1000
          nullable: true
        overQuotaWeight:
          type: number
          description: The priority for over quota resources.
          example: 2
          nullable: true
    NodePoolAssignedResourcesV1Response:
      required:
        - nodePool
        - id
        - gpu
        - cpu
        - memory
      properties:
        id:
          description: The id of the assigned resources. Required in PUT when updating the assigned resources.
          type: number
        nodePool:
          required:
            - id
          properties:
            id:
              type: number
              description: Node pool id.
              example: 3
            name:
              type: string
              description: Node pool name.
              example: default
          description: The node pool which the assigned resources refer to.
        gpu:
          allOf:
            - $ref: '#/components/schemas/ResourceV1Response'
          description: Number of GPUs assigned in the node pool.
        cpu:
          allOf:
            - $ref: '#/components/schemas/ResourceV1Response'
          description: Number of CPU Millicores assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled.
        memory:
          allOf:
            - $ref: '#/components/schemas/ResourceV1Response'
          description: Amount of CPU Memory Mib assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled.
    AssignedResourcesV1Response:
      required:
        - gpu
        - cpu
        - memory
      properties:
        id:
          type: number
        gpu:
          allOf:
            - $ref: '#/components/schemas/ResourceV1Response'
          description: GPU number assigned
        cpu:
          allOf:
            - $ref: '#/components/schemas/ResourceV1Response'
          description: CPU Millicores assigned. Supported only if 'CPU Resources Quota' feature flag is enabled.
        memory:
          allOf:
            - $ref: '#/components/schemas/ResourceV1Response'
          description: CPU Memory Mib assigned. Supported only if 'CPU Resources Quota' feature flag is enabled.
    DepartmentV1CommonFieldsResponse:
      required:
        - deservedGpus
        - maxAllowedGpus
      properties:
        nodePoolsResources:
          type: array
          items:
            $ref: '#/components/schemas/NodePoolAssignedResourcesV1Response'
          description: Resources assigned to the Department per node pool.
        name:
          type: string
          description: The name of the department.
          example: default
        deservedGpus:
          type: number
          description: Deprecated. Instead, use `deserved` for the relevant resource type under `NodePoolResources`. Deserved GPUs for the department.
          example: 2
          deprecated: true
        allowOverQuota:
          type: boolean
          description: Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Is over quota allowed for the department.
          example: false
          deprecated: true
        maxAllowedGpus:
          type: number
          description: Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Max allowed GPUs for the department.
          example: 2
          deprecated: true
        resources:
          allOf:
            - $ref: '#/components/schemas/AssignedResourcesV1Response'
          description: Deprecated. Instead, use 'nodePoolsResources'. Total resources assigned to the Department. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in GET are the sum of all Node Pool Resources.
          deprecated: true
    ProjectV1NodeAffinityResponse:
      properties:
        train:
          required:
            - selectedTypes
          properties:
            affinityType:
              type: string
              enum:
                - no_limit
                - only_selected
              description: The type of affinity of the jobs on the nodes.
            selectedTypes:
              type: array
              items:
                properties:
                  id:
                    type: number
                  name:
                    type: string
          description: Node affinity configuration for training jobs.
        interactive:
          required:
            - selectedTypes
          properties:
            affinityType:
              type: string
              enum:
                - no_limit
                - only_selected
              description: The type of affinity of the jobs on the nodes.
            selectedTypes:
              type: array
              items:
                properties:
                  id:
                    type: number
                  name:
                    type: string
          description: Node affinity configuration for interactive jobs.
      description: Node affinity configuration for jobs in the project.
      type: object
      nullable: true
    ProjectV1ResponseCommonFields:
      required:
        - deservedGpus
        - maxAllowedGpus
        - gpuOverQuotaWeight
      properties:
        nodePoolsResources:
          type: array
          items:
            $ref: '#/components/schemas/NodePoolAssignedResourcesV1Response'
          description: Resources assigned to this Project per Node Pool.
        deservedGpus:
          type: number
          description: Deprecated. Use 'deserved' for the relevant resource type under `NodePoolResources`. The project's deserved GPU allocation in case the cluster has those resources.
          example: 3
          deprecated: true
        maxAllowedGpus:
          type: number
          description: Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. An upper limit for the amount of GPUs the project can get (Even if over quota is allowed and resources are available).
          example: 5
          deprecated: true
        gpuOverQuotaWeight:
          type: number
          description: Deprecated. Instead, use `overQuotaWeight` for the relevant resource type under `NodePoolResources`. The priority the project gets for over quota resources.
          maximum: 3
          minimum: 0
          example: 1
          deprecated: true
        defaultNodePools:
          type: array
          description: Default node pools list for workload submission for this project if a workload doesn't specify a node pools list.
          items:
            type: string
          example:
            - default
        interactiveJobTimeLimitSecs:
          type: number
          description: A limit (in seconds) for the duration of interactive jobs from this project.
          example: 3600
        interactiveJobMaxIdleDurationSecs:
          type: number
          description: Maximum duration (in seconds) that an interactive job can be idle before being terminated.
          example: 3000
        interactivePreemptibleJobMaxIdleDurationSecs:
          type: number
          description: Maximum duration (in seconds) that an interactive preemptible job can be idle before being terminated.
          example: 3000
        trainingJobTimeLimitSecs:
          type: number
          description: A limit (in seconds) for the duration of training jobs from this project. Available only from cluster version 2.12
          example: 3600
        trainingJobMaxIdleDurationSecs:
          type: number
          description: Maximum duration (in seconds) that a training job can be idle before being terminated.
          example: 3000
        nodeAffinity:
          $ref: '#/components/schemas/ProjectV1NodeAffinityResponse'
        permissions:
          required:
            - users
            - groups
          properties:
            users:
              type: array
              items:
                type: string
              description: Names of users that have permissions to the project.
              nullable: true
            groups:
              type: array
              items:
                type: string
              description: Names of groups that have permissions to the project.
              nullable: true
            applications:
              type: array
              items:
                type: string
              description: Names of applications that have permissions to the project.
          description: Deprecated. Instead, use the `accessRules` API to add permissions to a specific subject in the project scope.
          deprecated: true
        resources:
          allOf:
            - $ref: '#/components/schemas/AssignedResourcesV1Response'
          deprecated: true
          description: Deprecated. Instead, use `nodePoolsResources`. Total resources assigned to the Project. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in `GET` are the sum of all Node Pool Resources.
    QuotaStatusResourceListV1:
      properties:
        gpu:
          type: number
          description: The number of GPUs (allocated/requested/...).
          example: 0
        cpu:
          type: number
          description: CPU in Millicores (allocated/requested/...).
          example: 1000
        memory:
          type: number
          description: Memory in Mib (allocated/requested/...).
          example: 1000
    QuotaStatusV1:
      type: array
      items:
        properties:
          nodePoolName:
            type: string
            description: The node pool name which the current quota status refers to.
          allocated:
            $ref: '#/components/schemas/QuotaStatusResourceListV1'
          allocatedNonPreemptible:
            $ref: '#/components/schemas/QuotaStatusResourceListV1'
          requested:
            $ref: '#/components/schemas/QuotaStatusResourceListV1'
      description: The current quota status for each node pool. Supported only for cluster versions 2.15+ or higher.
    ProjectV1:
      allOf:
        - required:
            - namespace
            - nodePoolsResources
            - resources
        - $ref: '#/components/schemas/ProjectV1ResponseCommonFields'
        - properties:
            name:
              type: string
              description: Project name.
              example: team-a
            nodePoolsResources:
              type: array
              items:
                $ref: '#/components/schemas/NodePoolAssignedResourcesV1Response'
              description: Resources assigned to this Project per Node Pool.
            namespace:
              type: string
              description: The name of an existing namespace to use for the project in the cluster. Supported only for cluster versions 2.12 or higher.
              example: ns-proj1
            id:
              type: integer
              format: int32
              description: Project id.
              readOnly: true
              example: 5
            departmentId:
              type: integer
              format: int32
              description: ID of the department that owns the project.
              example: 2
            tenantId:
              type: integer
              format: int32
              description: ID of the tenant where the project is located.
              example: 2
            clusterUuid:
              type: string
              format: uuid
              description: ID of the cluster where the project is located.
              example: 71f69d83-ba66-4822-adf5-55ce55efd210
            departmentName:
              type: string
              description: Name of the department where the project is located.
              example: department-a
            interactiveNodeAffinity:
              type: string
              example: none
            trainNodeAffinity:
              type: string
              example: none
            createdAt:
              type: string
              description: Creation date of the project.
              format: date-time
              example: '2021-12-14T16:04:15.099Z'
            status:
              type: object
              required:
                - quotaStatuses
              properties:
                namespace:
                  type: string
                  description: The namespace of the project
                  example: runai-team-a
                message:
                  type: string
                  description: Detailed phase message
                  example: NamespaceHandlerFailed
                phase:
                  type: string
                  description: project's phase
                  example: Ready
                conditions:
                  type: array
                  items:
                    type: object
                    additionalProperties:
                      type: string
                quotaStatuses:
                  $ref: '#/components/schemas/QuotaStatusV1'
            phase:
              type: string
              description: project's phase
              example: Ready
            quotaStatuses:
              type: string
              nullable: true
    DepartmentForGetV1:
      allOf:
        - $ref: '#/components/schemas/DepartmentV1CommonFieldsResponse'
        - required:
            - projects
          properties:
            tenantId:
              type: integer
              description: The tenant id this cluster belongs to.
              example: 42
            clusterUuid:
              type: string
              example: d4e09285-59e2-4df8-91e1-9119f9afb1dd
              description: The cluster UUID this department belongs to.
            createdAt:
              type: string
              description: The creation date of the department.
              format: date-time
              example: '2021-12-14T16:04:15.099Z'
            id:
              type: integer
              format: int32
              description: The unique id identifying the department.
              example: 2
            projects:
              type: array
              items:
                $ref: '#/components/schemas/ProjectV1'
              description: Projects under this department.
              example:
                - id: 16
                  name: team-a
                  deserved_gpus: 3
            projectsDeservedGpus:
              type: string
              description: Deprecated. Instead, use 'nodePoolsResources' field. Total deserved GPUs of the projects under this department - as string.
              example: '3.00'
              deprecated: true
            departmentAdmins:
              type: array
              items:
                type: string
              description: Id's of users with department admin role that are assigned to managed the department
            quotaStatuses:
              type: array
              nullable: true
              items:
                type: object
            projectAggregatedNodePoolsResources:
              type: array
              nullable: true
              items:
                type: object
    MetricsResourceDataV1:
      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
    MetricsResourcesDataV1:
      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/MetricsResourceDataV1'
        cpu:
          description: CPU resources in millicpus. 1000 = 1 cpu
          $ref: '#/components/schemas/MetricsResourceDataV1'
        memory:
          description: Memory resources in megabytes. 1 = 10^6  (1000*1000)
          $ref: '#/components/schemas/MetricsResourceDataV1'
    ResourcesDataOvertimeV1:
      allOf:
        - $ref: '#/components/schemas/MetricsResourcesDataV1'
        - type: object
          required:
            - timestamp
          properties:
            timestamp:
              type: string
              format: date-time
              example: '2023-06-06T12:09:18.211Z'
    ResourceV1:
      properties:
        deserved:
          type: number
          description: The amount of resources guaranteed to be allocated in case the cluster has those resources.
          example: 0
          nullable: true
        maxAllowed:
          type: number
          description: Maximum amount of resources that can be allocated. If equal to deserved, no over-quota will be allowed. Use "-1" for unlimited over quota.
          example: 1000
          nullable: true
        overQuotaWeight:
          type: number
          description: The priority for over quota resources.
          example: 2
          nullable: true
    NonNullResourceV1:
      required:
        - deserved
      properties:
        deserved:
          type: number
          description: The amount of resources guaranteed to be allocated in case the cluster has those resources.
          example: 0
        maxAllowed:
          type: number
          description: Maximum amount of resources that can be allocated. If equal to deserved, no over-quota will be allowed. Use "-1" for unlimited over quota.
          example: 1000
          nullable: true
        overQuotaWeight:
          type: number
          description: The priority for over quota resources.
          example: 2
          nullable: true
    AssignedResourcesV1:
      properties:
        id:
          type: number
        gpu:
          allOf:
            - $ref: '#/components/schemas/ResourceV1'
          description: GPU number assigned
        cpu:
          allOf:
            - $ref: '#/components/schemas/ResourceV1'
          description: CPU Millicores assigned. Supported only if 'CPU Resources Quota' feature flag is enabled.
        memory:
          allOf:
            - $ref: '#/components/schemas/ResourceV1'
          description: CPU Memory Mib assigned. Supported only if 'CPU Resources Quota' feature flag is enabled.
    NodePoolAssignedResourcesV1:
      required:
        - nodePool
        - id
      properties:
        id:
          description: The id of the assigned resources. Required in PUT when updating the assigned resources.
          type: number
        nodePool:
          required:
            - id
          properties:
            id:
              type: number
              description: Node pool id.
              example: 3
            name:
              type: string
              description: Node pool name.
              example: default
          description: The node pool which the assigned resources refer to.
        gpu:
          allOf:
            - $ref: '#/components/schemas/NonNullResourceV1'
          description: Number of GPUs assigned in the node pool.
        cpu:
          allOf:
            - $ref: '#/components/schemas/ResourceV1'
          description: Number of CPU Millicores assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled.
        memory:
          allOf:
            - $ref: '#/components/schemas/ResourceV1'
          description: Amount of CPU Memory Mib assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled.
    DepartmentV1CommonFields:
      properties:
        nodePoolsResources:
          type: array
          items:
            $ref: '#/components/schemas/NodePoolAssignedResourcesV1'
          description: Resources assigned to the Department per node pool.
        name:
          type: string
          description: The name of the department.
          example: default
        deservedGpus:
          type: number
          description: Deprecated. Instead, use `deserved` for the relevant resource type under `NodePoolResources`. Deserved GPUs for the department.
          example: 2
          deprecated: true
        allowOverQuota:
          type: boolean
          description: Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Is over quota allowed for the department.
          example: false
          deprecated: true
        maxAllowedGpus:
          type: number
          description: Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Max allowed GPUs for the department.
          example: 2
          deprecated: true
        resources:
          allOf:
            - $ref: '#/components/schemas/AssignedResourcesV1'
          description: Deprecated. Instead, use 'nodePoolsResources'. Total resources assigned to the Department. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in GET are the sum of all Node Pool Resources.
          deprecated: true
      additionalProperties: true
    DepartmentV1CreationRequest:
      allOf:
        - required:
            - name
        - $ref: '#/components/schemas/DepartmentV1CommonFields'
    ProjectV1NodeAffinity:
      properties:
        train:
          type: object
          properties:
            affinityType:
              type: string
              enum:
                - no_limit
                - only_selected
              description: The type of affinity of the jobs on the nodes.
            selectedTypes:
              type: array
              items:
                properties:
                  id:
                    type: number
                  name:
                    type: string
          description: Node affinity configuration for training jobs.
          nullable: true
        interactive:
          type: object
          properties:
            affinityType:
              type: string
              enum:
                - no_limit
                - only_selected
              description: The type of affinity of the jobs on the nodes.
            selectedTypes:
              type: array
              items:
                properties:
                  id:
                    type: number
                  name:
                    type: string
          description: Node affinity configuration for interactive jobs.
          nullable: true
      description: Node affinity configuration for jobs in the project.
      type: object
      nullable: true
    ProjectV1CommonFields:
      properties:
        nodePoolsResources:
          type: array
          items:
            $ref: '#/components/schemas/NodePoolAssignedResourcesV1'
          description: Resources assigned to this Project per Node Pool.
        deservedGpus:
          type: number
          description: Deprecated. Use 'deserved' for the relevant resource type under `NodePoolResources`. The project's deserved GPU allocation in case the cluster has those resources.
          example: 3
          deprecated: true
        maxAllowedGpus:
          type: number
          description: Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. An upper limit for the amount of GPUs the project can get (Even if over quota is allowed and resources are available).
          example: 5
          deprecated: true
        gpuOverQuotaWeight:
          type: number
          description: Deprecated. Instead, use `overQuotaWeight` for the relevant resource type under `NodePoolResources`. The priority the project gets for over quota resources.
          maximum: 3
          minimum: 0
          example: 1
          deprecated: true
        defaultNodePools:
          type: array
          description: Default node pools list for workload submission for this project if a workload doesn't specify a node pools list.
          items:
            type: string
          example:
            - default
        interactiveJobTimeLimitSecs:
          type: number
          description: A limit (in seconds) for the duration of interactive jobs from this project.
          example: 3600
        interactiveJobMaxIdleDurationSecs:
          type: number
          description: Maximum duration (in seconds) that an interactive job can be idle before being terminated.
          example: 3000
        interactivePreemptibleJobMaxIdleDurationSecs:
          type: number
          description: Maximum duration (in seconds) that an interactive preemptible job can be idle before being terminated.
          example: 3000
        trainingJobTimeLimitSecs:
          type: number
          description: A limit (in seconds) for the duration of training jobs from this project. Available only from cluster version 2.12
          example: 3600
        trainingJobMaxIdleDurationSecs:
          type: number
          description: Maximum duration (in seconds) that a training job can be idle before being terminated.
          example: 3000
        nodeAffinity:
          $ref: '#/components/schemas/ProjectV1NodeAffinity'
        permissions:
          properties:
            users:
              type: array
              items:
                type: string
              description: Names of users that have permissions to the project.
            groups:
              type: array
              items:
                type: string
              description: Names of groups that have permissions to the project.
            applications:
              type: array
              items:
                type: string
              description: Names of applications that have permissions to the project.
          description: Deprecated. Instead, use the `accessRules` API to add permissions to a specific subject in the project scope.
          deprecated: true
        resources:
          allOf:
            - $ref: '#/components/schemas/AssignedResourcesV1'
          deprecated: true
          description: Deprecated. Instead, use `nodePoolsResources`. Total resources assigned to the Project. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in `GET` are the sum of all Node Pool Resources.
      additionalProperties: true
    Range:
      type: object
      nullable: true
      required:
        - start
        - end
      properties:
        start:
          type: string
          format: date-time
          description: timestamp from when to fetch data in UTC
          example: '2023-06-07 12:09:18.211'
        end:
          type: string
          format: date-time
          description: timestamp until when to fetch data in UTC
          example: '2023-06-07 12:09:18.211'
    DepartmentV1UpdateRequest:
      $ref: '#/components/schemas/DepartmentV1CommonFields'
    ProjectV1UpdateRequest:
      $ref: '#/components/schemas/ProjectV1CommonFields'
    servingPortProtocol:
      $ref: '#/components/schemas/ServingPortProtocol'
    AssetName:
      description: The name of the asset.
      type: string
      minLength: 1
      example: my-asset
    AssetDescription:
      description: The description of the asset.
      type: string
      minLength: 1
      maxLength: 250
      example: description of my asset.
      nullable: true
    AssetUpdatableFields:
      required:
        - name
      properties:
        name:
          $ref: '#/components/schemas/AssetName'
        description:
          $ref: '#/components/schemas/AssetDescription'
    Scope:
      description: The scope in which an asset can be used. The highest scope, system, is intended for internal purposes only.
      type: string
      minLength: 1
      enum:
        - system
        - tenant
        - cluster
        - department
        - project
    WorkloadSupportedTypes:
      properties:
        inference:
          description: Is inference a supported workload type.
          type: boolean
          nullable: true
        workspace:
          description: Is workspace a supported workload type.
          type: boolean
          nullable: true
        training:
          description: Is training a supported workload type.
          type: boolean
          nullable: true
        distributed:
          description: Is distributed a supported workload type.
          type: boolean
          nullable: true
        distFramework:
          description: The distributed training framework used in the workload.
          type: string
          enum:
            - MPI
            - PyTorch
            - TF
            - XGBoost
            - JAX
          nullable: true
      nullable: true
      type: object
    AssetCreationFields:
      type: object
      required:
        - scope
      properties:
        scope:
          $ref: '#/components/schemas/Scope'
        clusterId:
          $ref: '#/components/schemas/ClusterIdOptional'
        departmentId:
          description: The id of the department. Must be specified for department scoped assets.
          type: string
          nullable: true
          minLength: 1
        projectId:
          description: The id of the project. Must be specified for project scoped assets.
          type: integer
          format: int32
          nullable: true
        autoDelete:
          description: The asset will be deleted automatically. This is intended for internal use.
          type: boolean
          nullable: true
          default: false
        workloadSupportedTypes:
          $ref: '#/components/schemas/WorkloadSupportedTypes'
        private:
          description: The asset will be private to the user who created it. supported only for docker registry and generic secrets
          type: boolean
          nullable: true
          default: false
    AssetId:
      description: Unique identifier of the asset.
      type: string
      format: uuid
      minLength: 1
    AssetKind:
      description: The kind of the asset.
      type: string
      minLength: 1
      enum:
        - compute
        - environment
        - accessKey
        - dockerRegistry
        - password
        - genericSecret
        - registry
        - s3
        - git
        - nfs
        - pvc
        - hostPath
        - workload-template
        - model
        - config-map
        - secret-volume
        - data-volume
        - ngcApiKey
    UpdateCount:
      description: the value of an update counter of a data in the system.
      type: integer
      format: int64
      example: 12345
    AssetReadOnlyFields:
      required:
        - id
        - kind
        - createdBy
        - createdAt
        - updatedBy
        - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        kind:
          $ref: '#/components/schemas/AssetKind'
        tenantId:
          description: The id of the tenant.
          type: integer
          format: int32
          nullable: true
        createdBy:
          description: The user who created the asset.
          type: string
          minLength: 1
        createdAt:
          description: The time at which the asset were created
          type: string
          minLength: 1
          format: date-time
        updatedBy:
          description: The user who updated the asset.
          type: string
          minLength: 1
        updatedAt:
          description: The time at which the asset has been updated
          type: string
          minLength: 1
          format: date-time
        deletedAt:
          description: Deletion time of the asset (relevant for assets that sync to the cluster)
          type: string
          minLength: 1
          format: date-time
        deletedBy:
          description: The user who deleted the asset
          type: string
          minLength: 1
        projectName:
          description: The name of the project that the asset is associated with, for project scoped assets.
          type: string
          minLength: 1
          nullable: true
        updateCount:
          $ref: '#/components/schemas/UpdateCount'
      type: object
    AssetMeta:
      allOf:
        - $ref: '#/components/schemas/AssetUpdatableFields'
        - $ref: '#/components/schemas/AssetCreationFields'
        - $ref: '#/components/schemas/AssetReadOnlyFields'
      example:
        name: my-asset
        scope: tenant
        id: a418ed33-9399-48c0-a890-122cadd13bfd
        kind: s3
        createdBy: test@run.ai
        createdAt: '2023-02-23T14:25:36.707685Z'
        updatedBy: test@run.ai
        updatedAt: '2023-02-23T14:25:36.707685Z'
        workloadSupportedTypes:
          workspace: false
          training: false
          distributed: true
          distFramework: TF
    DataSourceOverrides:
      description: specific fields to override in the data source.
      type: object
      nullable: true
      properties:
        containerPath:
          type: string
          minLength: 1
          example: /container/directory
          nullable: true
    AssetIdAndKind:
      description: Asset id and its kind.
      required:
        - id
        - kind
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        kind:
          $ref: '#/components/schemas/AssetKind'
        overrides:
          $ref: '#/components/schemas/DataSourceOverrides'
    AssetsIds:
      description: Set of assets comprising a workspace or a workspace template.
      required:
        - environment
      properties:
        environment:
          $ref: '#/components/schemas/AssetId'
        compute:
          nullable: true
          type: string
          allOf:
            - $ref: '#/components/schemas/AssetId'
        datasources:
          type: array
          items:
            $ref: '#/components/schemas/AssetIdAndKind'
        workloadVolumes:
          type: array
          items:
            type: string
    WorkloadId:
      description: A unique ID of the workload.
      type: string
      format: uuid
    WorkloadName:
      description: The name of the workload.
      type: string
      minLength: 1
      example: my-workload-name
      pattern: .*
    WorkloadRefAndStatus:
      description: Id, name and status of a workspace or training
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/WorkloadId'
        name:
          $ref: '#/components/schemas/WorkloadName'
        status:
          description: The status of the workspace or training.
          type: string
          minLength: 1
    AssetRef:
      description: Reference information about an asset.
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        name:
          $ref: '#/components/schemas/AssetName'
    ToolType:
      description: Super set of Internal and External tool types.
      type: string
      minLength: 1
      enum:
        - jupyter-notebook
        - pycharm
        - visual-studio-code
        - tensorboard
        - rstudio
        - mlflow
        - custom
        - wandb
        - matlab
        - comet
        - chatbot-ui
    EnvironmentAssetRef:
      description: Reference information about environment asset.
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        name:
          $ref: '#/components/schemas/AssetName'
        toolTypes:
          description: the type of tools as defined in the connections of the environment asset.
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ToolType'
    AssetsUsageRefCompute:
      allOf:
        - $ref: '#/components/schemas/AssetRef'
      nullable: true
      type: object
    AssetDatasourceRef:
      description: Reference information about a datasource asset.
      required:
        - id
        - name
        - kind
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        name:
          $ref: '#/components/schemas/AssetName'
        kind:
          $ref: '#/components/schemas/AssetKind'
        overrides:
          $ref: '#/components/schemas/DataSourceOverrides'
          deprecated: true
    AssetsUsageRef:
      description: Reference information about usage of assets by other assets, for example datasources that uses credentials.
      properties:
        environment:
          nullable: true
          type: object
          description: environment asset.
          allOf:
            - $ref: '#/components/schemas/EnvironmentAssetRef'
          deprecated: true
        environments:
          type: array
          items:
            $ref: '#/components/schemas/AssetRef'
        compute:
          $ref: '#/components/schemas/AssetsUsageRefCompute'
          deprecated: true
        computes:
          type: array
          items:
            $ref: '#/components/schemas/AssetRef'
        datasources:
          type: array
          items:
            $ref: '#/components/schemas/AssetDatasourceRef'
    AssetUsageInfo:
      description: Details about resources that use the asset.
      properties:
        workspaces:
          description: workspaces that rely on this asset.
          type: array
          items:
            $ref: '#/components/schemas/WorkloadRefAndStatus'
        trainings:
          description: trainings that rely on this asset.
          type: array
          items:
            $ref: '#/components/schemas/WorkloadRefAndStatus'
        distributed:
          description: distributed trainings that rely on this asset.
          type: array
          items:
            $ref: '#/components/schemas/WorkloadRefAndStatus'
        inferences:
          description: inferences that rely on this asset.
          type: array
          items:
            $ref: '#/components/schemas/WorkloadRefAndStatus'
        templates:
          description: templates that rely on this asset.
          type: array
          items:
            $ref: '#/components/schemas/AssetRef'
        assets:
          description: list of other assets that use this asset. specifically, accessKeys used by s3, and passwords used by git.
          $ref: '#/components/schemas/AssetsUsageRef'
      nullable: true
      type: object
    UsageTimesInfo:
      description: Details about times the asset has been used by workloads, etc.
      properties:
        lastUsedByWorkload:
          description: The time at which the asset were last used by a workload of given type and project. This field requires complyToProject and complyToWorkload types flags of the API, to specify the workload type and project id.
          type: string
          minLength: 1
          format: date-time
          nullable: true
      nullable: true
      type: object
    PolicyRuleEnum:
      description: Indicates which validation rule (e.g., min, max, step, options, required, canEdit, canAdd) conflicted with policy restrictions, causing the asset or template to be rejected.
      type: string
      nullable: true
      enum:
        - min
        - max
        - step
        - options
        - required
        - canEdit
        - canAdd
        - locked
        - blocked
    ComplianceInfoReason:
      description: An issue preventing the use of a template or asset for creating workloads in a given project.
      required:
        - details
      properties:
        field:
          description: For policy related issues, includes a json path to the field in the policy for which the issue applies.
          nullable: true
          type: string
          pattern: .*
        details:
          description: Explanation of the issue.
          type: string
          pattern: .*
        rule:
          $ref: '#/components/schemas/PolicyRuleEnum'
    ComplianceInfo:
      description: Compliance of an asset with creation of workloads in a given project.
      properties:
        imposed:
          description: Whether the asset is imposed on created workloads by the administrator.
          type: boolean
        compliance:
          description: Whether the asset info complies with creation of workloads in the project.
          type: boolean
        reason:
          description: For asset that does not comply, specify one or more reason why.
          type: array
          items:
            $ref: '#/components/schemas/ComplianceInfoReason'
      nullable: true
      type: object
    AssetCreationRequest:
      allOf:
        - $ref: '#/components/schemas/AssetUpdatableFields'
        - $ref: '#/components/schemas/AssetCreationFields'
      example:
        name: my-asset
        scope: tenant
        workloadSupportedTypes:
          workspace: false
          training: false
          inference: false
          distributed: true
          distFramework: TF
    AssetUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/AssetUpdatableFields'
      example:
        name: my-asset
    CpuCoreLimit:
      description: Limitations on the number of CPUs consumed by the workload (0.5, 1, .etc). The system guarantees that this workload will not be able to consume more than this amount of CPUs.
      format: double
      type: number
      example: 2
      nullable: true
      minimum: 0
    CpuCoreRequest:
      description: CPU units to allocate for the created workload (0.5, 1, .etc). The workload will receive at least this amount of CPU. Note that the workload will not be scheduled unless the system can guarantee this amount of CPUs to the workload.
      format: double
      type: number
      example: 0.5
      nullable: true
      minimum: 0
    CpuMemoryLimit:
      description: Limitations on the CPU memory to allocate for this workload (1G, 20M, .etc). The system guarantees that this workload will not be able to consume more than this amount of memory. The workload will receive an error when trying to allocate more memory than this limit.
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      maxLength: 63
      example: 30M
      nullable: true
    CpuMemoryRequest:
      description: The amount of CPU memory to allocate for this workload (1G, 20M, .etc). The workload will receive at least this amount of memory. Note that the workload will not be scheduled unless the system can guarantee this amount of memory to the workload
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 20M
      maxLength: 63
      nullable: true
    ExtendedResource:
      description: Quantity of an extended resource.
      properties:
        resource:
          description: The name of the extended resource (mandatory)
          type: string
          example: hardware-vendor.example/foo
          minLength: 1
          maxLength: 253
          nullable: true
          pattern: .*
        quantity:
          description: The requested quantity for the resource.
          type: string
          example: 2
          minLength: 1
          maxLength: 63
          nullable: true
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
        exclude:
          description: Use 'true' in case the extended resource is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          example: false
          nullable: true
      nullable: true
      type: object
    ExtendedResources:
      description: Extended resources and their quantity.
      type: array
      items:
        $ref: '#/components/schemas/ExtendedResource'
      maxItems: 1000
      nullable: true
    GpuDevicesRequest:
      description: Requested number of GPU devices. Currently if more than one device is requested, it is not possible to provide values for gpuMemory or gpuPortion.
      type: integer
      format: int32
      example: 1
      nullable: true
      minimum: 0
    GpuMemoryLimit:
      description: Limitation on the memory consumed by the workload, per GPU device. The system guarantees The gpuMemoryLimit must be no less than gpuMemoryRequest.
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      maxLength: 63
      example: 10M
      nullable: true
    GpuMemoryRequest:
      description: Required if and only if gpuRequestType is memory. States the GPU memory to allocate for the created workload, per GPU device. Note that the workload will not be scheduled unless the system can guarantee this amount of GPU memory to the workload.
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      maxLength: 63
      example: 10M
      nullable: true
    GpuPortionLimit:
      description: Limitations on the portion consumed by the workload, per GPU device. The system guarantees The gpuPotionLimit must be no less than the gpuPortionRequest.
      type: number
      format: double
      example: 0.5
      nullable: true
      minimum: 0
    GpuPortionRequest:
      description: Required if and only if gpuRequestType is portion. States the portion of the GPU to allocate for the created workload, per GPU device, between 0 and 1. The default is no allocated GPUs.
      type: number
      format: double
      example: 0.5
      nullable: true
      minimum: 0
    GpuRequestType:
      description: Sets the unit type for GPU resources requests. Stated in terms of portion or memory. Sets the unit type for other GPU request fields. If `gpuDevicesRequest > 1`, only `portion` is supported. If `gpuDeviceRequest = 1`, the request type can be stated as `portion` or `memory`.
      type: string
      minLength: 1
      enum:
        - portion
        - memory
      nullable: true
    LargeShmRequest:
      description: A large /dev/shm device to mount into a container running the created workload. An shm is a shared file system mounted on RAM.
      type: boolean
      example: false
      nullable: true
    ComputeAssetSpec:
      properties:
        cpuCoreLimit:
          $ref: '#/components/schemas/CpuCoreLimit'
        cpuCoreRequest:
          $ref: '#/components/schemas/CpuCoreRequest'
        cpuMemoryLimit:
          $ref: '#/components/schemas/CpuMemoryLimit'
        cpuMemoryRequest:
          $ref: '#/components/schemas/CpuMemoryRequest'
        extendedResources:
          $ref: '#/components/schemas/ExtendedResources'
        gpuDevicesRequest:
          $ref: '#/components/schemas/GpuDevicesRequest'
        gpuMemoryLimit:
          $ref: '#/components/schemas/GpuMemoryLimit'
        gpuMemoryRequest:
          $ref: '#/components/schemas/GpuMemoryRequest'
        gpuPortionLimit:
          $ref: '#/components/schemas/GpuPortionLimit'
        gpuPortionRequest:
          $ref: '#/components/schemas/GpuPortionRequest'
        gpuRequestType:
          $ref: '#/components/schemas/GpuRequestType'
        largeShmRequest:
          $ref: '#/components/schemas/LargeShmRequest'
      type: object
    ComputeAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/ComputeAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
    ComputeListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ComputeAsset'
    ComputeCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          allOf:
            - $ref: '#/components/schemas/ComputeAssetSpec'
          nullable: true
          type: object
    ComputeUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          allOf:
            - $ref: '#/components/schemas/ComputeAssetSpec'
          nullable: true
          type: object
    AccessKeyCreationSpec:
      properties:
        existingSecretName:
          description: optional name of existing secret in the cluster from which the access key id and secret should be taken. If omitted, you will have to provide those credentials in the accessKeyId and secretAccessKey fields. The provided credentials are encrypted into the control plane database and cloned to a kubernetes secret in the cluster.
          nullable: true
          type: string
          minLength: 1
        accessKeyId:
          description: The access key id of the S3-compatible bucket, required only when not using existing secret.
          type: string
          nullable: true
          minLength: 1
        secretAccessKey:
          description: The secret access key of the S3-compatible bucket, required only when not using existing secret.
          type: string
          nullable: true
          minLength: 1
    EncryptionKeyId:
      required:
        - keyId
      properties:
        keyId:
          description: id of the encryption key which has been used to encrypt an asset's data.
          type: integer
          format: int32
    AccessKeySpec:
      allOf:
        - $ref: '#/components/schemas/AccessKeyCreationSpec'
        - $ref: '#/components/schemas/EncryptionKeyId'
    PasswordCreationSpec:
      properties:
        existingSecretName:
          description: optional name of existing secret in the cluster from which the user name and password should be taken. If omitted, you will have to provide those credentials in the user and password fields. The provided credentials are encrypted into the control plane database and cloned to a kubernetes secret in the cluster.
          nullable: true
          type: string
          minLength: 1
        user:
          description: The name of the user, required only when not using existing secret.
          type: string
          nullable: true
          minLength: 1
        password:
          description: The password, required only when not using existing secret.
          type: string
          nullable: true
          minLength: 1
    PasswordSpec:
      allOf:
        - $ref: '#/components/schemas/PasswordCreationSpec'
        - $ref: '#/components/schemas/EncryptionKeyId'
    DockerRegistryCreationSpec:
      properties:
        existingSecretName:
          description: optional name of existing secret in the cluster from which the docker registry details should be taken. If omitted, you will have to provide those credentials and url in relevant fields. The provided credentials are encrypted into the control plane database and cloned to a kubernetes secret in the cluster, along with the url.
          nullable: true
          type: string
          minLength: 1
        user:
          description: The name of the user, required only when not using existing secret.
          type: string
          nullable: true
          minLength: 1
        password:
          description: The password, required only when not using existing secret.
          type: string
          nullable: true
          minLength: 1
        url:
          description: The url, required only when not using existing secret.
          type: string
          nullable: true
          minLength: 1
    DockerRegistrySpec:
      allOf:
        - $ref: '#/components/schemas/DockerRegistryCreationSpec'
        - $ref: '#/components/schemas/EncryptionKeyId'
    KeyValuePair:
      description: Details of key-value pair to be stored in the credential.
      properties:
        key:
          description: The key of the secret
          type: string
          minLength: 1
          example: secret-key
          nullable: true
        value:
          description: The value of the secret.
          type: string
          example: my-secret
          nullable: true
      nullable: true
      type: object
    GenericSecretKeyValuePairs:
      description: Set of key-value pairs to store in the new credential.
      type: array
      items:
        $ref: '#/components/schemas/KeyValuePair'
      nullable: true
    GenericSecretCreationSpec:
      properties:
        existingSecretName:
          description: name of existing secret in the cluster from which the general key-value values should be taken.
          type: string
          minLength: 1
          nullable: true
        keyValuePairs:
          $ref: '#/components/schemas/GenericSecretKeyValuePairs'
    GenericSecretSpec:
      allOf:
        - $ref: '#/components/schemas/GenericSecretCreationSpec'
        - $ref: '#/components/schemas/EncryptionKeyId'
    NgcApiKeyCreationSpec:
      properties:
        ngc_api_key:
          description: The NGC API key value.
          type: string
          minLength: 1
          pattern: ^[-._A-Za-z0-9]+$
    NgcApiKeySpec:
      allOf:
        - $ref: '#/components/schemas/NgcApiKeyCreationSpec'
        - $ref: '#/components/schemas/EncryptionKeyId'
    CredentialsListResponseAssetSpec:
      properties:
        accessKey:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/AccessKeySpec'
        password:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/PasswordSpec'
        dockerRegistry:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/DockerRegistrySpec'
        genericSecret:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/GenericSecretSpec'
        ngcApiKey:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/NgcApiKeySpec'
    AssetSyncStatusEnum:
      type: string
      enum:
        - Creating
        - Deleting
        - Failed
        - Deletion failed
        - Issues found
        - No issues found
        - No status
        - Updating
    ScopeId:
      type: string
      description: The id of the cluster, department or project, depending on the scope type.
    AssetClusterStatusIssueEnum:
      type: string
      enum:
        - ReplicationError
        - LostPhase
        - NotCreated
    AssetClusterStatusIssue:
      type: object
      required:
        - scopeId
        - scopeType
        - issue
      properties:
        scopeId:
          $ref: '#/components/schemas/ScopeId'
        scopeType:
          $ref: '#/components/schemas/ScopeType'
        issue:
          $ref: '#/components/schemas/AssetClusterStatusIssueEnum'
    AssetClusterStatusIssues:
      type: array
      items:
        $ref: '#/components/schemas/AssetClusterStatusIssue'
    AssetClusterStatusInfo:
      properties:
        status:
          $ref: '#/components/schemas/AssetSyncStatusEnum'
        issues:
          $ref: '#/components/schemas/AssetClusterStatusIssues'
        message:
          type: string
        url:
          type: string
      nullable: true
      type: object
    ClusterResourceInfo:
      properties:
        name:
          example: password-credential-1
          description: The name of the resource created for the asset in the cluster.
          type: string
          nullable: true
      nullable: true
      type: object
    ClusterInfo:
      description: Cluster related information of the asset.
      properties:
        resources:
          type: array
          items:
            $ref: '#/components/schemas/ClusterResourceInfo'
      nullable: true
      type: object
    CredentialsListResponseEntry:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/CredentialsListResponseAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    CredentialsListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/CredentialsListResponseEntry'
    AssetMetaForSync:
      allOf:
        - $ref: '#/components/schemas/AssetCreationFields'
        - $ref: '#/components/schemas/AssetUpdatableFields'
        - type: object
          required:
            - id
          properties:
            id:
              $ref: '#/components/schemas/AssetId'
        - type: object
          required:
            - kind
          properties:
            kind:
              $ref: '#/components/schemas/AssetKind'
        - type: object
          properties:
            prevName:
              $ref: '#/components/schemas/AssetName'
    AccessKey:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/AccessKeySpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    AccessKeyListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/AccessKey'
    AccessKeyCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/AccessKeyCreationSpec'
    CredentialUpdatableFields:
      properties:
        description:
          $ref: '#/components/schemas/AssetDescription'
    CredentialUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/CredentialUpdatableFields'
      example:
        description: my-credentials
    AccessKeyUpdateRequest:
      properties:
        meta:
          $ref: '#/components/schemas/CredentialUpdateRequest'
    Password:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/PasswordSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    PasswordListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/Password'
    PasswordCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/PasswordCreationSpec'
    PasswordUpdateRequest:
      properties:
        meta:
          $ref: '#/components/schemas/CredentialUpdateRequest'
    DockerRegistry:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/DockerRegistrySpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    DockerRegistryListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/DockerRegistry'
    DockerRegistryCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/DockerRegistryCreationSpec'
    DockerRegistryUpdateRequest:
      properties:
        meta:
          $ref: '#/components/schemas/CredentialUpdateRequest'
    GenericSecret:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/GenericSecretSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    GenericSecretListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/GenericSecret'
    GenericSecretCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/GenericSecretCreationSpec'
    GenericSecretUpdateRequest:
      properties:
        meta:
          $ref: '#/components/schemas/CredentialUpdateRequest'
    NgcApiKey:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/NgcApiKeySpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    NgcApiKeyListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/NgcApiKey'
    NgcApiKeyCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/NgcApiKeyCreationSpec'
    NgcApiKeyUpdateRequest:
      properties:
        meta:
          $ref: '#/components/schemas/CredentialUpdateRequest'
    CredentialKind:
      description: The kind of credential used.
      type: string
      minLength: 1
      example: password
      enum:
        - password
    RegistrySpec:
      required:
        - url
        - credentialKind
        - user
        - password
      properties:
        url:
          description: The registry base url.
          type: string
          example: https://hub.docker.com/
          minLength: 1
        credentialKind:
          $ref: '#/components/schemas/CredentialKind'
        user:
          description: The name of the user.
          type: string
          example: admin
          minLength: 1
        password:
          description: The password.
          type: string
          example: 12345678
          minLength: 1
    Registry:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/RegistrySpec'
    RegistryListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/Registry'
    RegistryCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/RegistrySpec'
    RegistryUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
    Repositories:
      required:
        - repositories
      properties:
        repositories:
          type: array
          items:
            type: string
    RepositoryTags:
      required:
        - name
        - tags
      properties:
        name:
          type: string
        tags:
          type: array
          items:
            type: string
    Args:
      description: Arguments to the command that the container running the workload executes.
      type: string
      minLength: 1
      maxLength: 10000
      example: '-x my-script.py'
      nullable: true
      pattern: .*
    Command:
      description: A command to the server as the entry point of the container running the workload.
      type: string
      minLength: 1
      maxLength: 10000
      nullable: true
      example: python
      pattern: .*
    EnvironmentVariableCredential:
      description: Details of the secret and key use to populate the environment variable. (mutually exclusive with value)
      properties:
        assetId:
          description: Unique identifier of the asset. (mandatory)
          type: string
          minLength: 1
          format: uuid
          nullable: true
        key:
          description: The key in the secret resource. (mandatory)
          type: string
          minLength: 1
          example: POSTGRES_PASSWORD
          nullable: true
      nullable: true
      type: object
    EnvironmentVariableConfigMap:
      description: Details of the configMap and key use to populate the environment variable
      properties:
        name:
          description: The name of the config-map resource. (mandatory)
          type: string
          minLength: 1
          maxLength: 253
          example: my-config-map
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        key:
          description: The key in the config-map resource. (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: MY_POSTGRES_SCHEMA
          nullable: true
          pattern: .*
      nullable: true
      type: object
    EnvironmentVariablePodFieldReference:
      description: Details of the field-reference and key use to populate the environment variable
      properties:
        path:
          description: The field path resource. (mandatory)
          type: string
          minLength: 1
          maxLength: 10000
          example: metadata.name
          nullable: true
          pattern: .*
      nullable: true
      type: object
    EnvironmentVariableOfAsset:
      description: Details of an environment variable which is populated into the container.
      properties:
        name:
          description: The name of the environment variable. (mandatory)
          type: string
          minLength: 1
          example: HOME
          nullable: true
        value:
          description: The value of the environment variable. (mutually exclusive with credential, configMap and podFieldRef)
          type: string
          example: /home/my-folder
          nullable: true
        credential:
          $ref: '#/components/schemas/EnvironmentVariableCredential'
        configMap:
          $ref: '#/components/schemas/EnvironmentVariableConfigMap'
        podFieldRef:
          $ref: '#/components/schemas/EnvironmentVariablePodFieldReference'
        exclude:
          description: Use 'true' in case the environment variable is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          example: false
          nullable: true
        description:
          description: Description of the environment variable.
          type: string
          example: Home directory of the user.
          nullable: true
      nullable: true
      type: object
    EnvironmentVariablesOfAsset:
      description: Set of environment variables to populate into the container running the workspace.
      type: array
      items:
        $ref: '#/components/schemas/EnvironmentVariableOfAsset'
      nullable: true
    RunAsGid:
      description: The group id to run the entrypoint of the container which executes the workspace. Default to the value specified in the environment asset `runAsGid` field (optional). Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled.
      type: integer
      format: int64
      example: 30
      nullable: true
    RunAsUid:
      description: The user id to run the entrypoint of the container which executes the workspace. Default to the value specified in the environment asset `runAsUid` field (optional). Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled.
      type: integer
      format: int64
      example: 500
      nullable: true
    SupplementalGroups:
      description: Comma separated list of groups that the user running the container belongs to, in addition to the group indicated by runAsGid. Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled. Using an empty string implies reverting the supplementary groups of the image.
      type: string
      example: 2,3,5,8
      nullable: true
      pattern: .*
    OverridableSpecFields:
      nullable: true
      properties:
        args:
          $ref: '#/components/schemas/Args'
        command:
          $ref: '#/components/schemas/Command'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariablesOfAsset'
        runAsGid:
          $ref: '#/components/schemas/RunAsGid'
        runAsUid:
          $ref: '#/components/schemas/RunAsUid'
        supplementalGroups:
          $ref: '#/components/schemas/SupplementalGroups'
      type: object
    AllowPrivilegeEscalation:
      description: Allow the container running the workload and all launched processes to gain additional privileges after the workload starts. For more information consult the User Identity in Container guide at https://run-ai-docs.nvidia.com/self-hosted/2.25/infrastructure-setup/advanced-setup/container-access/user-identity-in-containers
      type: boolean
      example: false
      nullable: true
    Capability:
      type: string
      enum:
        - AUDIT_CONTROL
        - AUDIT_READ
        - AUDIT_WRITE
        - BLOCK_SUSPEND
        - CHOWN
        - DAC_OVERRIDE
        - DAC_READ_SEARCH
        - FOWNER
        - FSETID
        - IPC_LOCK
        - IPC_OWNER
        - KILL
        - LEASE
        - LINUX_IMMUTABLE
        - MAC_ADMIN
        - MAC_OVERRIDE
        - MKNOD
        - NET_ADMIN
        - NET_BIND_SERVICE
        - NET_BROADCAST
        - NET_RAW
        - SETGID
        - SETFCAP
        - SETPCAP
        - SETUID
        - SYS_ADMIN
        - SYS_BOOT
        - SYS_CHROOT
        - SYS_MODULE
        - SYS_NICE
        - SYS_PACCT
        - SYS_PTRACE
        - SYS_RAWIO
        - SYS_RESOURCE
        - SYS_TIME
        - SYS_TTY_CONFIG
        - SYSLOG
        - WAKE_ALARM
    Capabilities:
      description: Add POSIX capabilities to running containers. Defaults to the default set of capabilities granted by the container runtime.
      type: array
      items:
        $ref: '#/components/schemas/Capability'
      example:
        - CHOWN
        - KILL
      nullable: true
    CreateHomeDir:
      description: When set to `true`, creates a home directory for the container.
      type: boolean
      nullable: true
    HostIpc:
      description: Whether to enable host IPC. Defaults to false.
      type: boolean
      example: false
      nullable: true
    HostNetwork:
      description: Whether to enable host networking. Default to false.
      type: boolean
      example: false
      nullable: true
    Image:
      description: Docker image name. For more information, see [Images](https://kubernetes.io/docs/concepts/containers/images). The image name is mandatory for creating a workload.
      type: string
      minLength: 1
      maxLength: 253
      example: python:3.8
      nullable: true
      pattern: .*
    ImagePullPolicy:
      description: Image pull policy. Defaults to `Always` if `:latest` tag is specified, otherwise it is `IfNotPresent`.
      type: string
      minLength: 1
      enum:
        - Always
        - Never
        - IfNotPresent
      nullable: true
    ProbeHandlerScheme:
      description: Scheme to use for connecting to the host, defaults to HTTP.
      type: string
      enum:
        - HTTP
        - HTTPS
      nullable: true
    ProbeHandler:
      description: The action taken to determine the health of the container. (mandatory)
      type: object
      properties:
        httpGet:
          description: An action based on HTTP Get requests.
          type: object
          properties:
            path:
              description: Path to access on the HTTP server, defaults to /.
              type: string
              pattern: ^(\x2F[a-zA-Z0-9\-_.\x2F]*)?$
              example: /
              nullable: true
              maxLength: 2048
            port:
              description: Number of the port to access on the container.
              type: integer
              format: int32
              minimum: 1
              maximum: 65535
              nullable: true
            host:
              description: Host name to connect to, defaults to the pod IP.
              type: string
              format: hostname
              example: example.com
              nullable: true
              pattern: .*
              maxLength: 253
            scheme:
              $ref: '#/components/schemas/ProbeHandlerScheme'
      nullable: true
    Probe:
      type: object
      properties:
        initialDelaySeconds:
          description: Number of seconds after the container has started before liveness or readiness probes are initiated.
          type: integer
          format: int32
          minimum: 0
          nullable: true
        periodSeconds:
          description: How often (in seconds) to perform the probe.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        timeoutSeconds:
          description: Number of seconds after which the probe times out.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        successThreshold:
          description: Minimum consecutive successes for the probe to be considered successful after having failed.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        failureThreshold:
          description: When a probe fails, the number of times to try before giving up.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        handler:
          $ref: '#/components/schemas/ProbeHandler'
      nullable: true
    Probes:
      description: Probes are used to determine if the container is healthy and ready to accept traffic.
      type: object
      properties:
        readiness:
          $ref: '#/components/schemas/Probe'
      nullable: true
    ReadOnlyRootFileSystem:
      description: If true, mounts the container's root filesystem as read-only.
      type: boolean
      example: false
      nullable: true
    RunAsNonRoot:
      description: Force the container to run as a non-root user.
      type: boolean
      example: true
      nullable: true
    SeccompProfileType:
      description: Indicates which kind of seccomp profile will be applied to the container. The options are a. `RuntimeDefault` - the container runtime default profile should be used. b. `Unconfined` - no profile should be applied. c. `Localhost` is not yet supported by Run:ai.
      type: string
      enum:
        - RuntimeDefault
        - Unconfined
        - Localhost
      nullable: true
    Stdin:
      description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF
      type: boolean
      nullable: true
    Tty:
      description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
      type: boolean
      nullable: true
    UidGidSource:
      description: Indicate the way to determine the user and group ids of the container. The options are a. `fromTheImage` - user and group ids are determined by the docker image that the container runs. this is the default option. b. `custom` - user and group ids can be specified in the environment asset and/or the workload creation request. c. `idpToken` - user and group IDs are automatically taken from the identity provider (IdP) token (available only in SSO-enabled installations). For more information, see [User Identity](https://run-ai-docs.nvidia.com/self-hosted/2.25/infrastructure-setup/advanced-setup/container-access/user-identity-in-containers).
      type: string
      enum:
        - fromTheImage
        - fromIdpToken
        - custom
      nullable: true
    WorkingDir:
      description: Container's working directory. If not specified, the container runtime default will be used. This may be configured in the container image.
      type: string
      minLength: 1
      maxLength: 4096
      nullable: true
      example: /home/myfolder
      pattern: .*
    InternalToolType:
      description: The type of the internal tool. Internal tool runs within the container and exposes ports associated with the tool using NodePort, LoadBalancer or ExternalUrl.
      type: string
      minLength: 1
      enum:
        - jupyter-notebook
        - pycharm
        - visual-studio-code
        - tensorboard
        - rstudio
        - mlflow
        - custom
        - matlab
        - chatbot-ui
    InternalConnectionType:
      description: The type of connection that exposes the container port.
      type: string
      minLength: 1
      enum:
        - LoadBalancer
        - NodePort
        - ExternalUrl
        - ServingPort
    NodePortInfo:
      properties:
        isCustomPort:
          description: Whether the node port is provided in the specific env of the workspace. Default is false, and in this case the node port is auto generated by the system.
          type: boolean
          default: false
      nullable: true
      type: object
    ExternalUrlInfo:
      properties:
        isCustomUrl:
          description: Whether external url is provided in the specific env of the workspace. Default is false, and in this case the external url is auto generated by the system.
          type: boolean
          default: false
        externalUrl:
          description: Default value for the external url. You can override it in the specific env of the workspace. Should be specified for ExternalUrl only.
          type: string
          nullable: true
          minLength: 1
      nullable: true
      type: object
    ServingPortInfo:
      properties:
        protocol:
          type: string
          enum:
            - grpc
            - http
          nullable: true
      nullable: true
      type: object
    InternalToolInfo:
      description: Information of the internal tool.
      required:
        - toolType
        - connectionType
        - containerPort
      properties:
        toolType:
          $ref: '#/components/schemas/InternalToolType'
        connectionType:
          $ref: '#/components/schemas/InternalConnectionType'
        containerPort:
          description: The port within the container that the connection exposes.
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
        nodePortInfo:
          $ref: '#/components/schemas/NodePortInfo'
        externalUrlInfo:
          $ref: '#/components/schemas/ExternalUrlInfo'
        servingPortInfo:
          $ref: '#/components/schemas/ServingPortInfo'
      nullable: true
      type: object
    ExternalToolType:
      description: The type of external tool that is associated with the connection. External tool typically runs in the cloud and require external url for connecting to it.
      type: string
      minLength: 1
      enum:
        - wandb
        - comet
    ExternalToolInfo:
      description: Information of the external tool.
      required:
        - toolType
        - externalUrl
      properties:
        toolType:
          $ref: '#/components/schemas/ExternalToolType'
        externalUrl:
          description: The external url for connecting to the external tool. The url can include environment variables that will be replaced with the value provided for those variables when the workspace is created.
          example: https://wandb.com/myteam/${PROJECT_NAME}
          type: string
          minLength: 1
      nullable: true
      type: object
    Connection:
      required:
        - name
      properties:
        name:
          description: A unique name of this connection. This name correlates between the connection information specified at the environment asset, to the information about the connection as specified in SpecificEnv for a specific workspace.
          type: string
          minLength: 1
        isExternal:
          description: Internal tools (isExternal=false) are tools that run as part of the container. External tools (isExternal=true) run outside the container, typically in the cloud.
          type: boolean
          default: false
        internalToolInfo:
          $ref: '#/components/schemas/InternalToolInfo'
        externalToolInfo:
          $ref: '#/components/schemas/ExternalToolInfo'
    NonOverridableSpecFields:
      allOf:
        - nullable: true
          properties:
            allowPrivilegeEscalation:
              $ref: '#/components/schemas/AllowPrivilegeEscalation'
            capabilities:
              $ref: '#/components/schemas/Capabilities'
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            hostIpc:
              $ref: '#/components/schemas/HostIpc'
            hostNetwork:
              $ref: '#/components/schemas/HostNetwork'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            probes:
              $ref: '#/components/schemas/Probes'
            readOnlyRootFilesystem:
              $ref: '#/components/schemas/ReadOnlyRootFileSystem'
            runAsNonRoot:
              $ref: '#/components/schemas/RunAsNonRoot'
            seccompProfileType:
              $ref: '#/components/schemas/SeccompProfileType'
            stdin:
              $ref: '#/components/schemas/Stdin'
            tty:
              $ref: '#/components/schemas/Tty'
            uidGidSource:
              $ref: '#/components/schemas/UidGidSource'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
        - properties:
            connections:
              description: List of connections that either expose ports from the container (each port is associated with a tool that the container runs), or URL's to be used for connecting to an external tool that is related to the action of the container (such as Weights & Biases).
              items:
                $ref: '#/components/schemas/Connection'
              type: array
            overrideUidGidInWorkspace:
              default: false
              description: Allow specifying uid/gid as part of create workspace. This is relevant only for custom uigGidSource.
              type: boolean
    EnvironmentAssetSpec:
      allOf:
        - $ref: '#/components/schemas/OverridableSpecFields'
        - $ref: '#/components/schemas/NonOverridableSpecFields'
    EnvironmentAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/EnvironmentAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
    EnvironmentListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentAsset'
    EnvironmentCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/EnvironmentAssetSpec'
    EnvironmentUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/EnvironmentAssetSpec'
    HostPathMountPropagation:
      description: Share this volumes mount with other containers. If set to HostToContainer, this volume mount will receive all subsequent mounts that are mounted to this volume or any of its subdirectories. In case of multiple hostPath entries, this field should have the same value for all of them.
      type: string
      enum:
        - None
        - HostToContainer
      nullable: true
    HostPath:
      properties:
        path:
          description: Local path within the controller to which the host volume will be mapped. (mandatory)
          type: string
          minLength: 1
          maxLength: 4096
          example: /container/directory
          nullable: true
          pattern: .*
        readOnly:
          description: Force the volume to be mounted with read-only permissions. Defaults to false.
          type: boolean
          default: true
          nullable: true
        mountPath:
          description: The path that the host volume will be mounted to when in use. (mandatory)
          type: string
          minLength: 1
          maxLength: 4096
          example: /local/directory
          nullable: true
          pattern: .*
        mountPropagation:
          $ref: '#/components/schemas/HostPathMountPropagation'
      nullable: true
      type: object
    HostPathSpec:
      allOf:
        - $ref: '#/components/schemas/HostPath'
    Nfs:
      properties:
        path:
          description: Path that is exported by the NFS server (mandatory). For more information, see [NFS](https://kubernetes.io/docs/concepts/storage/volumes#nfs).
          type: string
          minLength: 1
          maxLength: 4096
          example: /container/nfs
          nullable: true
          pattern: .*
        readOnly:
          description: Force the NFS export to be mounted with read-only permissions.
          type: boolean
          default: true
          nullable: true
        server:
          description: The hostname or IP address of the NFS server. (mandatory)
          type: string
          minLength: 1
          maxLength: 253
          example: my.nfs.com
          nullable: true
          pattern: .*
        mountPath:
          description: The path that the NFS volume will be mounted to when in use. (mandatory)
          type: string
          minLength: 1
          maxLength: 4096
          example: /local/nfs
          nullable: true
          pattern: .*
      nullable: true
      type: object
    NFSAssetSpec:
      allOf:
        - $ref: '#/components/schemas/Nfs'
    PvcClaimSize:
      description: 'Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB'
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      maxLength: 63
      example: 1G
      nullable: true
    PvcAddedAttrValue:
      type: object
      required:
        - key
      properties:
        key:
          type: string
          minLength: 1
          maxLength: 63
          pattern: ^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$
          example: dnsname
        value:
          type: string
          example: my.dns.com
          pattern: .*
          maxLength: 10000
    PvcAddedAttrValues:
      description: an optional array of key-values pairs that are written as annotations on the created PVC. the allowed attributes are determined according to the storage class configuration (see k8s-objects-tracker for further info).
      type: array
      items:
        $ref: '#/components/schemas/PvcAddedAttrValue'
      maxItems: 1000
    PvcFieldsUpdatable:
      properties:
        path:
          description: Local path within the workload to which the PVC bucket will be mapped. (mandatory)
          type: string
          minLength: 1
          maxLength: 4096
          example: /container/my-claim
          nullable: true
          pattern: .*
      nullable: true
      type: object
    PvcAccessModes:
      description: Default access mode(s) applied to newly created PVCs unless explicitly overridden.
      properties:
        readWriteOnce:
          description: Mount the volume as read/write by a single node.
          type: boolean
          default: true
          nullable: true
        readOnlyMany:
          description: Mount the volume as read-only by many nodes.
          type: boolean
          default: false
          nullable: true
        readWriteMany:
          description: Mount the volume as read/write by many nodes.
          type: boolean
          default: false
          nullable: true
      nullable: true
      type: object
    PvcVolumeMode:
      description: Default volume mode for the PVC. Choose between Filesystem (default) or Block.
      type: string
      enum:
        - Filesystem
        - Block
      nullable: true
    ClaimInfo:
      description: Claim information for the newly created PVC. The information should not be provided when attempting to use existing PVC.
      properties:
        size:
          $ref: '#/components/schemas/PvcClaimSize'
        storageClass:
          description: Storage class name to associate with the PVC. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. For more information, see [Storage class](https://kubernetes.io/docs/concepts/storage/storage-classes).
          type: string
          minLength: 1
          maxLength: 63
          example: my-storage-class
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        accessModes:
          $ref: '#/components/schemas/PvcAccessModes'
        volumeMode:
          $ref: '#/components/schemas/PvcVolumeMode'
        addedAttrValues:
          $ref: '#/components/schemas/PvcAddedAttrValues'
      nullable: true
      type: object
    PvcFieldsNonUpdatable:
      properties:
        existingPvc:
          description: Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.
          type: boolean
          default: false
          nullable: true
        claimName:
          description: Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.
          type: string
          minLength: 1
          maxLength: 63
          example: my-claim
          nullable: true
          pattern: .*
        readOnly:
          description: Permit only read access to PVC.
          type: boolean
          default: false
          nullable: true
        ephemeral:
          description: Use `true` to set PVC to ephemeral. If set to `true`, the PVC will be deleted when the workload is stopped. Not supported for inference workloads.
          type: boolean
          default: false
          example: false
          nullable: true
        claimInfo:
          $ref: '#/components/schemas/ClaimInfo'
        dataSharing:
          description: use `true` to share the PVC data to all projects under the selected scope.
          type: boolean
          default: false
          example: false
          nullable: true
      nullable: true
      type: object
    Pvc:
      allOf:
        - $ref: '#/components/schemas/PvcFieldsUpdatable'
        - $ref: '#/components/schemas/PvcFieldsNonUpdatable'
    PVCAssetSpec:
      allOf:
        - $ref: '#/components/schemas/Pvc'
    GitCommon:
      properties:
        repository:
          description: URL to a remote Git repository. The content of this repository will be mapped to the container running the workload. (mandatory)
          type: string
          minLength: 1
          maxLength: 2048
          example: https://github.com/my-git/my-repo
          nullable: true
        branch:
          description: Specific branch to synchronize the repository from.
          type: string
          minLength: 1
          maxLength: 63
          example: main
          nullable: true
        revision:
          description: Specific revision to synchronize the repository from.
          type: string
          minLength: 1
          maxLength: 63
          nullable: true
        path:
          description: Local path within the workload to which the Git repository will be mapped (mandatory).
          type: string
          minLength: 1
          maxLength: 4096
          example: /container/my-repository
          nullable: true
      nullable: true
      type: object
    GitPasswordAsset:
      properties:
        passwordAssetId:
          description: UUID of a credential asset of type userid / password. This credential is required for authenticating with private Git repositories using SSH. (deprecated - use credentialId instead).
          type: string
          format: uuid
          nullable: true
          minLength: 1
    GitCredentialId:
      properties:
        credentialId:
          description: UUID of a credential asset of type generic secret or user id / password required for authenticating with private Git repositories. For generic secret, the credential asset must contain a key-value pair where the key is ssh (lowercase) and the value is a valid private SSH key
          type: string
          format: uuid
          nullable: true
          minLength: 1
    GitAssetSpec:
      allOf:
        - $ref: '#/components/schemas/GitCommon'
        - $ref: '#/components/schemas/GitPasswordAsset'
        - $ref: '#/components/schemas/GitCredentialId'
    S3Common:
      properties:
        bucket:
          description: The name of the bucket. (mandatory)
          type: string
          minLength: 1
          example: my-bucket
          nullable: true
        path:
          description: Local path within the workload to which the S3 bucket will be mapped. (mandatory)
          type: string
          minLength: 1
          example: /container/my-bucket
          nullable: true
        url:
          description: The url of the S3 service provider. The default is the URL of the Amazon AWS S3 service.
          type: string
          minLength: 1
          example: https://s3.amazonaws.com
          nullable: true
      nullable: true
      type: object
    S3AccessKeyAsset:
      properties:
        accessKeyAssetId:
          description: ID of credentials asset of type access-key, for private S3 buckets.
          type: string
          format: uuid
          minLength: 1
          nullable: true
    S3AssetSpec:
      allOf:
        - $ref: '#/components/schemas/S3Common'
        - $ref: '#/components/schemas/S3AccessKeyAsset'
    DefaultMode:
      type: string
      description: |
        File permission mode in octal string format. This value must be a 4-digit octal number, representing the default file mode when mounting a Secret or ConfigMap as a volume.
      minLength: 4
      maxLength: 4
      example: '0644'
      pattern: 0[0-7]{3}
      nullable: true
    ConfigMap:
      properties:
        configMap:
          description: The name of the ConfigMap resource. (mandatory)
          type: string
          minLength: 1
          maxLength: 253
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        mountPath:
          description: Local path within the workload to which the ConfigMap will be mapped to. (mandatory)
          type: string
          minLength: 1
          maxLength: 4096
          nullable: true
          pattern: .*
        subPath:
          description: Path within the volume from which the container's volume should be mounted.
          type: string
          minLength: 1
          maxLength: 4096
          nullable: true
          pattern: .*
        defaultMode:
          $ref: '#/components/schemas/DefaultMode'
      nullable: true
      type: object
    ConfigMapAssetSpec:
      allOf:
        - $ref: '#/components/schemas/ConfigMap'
    CredentialAsset:
      properties:
        credentialAssetId:
          description: ID of credentials asset (mandatory)
          type: string
          format: uuid
          nullable: true
          minLength: 1
    SecretAssetSpec:
      allOf:
        - $ref: '#/components/schemas/CredentialAsset'
        - properties:
            mountPath:
              description: Local path within the workspace to which the Secret will be mapped to (mandatory)
              type: string
              minLength: 1
              nullable: true
            defaultMode:
              $ref: '#/components/schemas/DefaultMode'
      type: object
    DatasourceListResponseAssetSpec:
      properties:
        hostPath:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/HostPathSpec'
        nfs:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/NFSAssetSpec'
        pvc:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/PVCAssetSpec'
        git:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/GitAssetSpec'
        s3:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/S3AssetSpec'
        config_map:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/ConfigMapAssetSpec'
        secret:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/SecretAssetSpec'
    DatasourceListResponseEntry:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/DatasourceListResponseAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    DatasourceListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/DatasourceListResponseEntry'
    GitAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/GitAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
    GitListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/GitAsset'
    GitCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/GitAssetSpec'
    GitUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/GitAssetSpec'
    HostPathAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/HostPathSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
    HostPathListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/HostPathAsset'
    HostPathCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/HostPathSpec'
    HostPathUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/HostPathSpec'
    NFSAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/NFSAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
    NFSListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/NFSAsset'
    NFSCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/NFSAssetSpec'
    S3Asset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/S3AssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
    NFSUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/NFSAssetSpec'
    PVCAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/PVCAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
        clusterInfo:
          $ref: '#/components/schemas/ClusterInfo'
    PVCListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/PVCAsset'
    PVCCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/PVCAssetSpec'
    PVCUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/PvcFieldsUpdatable'
    HistoryRecordType:
      type: string
      enum:
        - Event
        - PhaseUpdate
    HistoryRecordMeta:
      type: object
      required:
        - creationTimestamp
        - type
      properties:
        creationTimestamp:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        type:
          $ref: '#/components/schemas/HistoryRecordType'
    InvolvedObject:
      type: object
      required:
        - uid
        - kind
        - name
        - namespace
      properties:
        uid:
          type: string
          format: uuid
        kind:
          type: string
          example: Pod
        name:
          type: string
          example: test-0-1
        namespace:
          type: string
          example: runai-test
    Event:
      type: object
      nullable: true
      required:
        - createdAt
        - type
        - clusterId
        - message
      properties:
        createdAt:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        id:
          type: string
          format: uuid
        type:
          type: string
          example: Normal
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        message:
          type: string
          example: Started container z
        reason:
          type: string
          example: Started
        source:
          type: string
          example: kubelet
        involvedObject:
          $ref: '#/components/schemas/InvolvedObject'
    HistoryRecords:
      type: array
      items:
        $ref: '#/components/schemas/HistoryRecord1'
      x-schema-name: HistoryRecords
    PVCHistoryResponse:
      type: object
      required:
        - records
      properties:
        next:
          type: integer
          example: 1
        records:
          $ref: '#/components/schemas/HistoryRecords'
    S3ListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/S3Asset'
    S3CreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/S3AssetSpec'
    S3UpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/S3AssetSpec'
    AssetsRefCompute:
      allOf:
        - $ref: '#/components/schemas/AssetRef'
      nullable: true
      type: object
    DatasourceRef:
      description: Reference information about a datasource asset.
      required:
        - id
        - name
        - kind
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        name:
          $ref: '#/components/schemas/AssetName'
        kind:
          $ref: '#/components/schemas/AssetKind'
        overrides:
          $ref: '#/components/schemas/DataSourceOverrides'
    AssetsRef:
      description: Reference information about a set of assets. used to describe - assets comprising a workspace - assets comprising a workspace template - assets that use other assets (e.g. s3 asset which uses access key).
      required:
        - environment
      properties:
        environment:
          description: environment asset.
          allOf:
            - $ref: '#/components/schemas/EnvironmentAssetRef'
        compute:
          $ref: '#/components/schemas/AssetsRefCompute'
        datasources:
          type: array
          items:
            $ref: '#/components/schemas/DatasourceRef'
        workloadVolumes:
          type: array
          items:
            type: string
    SpecificRunConnectionInfo:
      required:
        - connectionName
      properties:
        name:
          type: string
          minLength: 1
          description: Unique identifier of the connection. Will be used to correlate between the information given here and the information provided for the connection in the environment asset.
        nodePort:
          description: Port number of the host that will be connected with the container port. Required if and only if isCustomPort is set to true in the environment asset.
          type: integer
          format: int32
          minimum: 0
          maximum: 65535
          nullable: true
        externalUrl:
          description: URL to associated with the container port. Required if and only if isCustomExternalUrl is set to true in the environment asset.
          type: string
          minLength: 1
          nullable: true
        authorizedUsers:
          description: List of users or applications that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.
          type: array
          items:
            type: string
          nullable: true
        authorizedGroups:
          description: Specifies the names of those groups that are allowed to access the connection. Note that authorizedUsers and authorizedGroups are mutually exclusive.
          type: array
          items:
            type: string
          nullable: true
    SpecificRunConnections:
      properties:
        connections:
          type: array
          items:
            $ref: '#/components/schemas/SpecificRunConnectionInfo'
          nullable: true
      nullable: true
      type: object
    Annotation:
      description: Annotation details to be populated into the container.
      properties:
        name:
          description: The name of the annotation (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: billing
          nullable: true
          pattern: .*
        value:
          description: The value of the annotation.
          type: string
          example: my-billing-unit
          maxLength: 10000
          nullable: true
          pattern: .*
        exclude:
          description: Use 'true' in case the annotation is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          default: false
          example: false
          nullable: true
      nullable: true
      type: object
    Annotations:
      description: Set of annotations to populate into the container running the workload.
      type: array
      items:
        $ref: '#/components/schemas/Annotation'
      maxItems: 1000
      nullable: true
    AutoDeletionTimeAfterPreemption:
      description: Specifies the duration after which a finished workload (completed or failed) will be automatically deleted. The default is 30 days. Log retention is managed separately.
      format: int64
      type: integer
      example: 15
      nullable: true
    BackoffLimit:
      description: Specifies the number of retries before marking a workload as failed (not applicable to Inference workloads). The default value is 6.
      format: int64
      type: integer
      example: 3
      nullable: true
    Category:
      description: Specify the workload category assigned to the workload. Categories are used to classify and monitor different types of workloads within the NVIDIA Run:ai platform.
      type: string
      nullable: true
      pattern: .*
    Completions:
      description: Used with Hyperparameter Optimization. Specifies the number of successful pods the job should reach to be completed. The Job will be marked as successful once the specified amount of pods has been reached (applicable to standard training only).
      type: integer
      format: int32
      example: 1
      nullable: true
    ImagePullSecret:
      description: A reference to a secret in the same namespace used to pull container images.
      properties:
        name:
          type: string
          description: The name of the Kubernetes secret containing the image pull credentials.
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
          maxLength: 253
        userCredential:
          type: boolean
          description: Indicates whether the secret is a user credential. Set to true if the secret was created by the user and is only accessible by them.
          nullable: true
        exclude:
          description: Use 'true' in case the secret is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          default: false
          example: false
          nullable: true
      nullable: true
      type: object
    ImagePullSecrets:
      description: A list of references to Kubernetes secrets in the same namespace used for pulling container images.
      type: array
      items:
        $ref: '#/components/schemas/ImagePullSecret'
      maxItems: 1000
      nullable: true
    Label:
      description: Label details to be populated into the container.
      properties:
        name:
          description: The name of the label (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: stage
          nullable: true
          pattern: .*
        value:
          description: The value of the label.
          type: string
          example: initial-research
          nullable: true
          pattern: .*
        exclude:
          description: Use 'true' in case the label is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          example: false
          nullable: true
      nullable: true
      type: object
    Labels:
      description: Set of labels to populate into the container running the workload.
      type: array
      items:
        $ref: '#/components/schemas/Label'
      maxItems: 1000
      nullable: true
    MatchExpressionOperator:
      description: Represents a key's relationship to a set of values (mandatory).
      type: string
      enum:
        - In
        - NotIn
        - Exists
        - DoesNotExist
        - Gt
        - Lt
    MatchExpression:
      type: object
      description: A selector that contains values, a key, and an operator that relates the key and values.
      properties:
        key:
          description: The label key that the selector applies to (mandatory).
          type: string
          pattern: .*
          maxLength: 63
        operator:
          $ref: '#/components/schemas/MatchExpressionOperator'
        values:
          description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer.
          type: array
          items:
            type: string
            maxLength: 10000
            pattern: .*
          maxItems: 1000
      required:
        - key
        - operator
      nullable: true
    NodeSelectorTerm:
      type: object
      description: A null or empty node selector term matches no objects. The requirements of them are ANDed.
      properties:
        matchExpressions:
          description: A list of node selector requirements by node's labels.
          type: array
          items:
            $ref: '#/components/schemas/MatchExpression'
          maxItems: 1000
      nullable: true
    NodeAffinityRequired:
      type: object
      description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
      properties:
        nodeSelectorTerms:
          description: A list of node selector terms. The terms are ORed.
          type: array
          items:
            $ref: '#/components/schemas/NodeSelectorTerm'
          maxItems: 1000
      nullable: true
    NodePools:
      description: A prioritized list of node pools for the scheduler to run the workload on. The scheduler will always try to use the first node pool before moving to the next one if the first is not available.
      type: array
      items:
        type: string
        maxLength: 63
        pattern: .*
      maxItems: 1000
      example:
        - my-node-pool-a
        - my-node-pool-b
      nullable: true
    NodeType1:
      description: Nodes (machines), or a group of nodes on which the workload will run. To use this feature, your Administrator will need to label nodes. For more information, see [Group Nodes](https://docs.run.ai/latest/admin/researcher-setup/limit-to-node-group). When using this flag with with Project-based affinity, it refines the list of allowable node groups set in the Project. For more information, see [Projects](https://docshub.run.ai/guides/platform-management/aiinitiatives/organization/projects).
      type: string
      minLength: 1
      example: my-node-type
      nullable: true
      pattern: .*
    Parallelism:
      description: Used with Hyperparameter Optimization. Specifies the maximum number of pods the workload should run at any given time (applicable to standard training only).
      type: integer
      format: int32
      example: 1
      nullable: true
    PodAffinityType:
      description: The affinity type, required or preferred. (mandatory)
      type: string
      enum:
        - Required
        - Preferred
      nullable: true
    PodAffinity:
      description: Pod affinity scheduling rules (e.g. co-locate this workload in the same node, zone, etc. as some other workloads).
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PodAffinityType'
        key:
          description: The label key to use. (mandatory)
          type: string
          nullable: true
          pattern: .*
          maxLength: 63
      nullable: true
    Preemptibility:
      description: Specifies whether the workload can be preempted by higher-priority workloads. Valid values are preemptible and non-preemptible. If explicitly set, this value takes precedence. If not set, the system derives the preemptibility from the priorityClassName field, ensuring backward compatibility. Each workload type has a default preemptibility. To view the default preemptibility for each workload type, use the GET /workload-types endpoint.
      type: string
      minLength: 1
      enum:
        - preemptible
        - non-preemptible
      nullable: true
    PriorityClass:
      description: 'Specifies the priority class for the workload, which determines its scheduling behavior. Valid values are: very-low, low, medium-low, medium, medium-high, high, and very-high. Each workload type has a default priority. To view the default priority for each workload type, use the GET /workload-types endpoint. Once you change the priority from the default value defined for that workload type, the preemptibility field is not automatically updated. Make sure to set the desired preemptibility value.'
      type: string
      nullable: true
      pattern: .*
    RestartPolicy:
      description: Specify the restart policy of the workload pods. Default is empty, which is determine by the framework default
      type: string
      minLength: 1
      enum:
        - Always
        - Never
        - OnFailure
      nullable: true
    TerminateAfterPreemption:
      description: Indicates if the job should be terminated by the system after it has been preempted.
      type: boolean
      example: false
      nullable: true
    TerminationGracePeriod:
      description: Duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down).
      format: int64
      type: integer
      minimum: 0
      example: 20
      nullable: true
    TolerationOperator:
      description: A key's relationship to the value. Equal uses key and value. Exists is equivalent to wildcard for value, so that a workload can tolerate all taints of a particular category. (mandatory)
      type: string
      enum:
        - Equal
        - Exists
      nullable: true
    TolerationEffect:
      description: The taint effect to match. (mandatory)
      type: string
      enum:
        - NoSchedule
        - NoExecute
        - PreferNoSchedule
        - Any
      nullable: true
    Toleration:
      description: Toleration details.
      properties:
        name:
          description: The name of the toleration.
          type: string
          minLength: 1
          maxLength: 253
          nullable: true
          pattern: .*
        operator:
          $ref: '#/components/schemas/TolerationOperator'
        key:
          description: The taint key that the toleration applies to. (mandatory)
          type: string
          maxLength: 253
          nullable: true
          pattern: .*
        value:
          description: The taint value the toleration matches to. Mandatory if operator is Exists, forbidden otherwise.
          type: string
          maxLength: 10000
          nullable: true
          pattern: .*
        effect:
          $ref: '#/components/schemas/TolerationEffect'
        seconds:
          description: The period of time the toleration tolerates the taint. Valid only if effect is NoExecute. taint.
          type: integer
          minimum: 1
          nullable: true
        exclude:
          description: Use 'true' in case the label is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          example: false
          nullable: true
      nullable: true
      type: object
    Tolerations:
      description: Set of tolerations to apply to the workload.
      type: array
      items:
        $ref: '#/components/schemas/Toleration'
      maxItems: 1000
      nullable: true
    AllowOverQuota:
      properties:
        allowOverQuota:
          description: Whether to allow the workload to exceed the quota of the project.
          type: boolean
          nullable: true
    MetricThresholdPercentageField:
      properties:
        metricThresholdPercentage:
          description: The percentage of metric threshold value to use for autoscaling. Defaults to 70. Applicable only with the 'throughput' and 'concurrency' metrics
          type: number
          format: float
          minimum: 1
          maximum: 100
          nullable: true
    InferencesMinReplicasField:
      properties:
        minReplicas:
          description: The minimum number of replicas for autoscaling. Defaults to 1. Use 0 to allow scale-to-zero
          type: integer
          format: int32
          minimum: 0
          nullable: true
    InferencesMaxReplicasField:
      properties:
        maxReplicas:
          description: The maximum number of replicas for autoscaling. Defaults to minReplicas, or to 1 if minReplicas is set to 0
          type: integer
          format: int32
          minimum: 1
          nullable: true
    InitialReplicasField:
      properties:
        initialReplicas:
          description: The number of replicas to run when initializing the workload for the first time. Defaults to minReplicas, or to 1 if minReplicas is set to 0
          type: integer
          format: int32
          minimum: 0
          nullable: true
    ActivationReplicasField:
      properties:
        activationReplicas:
          description: The number of replicas to run when scaling-up from zero. Defaults to minReplicas, or to 1 if minReplicas is set to 0
          type: integer
          format: int32
          minimum: 1
          nullable: true
    ConcurrencyHardLimitField:
      properties:
        concurrencyHardLimit:
          description: The maximum number of requests allowed to flow to a single replica at any time. 0 means no limit
          type: integer
          format: int32
          minimum: 0
          nullable: true
    ScaleToZeroRetentionField:
      properties:
        scaleToZeroRetentionSeconds:
          description: The minimum amount of time (in seconds) that the last replica will remain active after a scale-to-zero decision. Defaults to 0. Available only if minReplicas is set to 0
          type: integer
          format: int32
          minimum: 0
          maximum: 3600
          nullable: true
    ScaleDownDelayField:
      properties:
        scaleDownDelaySeconds:
          description: The minimum amount of time (in seconds) that a replica will remain active after a scale-down decision
          type: integer
          format: int32
          minimum: 0
          maximum: 3600
          nullable: true
    InitializationTimeoutField:
      properties:
        initializationTimeoutSeconds:
          description: Use `servingConfiguration.initializationTimeoutSeconds` instead.  If this field is set, it will be ignored and the value under `servingConfiguration` will be used. The maximum amount of time (in seconds) to wait for the container to become ready.
          type: integer
          format: int32
          minimum: 1
          nullable: true
          deprecated: true
    AutoScalingCommonFields:
      allOf:
        - $ref: '#/components/schemas/MetricThresholdPercentageField'
        - $ref: '#/components/schemas/InferencesMinReplicasField'
        - $ref: '#/components/schemas/InferencesMaxReplicasField'
        - $ref: '#/components/schemas/InitialReplicasField'
        - $ref: '#/components/schemas/ActivationReplicasField'
        - $ref: '#/components/schemas/ConcurrencyHardLimitField'
        - $ref: '#/components/schemas/ScaleToZeroRetentionField'
        - $ref: '#/components/schemas/ScaleDownDelayField'
        - $ref: '#/components/schemas/InitializationTimeoutField'
      nullable: true
      type: object
    AutoScalingMetric:
      description: The metric to use for autoscaling. Mandatory if minReplicas < maxReplicas, except for the special case where minReplicas is set to 0 and maxReplicas is set to 1, as in this case autoscaling decisions are made according to network activity rather than metrics. Use one of the built-in metrics of 'throughput', 'concurrency' or 'latency', or any other available custom metric. Only the 'throughput' and 'concurrency' metrics support scale-to-zero
      type: string
      pattern: ^[a-zA-Z_:][a-zA-Z0-9_:]*$
      example: http_requests_total
      nullable: true
    SpecificRunMetricFields:
      properties:
        thresholdMetric:
          $ref: '#/components/schemas/AutoScalingMetric'
        thresholdValue:
          description: The threshold value to use with the specified metric for autoscaling
          type: integer
          format: int32
          nullable: true
      type: object
      nullable: true
    SpecificRunAutoScaling:
      properties:
        autoScaling:
          allOf:
            - $ref: '#/components/schemas/AutoScalingCommonFields'
            - $ref: '#/components/schemas/SpecificRunMetricFields'
          nullable: true
          type: object
      nullable: true
      type: object
    ServingPortAccessAuthorizationTypeEnum:
      type: string
      enum:
        - public
        - authenticatedUsers
        - authorizedUsers
        - authorizedGroups
        - authorizedUsersOrGroups
      description: |
        Specifies who can send inference requests to the serving endpoint:

        Possible values:
        - `public`: No authorization is required. (Default)
        - `authenticatedUsers`: Any NVIDIA Run:ai authenticated user and service account can send requests.
        - `authorizedUsers`: Only users listed in the authorizedUsers field can send requests.
        - `authorizedGroups`: Only members of user groups listed in the authorizedGroups field can send requests.
        - `authorizedUsersOrGroups`: Requires either authorizedUsers or authorizedGroups to be provided; if neither is set, or if both are set, a mutual exclusion error is reported. Supported from cluster version 2.19.
      nullable: true
    AuthorizedUsers:
      description: List of users or service accounts that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.
      type: array
      items:
        type: string
        maxLength: 253
        pattern: .*
      maxItems: 1000
      example:
        - user-a
        - user-b
      nullable: true
    AuthorizedGroups:
      description: List of groups that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.
      type: array
      items:
        type: string
        maxLength: 253
        pattern: .*
      maxItems: 1000
      example:
        - group-a
        - group-b
      nullable: true
    ServingPortAccess:
      properties:
        authorizationType:
          $ref: '#/components/schemas/ServingPortAccessAuthorizationTypeEnum'
        authorizedUsers:
          $ref: '#/components/schemas/AuthorizedUsers'
        authorizedGroups:
          $ref: '#/components/schemas/AuthorizedGroups'
        clusterLocalAccessOnly:
          description: Configure the serving port URL to be available only on the cluster-local network, and not externally. Defaults to false
          type: boolean
          nullable: true
    SpecificRunServingPortAccess:
      properties:
        servingPortAccess:
          allOf:
            - $ref: '#/components/schemas/ServingPortAccess'
          nullable: true
          type: object
      nullable: true
      type: object
    SpecificRunParams:
      allOf:
        - $ref: '#/components/schemas/SpecificRunConnections'
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            completions:
              $ref: '#/components/schemas/Completions'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesOfAsset'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType1'
            parallelism:
              $ref: '#/components/schemas/Parallelism'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            runAsGid:
              $ref: '#/components/schemas/RunAsGid'
            runAsUid:
              $ref: '#/components/schemas/RunAsUid'
            supplementalGroups:
              $ref: '#/components/schemas/SupplementalGroups'
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
          type: object
        - $ref: '#/components/schemas/AllowOverQuota'
        - $ref: '#/components/schemas/SpecificRunAutoScaling'
        - $ref: '#/components/schemas/SpecificRunServingPortAccess'
      description: |
        Parameters which apply to a specific workload. They complement the information gathered from the assets comprising the workload.
      nullable: true
      type: object
    DistributedFramework:
      description: The distributed training framework used in the workload.
      type: string
      enum:
        - MPI
        - PyTorch
        - TF
        - XGBoost
        - JAX
      nullable: true
    AssetsRefOptional:
      allOf:
        - $ref: '#/components/schemas/AssetsRef'
      type: object
      nullable: true
    InfoDistMaster:
      description: |
        Parameters which apply to the master in a distributed training.
      nullable: true
      type: object
      properties:
        assets:
          $ref: '#/components/schemas/AssetsRefOptional'
        specificEnv:
          $ref: '#/components/schemas/SpecificRunParams'
    InfoDistributed:
      description: |
        Parameters which apply to distributed training.
      allOf:
        - properties:
            numWorkers:
              type: integer
            noMaster:
              type: boolean
              nullable: true
            distFramework:
              $ref: '#/components/schemas/DistributedFramework'
            master:
              $ref: '#/components/schemas/InfoDistMaster'
      nullable: true
      type: object
    SpecificRunInfoFields:
      description: Information about the set of assets which comprises a workspace, training or template, and an optional set of specific run parameters.
      required:
        - assets
      properties:
        assets:
          $ref: '#/components/schemas/AssetsRef'
        specificEnv:
          $ref: '#/components/schemas/SpecificRunParams'
        distributed:
          $ref: '#/components/schemas/InfoDistributed'
    WorkloadTemplate:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/SpecificRunInfoFields'
    WorkloadTemplateListResponse:
      type: object
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/WorkloadTemplate'
    SpecificRunCreationFields:
      description: The information needed for creating az template - a set of assets and an optional set of specific environment parameters.
      required:
        - assets
      properties:
        assets:
          $ref: '#/components/schemas/AssetsIds'
        specificEnv:
          $ref: '#/components/schemas/SpecificRunParams'
    WorkloadTemplateCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/SpecificRunCreationFields'
    WorkloadTemplateUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/SpecificRunCreationFields'
    DistMaster:
      description: |
        Parameters which apply to the master in a distributed training.
      nullable: true
      type: object
      properties:
        assets:
          $ref: '#/components/schemas/AssetsIds'
        specificEnv:
          $ref: '#/components/schemas/SpecificRunParams'
    Distributed:
      description: |
        Parameters which apply to distributed training.
      allOf:
        - properties:
            numWorkers:
              type: integer
            noMaster:
              type: boolean
              nullable: true
            distFramework:
              $ref: '#/components/schemas/DistributedFramework'
            master:
              $ref: '#/components/schemas/DistMaster'
      nullable: true
      type: object
    ComplianceIssuesV2:
      properties:
        complianceIssues:
          type: array
          items:
            type: object
            required:
              - details
              - field
            properties:
              field:
                type: string
                example: compute.gpuDevicesRequest
              details:
                type: string
                example: value must be no less than 3
              rule:
                $ref: '#/components/schemas/PolicyRuleEnum'
      nullable: true
      type: object
    SubmissionErrorV2:
      allOf:
        - $ref: '#/components/schemas/Error'
        - $ref: '#/components/schemas/ComplianceIssuesV2'
    DepartmentId:
      description: The id of the department.
      type: string
      minLength: 1
      example: 2
      pattern: .*
    WorkloadDesiredPhase:
      description: The desired phase of the workload.
      type: string
      enum:
        - Running
        - Stopped
        - Deleted
    Phase:
      type: string
      enum:
        - Creating
        - Initializing
        - Resuming
        - Pending
        - Deleting
        - Running
        - Updating
        - Stopped
        - Stopping
        - Degraded
        - Failed
        - Completed
        - Terminating
        - Unknown
    WorkloadMeta:
      required:
        - name
        - requestedName
        - workloadId
        - projectId
        - clusterId
        - createdBy
        - createdAt
        - desiredPhase
      properties:
        name:
          $ref: '#/components/schemas/WorkloadName'
        requestedName:
          description: The name as was requested for the workload. If useGivenNameAsPrefix, in the creation request, is false, name and requestedName should be identical. Otherwise, name should be composed of requestedName followed by a suffix of random characters.
          type: string
        workloadId:
          $ref: '#/components/schemas/WorkloadId'
        projectId:
          $ref: '#/components/schemas/ProjectId'
        departmentId:
          $ref: '#/components/schemas/DepartmentId'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        createdBy:
          description: The user who created the workload
          type: string
          example: test@lab.com
        createdAt:
          description: The creation time of the workload.
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        deletedAt:
          description: The deletion time of the workload.
          type: string
          nullable: true
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        desiredPhase:
          $ref: '#/components/schemas/WorkloadDesiredPhase'
        actualPhase:
          $ref: '#/components/schemas/Phase'
    WorkspaceSpecificRunParams:
      allOf:
        - $ref: '#/components/schemas/SpecificRunConnections'
        - $ref: '#/components/schemas/AllowOverQuota'
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesOfAsset'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType1'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            runAsGid:
              $ref: '#/components/schemas/RunAsGid'
            runAsUid:
              $ref: '#/components/schemas/RunAsUid'
            supplementalGroups:
              $ref: '#/components/schemas/SupplementalGroups'
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
          type: object
      nullable: true
      type: object
    DataVolume:
      properties:
        id:
          description: The unique identifier of the data volume. (mandatory)
          type: string
          format: uuid
          example: 123e4567-e89b-12d3-a456-426614174000
          nullable: true
        mountPath:
          description: The path where the data volume will be mounted. (mandatory)
          type: string
          example: /mnt/data
          nullable: true
          pattern: .*
          maxLength: 4096
      nullable: true
      type: object
    SecretFieldsUpdatable:
      properties:
        mountPath:
          description: Local path within the workload to which the Secret will be mapped to. (mandatory)
          type: string
          minLength: 1
          nullable: true
        defaultMode:
          $ref: '#/components/schemas/DefaultMode'
      nullable: true
      type: object
    SecretFieldsNonUpdatable:
      properties:
        secret:
          description: The name of the Secret resource. (mandatory)
          type: string
          minLength: 1
          nullable: true
      nullable: true
      type: object
    Secret:
      allOf:
        - $ref: '#/components/schemas/SecretFieldsUpdatable'
        - $ref: '#/components/schemas/SecretFieldsNonUpdatable'
    ProjectIdOptional:
      description: The id of the project.
      type: integer
      format: int32
      example: 1
      nullable: true
    SourceOfRule:
      description: This field is used by the system along with effective rules, in order to specify the org unit from which this effective rule has been derived. It should be left empty when sending apply policy requests.
      required:
        - scope
      properties:
        scope:
          $ref: '#/components/schemas/ScopeType'
        projectId:
          $ref: '#/components/schemas/ProjectIdOptional'
        departmentId:
          $ref: '#/components/schemas/DepartmentIdOptional'
        clusterId:
          $ref: '#/components/schemas/ClusterIdOptional'
        isFallback:
          description: source of this rule is the fallback policy
          type: boolean
      example:
        scope: project
        projectId: 3
      nullable: true
      type: object
    StringRulesCommon:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        required:
          description: Whether the field is mandatory, default to false.
          type: boolean
          nullable: true
        canEdit:
          description: Whether the value of the field is editable, default to true
          type: boolean
          nullable: true
        blocked:
          description: Blocks the field to prevent workloads from specifying any value for it.
          type: boolean
          nullable: true
      example:
        required: true
        canEdit: false
        blocked: false
    StringOption:
      description: One of the values that the field can be assigned to, when options police is applied on the field.
      required:
        - value
      properties:
        value:
          description: The value that the field should hold
          type: string
          pattern: .*
        displayed:
          description: Textual description of the value. to be used by user interface applications.
          type: string
          nullable: true
          pattern: .*
      example:
        value: value
        displayed: A description of the value.
    StringRulesOptions:
      properties:
        options:
          description: Set of options that the value of the field must be chosen from.
          type: array
          items:
            $ref: '#/components/schemas/StringOption'
          nullable: true
    StringRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/StringRulesOptions'
      nullable: true
      type: object
    DataVolumeRules:
      properties:
        id:
          $ref: '#/components/schemas/StringRules'
        mountPath:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    ItemRules:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        canAdd:
          description: Whether it is permitted to add items. Default to true.
          type: boolean
          nullable: true
        locked:
          description: Set of keys for items that are "locked", i.e. cannot be removed or deleted.
          type: array
          items:
            type: string
          example:
            - HOME
            - USER
      nullable: true
      type: object
    DataVolumesRules:
      properties:
        attributes:
          $ref: '#/components/schemas/DataVolumeRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    BooleanRules:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        required:
          description: Whether the field is mandatory. default to false.
          type: boolean
          nullable: true
        canEdit:
          description: Whether the value of the field is editable. default to true
          type: boolean
          nullable: true
      nullable: true
      type: object
    PvcAccessModesRules:
      description: Rules for access mode(s) for a newly created PVC.
      properties:
        readWriteOnce:
          $ref: '#/components/schemas/BooleanRules'
        readOnlyMany:
          $ref: '#/components/schemas/BooleanRules'
        readWriteMany:
          $ref: '#/components/schemas/BooleanRules'
      nullable: true
      type: object
    ClaimInfoRules:
      properties:
        size:
          $ref: '#/components/schemas/StringRules'
        storageClass:
          $ref: '#/components/schemas/StringRules'
        accessModes:
          $ref: '#/components/schemas/PvcAccessModesRules'
      nullable: true
      type: object
    PvcRules:
      properties:
        claimName:
          $ref: '#/components/schemas/StringRules'
        path:
          $ref: '#/components/schemas/StringRules'
        readOnly:
          $ref: '#/components/schemas/BooleanRules'
        claimInfo:
          $ref: '#/components/schemas/ClaimInfoRules'
      nullable: true
      type: object
    PvcsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/PvcRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    HostPathMountPropagationOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/HostPathMountPropagation'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
    HostPathMountPropagationRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/HostPathMountPropagationOptions'
      nullable: true
      type: object
    HostPathRules:
      properties:
        path:
          $ref: '#/components/schemas/StringRules'
        readOnly:
          $ref: '#/components/schemas/BooleanRules'
        mountPath:
          $ref: '#/components/schemas/StringRules'
        mountPropagation:
          $ref: '#/components/schemas/HostPathMountPropagationRules'
      nullable: true
      type: object
    HostPathsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/HostPathRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    NfsRules:
      properties:
        path:
          $ref: '#/components/schemas/StringRules'
        readOnly:
          $ref: '#/components/schemas/BooleanRules'
        server:
          $ref: '#/components/schemas/StringRules'
        mountPath:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    NfssRules:
      properties:
        attributes:
          $ref: '#/components/schemas/NfsRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    GitRules:
      properties:
        repository:
          $ref: '#/components/schemas/StringRules'
        branch:
          $ref: '#/components/schemas/StringRules'
        revision:
          $ref: '#/components/schemas/StringRules'
        path:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    GitsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/GitRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    ConfigMapRules:
      properties:
        configMap:
          $ref: '#/components/schemas/StringRules'
        mountPath:
          $ref: '#/components/schemas/StringRules'
        subPath:
          $ref: '#/components/schemas/StringRules'
        defaultMode:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    ConfigMapsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/ConfigMapRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    SecretRules:
      properties:
        secret:
          $ref: '#/components/schemas/StringRules'
        mountPath:
          $ref: '#/components/schemas/StringRules'
        defaultMode:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    SecretsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/SecretRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    EmptyDirRules:
      properties:
        path:
          $ref: '#/components/schemas/StringRules'
        medium:
          $ref: '#/components/schemas/StringRules'
        sizeLimit:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    EmptyDirsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/EmptyDirRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    S3Rules:
      properties:
        bucket:
          $ref: '#/components/schemas/StringRules'
        path:
          $ref: '#/components/schemas/StringRules'
        url:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    S3sRules:
      properties:
        attributes:
          $ref: '#/components/schemas/S3Rules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    InstancesRules:
      properties:
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    DefaultFromRule:
      properties:
        field:
          description: The default of this field is taken from another field, with optional factor. The specified field must belong to the same workload section (compute, security, etc). For itemized field, the value of the field will be taken from the same instance.
          type: string
          nullable: true
          pattern: .*
        factor:
          description: Multiple the value of the fromField by this factor to get the value for this field For example, if factor is 2 and defaultFrom field has value of 8, the calculated default will be determined to be 16.
          type: number
          format: double
          nullable: true
          default: 1
      nullable: true
      type: object
    IntegerRules:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        required:
          description: Whether the field is mandatory. default to false.
          type: boolean
          nullable: true
        canEdit:
          description: Whether the value of the field is editable. default to true
          type: boolean
          nullable: true
        min:
          description: The minimum value that the field can be assigned to.
          type: integer
          format: int32
          nullable: true
        max:
          description: The maximum value that the field can be assigned to.
          type: integer
          format: int32
          nullable: true
        step:
          description: The minimal difference between two values the field can be assigned to. For example, min=2, max=10, step=2 implies that the values the field can hold are 2, 4, 6, 8 and 10.
          type: integer
          format: int32
          nullable: true
        defaultFrom:
          $ref: '#/components/schemas/DefaultFromRule'
      nullable: true
      type: object
    ImagePullSecretsRulesAttributes:
      description: Rules for the attributes of imagePullSecrets
      properties:
        name:
          $ref: '#/components/schemas/StringRules'
        userCredentials:
          $ref: '#/components/schemas/BooleanRules'
      nullable: true
      type: object
    ImagePullSecretsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/ImagePullSecretsRulesAttributes'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    ArbitraryRules:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        required:
          description: Whether this arbitrary object is mandatory. default to false.
          type: boolean
          nullable: true
        canEdit:
          description: Whether the value of the field, as a whole, is editable. default to false.
          type: boolean
          nullable: true
      nullable: true
      type: object
    ArrayRules:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        required:
          description: Whether this array is mandatory. Mandatory array must include at least one item. default to false.
          type: boolean
          nullable: true
        options:
          description: Set of options that the value of each item of the array must be chosen from.
          type: array
          items:
            $ref: '#/components/schemas/StringOption'
        canEdit:
          description: Whether the value of the array, as a whole, is editable. default to false.
          type: boolean
          nullable: true
      nullable: true
      type: object
    PodAffinityTypeOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/PodAffinityType'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      type: object
    PodAffinityTypeRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/PodAffinityTypeOptions'
      nullable: true
      type: object
    PodAffinityRules:
      properties:
        type:
          $ref: '#/components/schemas/PodAffinityTypeRules'
        key:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    PreemptibilityOptions:
      properties:
        options:
          description: Limit the permitted values for preemptibility to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/Preemptibility'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    PreemptibilityRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/PreemptibilityOptions'
      nullable: true
      type: object
    RestartPolicyOptions:
      properties:
        options:
          description: Limit the permitted values for restartPolicy to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/RestartPolicy'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    RestartPolicyRule:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/RestartPolicyOptions'
      nullable: true
      type: object
    IntegerRulesOptional:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        canEdit:
          description: Whether the value of the field is editable. default to true
          type: boolean
          nullable: true
        min:
          description: The minimum value that the field can be assigned to.
          type: integer
          format: int32
          nullable: true
        max:
          description: The maximum value that the field can be assigned to.
          type: integer
          format: int32
          nullable: true
        step:
          description: The minimal difference between two values the field can be assigned to. For example, min=2, max=10, step=2 implies that the values the field can hold are 2, 4, 6, 8 and 10.
          type: integer
          format: int32
          nullable: true
        defaultFrom:
          $ref: '#/components/schemas/DefaultFromRule'
      nullable: true
      type: object
    TolerationOperatorOptions:
      properties:
        options:
          description: Limit the permitted values for imagePullPolicy to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/TolerationOperator'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    TolerationOperatorRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/TolerationOperatorOptions'
      nullable: true
      type: object
    TolerationEffectOptions:
      properties:
        options:
          description: Limit the permitted values for imagePullPolicy to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/TolerationEffect'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    TolerationEffectRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/TolerationEffectOptions'
      nullable: true
      type: object
    TolerationRules:
      description: Toleration details.
      properties:
        operator:
          $ref: '#/components/schemas/TolerationOperatorRules'
        key:
          $ref: '#/components/schemas/StringRules'
        value:
          $ref: '#/components/schemas/StringRules'
        effect:
          $ref: '#/components/schemas/TolerationEffectRules'
        seconds:
          $ref: '#/components/schemas/IntegerRules'
        exclude:
          $ref: '#/components/schemas/BooleanRules'
      nullable: true
      type: object
    TolerationsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/TolerationRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    NumberRules:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        required:
          description: Whether the field is mandatory. default to false.
          type: boolean
          nullable: true
        canEdit:
          description: Whether the value of the field is editable. default to true
          type: boolean
          nullable: true
        min:
          description: The minimum value that the field can be assigned to.
          type: number
          nullable: true
        max:
          description: The maximum value that the field can be assigned to.
          type: number
          nullable: true
        step:
          description: The minimal difference between two values the field can be assigned to. For example, min=2, max=3, step=0.25 implies that the values the field can hold are 2, 2.25, 2.5 and 3.
          type: number
          nullable: true
        defaultFrom:
          $ref: '#/components/schemas/DefaultFromRule'
      nullable: true
      type: object
    AutoScalingMetricOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/AutoScalingMetric'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    AutoScalingMetricRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/AutoScalingMetricOptions'
      nullable: true
      type: object
    AutoScalingRules:
      properties:
        metricThresholdPercentage:
          $ref: '#/components/schemas/NumberRules'
        minReplicas:
          $ref: '#/components/schemas/IntegerRules'
        maxReplicas:
          $ref: '#/components/schemas/IntegerRules'
        initialReplicas:
          $ref: '#/components/schemas/IntegerRules'
        activationReplicas:
          $ref: '#/components/schemas/IntegerRules'
        metric:
          $ref: '#/components/schemas/AutoScalingMetricRules'
        metricThreshold:
          $ref: '#/components/schemas/IntegerRules'
        concurrencyHardLimit:
          $ref: '#/components/schemas/IntegerRules'
        scaleToZeroRetentionSeconds:
          $ref: '#/components/schemas/IntegerRules'
        scaleDownDelaySeconds:
          $ref: '#/components/schemas/IntegerRules'
        initializationTimeoutSeconds:
          allOf:
            - $ref: '#/components/schemas/IntegerRules'
          deprecated: true
      nullable: true
      type: object
    ServingConfigurationRules:
      properties:
        initializationTimeoutSeconds:
          $ref: '#/components/schemas/IntegerRules'
        requestTimeoutSeconds:
          $ref: '#/components/schemas/IntegerRules'
      nullable: true
      type: object
    InferenceFieldsRules:
      properties:
        autoscaling:
          $ref: '#/components/schemas/AutoScalingRules'
        servingConfiguration:
          $ref: '#/components/schemas/ServingConfigurationRules'
      nullable: true
      type: object
    SpecificRunParamsRules:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/InstancesRules'
            args:
              $ref: '#/components/schemas/StringRules'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/IntegerRules'
            backoffLimit:
              $ref: '#/components/schemas/IntegerRules'
            category:
              $ref: '#/components/schemas/StringRules'
            command:
              $ref: '#/components/schemas/StringRules'
            completions:
              $ref: '#/components/schemas/IntegerRules'
            environmentVariables:
              $ref: '#/components/schemas/InstancesRules'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsRules'
            labels:
              $ref: '#/components/schemas/InstancesRules'
            nodeAffinityRequired:
              $ref: '#/components/schemas/ArbitraryRules'
            nodePools:
              $ref: '#/components/schemas/ArrayRules'
            nodeType:
              $ref: '#/components/schemas/StringRules'
            parallelism:
              $ref: '#/components/schemas/IntegerRules'
            podAffinity:
              $ref: '#/components/schemas/PodAffinityRules'
            preemptibility:
              $ref: '#/components/schemas/PreemptibilityRules'
            priorityClass:
              $ref: '#/components/schemas/StringRules'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicyRule'
            runAsGid:
              $ref: '#/components/schemas/IntegerRulesOptional'
            runAsUid:
              $ref: '#/components/schemas/IntegerRulesOptional'
            supplementalGroups:
              $ref: '#/components/schemas/StringRules'
            terminateAfterPreemption:
              $ref: '#/components/schemas/BooleanRules'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/IntegerRules'
            tolerations:
              $ref: '#/components/schemas/TolerationsRules'
          type: object
        - $ref: '#/components/schemas/InferenceFieldsRules'
      description: Rules which apply to specific workload.
      nullable: true
      type: object
    WorkloadCreationMeta:
      required:
        - name
        - projectId
        - clusterId
      properties:
        name:
          $ref: '#/components/schemas/WorkloadName'
        useGivenNameAsPrefix:
          description: When true, the requested name will be treated as a prefix. The final name of the workload will be composed of the name followed by a random set of characters.
          type: boolean
          example: true
          default: false
        projectId:
          $ref: '#/components/schemas/ProjectId'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
    TrainingSpecificRunParams:
      allOf:
        - $ref: '#/components/schemas/SpecificRunConnections'
        - $ref: '#/components/schemas/AllowOverQuota'
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            completions:
              $ref: '#/components/schemas/Completions'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesOfAsset'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType1'
            parallelism:
              $ref: '#/components/schemas/Parallelism'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            runAsGid:
              $ref: '#/components/schemas/RunAsGid'
            runAsUid:
              $ref: '#/components/schemas/RunAsUid'
            supplementalGroups:
              $ref: '#/components/schemas/SupplementalGroups'
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
          type: object
      nullable: true
      type: object
    OptionalAssetIds:
      allOf:
        - $ref: '#/components/schemas/AssetsIds'
      nullable: true
      type: object
    InferenceSpecificRunParams:
      allOf:
        - $ref: '#/components/schemas/SpecificRunConnections'
        - $ref: '#/components/schemas/SpecificRunAutoScaling'
        - $ref: '#/components/schemas/SpecificRunServingPortAccess'
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesOfAsset'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType1'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            runAsGid:
              $ref: '#/components/schemas/RunAsGid'
            runAsUid:
              $ref: '#/components/schemas/RunAsUid'
            supplementalGroups:
              $ref: '#/components/schemas/SupplementalGroups'
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
          type: object
      nullable: true
      type: object
    ConfigMapAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/ConfigMapAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
    ConfigMapListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/ConfigMapAsset'
    ConfigMapCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/ConfigMapAssetSpec'
    ConfigMapUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
    SecretAsset:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetMeta'
        spec:
          $ref: '#/components/schemas/SecretAssetSpec'
        usedBy:
          $ref: '#/components/schemas/AssetUsageInfo'
        usageTimes:
          $ref: '#/components/schemas/UsageTimesInfo'
        compliance:
          $ref: '#/components/schemas/ComplianceInfo'
        status:
          $ref: '#/components/schemas/AssetClusterStatusInfo'
    SecretAssetListResponse:
      required:
        - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/SecretAsset'
    SecretAssetCreationRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/SecretAssetSpec'
    SecretAssetUpdateRequest:
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
    WorkloadType:
      description: the type of workload
      type: string
      enum:
        - Workspace
        - Training
        - Distributed
        - Inference
        - DistributedInference
    EnvironmentVariableSecret:
      description: Details of the secret and key use to populate the environment variable
      properties:
        name:
          description: The name of the secret resource. (mandatory)
          type: string
          minLength: 1
          maxLength: 253
          example: postgress_secret
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        key:
          description: The key in the secret resource. (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: POSTGRES_PASSWORD
          nullable: true
          pattern: .*
      nullable: true
      type: object
    EnvironmentVariableUserCredential:
      description: Defines a reference to a user-created credential and a specific key within that credential whose value will populate the environment variable. User credentials can only be accessed by the user who created them.
      properties:
        name:
          description: The name of the user credential.  (mandatory)
          type: string
          minLength: 1
          maxLength: 253
          example: my_postgres_user_and_password
          nullable: true
        key:
          description: The key in the user credential resource. (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: POSTGRES_PASSWORD
          nullable: true
      nullable: true
      type: object
    EnvironmentVariable:
      description: Details of an environment variable which is populated into the container.
      properties:
        name:
          description: The name of the environment variable. (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: HOME
          nullable: true
          pattern: .*
        value:
          description: The value of the environment variable. (mutually exclusive with secret, userCredential, configMap and podFieldRef)
          type: string
          maxLength: 10000
          example: /home/my-folder
          nullable: true
          pattern: .*
        secret:
          $ref: '#/components/schemas/EnvironmentVariableSecret'
        configMap:
          $ref: '#/components/schemas/EnvironmentVariableConfigMap'
        podFieldRef:
          $ref: '#/components/schemas/EnvironmentVariablePodFieldReference'
        userCredential:
          $ref: '#/components/schemas/EnvironmentVariableUserCredential'
        exclude:
          description: Use 'true' in case the environment variable is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          example: false
          nullable: true
        description:
          description: Description of the environment variable.
          type: string
          maxLength: 250
          example: Home directory of the user.
          nullable: true
          pattern: .*
      nullable: true
      type: object
    EnvironmentVariables:
      description: Set of environment variables to populate into the container running the workload.
      type: array
      items:
        $ref: '#/components/schemas/EnvironmentVariable'
      maxItems: 1000
      nullable: true
    DistributedInferenceLeaderWorkerSpecSecurity:
      title: DistributedInferenceLeaderWorkerSpecSecurity
      nullable: true
      properties:
        capabilities:
          $ref: '#/components/schemas/Capabilities'
        hostIpc:
          $ref: '#/components/schemas/HostIpc'
        hostNetwork:
          $ref: '#/components/schemas/HostNetwork'
        readOnlyRootFilesystem:
          $ref: '#/components/schemas/ReadOnlyRootFileSystem'
        runAsGid:
          $ref: '#/components/schemas/RunAsGid'
        runAsNonRoot:
          $ref: '#/components/schemas/RunAsNonRoot'
        runAsUid:
          $ref: '#/components/schemas/RunAsUid'
        seccompProfileType:
          $ref: '#/components/schemas/SeccompProfileType'
        supplementalGroups:
          $ref: '#/components/schemas/SupplementalGroups'
        uidGidSource:
          $ref: '#/components/schemas/UidGidSource'
      type: object
    StorageInstanceName:
      properties:
        name:
          description: unique name to identify the instance. primarily used for policy locked rules.
          type: string
          minLength: 1
          maxLength: 63
          example: storage-instance-a
          nullable: true
      nullable: true
      type: object
    ExcludeField:
      properties:
        exclude:
          description: Use 'true' in case the item is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          default: false
          example: false
          nullable: true
      type: object
      nullable: true
    ConfigMapInstance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/ConfigMap'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    ConfigMapItems:
      description: Set of config map volumes to use in the workload
      type: array
      items:
        $ref: '#/components/schemas/ConfigMapInstance'
      maxItems: 1000
      nullable: true
    EmptyDir:
      properties:
        path:
          description: Local path within the workload to which the EmptyDir volume will be mapped. (mandatory)
          type: string
          minLength: 1
          maxLength: 4096
          example: /mnt/emptydir
          nullable: true
          pattern: .*
        medium:
          description: The type of storage medium for the volume. Use "Memory" for memory-backed storage, or leave empty for disk-backed storage.
          type: string
          minLength: 1
          maxLength: 63
          nullable: true
          pattern: .*
        sizeLimit:
          description: The total amount of local storage or memory required for the emptyDir volume. Specify using Kubernetes quantity format (e.g., 1G, 500Mi).
          type: string
          maxLength: 63
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          example: 1G
          nullable: true
      nullable: true
      type: object
    EmptyDirInstance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/EmptyDir'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    EmptyDirItems:
      description: A list of emptyDir volumes to mount in the workload.
      type: array
      items:
        $ref: '#/components/schemas/EmptyDirInstance'
      maxItems: 1000
      nullable: true
    PvcInstance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/Pvc'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    PvcItems:
      description: Set of pvc persistent volume claims to use in the workload.
      type: array
      items:
        $ref: '#/components/schemas/PvcInstance'
      maxItems: 1000
      nullable: true
    SecretInstance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/Secret'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    SecretItems:
      description: Set of secret volumes to use in the workload
      type: array
      items:
        $ref: '#/components/schemas/SecretInstance'
      nullable: true
    DistributedInferenceLeaderSpecFields:
      properties:
        leader:
          description: Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerSpec1'
          nullable: true
          type: object
    DistributedInferenceWorkerSpecFields:
      properties:
        worker:
          description: Defines the pod specification for the workers. Required only if the number of workers is greater than 0.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerSpec1'
          nullable: true
          type: object
    DistributedInferenceRestartPolicy:
      description: |
        Determines the behavior when a pod fails.
        - `RecreateGroupOnPodRestart`: Restarts all pods in the group if any pod fails.
        - `None`: No automatic restart behavior is applied.
      type: string
      enum:
        - RecreateGroupOnPodRestart
        - None
      nullable: true
      default: RecreateGroupOnPodRestart
    DistributedInferenceServingPortProtocol:
      description: The protocol used to access the port.
      type: string
      enum:
        - http
      nullable: true
      default: http
    DistributedInferenceServingPortContainerAndProtocol:
      properties:
        port:
          description: The port exposed by the container running the distributed inference service.
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
          example: 8080
          nullable: true
        protocol:
          $ref: '#/components/schemas/DistributedInferenceServingPortProtocol'
    DistributedInferenceServingPortAccessAuthorizationTypeEnum:
      type: string
      description: |
        Specifies who can send inference requests to the serving endpoint:

        Possible values:
        - `public`: No authorization is required. (Default)
        - `authenticatedUsers`: Any NVIDIA Run:ai authenticated user and service account can send requests.
        - `authorizedUsers`: Only users listed in the authorizedUsers field can send requests.
        - `authorizedGroups`: Only members of user groups listed in the authorizedGroups field can send requests.
      enum:
        - public
        - authenticatedUsers
        - authorizedUsers
        - authorizedGroups
      nullable: true
    DistributedInferenceServingPortAccess:
      properties:
        authorizationType:
          $ref: '#/components/schemas/DistributedInferenceServingPortAccessAuthorizationTypeEnum'
        authorizedUsers:
          description: A list of users and service accounts allowed to send inference requests to the serving endpoint. `Note:` Cannot be used together with authorizedGroups.
          type: array
          items:
            type: string
            pattern: .*
          example:
            - user.a@example.com
            - user.b@example.com
          nullable: true
        authorizedGroups:
          description: A list of user groups allowed to send inference requests to the serving endpoint. `Note:` Cannot be used together with authorizedUsers.
          type: array
          items:
            type: string
            pattern: .*
          example:
            - group-a
            - group-b
          nullable: true
        exposeExternally:
          description: Indicates whether the inference serving endpoint should be accessible outside the cluster. If set to true, the endpoint will be exposed externally. To enable external access, your administrator must configure the cluster as described in the [inference requirements](https://run-ai-docs.nvidia.com/self-hosted/2.25/getting-started/installation/system-requirements#inference). section.
          type: boolean
          nullable: true
          default: true
        exposedUrl:
          description: The custom URL to use for the serving port. If empty (default), an autogenerated URL will be used.
          type: string
          nullable: true
          pattern: .*
    DistributedInferenceServingPort:
      description: Defines the configuration for the inference serving endpoint. This determines how applications or services can send inference requests to the workload.
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceServingPortContainerAndProtocol'
        - $ref: '#/components/schemas/DistributedInferenceServingPortAccess'
      nullable: true
      type: object
    DistributedInferenceStartupPolicy:
      description: "Determines when the worker pods should start during workload initialization. \n - `LeaderCreated`: Workers start after the leader pod is created.\n - `LeaderReady`: Workers start only after the leader pod is ready.\n"
      type: string
      enum:
        - LeaderCreated
        - LeaderReady
      nullable: true
      default: LeaderCreated
    DistributedInferenceStartupPolicyField:
      properties:
        startupPolicy:
          $ref: '#/components/schemas/DistributedInferenceStartupPolicy'
      nullable: true
      type: object
    DistributedInferenceWorkersField:
      properties:
        workers:
          default: 0
          description: Specifies the number of worker nodes to run. If set to 0, only the leader node will run, and no worker pods will be created. In this case, worker spec is not required.
          type: integer
          format: int32
          minimum: 0
          maximum: 1000
          example: 4
          nullable: true
    DistributedInferenceReplicasField:
      properties:
        replicas:
          default: 1
          description: "Specifies the number of leader-worker sets to deploy. Each replica represents a group consisting of one leader pod and multiple worker pods. \nFor example, setting replicas: 3 will create 3 independent groups, each with its own leader and corresponding set of workers.\n"
          type: integer
          format: int32
          minimum: 0
          maximum: 1000
          example: 2
          nullable: true
    DistributedInferenceCommonSpec:
      allOf:
        - nullable: true
          properties:
            category:
              $ref: '#/components/schemas/Category'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            restartPolicy:
              $ref: '#/components/schemas/DistributedInferenceRestartPolicy'
            servingPort:
              $ref: '#/components/schemas/DistributedInferenceServingPort'
          type: object
        - $ref: '#/components/schemas/DistributedInferenceStartupPolicyField'
        - $ref: '#/components/schemas/DistributedInferenceWorkersField'
        - $ref: '#/components/schemas/DistributedInferenceReplicasField'
      nullable: true
      type: object
    AutoScalingMetricField:
      properties:
        metric:
          $ref: '#/components/schemas/AutoScalingMetric'
    MetricThresholdField:
      properties:
        metricThreshold:
          description: The threshold to use with the specified metric for autoscaling. Mandatory if metric is specified
          type: integer
          format: int32
          nullable: true
    AutoScalingMetricFields:
      allOf:
        - $ref: '#/components/schemas/AutoScalingMetricField'
        - $ref: '#/components/schemas/MetricThresholdField'
      nullable: true
      type: object
    AutoScaling:
      allOf:
        - $ref: '#/components/schemas/AutoScalingCommonFields'
        - $ref: '#/components/schemas/AutoScalingMetricFields'
      nullable: true
      type: object
    AutoScalingField:
      properties:
        autoscaling:
          $ref: '#/components/schemas/AutoScaling'
    ServingConfiguration:
      description: The inference workload serving configuration.
      properties:
        initializationTimeoutSeconds:
          description: The maximum time (in seconds) allowed for a workload to initialize and become ready. If the workload does not start within this time, it will be moved to failed state.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        requestTimeoutSeconds:
          description: The maximum time (in seconds) allowed to process an end-user request. If no response is returned within this time, the request will be ignored.Supported from Cluster version 2.22
          type: integer
          format: int32
          minimum: 1
          nullable: true
      nullable: true
      type: object
    ServingConfigurationField:
      properties:
        servingConfiguration:
          $ref: '#/components/schemas/ServingConfiguration'
    InferenceFields:
      allOf:
        - $ref: '#/components/schemas/AutoScalingField'
        - $ref: '#/components/schemas/ServingConfigurationField'
      nullable: true
      type: object
    CleanPodPolicy:
      description: The policy describes how to deal with pods when the job is finished.
      type: string
      enum:
        - None
        - All
        - Running
      nullable: true
    Url:
      description: The URL for connecting to the container port. If not specified, the URL will be auto-generated by the system.
      type: string
      maxLength: 2048
      pattern: .*
      example: https://my-url.com
      nullable: true
    AuthorizationType:
      type: string
      enum:
        - authenticatedUsers
        - authorizedUsers
        - authorizedGroups
      description: |
        Specifies who can access the connection URL:
        - `authenticatedUsers`: Any authenticated user or service account can access the URL; the authorizedUsers and authorizedGroups fields are ignored.
        - `authorizedUsers`: Only users listed in the authorizedUsers field are allowed to access the URL; the authorizedGroups field is ignored.
        - `authorizedGroups`: Only members of user groups listed in the authorizedGroups field are allowed to access the URL; the authorizedUsers field is ignored.
        If not specified, authorization is determined by whether authorizedUsers or authorizedGroups is present. If both fields are set, this results in an error. If neither is set, any authenticatedUser can access.
      nullable: true
    ExposedUrl:
      description: A URL for accessing the workload.
      properties:
        container:
          description: The port that the container running the workload exposes. (mandatory)
          type: integer
          format: int32
          example: 8080
          nullable: true
        url:
          $ref: '#/components/schemas/Url'
        authorizationType:
          $ref: '#/components/schemas/AuthorizationType'
        authorizedUsers:
          $ref: '#/components/schemas/AuthorizedUsers'
        authorizedGroups:
          $ref: '#/components/schemas/AuthorizedGroups'
        toolType:
          description: The tool type that runs on this container port.
          type: string
          example: jupyter
          nullable: true
          pattern: .*
        toolName:
          description: A name describing the tool that runs on this url.
          type: string
          example: my-pytorch
          nullable: true
          pattern: .*
          maxLength: 253
        name:
          description: Unique name to identify the instance. primarily used for policy locked rules.
          type: string
          minLength: 1
          maxLength: 253
          example: url-instance-a
          nullable: true
          pattern: .*
        exclude:
          description: Use 'true' in case the instance is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          example: false
          nullable: true
      nullable: true
      type: object
    ExposedUrls:
      description: Set of container ports that the workload exposes via URLs.
      type: array
      items:
        $ref: '#/components/schemas/ExposedUrl'
      maxItems: 1000
      nullable: true
    MaxReplicas:
      description: the upper limit for the number of worker pods that can be set by the autoscaler. Cannot be smaller than MinReplicas. (applicable only for PyTorch)
      type: integer
      nullable: true
    MinReplicas:
      description: the lower limit for the number of worker pods to which the training job can scale down. (applicable only for PyTorch)
      type: integer
      nullable: true
    MpiLauncherCreationPolicy:
      description: Define whether the MPI Launcher is created in parallel with the workers, or if its creation is postponed until all workers are in  Ready state. This prevents failures when the launcher attempts to connect to workers that are not yet ready.
      type: string
      enum:
        - AtStartup
        - WaitForWorkersReady
      nullable: true
    NumWorkers:
      description: the number of workers that will be allocated for running the workload.
      type: integer
      minimum: 1
      nullable: true
    PortServiceType:
      description: The service type of the port (mandatory).
      type: string
      enum:
        - LoadBalancer
        - NodePort
        - ClusterIP
      nullable: true
    Port:
      description: A port for accessing the workload.
      properties:
        container:
          description: The port that the container running the workload exposes. (mandatory)
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
          example: 8080
          nullable: true
        serviceType:
          $ref: '#/components/schemas/PortServiceType'
        external:
          description: The external port which allows a connection to the container port. If not specified, the port will be auto-generated by the system..
          type: integer
          format: int32
          nullable: true
          example: 30080
        toolType:
          description: The tool type that runs on this port.
          type: string
          example: pytorch
          nullable: true
          pattern: .*
          maxLength: 63
        toolName:
          description: A name describing the tool that runs on this port.
          type: string
          example: my-pytorch
          nullable: true
          pattern: .*
          maxLength: 253
        name:
          description: Unique name to identify the instance. primarily used for policy locked rules.
          type: string
          minLength: 1
          maxLength: 63
          example: port-instance-a
          nullable: true
          pattern: .*
        exclude:
          description: Use 'true' in case the item is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          default: false
          example: false
          nullable: true
      nullable: true
      type: object
    Ports:
      description: Set of container ports that the workload exposes.
      type: array
      items:
        $ref: '#/components/schemas/Port'
      maxItems: 1000
      nullable: true
    RelatedUrl:
      description: A URL that is related to the workload. For example, a URL to an external server providing statistics or logging about the workload.
      properties:
        url:
          description: The URL for connecting an external service related to the workload. (mandatory)
          type: string
          example: https://my-url.com
          nullable: true
          pattern: .*
          maxLength: 2048
        type:
          description: The type of service that the url provides. For example, wandb (Weights & Biases). (mandatory)
          type: string
          example: wandb
          nullable: true
          pattern: .*
          maxLength: 63
        name:
          description: Unique name to identify the instance. primarily used for policy locked rules.
          type: string
          example: url-instance-a
          nullable: true
          pattern: .*
          maxLength: 63
        exclude:
          description: Use 'true' in case the item is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          default: false
          example: false
          nullable: true
      nullable: true
      type: object
    RelatedUrls:
      description: Set of URLs that are related to the workload.
      type: array
      items:
        $ref: '#/components/schemas/RelatedUrl'
      maxItems: 1000
      nullable: true
    SupersetRestartPolicy:
      type: string
      nullable: true
      minLength: 1
      pattern: .*
    SupersetServingPort:
      properties:
        port:
          type: integer
          format: int32
          nullable: true
        container:
          type: integer
          format: int32
          nullable: true
        protocol:
          type: string
          nullable: true
          pattern: .*
        authorizationType:
          type: string
          nullable: true
          pattern: .*
        authorizedUsers:
          type: array
          items:
            type: string
            pattern: .*
          nullable: true
        authorizedGroups:
          type: array
          items:
            type: string
            pattern: .*
          nullable: true
        clusterLocalAccessOnly:
          type: boolean
          nullable: true
        exposeExternally:
          type: boolean
          nullable: true
        exposedUrl:
          type: string
          nullable: true
          pattern: .*
      type: object
      nullable: true
    SlotsPerWorker:
      description: Specifies the number of slots per worker used in hostfile. Defaults to 1. (applicable only for MPI)
      type: integer
      minimum: 1
      nullable: true
      default: 1
    SshAuthMountPath:
      description: Specifies the directory where SSH keys are mounted. (applicable only for MPI)
      type: string
      nullable: true
      default: /root/.ssh
      pattern: .*
    DataVolumeInstance:
      allOf:
        - $ref: '#/components/schemas/DataVolume'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    DataVolumeItems:
      description: Set of data volumes to use in the workload.
      type: array
      items:
        $ref: '#/components/schemas/DataVolumeInstance'
      maxItems: 1000
      nullable: true
    GitPassword:
      properties:
        passwordSecret:
          description: Secret containing the credentials of the repository (needed for non public repository which requires authentication). (deprecated)
          type: string
          minLength: 1
          example: my-password-secret
          nullable: true
        secretKeyOfUser:
          description: The key to use for loading the user name from the secret. The default is `User`. (deprecated)
          type: string
          minLength: 1
          example: User
          nullable: true
        secretKeyOfPassword:
          description: The key to use for loading the password from the secret. The default is `Password`. (deprecated)
          type: string
          minLength: 1
          example: Password
          nullable: true
      nullable: true
      type: object
    GitAuthenticationMethod:
      description: Specifies the authentication method to use when accessing the Git repository. This is required for private repositories - `password` - Authenticate using a username and password. - `ssh-key` - Authenticate using an SSH private key.
      type: string
      minLength: 1
      example: password
      enum:
        - password
        - ssh-key
    GitSecretRef:
      properties:
        name:
          description: Name of the Secret containing the credentials of the repository.
          type: string
          minLength: 1
          example: my-password-secret
        authenticationMethod:
          $ref: '#/components/schemas/GitAuthenticationMethod'
        secretKeyOfUser:
          description: The key in the Secret that contains the Git username (used for `password` authentication).
          type: string
          minLength: 1
          example: User
          nullable: true
        secretKeyOfPassword:
          description: The key in the Secret that contains the Git password (used for `password` authentication).
          type: string
          minLength: 1
          example: Password
          nullable: true
      nullable: true
      type: object
    GitInstance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/GitCommon'
        - $ref: '#/components/schemas/GitPassword'
        - $ref: '#/components/schemas/ExcludeField'
        - type: object
          properties:
            secretRef:
              $ref: '#/components/schemas/GitSecretRef'
          nullable: true
      nullable: true
      type: object
    GitItems:
      description: Set of git repositories to use in the workload.
      type: array
      items:
        $ref: '#/components/schemas/GitInstance'
      maxItems: 1000
      nullable: true
    HostPathInstance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/HostPath'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    HostPathItems:
      description: Set of host paths to use in the workload.
      type: array
      items:
        $ref: '#/components/schemas/HostPathInstance'
      maxItems: 1000
      nullable: true
    NfsInstance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/Nfs'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    NfsItems:
      description: Set of nfs volumes to use in the workload.
      type: array
      items:
        $ref: '#/components/schemas/NfsInstance'
      maxItems: 1000
      nullable: true
    S3AccessKey:
      properties:
        accessKeySecret:
          description: Name of the secret containing credentials of the S3 bucket. Used for private S3 buckets.
          type: string
          minLength: 1
          example: my-access-key-secret
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        secretKeyOfAccessKeyId:
          description: The key to use for loading the access key id from the secret. The default is `AccessKeyId`. For more information, see [Credentials access keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).
          type: string
          minLength: 1
          example: AccessKeyId
          nullable: true
          pattern: .*
        secretKeyOfSecretKey:
          description: The key to use for loading the secret key from the secret. The default is `SecretKey`. For more information, see [Credentials access keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).
          type: string
          minLength: 1
          example: SecretKey
          nullable: true
          pattern: .*
      nullable: true
      type: object
    S3Instance:
      allOf:
        - $ref: '#/components/schemas/StorageInstanceName'
        - $ref: '#/components/schemas/S3Common'
        - $ref: '#/components/schemas/S3AccessKey'
        - $ref: '#/components/schemas/ExcludeField'
      nullable: true
      type: object
    S3Items:
      description: Set of s3 buckets to use in the workload.
      type: array
      items:
        $ref: '#/components/schemas/S3Instance'
      nullable: true
    SupersetSpec:
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceLeaderSpecFields'
        - $ref: '#/components/schemas/DistributedInferenceWorkerSpecFields'
        - $ref: '#/components/schemas/DistributedInferenceCommonSpec'
        - $ref: '#/components/schemas/InferenceFields'
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            cleanPodPolicy:
              $ref: '#/components/schemas/CleanPodPolicy'
            command:
              $ref: '#/components/schemas/Command'
            completions:
              $ref: '#/components/schemas/Completions'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            distributedFramework:
              $ref: '#/components/schemas/DistributedFramework'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            maxReplicas:
              $ref: '#/components/schemas/MaxReplicas'
            minReplicas:
              $ref: '#/components/schemas/MinReplicas'
            mpiLauncherCreationPolicy:
              $ref: '#/components/schemas/MpiLauncherCreationPolicy'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            numWorkers:
              $ref: '#/components/schemas/NumWorkers'
            parallelism:
              $ref: '#/components/schemas/Parallelism'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            restartPolicy:
              $ref: '#/components/schemas/SupersetRestartPolicy'
            security:
              nullable: true
              properties:
                allowPrivilegeEscalation:
                  $ref: '#/components/schemas/AllowPrivilegeEscalation'
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            servingPort:
              $ref: '#/components/schemas/SupersetServingPort'
            slotsPerWorker:
              $ref: '#/components/schemas/SlotsPerWorker'
            sshAuthMountPath:
              $ref: '#/components/schemas/SshAuthMountPath'
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                s3:
                  $ref: '#/components/schemas/S3Items'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    AutoDeletionTimeAfterPreemptionMaster:
      description: Specifies the duration after which a finished workload (completed or failed) will be automatically deleted. The default is 30 days. Log retention is managed separately.
      format: int64
      type: integer
      example: 15
      nullable: true
      deprecated: true
    BackoffLimitMaster:
      description: Specifies the number of retries before marking a workload as failed (not applicable to Inference workloads). The default value is 6.
      format: int64
      type: integer
      example: 3
      nullable: true
      deprecated: true
    PriorityClassMaster:
      description: 'Specifies the priority class for the workload, which determines its scheduling behavior. Valid values are: very-low, low, medium-low, medium, medium-high, high, and very-high. Each workload type has a default priority. To view the default priority for each workload type, use the GET /workload-types endpoint. Once you change the priority from the default value defined for that workload type, the preemptibility field is not automatically updated. Make sure to set the desired preemptibility value.'
      type: string
      nullable: true
      pattern: .*
      deprecated: true
    TerminationGracePeriodMaster:
      description: Duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down).
      format: int64
      type: integer
      minimum: 0
      example: 20
      nullable: true
      deprecated: true
    MasterSpec:
      nullable: true
      properties:
        annotations:
          $ref: '#/components/schemas/Annotations'
        args:
          $ref: '#/components/schemas/Args'
        autoDeletionTimeAfterCompletionSeconds:
          $ref: '#/components/schemas/AutoDeletionTimeAfterPreemptionMaster'
        backoffLimit:
          $ref: '#/components/schemas/BackoffLimitMaster'
        category:
          $ref: '#/components/schemas/Category'
        command:
          $ref: '#/components/schemas/Command'
        compute:
          nullable: true
          properties:
            cpuCoreLimit:
              $ref: '#/components/schemas/CpuCoreLimit'
            cpuCoreRequest:
              $ref: '#/components/schemas/CpuCoreRequest'
            cpuMemoryLimit:
              $ref: '#/components/schemas/CpuMemoryLimit'
            cpuMemoryRequest:
              $ref: '#/components/schemas/CpuMemoryRequest'
            extendedResources:
              $ref: '#/components/schemas/ExtendedResources'
            gpuDevicesRequest:
              $ref: '#/components/schemas/GpuDevicesRequest'
            gpuMemoryLimit:
              $ref: '#/components/schemas/GpuMemoryLimit'
            gpuMemoryRequest:
              $ref: '#/components/schemas/GpuMemoryRequest'
            gpuPortionLimit:
              $ref: '#/components/schemas/GpuPortionLimit'
            gpuPortionRequest:
              $ref: '#/components/schemas/GpuPortionRequest'
            gpuRequestType:
              $ref: '#/components/schemas/GpuRequestType'
            largeShmRequest:
              $ref: '#/components/schemas/LargeShmRequest'
          type: object
        createHomeDir:
          $ref: '#/components/schemas/CreateHomeDir'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariables'
        exposedUrls:
          $ref: '#/components/schemas/ExposedUrls'
        image:
          $ref: '#/components/schemas/Image'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicy'
        imagePullSecrets:
          $ref: '#/components/schemas/ImagePullSecrets'
        labels:
          $ref: '#/components/schemas/Labels'
        nodeAffinityRequired:
          $ref: '#/components/schemas/NodeAffinityRequired'
        nodePools:
          $ref: '#/components/schemas/NodePools'
        nodeType:
          $ref: '#/components/schemas/NodeType3'
        podAffinity:
          $ref: '#/components/schemas/PodAffinity'
        ports:
          $ref: '#/components/schemas/Ports'
        preemptibility:
          $ref: '#/components/schemas/Preemptibility'
        priorityClass:
          $ref: '#/components/schemas/PriorityClassMaster'
        probes:
          $ref: '#/components/schemas/Probes'
        relatedUrls:
          $ref: '#/components/schemas/RelatedUrls'
        restartPolicy:
          $ref: '#/components/schemas/RestartPolicy'
        security:
          nullable: true
          properties:
            allowPrivilegeEscalation:
              $ref: '#/components/schemas/AllowPrivilegeEscalation'
            capabilities:
              $ref: '#/components/schemas/Capabilities'
            hostIpc:
              $ref: '#/components/schemas/HostIpc'
            hostNetwork:
              $ref: '#/components/schemas/HostNetwork'
            readOnlyRootFilesystem:
              $ref: '#/components/schemas/ReadOnlyRootFileSystem'
            runAsGid:
              $ref: '#/components/schemas/RunAsGid'
            runAsNonRoot:
              $ref: '#/components/schemas/RunAsNonRoot'
            runAsUid:
              $ref: '#/components/schemas/RunAsUid'
            seccompProfileType:
              $ref: '#/components/schemas/SeccompProfileType'
            supplementalGroups:
              $ref: '#/components/schemas/SupplementalGroups'
            uidGidSource:
              $ref: '#/components/schemas/UidGidSource'
          type: object
        stdin:
          $ref: '#/components/schemas/Stdin'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapItems'
            dataVolume:
              $ref: '#/components/schemas/DataVolumeItems'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirItems'
            git:
              $ref: '#/components/schemas/GitItems'
            hostPath:
              $ref: '#/components/schemas/HostPathItems'
            nfs:
              $ref: '#/components/schemas/NfsItems'
            pvc:
              $ref: '#/components/schemas/PvcItems'
            s3:
              $ref: '#/components/schemas/S3Items'
            secretVolume:
              $ref: '#/components/schemas/SecretItems'
          type: object
        terminateAfterPreemption:
          $ref: '#/components/schemas/TerminateAfterPreemption'
        terminationGracePeriodSeconds:
          $ref: '#/components/schemas/TerminationGracePeriodMaster'
        tolerations:
          $ref: '#/components/schemas/Tolerations'
        tty:
          $ref: '#/components/schemas/Tty'
        workingDir:
          $ref: '#/components/schemas/WorkingDir'
      type: object
    ServingPortProtocol:
      description: The protocol used by the port, defaults to http
      type: string
      enum:
        - http
        - grpc
      nullable: true
    supersetRules:
      $ref: '#/components/schemas/SupersetRules'
    crossTypePolicy:
      $ref: '#/components/schemas/PolicyCrossType'
    PolicyType:
      description: The type of policy which determines the kind of workloads it is affecting
      type: string
      enum:
        - workspace
        - training
        - distributed
        - inference
        - distributedInference
        - nimService
        - fallback
    PolicyId:
      description: The unique id of the policy.
      type: string
      minLength: 1
      format: uuid
    PolicyReadOnlyFields:
      required:
        - id
        - createdBy
        - createdAt
        - updatedBy
        - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/PolicyId'
        tenantId:
          $ref: '#/components/schemas/TenantId'
        clusterId:
          $ref: '#/components/schemas/ClusterIdOptional'
        createdBy:
          description: The user who created the policy.
          type: string
          minLength: 1
        createdAt:
          description: The time at which the policy wes created
          type: string
          minLength: 1
          format: date-time
        updatedBy:
          description: The user who updated the policy.
          type: string
          minLength: 1
        updatedAt:
          description: The time at which the policy has been updated
          type: string
          minLength: 1
          format: date-time
    PolicyName:
      description: A chosen name for the policy.
      type: string
      minLength: 1
      example: my-policy
      pattern: .*
    PolicyCreationFields:
      required:
        - name
        - scope
      properties:
        scope:
          $ref: '#/components/schemas/ScopeType'
        projectId:
          $ref: '#/components/schemas/ProjectIdOptional'
        departmentId:
          $ref: '#/components/schemas/DepartmentIdOptional'
        clusterId:
          $ref: '#/components/schemas/ClusterIdOptional'
        name:
          $ref: '#/components/schemas/PolicyName'
    PolicyMeta:
      allOf:
        - $ref: '#/components/schemas/PolicyReadOnlyFields'
        - $ref: '#/components/schemas/PolicyCreationFields'
    PolicySyncStatusOfCluster:
      required:
        - clusterId
        - status
      properties:
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        status:
          description: Policy sync status of the cluster
          type: string
          enum:
            - Not ready
            - Applying
            - Failed
            - Ready
            - Pending deletion
            - Deleting
            - Deleted
            - Deletion failed
        errorMessage:
          description: In case sync failed, holds the error message received from the cluster
          type: string
          nullable: true
      type: object
    PolicySyncStatus:
      properties:
        clusters:
          type: array
          items:
            $ref: '#/components/schemas/PolicySyncStatusOfCluster'
    PolicyValidationStatus:
      properties:
        validation:
          properties:
            errorMessage:
              pattern: .*
              type: string
              description: In case validation failed, holds the error message explaining the issue
          nullable: true
          type: object
      nullable: true
      type: object
    PolicyListEntry:
      properties:
        type:
          $ref: '#/components/schemas/PolicyType'
        meta:
          $ref: '#/components/schemas/PolicyMeta'
        status:
          allOf:
            - $ref: '#/components/schemas/PolicySyncStatus'
            - $ref: '#/components/schemas/PolicyValidationStatus'
      nullable: true
      type: object
    PolicyListResponse:
      properties:
        policies:
          type: array
          items:
            $ref: '#/components/schemas/PolicyListEntry'
    AnnotationsDefaults:
      properties:
        instances:
          $ref: '#/components/schemas/Annotations'
      nullable: true
      type: object
    ExtendedResourcesDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/ExtendedResource'
        instances:
          $ref: '#/components/schemas/ExtendedResources'
      nullable: true
      type: object
    SupersetDefaultsAllOfCompute:
      title: SupersetDefaultsAllOfCompute
      nullable: true
      properties:
        cpuCoreLimit:
          $ref: '#/components/schemas/CpuCoreLimit'
        cpuCoreRequest:
          $ref: '#/components/schemas/CpuCoreRequest'
        cpuMemoryLimit:
          $ref: '#/components/schemas/CpuMemoryLimit'
        cpuMemoryRequest:
          $ref: '#/components/schemas/CpuMemoryRequest'
        extendedResources:
          $ref: '#/components/schemas/ExtendedResourcesDefaults'
        gpuDevicesRequest:
          $ref: '#/components/schemas/GpuDevicesRequest'
        gpuMemoryLimit:
          $ref: '#/components/schemas/GpuMemoryLimit'
        gpuMemoryRequest:
          $ref: '#/components/schemas/GpuMemoryRequest'
        gpuPortionLimit:
          $ref: '#/components/schemas/GpuPortionLimit'
        gpuPortionRequest:
          $ref: '#/components/schemas/GpuPortionRequest'
        gpuRequestType:
          $ref: '#/components/schemas/GpuRequestType'
        largeShmRequest:
          $ref: '#/components/schemas/LargeShmRequest'
      type: object
    EnvironmentVariablesDefaults:
      properties:
        instances:
          $ref: '#/components/schemas/EnvironmentVariables'
      nullable: true
      type: object
    ImagePullSecretsDefaults:
      properties:
        instances:
          $ref: '#/components/schemas/ImagePullSecrets'
      nullable: true
      type: object
    LabelsDefaults:
      properties:
        instances:
          $ref: '#/components/schemas/Labels'
      nullable: true
      type: object
    NodeType2:
      description: Nodes (machines), or a group of nodes on which the workload will run. To use this feature, your Administrator will need to label nodes. For more information, see [Group Nodes](https://docs.run.ai/latest/admin/researcher-setup/limit-to-node-group). When using this flag with with Project-based affinity, it refines the list of allowable node groups set in the Project. For more information, see [Projects](https://docshub.run.ai/guides/platform-management/aiinitiatives/organization/projects).
      type: string
      minLength: 1
      example: my-node-type
      nullable: true
      pattern: .*
    DistributedInferenceLeaderWorkerDefaultsV2Security:
      title: DistributedInferenceLeaderWorkerDefaultsV2Security
      nullable: true
      properties:
        capabilities:
          $ref: '#/components/schemas/Capabilities'
        hostIpc:
          $ref: '#/components/schemas/HostIpc'
        hostNetwork:
          $ref: '#/components/schemas/HostNetwork'
        readOnlyRootFilesystem:
          $ref: '#/components/schemas/ReadOnlyRootFileSystem'
        runAsGid:
          $ref: '#/components/schemas/RunAsGid'
        runAsNonRoot:
          $ref: '#/components/schemas/RunAsNonRoot'
        runAsUid:
          $ref: '#/components/schemas/RunAsUid'
        seccompProfileType:
          $ref: '#/components/schemas/SeccompProfileType'
        supplementalGroups:
          $ref: '#/components/schemas/SupplementalGroups'
        uidGidSource:
          $ref: '#/components/schemas/UidGidSource'
      type: object
    ConfigMapsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/ConfigMapInstance'
        instances:
          $ref: '#/components/schemas/ConfigMapItems'
      nullable: true
      type: object
    EmptyDirsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/EmptyDirInstance'
        instances:
          $ref: '#/components/schemas/EmptyDirItems'
      nullable: true
      type: object
    PvcsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/PvcInstance'
        instances:
          $ref: '#/components/schemas/PvcItems'
      nullable: true
      type: object
    SecretsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/SecretInstance'
        instances:
          $ref: '#/components/schemas/SecretItems'
      nullable: true
      type: object
    TolerationsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/Toleration'
        instances:
          $ref: '#/components/schemas/Tolerations'
      nullable: true
      type: object
    DistributedInferenceLeaderWorkerDefaultsV2:
      properties:
        annotations:
          $ref: '#/components/schemas/AnnotationsDefaults'
        args:
          $ref: '#/components/schemas/Args'
        command:
          $ref: '#/components/schemas/Command'
        compute:
          $ref: '#/components/schemas/SupersetDefaultsAllOfCompute'
        createHomeDir:
          $ref: '#/components/schemas/CreateHomeDir'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariablesDefaults'
        image:
          $ref: '#/components/schemas/Image'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicy'
        imagePullSecrets:
          $ref: '#/components/schemas/ImagePullSecretsDefaults'
        labels:
          $ref: '#/components/schemas/LabelsDefaults'
        nodeAffinityRequired:
          $ref: '#/components/schemas/NodeAffinityRequired'
        nodeType:
          $ref: '#/components/schemas/NodeType2'
        podAffinity:
          $ref: '#/components/schemas/PodAffinity'
        probes:
          $ref: '#/components/schemas/Probes'
        security:
          $ref: '#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV2Security'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapsDefaults'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirsDefaults'
            pvc:
              $ref: '#/components/schemas/PvcsDefaults'
            secretVolume:
              $ref: '#/components/schemas/SecretsDefaults'
          type: object
        tolerations:
          $ref: '#/components/schemas/TolerationsDefaults'
        workingDir:
          $ref: '#/components/schemas/WorkingDir'
      type: object
    DistributedInferenceLeaderDefaultsFields:
      properties:
        leader:
          description: Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV21'
          nullable: true
          type: object
    DistributedInferenceWorkerDefaultsFields:
      properties:
        worker:
          description: Defines the pod specification for the workers. Required only if the number of workers is greater than 0.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV21'
          nullable: true
          type: object
    DistributedInferenceCommonDefaultsV2:
      allOf:
        - nullable: true
          properties:
            category:
              $ref: '#/components/schemas/Category'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            restartPolicy:
              $ref: '#/components/schemas/DistributedInferenceRestartPolicy'
            servingPort:
              $ref: '#/components/schemas/DistributedInferenceServingPort'
          type: object
        - $ref: '#/components/schemas/DistributedInferenceStartupPolicyField'
        - $ref: '#/components/schemas/DistributedInferenceWorkersField'
        - $ref: '#/components/schemas/DistributedInferenceReplicasField'
      nullable: true
      type: object
    ExposedUrlsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/ExposedUrl'
        instances:
          $ref: '#/components/schemas/ExposedUrls'
      nullable: true
      type: object
    PortsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/Port'
        instances:
          $ref: '#/components/schemas/Ports'
      nullable: true
      type: object
    RelatedUrlsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/RelatedUrl'
        instances:
          $ref: '#/components/schemas/RelatedUrls'
      nullable: true
      type: object
    SupersetDefaultsAllOfSecurity:
      title: SupersetDefaultsAllOfSecurity
      nullable: true
      properties:
        allowPrivilegeEscalation:
          $ref: '#/components/schemas/AllowPrivilegeEscalation'
        capabilities:
          $ref: '#/components/schemas/Capabilities'
        hostIpc:
          $ref: '#/components/schemas/HostIpc'
        hostNetwork:
          $ref: '#/components/schemas/HostNetwork'
        readOnlyRootFilesystem:
          $ref: '#/components/schemas/ReadOnlyRootFileSystem'
        runAsGid:
          $ref: '#/components/schemas/RunAsGid'
        runAsNonRoot:
          $ref: '#/components/schemas/RunAsNonRoot'
        runAsUid:
          $ref: '#/components/schemas/RunAsUid'
        seccompProfileType:
          $ref: '#/components/schemas/SeccompProfileType'
        supplementalGroups:
          $ref: '#/components/schemas/SupplementalGroups'
        uidGidSource:
          $ref: '#/components/schemas/UidGidSource'
      type: object
    DataVolumesDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/DataVolumeInstance'
        instances:
          $ref: '#/components/schemas/DataVolumeItems'
      nullable: true
      type: object
    GitsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/GitInstance'
        instances:
          $ref: '#/components/schemas/GitItems'
      nullable: true
      type: object
    HostPathsDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/HostPathInstance'
        instances:
          $ref: '#/components/schemas/HostPathItems'
      nullable: true
      type: object
    NfssDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/NfsInstance'
        instances:
          $ref: '#/components/schemas/NfsItems'
      nullable: true
      type: object
    S3sDefaults:
      properties:
        attributes:
          $ref: '#/components/schemas/S3Instance'
        instances:
          $ref: '#/components/schemas/S3Items'
      nullable: true
      type: object
    SupersetDefaults:
      allOf:
        - $ref: '#/components/schemas/InferenceFields'
        - $ref: '#/components/schemas/DistributedInferenceLeaderDefaultsFields'
        - $ref: '#/components/schemas/DistributedInferenceWorkerDefaultsFields'
        - $ref: '#/components/schemas/DistributedInferenceCommonDefaultsV2'
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/AnnotationsDefaults'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            cleanPodPolicy:
              $ref: '#/components/schemas/CleanPodPolicy'
            command:
              $ref: '#/components/schemas/Command'
            completions:
              $ref: '#/components/schemas/Completions'
            compute:
              $ref: '#/components/schemas/SupersetDefaultsAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            distributedFramework:
              $ref: '#/components/schemas/DistributedFramework'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesDefaults'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsDefaults'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsDefaults'
            labels:
              $ref: '#/components/schemas/LabelsDefaults'
            maxReplicas:
              $ref: '#/components/schemas/MaxReplicas'
            minReplicas:
              $ref: '#/components/schemas/MinReplicas'
            mpiLauncherCreationPolicy:
              $ref: '#/components/schemas/MpiLauncherCreationPolicy'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            numWorkers:
              $ref: '#/components/schemas/NumWorkers'
            parallelism:
              $ref: '#/components/schemas/Parallelism'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/PortsDefaults'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsDefaults'
            restartPolicy:
              $ref: '#/components/schemas/SupersetRestartPolicy'
            security:
              $ref: '#/components/schemas/SupersetDefaultsAllOfSecurity'
            servingPort:
              $ref: '#/components/schemas/SupersetServingPort'
            slotsPerWorker:
              $ref: '#/components/schemas/SlotsPerWorker'
            sshAuthMountPath:
              $ref: '#/components/schemas/SshAuthMountPath'
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsDefaults'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesDefaults'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsDefaults'
                git:
                  $ref: '#/components/schemas/GitsDefaults'
                hostPath:
                  $ref: '#/components/schemas/HostPathsDefaults'
                nfs:
                  $ref: '#/components/schemas/NfssDefaults'
                pvc:
                  $ref: '#/components/schemas/PvcsDefaults'
                s3:
                  $ref: '#/components/schemas/S3sDefaults'
                secretVolume:
                  $ref: '#/components/schemas/SecretsDefaults'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/TolerationsDefaults'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    QuantityRules:
      properties:
        sourceOfRule:
          $ref: '#/components/schemas/SourceOfRule'
        required:
          description: Whether the field is mandatory, default to false.
          type: boolean
          nullable: true
        canEdit:
          description: Whether the value of the field is editable, default to true
          type: boolean
          nullable: true
        min:
          description: The minimum value that the field can be assigned to.
          type: string
          nullable: true
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
        max:
          description: The maximum value that the field can be assigned to.
          type: string
          nullable: true
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
        defaultFrom:
          $ref: '#/components/schemas/DefaultFromRule'
      nullable: true
      type: object
    ExtendedResourceRules:
      description: Rules for the attributes of extendedResources
      properties:
        quantity:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    ExtendedResourcesRules:
      properties:
        attributes:
          $ref: '#/components/schemas/ExtendedResourceRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    GpuRequestOptions:
      properties:
        options:
          description: Limit the permitted values for gpuRequest to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/GpuRequestType'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    GpuRequestRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/GpuRequestOptions'
      nullable: true
      type: object
    SupersetRulesAllOfCompute:
      title: SupersetRulesAllOfCompute
      nullable: true
      properties:
        cpuCoreLimit:
          $ref: '#/components/schemas/NumberRules'
        cpuCoreRequest:
          $ref: '#/components/schemas/NumberRules'
        cpuMemoryLimit:
          $ref: '#/components/schemas/QuantityRules'
        cpuMemoryRequest:
          $ref: '#/components/schemas/QuantityRules'
        extendedResources:
          $ref: '#/components/schemas/ExtendedResourcesRules'
        gpuDevicesRequest:
          $ref: '#/components/schemas/IntegerRules'
        gpuMemoryLimit:
          $ref: '#/components/schemas/QuantityRules'
        gpuMemoryRequest:
          $ref: '#/components/schemas/QuantityRules'
        gpuPortionLimit:
          $ref: '#/components/schemas/NumberRules'
        gpuPortionRequest:
          $ref: '#/components/schemas/NumberRules'
        gpuRequestType:
          $ref: '#/components/schemas/GpuRequestRules'
        largeShmRequest:
          $ref: '#/components/schemas/BooleanRules'
      type: object
    ImagePullPolicyOptions:
      properties:
        options:
          description: Limit the permitted values for imagePullPolicy to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/ImagePullPolicy'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    ImagePullPolicyRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/ImagePullPolicyOptions'
      nullable: true
      type: object
    ProbeHandlerRules:
      properties:
        httpGet:
          properties:
            path:
              $ref: '#/components/schemas/StringRules'
            port:
              $ref: '#/components/schemas/IntegerRules'
            host:
              $ref: '#/components/schemas/StringRules'
            scheme:
              $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    ProbeRules:
      properties:
        initialDelaySeconds:
          $ref: '#/components/schemas/IntegerRules'
        periodSeconds:
          $ref: '#/components/schemas/IntegerRules'
        timeoutSeconds:
          $ref: '#/components/schemas/IntegerRules'
        successThreshold:
          $ref: '#/components/schemas/IntegerRules'
        failureThreshold:
          $ref: '#/components/schemas/IntegerRules'
        handler:
          $ref: '#/components/schemas/ProbeHandlerRules'
      nullable: true
      type: object
    ProbesRules:
      properties:
        readiness:
          $ref: '#/components/schemas/ProbeRules'
      nullable: true
      type: object
    SeccompProfileTypeOptions:
      properties:
        options:
          description: Limit the permitted values for secompProfileType to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/SeccompProfileType'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    SeccompProfileTypeRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/SeccompProfileTypeOptions'
      nullable: true
      type: object
    UidGidSourceOptions:
      properties:
        options:
          description: Limit the permitted values for uidGidSource to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/UidGidSource'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    UidGidSourceRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/UidGidSourceOptions'
      nullable: true
      type: object
    DistributedInferenceLeaderWorkerRulesV2:
      properties:
        annotations:
          $ref: '#/components/schemas/InstancesRules'
        args:
          $ref: '#/components/schemas/StringRules'
        command:
          $ref: '#/components/schemas/StringRules'
        compute:
          $ref: '#/components/schemas/SupersetRulesAllOfCompute'
        createHomeDir:
          $ref: '#/components/schemas/BooleanRules'
        environmentVariables:
          $ref: '#/components/schemas/InstancesRules'
        image:
          $ref: '#/components/schemas/StringRules'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicyRules'
        imagePullSecrets:
          $ref: '#/components/schemas/ImagePullSecretsRules'
        labels:
          $ref: '#/components/schemas/InstancesRules'
        nodeAffinityRequired:
          $ref: '#/components/schemas/ArbitraryRules'
        nodeType:
          $ref: '#/components/schemas/StringRules'
        podAffinity:
          $ref: '#/components/schemas/PodAffinityRules'
        probes:
          $ref: '#/components/schemas/ProbesRules'
        security:
          nullable: true
          properties:
            capabilities:
              $ref: '#/components/schemas/ArrayRules'
            hostIpc:
              $ref: '#/components/schemas/BooleanRules'
            hostNetwork:
              $ref: '#/components/schemas/BooleanRules'
            readOnlyRootFilesystem:
              $ref: '#/components/schemas/BooleanRules'
            runAsGid:
              $ref: '#/components/schemas/IntegerRulesOptional'
            runAsNonRoot:
              $ref: '#/components/schemas/BooleanRules'
            runAsUid:
              $ref: '#/components/schemas/IntegerRulesOptional'
            seccompProfileType:
              $ref: '#/components/schemas/SeccompProfileTypeRules'
            supplementalGroups:
              $ref: '#/components/schemas/StringRules'
            uidGidSource:
              $ref: '#/components/schemas/UidGidSourceRules'
          type: object
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapsRules'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirsRules'
            pvc:
              $ref: '#/components/schemas/PvcsRules'
            secretVolume:
              $ref: '#/components/schemas/SecretsRules'
          type: object
        tolerations:
          $ref: '#/components/schemas/TolerationsRules'
        workingDir:
          $ref: '#/components/schemas/StringRules'
      type: object
    DistributedInferenceLeaderRulesFields:
      properties:
        leader:
          description: Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerRulesV2'
          nullable: true
          type: object
    DistributedInferenceWorkerRulesFields:
      properties:
        worker:
          description: Defines the pod specification for the workers. Required only if the number of workers is greater than 0.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerRulesV2'
          nullable: true
          type: object
    DistributedInferenceRestartPolicyOptions:
      properties:
        options:
          description: Limit the permitted values for restartPolicy to a given set of values.
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/DistributedInferenceRestartPolicy'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    DistributedInferenceRestartPolicyRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/DistributedInferenceRestartPolicyOptions'
      nullable: true
      type: object
    DistributedInferenceServingPortAuthorizationTypeOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/DistributedInferenceServingPortAccessAuthorizationTypeEnum'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    DistributedInferenceServingPortAuthorizationTypeRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/DistributedInferenceServingPortAuthorizationTypeOptions'
      nullable: true
      type: object
    DistributedInferenceServingPortRulesProperties:
      properties:
        port:
          $ref: '#/components/schemas/IntegerRules'
        protocol:
          $ref: '#/components/schemas/StringRules'
        authorizationType:
          $ref: '#/components/schemas/DistributedInferenceServingPortAuthorizationTypeRules'
        authorizedUsers:
          $ref: '#/components/schemas/ArrayRules'
        authorizedGroups:
          $ref: '#/components/schemas/ArrayRules'
        exposeExternally:
          $ref: '#/components/schemas/BooleanRules'
        exposedUrl:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    DistributedInferenceServingPortRules:
      description: Defines the configuration for the inference serving endpoint. This determines how applications or services can send inference requests to the workload.
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceServingPortRulesProperties'
      nullable: true
      type: object
    DistributedInferenceStartupPolicyOptions:
      properties:
        startupPolicy:
          $ref: '#/components/schemas/DistributedInferenceStartupPolicy'
      nullable: true
      type: object
    DistributedInferenceStartupPolicyFieldRules:
      properties:
        startupPolicy:
          allOf:
            - $ref: '#/components/schemas/StringRulesCommon'
            - $ref: '#/components/schemas/DistributedInferenceStartupPolicyOptions'
          nullable: true
          type: object
      nullable: true
      type: object
    DistributedInferenceWorkersFieldRules:
      properties:
        workers:
          $ref: '#/components/schemas/IntegerRules'
    DistributedInferenceReplicasFieldRules:
      properties:
        replicas:
          $ref: '#/components/schemas/IntegerRules'
    DistributedInferenceCommonRulesV2:
      allOf:
        - nullable: true
          properties:
            category:
              $ref: '#/components/schemas/StringRules'
            nodePools:
              $ref: '#/components/schemas/ArrayRules'
            preemptibility:
              $ref: '#/components/schemas/PreemptibilityRules'
            priorityClass:
              $ref: '#/components/schemas/StringRules'
            restartPolicy:
              $ref: '#/components/schemas/DistributedInferenceRestartPolicyRules'
            servingPort:
              $ref: '#/components/schemas/DistributedInferenceServingPortRules'
          type: object
        - $ref: '#/components/schemas/DistributedInferenceStartupPolicyFieldRules'
        - $ref: '#/components/schemas/DistributedInferenceWorkersFieldRules'
        - $ref: '#/components/schemas/DistributedInferenceReplicasFieldRules'
      nullable: true
      type: object
    CleanPodPolicyOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/CleanPodPolicy'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    CleanPodPolicyRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/CleanPodPolicyOptions'
      nullable: true
      type: object
    DistributedFrameworkOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/DistributedFramework'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    DistributedFrameworkRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/DistributedFrameworkOptions'
      nullable: true
      type: object
    ExposedUrlRules:
      description: Rules for the attributed of exposedUrls
      properties:
        container:
          $ref: '#/components/schemas/IntegerRules'
        customUrl:
          $ref: '#/components/schemas/BooleanRules'
        url:
          $ref: '#/components/schemas/StringRules'
        authorizedUsers:
          $ref: '#/components/schemas/ArrayRules'
        authorizedGroups:
          $ref: '#/components/schemas/ArrayRules'
        toolType:
          $ref: '#/components/schemas/StringRules'
        toolName:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    ExposedUrlsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/ExposedUrlRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    MpiLauncherCreationPolicyOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/MpiLauncherCreationPolicy'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    MpiLauncherCreationPolicyRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/MpiLauncherCreationPolicyOptions'
      nullable: true
      type: object
    PortServiceTypeOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/PortServiceType'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    PortServiceTypeRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/PortServiceTypeOptions'
      nullable: true
      type: object
    PortRules:
      description: Rules for port attributes
      properties:
        container:
          $ref: '#/components/schemas/IntegerRules'
        serviceType:
          $ref: '#/components/schemas/PortServiceTypeRules'
        customExternalPort:
          $ref: '#/components/schemas/BooleanRules'
        external:
          $ref: '#/components/schemas/IntegerRules'
        toolType:
          $ref: '#/components/schemas/StringRules'
        toolName:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    PortsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/PortRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    RelatedUrlRules:
      description: Rules for the attributes of relatedUrls
      properties:
        url:
          $ref: '#/components/schemas/StringRules'
        type:
          $ref: '#/components/schemas/StringRules'
        name:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    RelatedUrlsRules:
      properties:
        attributes:
          $ref: '#/components/schemas/RelatedUrlRules'
        instances:
          $ref: '#/components/schemas/ItemRules'
      nullable: true
      type: object
    SupersetRulesAllOfSecurity:
      title: SupersetRulesAllOfSecurity
      nullable: true
      properties:
        allowPrivilegeEscalation:
          $ref: '#/components/schemas/BooleanRules'
        capabilities:
          $ref: '#/components/schemas/ArrayRules'
        hostIpc:
          $ref: '#/components/schemas/BooleanRules'
        hostNetwork:
          $ref: '#/components/schemas/BooleanRules'
        readOnlyRootFilesystem:
          $ref: '#/components/schemas/BooleanRules'
        runAsGid:
          $ref: '#/components/schemas/IntegerRulesOptional'
        runAsNonRoot:
          $ref: '#/components/schemas/BooleanRules'
        runAsUid:
          $ref: '#/components/schemas/IntegerRulesOptional'
        seccompProfileType:
          $ref: '#/components/schemas/SeccompProfileTypeRules'
        supplementalGroups:
          $ref: '#/components/schemas/StringRules'
        uidGidSource:
          $ref: '#/components/schemas/UidGidSourceRules'
      type: object
    SupersetServingPortRules:
      properties:
        port:
          $ref: '#/components/schemas/IntegerRules'
        container:
          $ref: '#/components/schemas/IntegerRules'
        protocol:
          $ref: '#/components/schemas/StringRules'
        authorizationType:
          $ref: '#/components/schemas/StringRules'
        authorizedUsers:
          $ref: '#/components/schemas/ArrayRules'
        authorizedGroups:
          $ref: '#/components/schemas/ArrayRules'
        clusterLocalAccessOnly:
          $ref: '#/components/schemas/BooleanRules'
        exposeExternally:
          $ref: '#/components/schemas/BooleanRules'
        exposedUrl:
          $ref: '#/components/schemas/StringRules'
      type: object
      nullable: true
    SupersetRules:
      allOf:
        - $ref: '#/components/schemas/InferenceFieldsRules'
        - $ref: '#/components/schemas/DistributedInferenceLeaderRulesFields'
        - $ref: '#/components/schemas/DistributedInferenceWorkerRulesFields'
        - $ref: '#/components/schemas/DistributedInferenceCommonRulesV2'
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/InstancesRules'
            args:
              $ref: '#/components/schemas/StringRules'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/IntegerRules'
            backoffLimit:
              $ref: '#/components/schemas/IntegerRules'
            category:
              $ref: '#/components/schemas/StringRules'
            cleanPodPolicy:
              $ref: '#/components/schemas/CleanPodPolicyRules'
            command:
              $ref: '#/components/schemas/StringRules'
            completions:
              $ref: '#/components/schemas/IntegerRules'
            compute:
              $ref: '#/components/schemas/SupersetRulesAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/BooleanRules'
            distributedFramework:
              $ref: '#/components/schemas/DistributedFrameworkRules'
            environmentVariables:
              $ref: '#/components/schemas/InstancesRules'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsRules'
            image:
              $ref: '#/components/schemas/StringRules'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicyRules'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsRules'
            labels:
              $ref: '#/components/schemas/InstancesRules'
            maxReplicas:
              $ref: '#/components/schemas/IntegerRules'
            minReplicas:
              $ref: '#/components/schemas/IntegerRules'
            mpiLauncherCreationPolicy:
              $ref: '#/components/schemas/MpiLauncherCreationPolicyRules'
            nodeAffinityRequired:
              $ref: '#/components/schemas/ArbitraryRules'
            nodePools:
              $ref: '#/components/schemas/ArrayRules'
            nodeType:
              $ref: '#/components/schemas/StringRules'
            numWorkers:
              $ref: '#/components/schemas/IntegerRules'
            parallelism:
              $ref: '#/components/schemas/IntegerRules'
            podAffinity:
              $ref: '#/components/schemas/PodAffinityRules'
            ports:
              $ref: '#/components/schemas/PortsRules'
            preemptibility:
              $ref: '#/components/schemas/PreemptibilityRules'
            priorityClass:
              $ref: '#/components/schemas/StringRules'
            probes:
              $ref: '#/components/schemas/ProbesRules'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsRules'
            restartPolicy:
              $ref: '#/components/schemas/StringRules'
            security:
              $ref: '#/components/schemas/SupersetRulesAllOfSecurity'
            servingPort:
              $ref: '#/components/schemas/SupersetServingPortRules'
            slotsPerWorker:
              $ref: '#/components/schemas/IntegerRules'
            sshAuthMountPath:
              $ref: '#/components/schemas/StringRules'
            stdin:
              $ref: '#/components/schemas/BooleanRules'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsRules'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesRules'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsRules'
                git:
                  $ref: '#/components/schemas/GitsRules'
                hostPath:
                  $ref: '#/components/schemas/HostPathsRules'
                nfs:
                  $ref: '#/components/schemas/NfssRules'
                pvc:
                  $ref: '#/components/schemas/PvcsRules'
                s3:
                  $ref: '#/components/schemas/S3sRules'
                secretVolume:
                  $ref: '#/components/schemas/SecretsRules'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/BooleanRules'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/IntegerRules'
            tolerations:
              $ref: '#/components/schemas/TolerationsRules'
            tty:
              $ref: '#/components/schemas/BooleanRules'
            workingDir:
              $ref: '#/components/schemas/StringRules'
          type: object
    ImposedAssets:
      description: a list of datasource assets to import into the policy. these datasources will be included in any workload that will be created in the scope of the policy.
      type: array
      items:
        type: string
        format: uuid
      nullable: true
    Timestamp:
      description: The time at which an event occurred. e.g. the time an effective policy has been updated
      type: string
      minLength: 1
      format: date-time
    FieldsToReset:
      description: set of fields in jsonpath format that is requested to clear their policy (default and rules)
      type: array
      items:
        type: string
        pattern: .*
      example:
        - master.security.runAsGpu
        - worker.compute.gpu
    TrainingPolicyDefaultsV2:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/AnnotationsDefaults'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            completions:
              $ref: '#/components/schemas/Completions'
            compute:
              $ref: '#/components/schemas/SupersetDefaultsAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesDefaults'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsDefaults'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsDefaults'
            labels:
              $ref: '#/components/schemas/LabelsDefaults'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType2'
            parallelism:
              $ref: '#/components/schemas/Parallelism'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/PortsDefaults'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsDefaults'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              $ref: '#/components/schemas/SupersetDefaultsAllOfSecurity'
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsDefaults'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesDefaults'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsDefaults'
                git:
                  $ref: '#/components/schemas/GitsDefaults'
                hostPath:
                  $ref: '#/components/schemas/HostPathsDefaults'
                nfs:
                  $ref: '#/components/schemas/NfssDefaults'
                pvc:
                  $ref: '#/components/schemas/PvcsDefaults'
                s3:
                  $ref: '#/components/schemas/S3sDefaults'
                secretVolume:
                  $ref: '#/components/schemas/SecretsDefaults'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/TolerationsDefaults'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    TrainingPolicyRulesV2:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/InstancesRules'
            args:
              $ref: '#/components/schemas/StringRules'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/IntegerRules'
            backoffLimit:
              $ref: '#/components/schemas/IntegerRules'
            category:
              $ref: '#/components/schemas/StringRules'
            command:
              $ref: '#/components/schemas/StringRules'
            completions:
              $ref: '#/components/schemas/IntegerRules'
            compute:
              $ref: '#/components/schemas/SupersetRulesAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/BooleanRules'
            environmentVariables:
              $ref: '#/components/schemas/InstancesRules'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsRules'
            image:
              $ref: '#/components/schemas/StringRules'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicyRules'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsRules'
            labels:
              $ref: '#/components/schemas/InstancesRules'
            nodeAffinityRequired:
              $ref: '#/components/schemas/ArbitraryRules'
            nodePools:
              $ref: '#/components/schemas/ArrayRules'
            nodeType:
              $ref: '#/components/schemas/StringRules'
            parallelism:
              $ref: '#/components/schemas/IntegerRules'
            podAffinity:
              $ref: '#/components/schemas/PodAffinityRules'
            ports:
              $ref: '#/components/schemas/PortsRules'
            preemptibility:
              $ref: '#/components/schemas/PreemptibilityRules'
            priorityClass:
              $ref: '#/components/schemas/StringRules'
            probes:
              $ref: '#/components/schemas/ProbesRules'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsRules'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicyRule'
            security:
              $ref: '#/components/schemas/SupersetRulesAllOfSecurity'
            stdin:
              $ref: '#/components/schemas/BooleanRules'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsRules'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesRules'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsRules'
                git:
                  $ref: '#/components/schemas/GitsRules'
                hostPath:
                  $ref: '#/components/schemas/HostPathsRules'
                nfs:
                  $ref: '#/components/schemas/NfssRules'
                pvc:
                  $ref: '#/components/schemas/PvcsRules'
                s3:
                  $ref: '#/components/schemas/S3sRules'
                secretVolume:
                  $ref: '#/components/schemas/SecretsRules'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/BooleanRules'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/IntegerRules'
            tolerations:
              $ref: '#/components/schemas/TolerationsRules'
            tty:
              $ref: '#/components/schemas/BooleanRules'
            workingDir:
              $ref: '#/components/schemas/StringRules'
          type: object
    TrainingPolicyDefaultsAndRulesV2:
      properties:
        defaults:
          allOf:
            - $ref: '#/components/schemas/TrainingPolicyDefaultsV2'
          nullable: true
          type: object
        rules:
          allOf:
            - $ref: '#/components/schemas/TrainingPolicyRulesV2'
          nullable: true
          type: object
        imposedAssets:
          $ref: '#/components/schemas/ImposedAssets'
        status:
          $ref: '#/components/schemas/PolicyValidationStatus'
      nullable: true
      type: object
    TrainingPolicyV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyMeta'
        policy:
          $ref: '#/components/schemas/TrainingPolicyDefaultsAndRulesV2'
        effective:
          $ref: '#/components/schemas/TrainingPolicyDefaultsAndRulesV2'
        effectiveUpdatedAt:
          $ref: '#/components/schemas/Timestamp'
      nullable: true
      type: object
    TrainingPolicyOverwriteRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/TrainingPolicyDefaultsAndRulesV2'
      type: object
    TrainingPolicyChangeRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/TrainingPolicyDefaultsAndRulesV2'
        reset:
          $ref: '#/components/schemas/FieldsToReset'
      type: object
    ReplicaDefaultsV2:
      nullable: true
      properties:
        annotations:
          $ref: '#/components/schemas/AnnotationsDefaults'
        args:
          $ref: '#/components/schemas/Args'
        autoDeletionTimeAfterCompletionSeconds:
          $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
        backoffLimit:
          $ref: '#/components/schemas/BackoffLimit'
        category:
          $ref: '#/components/schemas/Category'
        command:
          $ref: '#/components/schemas/Command'
        compute:
          $ref: '#/components/schemas/SupersetDefaultsAllOfCompute'
        createHomeDir:
          $ref: '#/components/schemas/CreateHomeDir'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariablesDefaults'
        exposedUrls:
          $ref: '#/components/schemas/ExposedUrlsDefaults'
        image:
          $ref: '#/components/schemas/Image'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicy'
        imagePullSecrets:
          $ref: '#/components/schemas/ImagePullSecretsDefaults'
        labels:
          $ref: '#/components/schemas/LabelsDefaults'
        nodeAffinityRequired:
          $ref: '#/components/schemas/NodeAffinityRequired'
        nodePools:
          $ref: '#/components/schemas/NodePools'
        nodeType:
          $ref: '#/components/schemas/NodeType2'
        podAffinity:
          $ref: '#/components/schemas/PodAffinity'
        ports:
          $ref: '#/components/schemas/PortsDefaults'
        preemptibility:
          $ref: '#/components/schemas/Preemptibility'
        priorityClass:
          $ref: '#/components/schemas/PriorityClass'
        probes:
          $ref: '#/components/schemas/Probes'
        relatedUrls:
          $ref: '#/components/schemas/RelatedUrlsDefaults'
        restartPolicy:
          $ref: '#/components/schemas/RestartPolicy'
        security:
          $ref: '#/components/schemas/SupersetDefaultsAllOfSecurity'
        stdin:
          $ref: '#/components/schemas/Stdin'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapsDefaults'
            dataVolume:
              $ref: '#/components/schemas/DataVolumesDefaults'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirsDefaults'
            git:
              $ref: '#/components/schemas/GitsDefaults'
            hostPath:
              $ref: '#/components/schemas/HostPathsDefaults'
            nfs:
              $ref: '#/components/schemas/NfssDefaults'
            pvc:
              $ref: '#/components/schemas/PvcsDefaults'
            s3:
              $ref: '#/components/schemas/S3sDefaults'
            secretVolume:
              $ref: '#/components/schemas/SecretsDefaults'
          type: object
        terminateAfterPreemption:
          $ref: '#/components/schemas/TerminateAfterPreemption'
        terminationGracePeriodSeconds:
          $ref: '#/components/schemas/TerminationGracePeriod'
        tolerations:
          $ref: '#/components/schemas/TolerationsDefaults'
        tty:
          $ref: '#/components/schemas/Tty'
        workingDir:
          $ref: '#/components/schemas/WorkingDir'
      type: object
    DistributedPolicyDefaultsV2:
      nullable: true
      properties:
        master:
          $ref: '#/components/schemas/ReplicaDefaultsV2'
        worker:
          allOf:
            - $ref: '#/components/schemas/ReplicaDefaultsV2'
            - nullable: true
              properties:
                cleanPodPolicy:
                  $ref: '#/components/schemas/CleanPodPolicy'
                distributedFramework:
                  $ref: '#/components/schemas/DistributedFramework'
                maxReplicas:
                  $ref: '#/components/schemas/MaxReplicas'
                minReplicas:
                  $ref: '#/components/schemas/MinReplicas'
                mpiLauncherCreationPolicy:
                  $ref: '#/components/schemas/MpiLauncherCreationPolicy'
                numWorkers:
                  $ref: '#/components/schemas/NumWorkers'
                slotsPerWorker:
                  $ref: '#/components/schemas/SlotsPerWorker'
                sshAuthMountPath:
                  $ref: '#/components/schemas/SshAuthMountPath'
              type: object
          nullable: true
          type: object
      type: object
    ReplicaRulesV2:
      nullable: true
      properties:
        annotations:
          $ref: '#/components/schemas/InstancesRules'
        args:
          $ref: '#/components/schemas/StringRules'
        autoDeletionTimeAfterCompletionSeconds:
          $ref: '#/components/schemas/IntegerRules'
        backoffLimit:
          $ref: '#/components/schemas/IntegerRules'
        category:
          $ref: '#/components/schemas/StringRules'
        command:
          $ref: '#/components/schemas/StringRules'
        compute:
          $ref: '#/components/schemas/SupersetRulesAllOfCompute'
        createHomeDir:
          $ref: '#/components/schemas/BooleanRules'
        environmentVariables:
          $ref: '#/components/schemas/InstancesRules'
        exposedUrls:
          $ref: '#/components/schemas/ExposedUrlsRules'
        image:
          $ref: '#/components/schemas/StringRules'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicyRules'
        imagePullSecrets:
          $ref: '#/components/schemas/ImagePullSecretsRules'
        labels:
          $ref: '#/components/schemas/InstancesRules'
        nodeAffinityRequired:
          $ref: '#/components/schemas/ArbitraryRules'
        nodePools:
          $ref: '#/components/schemas/ArrayRules'
        nodeType:
          $ref: '#/components/schemas/StringRules'
        podAffinity:
          $ref: '#/components/schemas/PodAffinityRules'
        ports:
          $ref: '#/components/schemas/PortsRules'
        preemptibility:
          $ref: '#/components/schemas/PreemptibilityRules'
        priorityClass:
          $ref: '#/components/schemas/StringRules'
        probes:
          $ref: '#/components/schemas/ProbesRules'
        relatedUrls:
          $ref: '#/components/schemas/RelatedUrlsRules'
        restartPolicy:
          $ref: '#/components/schemas/RestartPolicyRule'
        security:
          $ref: '#/components/schemas/SupersetRulesAllOfSecurity'
        stdin:
          $ref: '#/components/schemas/BooleanRules'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapsRules'
            dataVolume:
              $ref: '#/components/schemas/DataVolumesRules'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirsRules'
            git:
              $ref: '#/components/schemas/GitsRules'
            hostPath:
              $ref: '#/components/schemas/HostPathsRules'
            nfs:
              $ref: '#/components/schemas/NfssRules'
            pvc:
              $ref: '#/components/schemas/PvcsRules'
            s3:
              $ref: '#/components/schemas/S3sRules'
            secretVolume:
              $ref: '#/components/schemas/SecretsRules'
          type: object
        terminateAfterPreemption:
          $ref: '#/components/schemas/BooleanRules'
        terminationGracePeriodSeconds:
          $ref: '#/components/schemas/IntegerRules'
        tolerations:
          $ref: '#/components/schemas/TolerationsRules'
        tty:
          $ref: '#/components/schemas/BooleanRules'
        workingDir:
          $ref: '#/components/schemas/StringRules'
      type: object
    DistributedPolicyRulesV2:
      nullable: true
      properties:
        master:
          $ref: '#/components/schemas/ReplicaRulesV2'
        worker:
          allOf:
            - $ref: '#/components/schemas/ReplicaRulesV2'
            - nullable: true
              properties:
                cleanPodPolicy:
                  $ref: '#/components/schemas/CleanPodPolicyRules'
                distributedFramework:
                  $ref: '#/components/schemas/DistributedFrameworkRules'
                maxReplicas:
                  $ref: '#/components/schemas/IntegerRules'
                minReplicas:
                  $ref: '#/components/schemas/IntegerRules'
                mpiLauncherCreationPolicy:
                  $ref: '#/components/schemas/MpiLauncherCreationPolicyRules'
                numWorkers:
                  $ref: '#/components/schemas/IntegerRules'
                slotsPerWorker:
                  $ref: '#/components/schemas/IntegerRules'
                sshAuthMountPath:
                  $ref: '#/components/schemas/StringRules'
              type: object
          nullable: true
          type: object
      type: object
    DistributedImposedAssets:
      properties:
        worker:
          $ref: '#/components/schemas/ImposedAssets'
        master:
          $ref: '#/components/schemas/ImposedAssets'
      nullable: true
      type: object
    DistributedPolicyDefaultsAndRulesV2:
      properties:
        defaults:
          $ref: '#/components/schemas/DistributedPolicyDefaultsV2'
        rules:
          $ref: '#/components/schemas/DistributedPolicyRulesV2'
        imposedAssets:
          $ref: '#/components/schemas/DistributedImposedAssets'
        status:
          $ref: '#/components/schemas/PolicyValidationStatus'
      nullable: true
      type: object
    WorkspacePolicyDefaultsV2:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/AnnotationsDefaults'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              $ref: '#/components/schemas/SupersetDefaultsAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesDefaults'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsDefaults'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsDefaults'
            labels:
              $ref: '#/components/schemas/LabelsDefaults'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType2'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/PortsDefaults'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsDefaults'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              $ref: '#/components/schemas/SupersetDefaultsAllOfSecurity'
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsDefaults'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesDefaults'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsDefaults'
                git:
                  $ref: '#/components/schemas/GitsDefaults'
                hostPath:
                  $ref: '#/components/schemas/HostPathsDefaults'
                nfs:
                  $ref: '#/components/schemas/NfssDefaults'
                pvc:
                  $ref: '#/components/schemas/PvcsDefaults'
                s3:
                  $ref: '#/components/schemas/S3sDefaults'
                secretVolume:
                  $ref: '#/components/schemas/SecretsDefaults'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/TolerationsDefaults'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    WorkspacePolicyRulesV2:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/InstancesRules'
            args:
              $ref: '#/components/schemas/StringRules'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/IntegerRules'
            backoffLimit:
              $ref: '#/components/schemas/IntegerRules'
            category:
              $ref: '#/components/schemas/StringRules'
            command:
              $ref: '#/components/schemas/StringRules'
            compute:
              $ref: '#/components/schemas/SupersetRulesAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/BooleanRules'
            environmentVariables:
              $ref: '#/components/schemas/InstancesRules'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsRules'
            image:
              $ref: '#/components/schemas/StringRules'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicyRules'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsRules'
            labels:
              $ref: '#/components/schemas/InstancesRules'
            nodeAffinityRequired:
              $ref: '#/components/schemas/ArbitraryRules'
            nodePools:
              $ref: '#/components/schemas/ArrayRules'
            nodeType:
              $ref: '#/components/schemas/StringRules'
            podAffinity:
              $ref: '#/components/schemas/PodAffinityRules'
            ports:
              $ref: '#/components/schemas/PortsRules'
            preemptibility:
              $ref: '#/components/schemas/PreemptibilityRules'
            priorityClass:
              $ref: '#/components/schemas/StringRules'
            probes:
              $ref: '#/components/schemas/ProbesRules'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsRules'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicyRule'
            security:
              $ref: '#/components/schemas/SupersetRulesAllOfSecurity'
            stdin:
              $ref: '#/components/schemas/BooleanRules'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsRules'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesRules'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsRules'
                git:
                  $ref: '#/components/schemas/GitsRules'
                hostPath:
                  $ref: '#/components/schemas/HostPathsRules'
                nfs:
                  $ref: '#/components/schemas/NfssRules'
                pvc:
                  $ref: '#/components/schemas/PvcsRules'
                s3:
                  $ref: '#/components/schemas/S3sRules'
                secretVolume:
                  $ref: '#/components/schemas/SecretsRules'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/BooleanRules'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/IntegerRules'
            tolerations:
              $ref: '#/components/schemas/TolerationsRules'
            tty:
              $ref: '#/components/schemas/BooleanRules'
            workingDir:
              $ref: '#/components/schemas/StringRules'
          type: object
    WorkspacePolicyDefaultsAndRulesV2:
      properties:
        defaults:
          allOf:
            - $ref: '#/components/schemas/WorkspacePolicyDefaultsV2'
          nullable: true
          type: object
        rules:
          allOf:
            - $ref: '#/components/schemas/WorkspacePolicyRulesV2'
          nullable: true
          type: object
        imposedAssets:
          $ref: '#/components/schemas/ImposedAssets'
        status:
          $ref: '#/components/schemas/PolicyValidationStatus'
      nullable: true
      type: object
    WorkspacePolicyV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyMeta'
        policy:
          $ref: '#/components/schemas/WorkspacePolicyDefaultsAndRulesV2'
        effective:
          $ref: '#/components/schemas/WorkspacePolicyDefaultsAndRulesV2'
        effectiveUpdatedAt:
          $ref: '#/components/schemas/Timestamp'
      nullable: true
      type: object
    WorkspacePolicyOverwriteRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/WorkspacePolicyDefaultsAndRulesV2'
      type: object
    WorkspacePolicyChangeRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/WorkspacePolicyDefaultsAndRulesV2'
        reset:
          $ref: '#/components/schemas/FieldsToReset'
      type: object
    DistributedPolicyV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyMeta'
        policy:
          $ref: '#/components/schemas/DistributedPolicyDefaultsAndRulesV2'
        effective:
          $ref: '#/components/schemas/DistributedPolicyDefaultsAndRulesV2'
        effectiveUpdatedAt:
          $ref: '#/components/schemas/Timestamp'
      nullable: true
      type: object
    DistributedPolicyOverwriteRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/DistributedPolicyDefaultsAndRulesV2'
      type: object
    DistributedPolicyChangeRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/DistributedPolicyDefaultsAndRulesV2'
        reset:
          $ref: '#/components/schemas/FieldsToReset'
      type: object
    ServingPortContainerAndProtocol:
      properties:
        container:
          description: The port that the container running the inference service exposes (mandatory).
          type: integer
          format: int32
          minimum: 1
          maximum: 65535
          example: 8080
          nullable: true
        protocol:
          $ref: '#/components/schemas/ServingPortProtocol'
    ServingPort:
      description: A port for accessing the inference service
      allOf:
        - $ref: '#/components/schemas/ServingPortContainerAndProtocol'
        - $ref: '#/components/schemas/ServingPortAccess'
      nullable: true
      type: object
    InferencePolicyDefaultsV2:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/AnnotationsDefaults'
            args:
              $ref: '#/components/schemas/Args'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              $ref: '#/components/schemas/SupersetDefaultsAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesDefaults'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsDefaults'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsDefaults'
            labels:
              $ref: '#/components/schemas/LabelsDefaults'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType2'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/PortsDefaults'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsDefaults'
            security:
              nullable: true
              properties:
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            servingPort:
              $ref: '#/components/schemas/ServingPort'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsDefaults'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesDefaults'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsDefaults'
                git:
                  $ref: '#/components/schemas/GitsDefaults'
                hostPath:
                  $ref: '#/components/schemas/HostPathsDefaults'
                nfs:
                  $ref: '#/components/schemas/NfssDefaults'
                pvc:
                  $ref: '#/components/schemas/PvcsDefaults'
                secretVolume:
                  $ref: '#/components/schemas/SecretsDefaults'
              type: object
            tolerations:
              $ref: '#/components/schemas/TolerationsDefaults'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
        - $ref: '#/components/schemas/InferenceFields'
    ServingPortProtocolOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/ServingPortProtocol'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    ServingPortProtocolRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/ServingPortProtocolOptions'
      nullable: true
      type: object
    ServingPortAuthorizationTypeOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/ServingPortAccessAuthorizationTypeEnum'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    ServingPortAuthorizationTypeRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/ServingPortAuthorizationTypeOptions'
      nullable: true
      type: object
    ServingPortRules:
      properties:
        container:
          $ref: '#/components/schemas/IntegerRules'
        protocol:
          $ref: '#/components/schemas/ServingPortProtocolRules'
        authorizationType:
          $ref: '#/components/schemas/ServingPortAuthorizationTypeRules'
        authorizedUsers:
          $ref: '#/components/schemas/ArrayRules'
        authorizedGroups:
          $ref: '#/components/schemas/ArrayRules'
        clusterLocalAccessOnly:
          $ref: '#/components/schemas/BooleanRules'
      nullable: true
      type: object
    InferencePolicyRulesV2:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/InstancesRules'
            args:
              $ref: '#/components/schemas/StringRules'
            category:
              $ref: '#/components/schemas/StringRules'
            command:
              $ref: '#/components/schemas/StringRules'
            compute:
              $ref: '#/components/schemas/SupersetRulesAllOfCompute'
            createHomeDir:
              $ref: '#/components/schemas/BooleanRules'
            environmentVariables:
              $ref: '#/components/schemas/InstancesRules'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrlsRules'
            image:
              $ref: '#/components/schemas/StringRules'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicyRules'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsRules'
            labels:
              $ref: '#/components/schemas/InstancesRules'
            nodeAffinityRequired:
              $ref: '#/components/schemas/ArbitraryRules'
            nodePools:
              $ref: '#/components/schemas/ArrayRules'
            nodeType:
              $ref: '#/components/schemas/StringRules'
            podAffinity:
              $ref: '#/components/schemas/PodAffinityRules'
            ports:
              $ref: '#/components/schemas/PortsRules'
            preemptibility:
              $ref: '#/components/schemas/PreemptibilityRules'
            priorityClass:
              $ref: '#/components/schemas/StringRules'
            probes:
              $ref: '#/components/schemas/ProbesRules'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrlsRules'
            security:
              nullable: true
              properties:
                capabilities:
                  $ref: '#/components/schemas/ArrayRules'
                hostIpc:
                  $ref: '#/components/schemas/BooleanRules'
                hostNetwork:
                  $ref: '#/components/schemas/BooleanRules'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/BooleanRules'
                runAsGid:
                  $ref: '#/components/schemas/IntegerRulesOptional'
                runAsNonRoot:
                  $ref: '#/components/schemas/BooleanRules'
                runAsUid:
                  $ref: '#/components/schemas/IntegerRulesOptional'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileTypeRules'
                supplementalGroups:
                  $ref: '#/components/schemas/StringRules'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSourceRules'
              type: object
            servingPort:
              $ref: '#/components/schemas/ServingPortRules'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapsRules'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumesRules'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirsRules'
                git:
                  $ref: '#/components/schemas/GitsRules'
                hostPath:
                  $ref: '#/components/schemas/HostPathsRules'
                nfs:
                  $ref: '#/components/schemas/NfssRules'
                pvc:
                  $ref: '#/components/schemas/PvcsRules'
                secretVolume:
                  $ref: '#/components/schemas/SecretsRules'
              type: object
            tolerations:
              $ref: '#/components/schemas/TolerationsRules'
            workingDir:
              $ref: '#/components/schemas/StringRules'
          type: object
        - $ref: '#/components/schemas/InferenceFieldsRules'
    InferencePolicyDefaultsAndRulesV2:
      properties:
        defaults:
          allOf:
            - $ref: '#/components/schemas/InferencePolicyDefaultsV2'
          nullable: true
          type: object
        rules:
          allOf:
            - $ref: '#/components/schemas/InferencePolicyRulesV2'
          nullable: true
          type: object
        imposedAssets:
          $ref: '#/components/schemas/ImposedAssets'
        status:
          $ref: '#/components/schemas/PolicyValidationStatus'
      nullable: true
      type: object
    InferencePolicyV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyMeta'
        policy:
          $ref: '#/components/schemas/InferencePolicyDefaultsAndRulesV2'
        effective:
          $ref: '#/components/schemas/InferencePolicyDefaultsAndRulesV2'
        effectiveUpdatedAt:
          $ref: '#/components/schemas/Timestamp'
      nullable: true
      type: object
    InferencePolicyOverwriteRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/InferencePolicyDefaultsAndRulesV2'
      type: object
    InferencePolicyChangeRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/InferencePolicyDefaultsAndRulesV2'
        reset:
          $ref: '#/components/schemas/FieldsToReset'
      type: object
    DistributedInferenceLeaderDefaults:
      properties:
        leader:
          description: Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV2'
          nullable: true
          type: object
    DistributedInferenceWorkerDefaults:
      properties:
        worker:
          description: Defines the pod specification for the workers. Required only if the number of workers is greater than 0.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV2'
          nullable: true
          type: object
    DistributedInferenceDefaultsV2:
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceCommonDefaultsV2'
        - $ref: '#/components/schemas/DistributedInferenceLeaderDefaults'
        - $ref: '#/components/schemas/DistributedInferenceWorkerDefaults'
    DistributedInferenceLeaderRules:
      properties:
        leader:
          description: Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerRulesV2'
          nullable: true
          type: object
    DistributedInferenceWorkerRules:
      properties:
        worker:
          description: Defines the pod specification for the workers. Required only if the number of workers is greater than 0.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerRulesV2'
          nullable: true
          type: object
    DistributedInferenceRulesV2:
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceCommonRulesV2'
        - $ref: '#/components/schemas/DistributedInferenceLeaderRules'
        - $ref: '#/components/schemas/DistributedInferenceWorkerRules'
    DistributedInferenceImposedAssets:
      properties:
        leader:
          $ref: '#/components/schemas/ImposedAssets'
        worker:
          $ref: '#/components/schemas/ImposedAssets'
      nullable: true
      type: object
    DistributedInferencePolicyDefaultsAndRulesV2:
      properties:
        defaults:
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceDefaultsV2'
          nullable: true
          type: object
        rules:
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceRulesV2'
          nullable: true
          type: object
        imposedAssets:
          $ref: '#/components/schemas/DistributedInferenceImposedAssets'
        status:
          $ref: '#/components/schemas/PolicyValidationStatus'
      nullable: true
      type: object
    DistributedInferencePolicyV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyMeta'
        policy:
          $ref: '#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2'
        effective:
          $ref: '#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2'
        effectiveUpdatedAt:
          $ref: '#/components/schemas/Timestamp'
      nullable: true
      type: object
    DistributedInferencePolicyOverwriteRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2'
      type: object
    DistributedInferencePolicyChangeRequestV2:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2'
        reset:
          $ref: '#/components/schemas/FieldsToReset'
      type: object
    AutoScalingMaxReplicas:
      description: The maximum number of replicas for autoscaling. Defaults to minReplicas. Must be no less than minReplicas.
      type: integer
      format: int32
      minimum: 1
      nullable: true
    AutoScalingMetricNim:
      description: The metric to use for autoscaling (mandatory).
      type: string
      pattern: ^[a-zA-Z_:][a-zA-Z0-9_:]*$
      example: http_requests_total
      nullable: true
    AutoScalingMetricThreshold:
      description: The threshold to use with the specified metric for autoscaling (mandatory).
      type: integer
      format: int32
      nullable: true
    AutoScalingMinReplicas:
      description: The minimum number of replicas for autoscaling. Defaults to 1.
      type: integer
      format: int32
      minimum: 1
      nullable: true
    AutoScalingScaleWindowSeconds:
      description: The time window for autoscaling decisions, in seconds. Defaults to 300 seconds.
      type: integer
      format: int32
      minimum: 60
      maximum: 3600
      nullable: true
    NimCache:
      description: The specification of a NIM cache volume.
      type: object
      properties:
        name:
          description: The NIMCache resource name (mandatory).
          type: string
          minLength: 1
          example: nim-cache-a
          nullable: true
        profile:
          description: The NIM profile to use (optional).
          type: string
          minLength: 1
          example: tensorrt_llm-b200-fp8-tp2-pp1-latency-2901:10de-2
          nullable: true
      nullable: true
    NimServicePvcFields:
      properties:
        existingPvc:
          description: Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.
          type: boolean
          default: false
          nullable: true
        claimName:
          description: Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.
          type: string
          minLength: 1
          maxLength: 63
          example: my-claim
          nullable: true
          pattern: .*
        readOnly:
          description: Permit only read access to PVC.
          type: boolean
          default: false
          nullable: true
        claimInfo:
          $ref: '#/components/schemas/ClaimInfo'
      nullable: true
      type: object
    NimServiceWorkers:
      description: Specifies the number of worker nodes to use when running the NIM service in multi-node.
      type: integer
      format: int32
      minimum: 1
      maximum: 1000
      example: 3
      nullable: true
    NimServiceMultiNode:
      description: Defines whether the NIM service runs as a multi-node deployment. If workers is set to 1 or more, the service runs in multi-node.
      properties:
        workers:
          $ref: '#/components/schemas/NimServiceWorkers'
      nullable: true
      type: object
    NimServiceNgcAuthSecret:
      description: The name of a Kubernetes secret containing the NGC access credentials. The secret must contain a key named NGC_API_KEY with the API key as the value.
      type: string
      pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
      nullable: true
    NimServiceReplicas:
      default: 1
      description: The number of replicas to deploy.
      type: integer
      format: int32
      minimum: 0
      maximum: 1000
      example: 2
      nullable: true
    ServingPortServiceType:
      description: The type of Kubernetes service to create for the inference deployment. Options include 'ClusterIP' (default), 'NodePort', 'LoadBalancer', and 'ExternalName'.
      type: string
      default: ClusterIP
      enum:
        - ClusterIP
        - NodePort
        - LoadBalancer
        - ExternalName
      nullable: true
    ServingPortPort:
      description: The port that the container running the inference service exposes (mandatory).
      type: integer
      format: int32
      minimum: 1
      maximum: 65535
      example: 8000
      nullable: true
    ServingPortGrpcPort:
      description: The GRPC port that the container running the inference service exposes.
      type: integer
      format: int32
      minimum: 1
      maximum: 65535
      example: 8001
      nullable: true
    ServingPortMetricsPort:
      description: The port where metrics are exposed, required only if it's different than the main port.
      type: integer
      format: int32
      minimum: 1
      maximum: 65535
      example: 8002
      nullable: true
    ServingPortExposeExternally:
      description: Indicates whether the inference serving endpoint should be accessible outside the cluster. If set to true, the endpoint will be exposed externally. To enable external access, your administrator must configure the cluster as described in the [inference requirements](https://run-ai-docs.nvidia.com/self-hosted/2.25/getting-started/installation/system-requirements#inference). section.
      type: boolean
      nullable: true
      default: true
    ServingPortExposedUrl:
      description: The custom URL to use for the serving port. If empty (default), an autogenerated URL will be used.
      type: string
      nullable: true
      pattern: .*
    ServingPortExposedProtocol:
      description: The protocol to use for the exposed URL. If grpcPort is set, this defaults to grpc. Otherwise, it defaults to http.
      type: string
      enum:
        - http
        - grpc
      nullable: true
    NimServiceServingPortAuthorizationType:
      type: string
      description: |
        Specifies who can send requests to the serving endpoint:

        Possible values:
        - `public`: No authorization is required. (Default)
        - `authenticatedUsers`: Any NVIDIA Run:ai authenticated user and service account can send requests.
        - `authorizedUsers`: Only users listed in the authorizedUsers field can send requests.
        - `authorizedGroups`: Only members of user groups listed in the authorizedGroups field can send requests.
      enum:
        - public
        - authenticatedUsers
        - authorizedUsers
        - authorizedGroups
      nullable: true
    NimServiceServingPortAuthorizedUsers:
      description: A list of users and service accounts allowed to send requests to the serving endpoint. `Note:` Cannot be used together with authorizedGroups.
      type: array
      items:
        type: string
        maxLength: 253
        pattern: .*
      maxItems: 1000
      example:
        - user.a@example.com
        - user.b@example.com
      nullable: true
    NimServiceServingPortAuthorizedGroups:
      description: A list of user groups allowed to send requests to the serving endpoint. `Note:` Cannot be used together with authorizedUsers.
      type: array
      items:
        type: string
        maxLength: 253
        pattern: .*
      maxItems: 1000
      example:
        - group-a
        - group-b
      nullable: true
    NimServiceServingPort:
      description: |
        A port for accessing the inference service.
        Authorization fields (authorizationType, authorizedUsers, authorizedGroups) are supported for cluster version 2.25 and above.
      properties:
        serviceType:
          $ref: '#/components/schemas/ServingPortServiceType'
        port:
          $ref: '#/components/schemas/ServingPortPort'
        grpcPort:
          $ref: '#/components/schemas/ServingPortGrpcPort'
        metricsPort:
          $ref: '#/components/schemas/ServingPortMetricsPort'
        exposeExternally:
          $ref: '#/components/schemas/ServingPortExposeExternally'
        exposedUrl:
          $ref: '#/components/schemas/ServingPortExposedUrl'
        exposedProtocol:
          $ref: '#/components/schemas/ServingPortExposedProtocol'
        authorizationType:
          $ref: '#/components/schemas/NimServiceServingPortAuthorizationType'
        authorizedUsers:
          $ref: '#/components/schemas/NimServiceServingPortAuthorizedUsers'
        authorizedGroups:
          $ref: '#/components/schemas/NimServiceServingPortAuthorizedGroups'
      nullable: true
      type: object
    NimServiceDefaults:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/AnnotationsDefaults'
            autoscaling:
              nullable: true
              properties:
                maxReplicas:
                  $ref: '#/components/schemas/AutoScalingMaxReplicas'
                metric:
                  $ref: '#/components/schemas/AutoScalingMetricNim'
                metricThreshold:
                  $ref: '#/components/schemas/AutoScalingMetricThreshold'
                minReplicas:
                  $ref: '#/components/schemas/AutoScalingMinReplicas'
                scaleWindowSeconds:
                  $ref: '#/components/schemas/AutoScalingScaleWindowSeconds'
              type: object
            category:
              $ref: '#/components/schemas/Category'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
              type: object
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariablesDefaults'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsDefaults'
            labels:
              $ref: '#/components/schemas/LabelsDefaults'
            modelStore:
              nullable: true
              properties:
                nimCache:
                  $ref: '#/components/schemas/NimCache'
                pvc:
                  $ref: '#/components/schemas/NimServicePvcFields'
              type: object
            multiNode:
              $ref: '#/components/schemas/NimServiceMultiNode'
            ngcAuthSecret:
              $ref: '#/components/schemas/NimServiceNgcAuthSecret'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            replicas:
              $ref: '#/components/schemas/NimServiceReplicas'
            security:
              nullable: true
              properties:
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
              type: object
            servingPort:
              $ref: '#/components/schemas/NimServiceServingPort'
            tolerations:
              $ref: '#/components/schemas/TolerationsDefaults'
          type: object
    NimCacheRules:
      properties:
        name:
          $ref: '#/components/schemas/StringRules'
        profile:
          $ref: '#/components/schemas/StringRules'
      nullable: true
      type: object
    NimServiceMultiNodeRules:
      properties:
        workers:
          $ref: '#/components/schemas/IntegerRules'
      nullable: true
      type: object
    ServingPortServiceTypeOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/ServingPortServiceType'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    ServingPortServiceTypeRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/ServingPortServiceTypeOptions'
      nullable: true
      type: object
    ServingPortExposedProtocolOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/ServingPortExposedProtocol'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    ServingPortExposedProtocolRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/ServingPortExposedProtocolOptions'
      nullable: true
      type: object
    NimServiceServingPortAuthorizationTypeOptions:
      properties:
        options:
          type: array
          items:
            required:
              - value
            properties:
              value:
                $ref: '#/components/schemas/NimServiceServingPortAuthorizationType'
              displayed:
                description: Textual description of the value
                type: string
                nullable: true
                pattern: .*
          nullable: true
      nullable: true
      type: object
    NimServiceServingPortAuthorizationTypeRules:
      allOf:
        - $ref: '#/components/schemas/StringRulesCommon'
        - $ref: '#/components/schemas/NimServiceServingPortAuthorizationTypeOptions'
      nullable: true
      type: object
    NimServiceServingPortRules:
      description: A port for accessing the inference service
      properties:
        serviceType:
          $ref: '#/components/schemas/ServingPortServiceTypeRules'
        port:
          $ref: '#/components/schemas/IntegerRules'
        grpcPort:
          $ref: '#/components/schemas/IntegerRules'
        metricsPort:
          $ref: '#/components/schemas/IntegerRules'
        exposeExternally:
          $ref: '#/components/schemas/BooleanRules'
        exposedUrl:
          $ref: '#/components/schemas/StringRules'
        exposedProtocol:
          $ref: '#/components/schemas/ServingPortExposedProtocolRules'
        authorizationType:
          $ref: '#/components/schemas/NimServiceServingPortAuthorizationTypeRules'
        authorizedUsers:
          $ref: '#/components/schemas/ArrayRules'
        authorizedGroups:
          $ref: '#/components/schemas/ArrayRules'
      nullable: true
      type: object
    NimServiceRules:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/InstancesRules'
            autoscaling:
              nullable: true
              properties:
                maxReplicas:
                  $ref: '#/components/schemas/IntegerRules'
                metric:
                  $ref: '#/components/schemas/StringRules'
                metricThreshold:
                  $ref: '#/components/schemas/IntegerRules'
                minReplicas:
                  $ref: '#/components/schemas/IntegerRules'
                scaleWindowSeconds:
                  $ref: '#/components/schemas/IntegerRules'
              type: object
            category:
              $ref: '#/components/schemas/StringRules'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/NumberRules'
                cpuCoreRequest:
                  $ref: '#/components/schemas/NumberRules'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/QuantityRules'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/QuantityRules'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/IntegerRules'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/QuantityRules'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/QuantityRules'
                gpuPortionLimit:
                  $ref: '#/components/schemas/NumberRules'
                gpuPortionRequest:
                  $ref: '#/components/schemas/NumberRules'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestRules'
              type: object
            environmentVariables:
              $ref: '#/components/schemas/InstancesRules'
            image:
              $ref: '#/components/schemas/StringRules'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicyRules'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecretsRules'
            labels:
              $ref: '#/components/schemas/InstancesRules'
            modelStore:
              nullable: true
              properties:
                nimCache:
                  $ref: '#/components/schemas/NimCacheRules'
                pvc:
                  $ref: '#/components/schemas/PvcRules'
              type: object
            multiNode:
              $ref: '#/components/schemas/NimServiceMultiNodeRules'
            ngcAuthSecret:
              $ref: '#/components/schemas/StringRules'
            nodePools:
              $ref: '#/components/schemas/ArrayRules'
            preemptibility:
              $ref: '#/components/schemas/PreemptibilityRules'
            priorityClass:
              $ref: '#/components/schemas/StringRules'
            probes:
              $ref: '#/components/schemas/ProbesRules'
            replicas:
              $ref: '#/components/schemas/IntegerRules'
            security:
              nullable: true
              properties:
                runAsGid:
                  $ref: '#/components/schemas/IntegerRulesOptional'
                runAsUid:
                  $ref: '#/components/schemas/IntegerRulesOptional'
              type: object
            servingPort:
              $ref: '#/components/schemas/NimServiceServingPortRules'
            tolerations:
              $ref: '#/components/schemas/TolerationsRules'
          type: object
    NimServicePolicyDefaultsAndRules:
      properties:
        defaults:
          allOf:
            - $ref: '#/components/schemas/NimServiceDefaults'
          nullable: true
          type: object
        rules:
          allOf:
            - $ref: '#/components/schemas/NimServiceRules'
          nullable: true
          type: object
        status:
          $ref: '#/components/schemas/PolicyValidationStatus'
      nullable: true
      type: object
    NimServicePolicy:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyMeta'
        policy:
          $ref: '#/components/schemas/NimServicePolicyDefaultsAndRules'
        effective:
          $ref: '#/components/schemas/NimServicePolicyDefaultsAndRules'
        effectiveUpdatedAt:
          $ref: '#/components/schemas/Timestamp'
      nullable: true
      type: object
    NimServicePolicyOverwriteRequest:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/NimServicePolicyDefaultsAndRules'
      type: object
    NimServicePolicyChangeRequest:
      properties:
        meta:
          $ref: '#/components/schemas/PolicyCreationFields'
        policy:
          $ref: '#/components/schemas/NimServicePolicyDefaultsAndRules'
        reset:
          $ref: '#/components/schemas/FieldsToReset'
      type: object
    PolicyCrossType:
      properties:
        workspace:
          $ref: '#/components/schemas/WorkspacePolicyV2'
        training:
          $ref: '#/components/schemas/TrainingPolicyV2'
        distributed:
          $ref: '#/components/schemas/DistributedPolicyV2'
        inference:
          $ref: '#/components/schemas/InferencePolicyV2'
        distributedInference:
          $ref: '#/components/schemas/DistributedInferencePolicyV2'
        nimService:
          $ref: '#/components/schemas/NimServicePolicy'
      nullable: true
      type: object
    V1Error:
      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
    StorageClass:
      type: object
      required:
        - storage_class_name
      properties:
        cluster_id:
          type: string
          format: uuid
          description: Cluster ID which has sent the resource info
          example: 550e8400-e29b-41d4-a716-446655440000
        storage_class_name:
          type: string
          description: Storage class name
          example: my-storage-class
        Spec:
          type: object
          required:
            - is_default
          properties:
            provisioner:
              type: string
              description: The provisioner type (unique name)
              example: kubernetes.io/aws-ebs
            allow_volume_expansion:
              type: boolean
              description: Indicates whether the storage class allows volume expansion
              example: true
            is_default:
              type: boolean
              description: Indicates whether the storage class is the default one
              example: false
    StorageClasses:
      type: object
      required:
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StorageClass'
    StorageClassSpec:
      type: object
      required:
        - isDefault
      properties:
        provisioner:
          type: string
          description: The provisioner type (unique name)
          example: kubernetes.io/aws-ebs
        allowVolumeExpansion:
          type: boolean
          description: Indicates whether the storage class allows volume expansion
          example: true
        isDefault:
          type: boolean
          description: Indicates whether the storage class is the default one
          example: false
    AllowedForAssets:
      type: boolean
      nullable: true
      description: Determines whether PVC assets can be created using this storage class.
    AllowedForWorkloads:
      type: boolean
      nullable: true
      description: Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class.
    AllowedForEphemeralVolumes:
      type: boolean
      nullable: true
      description: Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class.
    AllowedForPersistentVolumes:
      type: boolean
      nullable: true
      description: Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class.
    AllowDataSharing:
      type: boolean
      nullable: true
      description: Allows creation of PVCs using a shared volume.
    StorageClassPermissions:
      type: object
      nullable: true
      description: Defines the access permissions and behavioral rules for this storage class.
      properties:
        allowedForAssets:
          $ref: '#/components/schemas/AllowedForAssets'
        allowedForWorkloads:
          $ref: '#/components/schemas/AllowedForWorkloads'
        allowedForEphemeralVolumes:
          $ref: '#/components/schemas/AllowedForEphemeralVolumes'
        allowedForPersistentVolumes:
          $ref: '#/components/schemas/AllowedForPersistentVolumes'
        allowDataSharing:
          $ref: '#/components/schemas/AllowDataSharing'
    PvcSupportedAccessModes:
      description: Defines the access modes supported by the given storage class. These values indicate which access configurations can be used when creating PVCs with this class.
      properties:
        readWriteOnce:
          description: Indicates whether the readWriteOnce access mode is supported. This mode allows a volume to be mounted as read/write by a single node.
          type: boolean
          default: true
          nullable: true
        readOnlyMany:
          description: Indicates whether the readOnlyMany access mode is supported. This mode allows a volume to be mounted as read-only by many nodes.
          type: boolean
          default: true
          nullable: true
        readWriteMany:
          description: Indicates whether the readWriteMany access mode is supported. This mode allows a volume to be mounted as read/write by many nodes.
          type: boolean
          default: true
          nullable: true
      nullable: true
      type: object
    AccessModeCustomization:
      description: Controls whether PVC access modes are required and what defaults to apply.
      properties:
        required:
          type: boolean
          description: If true, the accessMode field is mandatory when creating a PVC that uses this storage class.
          nullable: true
        default:
          $ref: '#/components/schemas/PvcAccessModes'
        supportedValues:
          $ref: '#/components/schemas/PvcSupportedAccessModes'
      type: object
      nullable: true
    VolumeModeCustomization:
      description: Defines whether the volumeMode field is required when creating PVCs and specifies default and supported modes for the storage class.
      properties:
        required:
          type: boolean
          description: Indicates whether the volumeMode field is mandatory when creating a PVC.
          nullable: true
        default:
          $ref: '#/components/schemas/PvcVolumeMode'
        supportedValues:
          description: Lists which volume modes are supported for this storage class.
          type: object
          nullable: true
          properties:
            filesystem:
              type: boolean
              description: Indicates whether filesystem mode is supported. Filesystem allows the volume to be mounted as a filesystem, enabling the usage of directories and files.
              default: true
              nullable: true
            block:
              type: boolean
              description: Indicates whether block mode is supported. Exposes the volume as a block storage, which can be formatted or used by applications directly without a filesystem.
              default: true
              nullable: true
      type: object
      nullable: true
    PvcClaimMinSize:
      description: 'Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.'
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 1G
      nullable: true
    PvcClaimMaxSize:
      description: 'Maximum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.'
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 1G
      nullable: true
    PvcClaimStepSize:
      description: Defines the incremental step between allowed numeric values (for example, 1, 0.1).
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 1G
      nullable: true
    ClaimSizeCustomization:
      description: Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.
      properties:
        default:
          $ref: '#/components/schemas/PvcClaimSize'
        supportedUnits:
          description: 'Units supported for specifying PVC sizes. Valid values: "MB", "MiB", "GB", "GiB", "TB", "TiB".'
          type: array
          items:
            type: string
            enum:
              - MB
              - MiB
              - GB
              - GiB
              - TB
              - TiB
        min:
          $ref: '#/components/schemas/PvcClaimMinSize'
        max:
          $ref: '#/components/schemas/PvcClaimMaxSize'
        step:
          $ref: '#/components/schemas/PvcClaimStepSize'
      type: object
      nullable: true
    PvcAddedAttributeFormat:
      type: string
      description: 'Defines the data type the attribute can accept. Enum: "text" "number" "boolean"'
      enum:
        - text
        - number
        - boolean
      nullable: true
    PvcAddedAttribute:
      description: Attribute that is added to any PVC of a given storage class.
      required:
        - key
      properties:
        key:
          type: string
          minLength: 1
          description: 'The annotation key for the PVC. Must comply with Kubernetes naming rules: ≤63 characters, beginning and ending with an alphanumeric character ([A-Za-z0-9]), and may include dashes (-), underscores (_), or dots (.).'
          maxLength: 63
          pattern: ^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$
          example: dnsname
        format:
          description: 'Defines the data type the attribute can accept. Enum: "text" "number" "boolean"'
          $ref: '#/components/schemas/PvcAddedAttributeFormat'
        display:
          type: string
          minLength: 1
          description: User-friendly display name for the attribute, shown in the UI.
          nullable: true
          example: DNS Name
        description:
          type: string
          minLength: 1
          description: A description of the attribute's purpose or expected values.
          nullable: true
          example: The host name of the DNS
        placeholder:
          type: string
          minLength: 1
          description: Example or hint text for the attribute's value, displayed as a watermark or help message in the UI.
          nullable: true
          example: enter hostname or IP address
        required:
          description: Indicates whether this attribute is mandatory.
          type: boolean
          nullable: true
          example: 'true'
        defaultValue:
          description: Default value assigned to the attribute when not explicitly provided.
          type: string
          minLength: 1
          nullable: true
          example: my.dns.com
        validationRegexp:
          description: Regular expression used to validate user input for text attributes.
          type: string
          minLength: 1
          nullable: true
          example: ^[a-zA-Z0-9.-_]+$
        minValue:
          description: Minimum allowed value for attributes of type number.
          type: number
          minLength: 1
          nullable: true
          example: '100'
        maxValue:
          description: Maximum allowed value for attributes of type number.
          type: number
          minLength: 1
          nullable: true
          example: '200'
        step:
          description: Defines the incremental step between allowed numeric values (for example, 1, 0.1).
          type: number
          minLength: 1
          nullable: true
          example: '5'
        validationError:
          description: Custom validation error message shown if input fails validation. If omitted, a default error message is generated automatically.
          type: string
          minLength: 1
          nullable: true
          example: Invalid URL
      nullable: true
      type: object
    AttributesCustomization:
      description: Defines additional annotation attributes to be applied to PVCs created under this storage class. Each attribute describes an annotation key and its expected value format, display name, and purpose.
      type: array
      items:
        $ref: '#/components/schemas/PvcAddedAttribute'
    StorageClassCustomization:
      description: Optional UI/policy controls that define defaults and requirements when creating PVCs with this storage class.
      properties:
        accessMode:
          $ref: '#/components/schemas/AccessModeCustomization'
        volumeMode:
          $ref: '#/components/schemas/VolumeModeCustomization'
        claimSize:
          $ref: '#/components/schemas/ClaimSizeCustomization'
        attributes:
          $ref: '#/components/schemas/AttributesCustomization'
      type: object
      nullable: true
    StorageClassV2:
      type: object
      required:
        - clusterId
        - storageClassName
        - spec
      properties:
        clusterId:
          type: string
          format: uuid
          description: Cluster ID which has sent the resource info
          example: 550e8400-e29b-41d4-a716-446655440000
        storageClassName:
          type: string
          description: Storage class name
          example: my-storage-class
        spec:
          $ref: '#/components/schemas/StorageClassSpec'
        permissions:
          $ref: '#/components/schemas/StorageClassPermissions'
        customization:
          $ref: '#/components/schemas/StorageClassCustomization'
    StorageClassesV2:
      type: object
      required:
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/StorageClassV2'
    ScopeClusterId:
      description: The ID of the cluster.
      type: string
      format: uuid
    StorageClassName:
      description: The name of the storage class to which the configuration applies.
      type: string
      example: Standard
    StorageClassConfiguration:
      type: object
      required:
        - id
        - tenantId
        - scopeType
        - scopeId
        - name
      properties:
        id:
          description: The unique identifier of the storage class configuration.
          type: string
          format: uuid
        tenantId:
          $ref: '#/components/schemas/TenantId'
        scopeType:
          description: 'Currently supported value: ''cluster'', which is also the default.'
          type: string
          enum:
            - cluster
          default: cluster
          example: cluster
        scopeId:
          $ref: '#/components/schemas/ScopeClusterId'
        name:
          $ref: '#/components/schemas/StorageClassName'
        permissions:
          $ref: '#/components/schemas/StorageClassPermissions'
        customization:
          $ref: '#/components/schemas/StorageClassCustomization'
    StorageClassConfigurationListResponse:
      type: object
      required:
        - storageClassConfigurations
      properties:
        storageClassConfigurations:
          description: A list of storage class configuration objects. Each object defines the configuration details for a specific storage class.
          type: array
          items:
            $ref: '#/components/schemas/StorageClassConfiguration'
        next:
          type: integer
          example: 1
    StorageClassConfigurationCreationRequest:
      type: object
      required:
        - scopeType
        - scopeId
        - name
      properties:
        tenantId:
          type: integer
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TenantId'
        scopeType:
          type: string
          description: the scope type of the configuration.
          enum:
            - cluster
          default: cluster
          example: cluster
        scopeId:
          $ref: '#/components/schemas/ScopeClusterId'
        name:
          $ref: '#/components/schemas/StorageClassName'
        permissions:
          $ref: '#/components/schemas/StorageClassPermissions'
        customization:
          $ref: '#/components/schemas/StorageClassCustomization'
    StorageClassConfigurationUpdateRequest:
      type: object
      properties:
        permissions:
          $ref: '#/components/schemas/StorageClassPermissions'
        customization:
          $ref: '#/components/schemas/StorageClassCustomization'
    PvcAttributesToRemove:
      description: optional list of attributes that you wish to remove
      properties:
        attributesToRemove:
          type: array
          items:
            type: string
          example:
            - dnsname
            - dnsip
      type: object
      nullable: true
    StorageClassConfigurationPatchRequest:
      type: object
      properties:
        permissions:
          $ref: '#/components/schemas/StorageClassPermissions'
        customization:
          type: object
          allOf:
            - $ref: '#/components/schemas/StorageClassCustomization'
            - $ref: '#/components/schemas/PvcAttributesToRemove'
          nullable: true
    ResourceType:
      type: string
      description: "Resource type enum for authorization. \n\nNote: The 'apps' resource type is DEPRECATED. Please use 'service-account' instead for managing service accounts.\n"
      enum:
        - department
        - tenant
        - project
        - cluster
        - cluster-config
        - nodepools
        - nodes
        - settings
        - security-settings
        - branding-settings
        - users
        - apps
        - service-account
        - roles
        - access_rules
        - workloads
        - applications
        - workspaces
        - trainings
        - inferences
        - environments
        - pvc-assets
        - git-assets
        - host-path-assets
        - nfs-assets
        - s3-assets
        - compute-resources
        - templates
        - credentials
        - events-history
        - policies
        - cm-volume-assets
        - datavolumes
        - secret-volume-assets
        - storage-class-configuration
        - access-keys
        - workload-properties
        - network-topologies
        - registries
        - workload-integration-metrics
        - nodepools-minimal
        - clusters-minimal
    ResourceTypeGroupId:
      type: string
      enum:
        - organization
        - physical-resource
        - iam
        - workload
        - workload-asset
    Action:
      type: string
      enum:
        - create
        - read
        - update
        - delete
        - sync
    Permission:
      type: object
      required:
        - resourceType
        - actions
        - groupId
        - displayName
      properties:
        resourceType:
          $ref: '#/components/schemas/ResourceType'
        displayName:
          type: string
          example: Projects
        groupId:
          $ref: '#/components/schemas/ResourceTypeGroupId'
        actions:
          type: array
          items:
            $ref: '#/components/schemas/Action'
    Permissions:
      type: array
      items:
        $ref: '#/components/schemas/Permission'
      x-schema-name: Permissions
    KubernetesPermissions:
      type: object
      properties:
        predefinedRole:
          type: string
          description: The ID of an NVIDIA Run:ai predefined role. The custom role will include the mapped Kubernetes ClusterRole and its permissions.
          example: '12'
          nullable: true
    RoleV1:
      type: object
      required:
        - name
        - description
        - permissions
        - id
        - createdAt
        - updatedAt
        - createdBy
        - custom
        - effectiveEnabled
      properties:
        id:
          type: integer
          format: int32
          example: 32
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        deletedAt:
          type: string
          nullable: true
          format: date-time
        createdBy:
          type: string
          example: user@run.ai
        custom:
          type: boolean
        effectiveEnabled:
          type: boolean
          default: true
        permissions:
          $ref: '#/components/schemas/Permissions'
        name:
          type: string
          example: admin
        description:
          type: string
          example: can manage all resources
        enabled:
          type: boolean
          default: true
          nullable: true
        kubernetesPermissions:
          $ref: '#/components/schemas/KubernetesPermissions'
    RolesV1:
      type: array
      items:
        $ref: '#/components/schemas/RoleV1'
    RolesSortFilterFields:
      type: string
      enum:
        - name
        - createdAt
        - createdBy
        - custom
        - scopeType
        - enabled
    RolePermissionSet:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          description: The universally unique ID (UUID) of the permission set.
        name:
          type: string
          description: The name of the permission set.
          example: test
    RoleCreationFields:
      type: object
      required:
        - name
        - description
      properties:
        name:
          type: string
          description: The name of the role to create. Must be unique within the given scope.
          example: admin
          minLength: 1
        description:
          type: string
          description: A description of the role.
          example: can manage all resources
        enabled:
          type: boolean
          default: true
          description: 'Specifies whether the role is active. Default: true'
          nullable: true
        permissionSets:
          type: array
          description: The permission sets assigned to this role. Each item includes the UUID and name of the permission set.
          items:
            $ref: '#/components/schemas/RolePermissionSet'
        kubernetesPermissions:
          allOf:
            - $ref: '#/components/schemas/KubernetesPermissions'
          description: Defines the Kubernetes cluster permissions associated with this role.
    PermissionAction:
      type: string
      enum:
        - create
        - read
        - update
        - delete
    RolePermission:
      type: object
      required:
        - resourceType
        - actions
      properties:
        resourceType:
          description: The type of resource the permission applies to.
          $ref: '#/components/schemas/ResourceType'
        actions:
          type: array
          description: |
            The list of allowed actions for this resource
            - create
            - read
            - update
            - delete
          items:
            $ref: '#/components/schemas/PermissionAction'
    RolePermissions:
      type: array
      items:
        $ref: '#/components/schemas/RolePermission'
    RoleCalculatedFields:
      type: object
      required:
        - id
        - createdAt
        - updatedAt
        - createdBy
        - custom
        - effectiveEnabled
        - permissions
      properties:
        id:
          type: integer
          format: int32
          description: The ID of the role.
          example: 32
        createdAt:
          type: string
          description: The timestamp for when the role was created.
          format: date-time
        updatedAt:
          type: string
          description: The timestamp for the last time the role was updated.
          format: date-time
        createdBy:
          type: string
          description: Identifier of the user who created the role.
          example: user@run.ai
        effectiveEnabled:
          type: boolean
          description: 'Indicates whether the role is effectively enabled in the tenant. This reflects the role’s operational state after considering tenant-level configuration or restrictions. Default: true'
          default: true
        deprecated:
          type: boolean
          description: Indicates whether the role is deprecated. When set to true, the role is considered deprecated and should not be used for new assignments.
        permissions:
          $ref: '#/components/schemas/RolePermissions'
    Role:
      allOf:
        - $ref: '#/components/schemas/RoleCreationFields'
        - $ref: '#/components/schemas/RoleCalculatedFields'
    Roles:
      type: array
      items:
        $ref: '#/components/schemas/Role'
      x-schema-name: Roles
    RoleCreationFieldsInternal:
      allOf:
        - $ref: '#/components/schemas/RoleCreationFields'
        - type: object
          required:
            - name
            - description
    RoleEnabledDisabledFields:
      type: object
    PermissionSet:
      allOf:
        - $ref: '#/components/schemas/RolePermissionSet'
        - type: object
          required:
            - name
            - permissions
          properties:
            description:
              type: string
              description: A description of the permission set.
            permissions:
              $ref: '#/components/schemas/RolePermissions'
    PermissionSets:
      type: array
      items:
        $ref: '#/components/schemas/PermissionSet'
    AccessRulesSortFilterFields:
      type: string
      enum:
        - subjectId
        - subjectType
        - roleId
        - scopeId
        - scopeType
        - roleName
        - scopeName
        - createdAt
        - deletedAt
        - createdBy
        - phase
    SubjectType:
      type: string
      description: |
        Subject type enum for access rules.

        Note: The 'app' subject type is DEPRECATED. Please use 'service-account' instead for service accounts.
      enum:
        - user
        - app
        - service-account
        - group
    AccessRuleCreationFields:
      type: object
      required:
        - subjectId
        - subjectType
        - roleId
        - scopeId
        - scopeType
      properties:
        subjectId:
          type: string
          example: user@run.ai
          description: The unique identifier of the subject (e.g., user, group, or app).
        subjectType:
          allOf:
            - $ref: '#/components/schemas/SubjectType'
            - description: 'The subject assigned to the access rule. Valid values: user, group, app.'
        roleId:
          type: integer
          format: int32
          description: The numeric ID of the assigned role.
          example: 53142648
        scopeId:
          type: string
          description: The unique identifier of the scope.
          example: a418ed33-9399-48c0-a890-122cadd13bfd
        scopeType:
          allOf:
            - $ref: '#/components/schemas/ScopeType'
            - description: 'The type of scope the access rule applies to. Valid values: system, tenant, cluster, department, project.'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
    EnrichmentDataFields:
      type: object
      required:
        - roleName
        - scopeName
      properties:
        roleName:
          type: string
          description: The name of the assigned role (e.g., admin, viewer).
          example: admin
        scopeName:
          type: string
          description: Human-readable name of the scope (e.g., tenant-x).
          example: tenant-x
    AccessRuleMetadataFields:
      type: object
      required:
        - id
        - createdAt
        - updatedAt
        - createdBy
      properties:
        id:
          type: integer
          format: int32
          description: The ID of the access rule entry.
          example: 32
        createdAt:
          type: string
          format: date-time
          description: The timestamp for when the access rule was created.
        updatedAt:
          type: string
          format: date-time
          description: The timestamp for the last time the access rule was updated.
        deletedAt:
          type: string
          nullable: true
          format: date-time
          description: The timestamp indicating when the access rule was deleted.
        tenantId:
          $ref: '#/components/schemas/TenantId'
        createdBy:
          type: string
          example: user@run.ai
          description: Identifier of the user who created the access rule.
    AccessRulePhase:
      type: string
      enum:
        - Creating
        - Ready
        - NotReady
        - Deleting
      description: Phase of the Access Rule in the cluster.
      example: Ready
    AccessRuleStatusResponse:
      type: object
      description: Status of the Access Rule in the cluster. Available only for clusters of version 2.22.0 or above.
      properties:
        phase:
          $ref: '#/components/schemas/AccessRulePhase'
        message:
          type: string
          description: Message for status of Access Rule in the cluster
          example: Failed to enforce department 'department-a'
        details:
          type: string
          description: Details for status of Access Rule in the clusters
          example: 'NotReady: [cluster1-uuid]; Ready: [cluster2-uuid, cluster3-uuid]'
    AccessRule:
      allOf:
        - $ref: '#/components/schemas/AccessRuleCreationFields'
        - $ref: '#/components/schemas/EnrichmentDataFields'
        - $ref: '#/components/schemas/AccessRuleMetadataFields'
        - type: object
          properties:
            status:
              $ref: '#/components/schemas/AccessRuleStatusResponse'
        - required:
            - tenantId
    AccessRules:
      type: array
      items:
        $ref: '#/components/schemas/AccessRule'
      x-schema-name: AccessRules
    AccessRuleSync:
      allOf:
        - $ref: '#/components/schemas/AccessRuleCreationFields'
        - $ref: '#/components/schemas/EnrichmentDataFields'
        - $ref: '#/components/schemas/AccessRuleMetadataFields'
        - type: object
          properties:
            predefinedRole:
              type: object
              nullable: true
              properties:
                id:
                  type: string
                  description: Id of the predefined role for cluster permissions
                  example: '12'
                name:
                  type: string
                  description: Name of the predefined role for cluster permissions
                  example: admin
            isDeleting:
              type: boolean
              default: false
              description: Indicates if the access rule is in 'Deleting' phase and should be deleted from the cluster
              example: false
    AccessRuleById:
      allOf:
        - $ref: '#/components/schemas/AccessRule'
        - properties:
            scopePath:
              type: string
              nullable: true
              example: runai/production-cluster/dep-42/prj-73
    AccessRuleClusterPhase:
      type: string
      enum:
        - Ready
        - NotReady
        - Deleted
      description: Phase of the Access Rule in the cluster
      example: Ready
    AccessRuleStatusRequest:
      type: object
      required:
        - phase
        - message
      properties:
        phase:
          $ref: '#/components/schemas/AccessRuleClusterPhase'
        message:
          type: string
          description: Message for status of Access Rule in the cluster
          example: Failed to enforce department 'department-a'
    AccessRuleForSync:
      allOf:
        - $ref: '#/components/schemas/AccessRuleStatusRequest'
        - type: object
          required:
            - accessRuleId
          properties:
            accessRuleId:
              type: integer
              format: int32
              minimum: 0
              description: The id of the access rule to retrieve
              example: 32
    AccessRulesBatchAction:
      type: string
      description: Specifies the operation to perform. Must be set to "delete".
      enum:
        - delete
        - validate_delete
    AccessRulesBatchFields:
      type: object
      description: Deletes a batch of access rules in a single operation. It requires a list of rule IDs and an action flag explicitly set to "delete". It returns the result of the operation, including which items were successfully deleted and which failed.
      required:
        - ids
        - action
      properties:
        ids:
          type: array
          description: List of access rule IDs to delete.
          minItems: 1
          maxItems: 100
          items:
            type: string
            format: uuid
            description: Access rule ID to delete.
        action:
          $ref: '#/components/schemas/AccessRulesBatchAction'
    AccessRuleDeletionBatchId:
      type: string
      format: uuid
      description: The unique ID of the batch operation.
    AccessRuleDeletionBatchIdsList:
      type: array
      description: List of access rule IDs that were successfully deleted.
      items:
        type: string
        format: uuid
      minLength: 1
    AccessRuleDeletionBatchErrorCode:
      type: integer
      format: int32
      description: A numeric code representing the error type.
    AccessRuleDeletionBatchErrorMessage:
      type: string
      description: A human-readable message describing the access rule IDs that failed to delete.
    AccessRuleDeletionBatchResponseFailureItem:
      type: object
      required:
        - id
        - code
        - message
      properties:
        id:
          type: string
          format: uuid
        code:
          $ref: '#/components/schemas/AccessRuleDeletionBatchErrorCode'
        message:
          $ref: '#/components/schemas/AccessRuleDeletionBatchErrorMessage'
    AccessRuleDeletionBatchResponse:
      type: object
      required:
        - id
      properties:
        id:
          $ref: '#/components/schemas/AccessRuleDeletionBatchId'
        succeeded:
          $ref: '#/components/schemas/AccessRuleDeletionBatchIdsList'
        failed:
          type: array
          description: Details of the access rule IDs that failed to delete.
          items:
            $ref: '#/components/schemas/AccessRuleDeletionBatchResponseFailureItem'
    AccessRuleSubjects:
      type: array
      description: subjects for the access rules. must have at least one value
      minItems: 1
      maxItems: 100
      items:
        type: object
        required:
          - subjectId
          - subjectType
        properties:
          subjectId:
            type: string
            description: The unique identifier of the subject e.g., user, group, or app).
            example: user@run.ai
          subjectType:
            allOf:
              - $ref: '#/components/schemas/SubjectType'
              - description: 'The subject assigned to the access rule. Valid values: user, group, app.'
    AccessRuleScopes:
      type: array
      description: scopes for the access rules. must have at least one value
      minItems: 1
      maxItems: 50
      items:
        type: object
        required:
          - scopeId
          - scopeType
        properties:
          scopeId:
            $ref: '#/components/schemas/ScopeId'
          scopeType:
            allOf:
              - $ref: '#/components/schemas/ScopeType'
              - description: 'The scope to apply the access rule to. Valid values: system, tenant, cluster, department, project.'
    AccessRulesBatchCreateFields:
      type: object
      required:
        - payload
      properties:
        payload:
          type: object
          description: An array of access rule objects, each containing the role, subject, cluster, and scope to apply.
          required:
            - subjects
            - roleId
            - scopes
          properties:
            roleId:
              type: integer
              format: int32
              description: The numeric ID of the role to assign (e.g., admin, viewer).
              example: 53142648
            clusterId:
              $ref: '#/components/schemas/ClusterId'
            subjects:
              $ref: '#/components/schemas/AccessRuleSubjects'
            scopes:
              $ref: '#/components/schemas/AccessRuleScopes'
    ErrorCode:
      type: integer
      format: int32
      description: A numeric code representing the error type.
    AccessRulesBatchCreateResponse:
      type: object
      properties:
        succeeded:
          type: array
          items:
            $ref: '#/components/schemas/AccessRule'
        failed:
          type: array
          items:
            properties:
              payload:
                $ref: '#/components/schemas/AccessRuleCreationFields'
              code:
                $ref: '#/components/schemas/ErrorCode'
              message:
                type: string
                description: A human-readable message describing the access rule IDs that failed to create.
    PermittedScopes:
      type: object
      properties:
        system:
          type: boolean
          example: false
        tenants:
          type: array
          items:
            type: string
            example: '1'
        tenant:
          deprecated: true
          type: string
          example: '1'
        clusters:
          type: array
          items:
            type: string
            example: a418ed33-9399-48c0-a890-122cadd13bfd
        departments:
          type: array
          items:
            type: string
            example: '7'
        projects:
          type: array
          items:
            type: string
    PermittedScopesActions:
      type: object
      required:
        - create
        - read
        - update
        - delete
      properties:
        create:
          $ref: '#/components/schemas/PermittedScopes'
        read:
          $ref: '#/components/schemas/PermittedScopes'
        update:
          $ref: '#/components/schemas/PermittedScopes'
        delete:
          $ref: '#/components/schemas/PermittedScopes'
    MeAccessRule:
      allOf:
        - $ref: '#/components/schemas/AccessRuleCreationFields'
        - $ref: '#/components/schemas/EnrichmentDataFields'
        - required:
            - tenantId
        - properties:
            id:
              type: integer
              format: int32
              example: 32
            tenantId:
              $ref: '#/components/schemas/TenantId'
    MeAccessRules:
      type: array
      items:
        $ref: '#/components/schemas/MeAccessRule'
      x-schema-name: MeAccessRules
    MeAccessRulesResponse:
      type: object
      properties:
        accessRules:
          type: object
          required:
            - totalRecords
            - displayRecords
            - accessRules
          properties:
            totalRecords:
              type: integer
              example: 1
            displayRecords:
              type: integer
              example: 1
            accessRules:
              $ref: '#/components/schemas/MeAccessRules'
    BatchId:
      type: string
      format: uuid
      description: The ID of the batch operation.
    IdsList:
      type: array
      description: List of ids to perform the action on.
      items:
        type: string
        format: uuid
        description: Id to perform the action on.
      minLength: 1
    ErrorMessage:
      type: string
      description: The error message.
    BatchResponseFailureItem:
      type: object
      required:
        - id
        - code
        - message
      properties:
        id:
          type: string
          format: uuid
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          $ref: '#/components/schemas/ErrorMessage'
    BatchResponse:
      type: object
      required:
        - id
      properties:
        id:
          $ref: '#/components/schemas/BatchId'
        succeeded:
          $ref: '#/components/schemas/IdsList'
        failed:
          type: array
          description: The IDs that failed to update.
          items:
            $ref: '#/components/schemas/BatchResponseFailureItem'
    AccessRulesFilterFields:
      $ref: '#/components/schemas/AccessRulesSortFilterFields'
    SamlData:
      type: object
      nullable: true
      properties:
        signingCertificate:
          type: string
        singleSignOnServiceUrl:
          type: string
        entityId:
          type: string
        serviceProviderMetadataUrl:
          type: string
          description: Service Provider (SP) metadata url
    MandatoryClaim:
      type: object
      nullable: true
      required:
        - claim
        - values
      properties:
        claim:
          type: string
          pattern: .*[a-zA-Z].*
          minLength: 1
          maxLength: 255
        values:
          type: array
          minItems: 1
          maxItems: 100
          items:
            type: string
            minLength: 1
            maxLength: 255
            pattern: ^(?!.*\s).*?[a-zA-Z].*$
    OidcData:
      type: object
      nullable: true
      required:
        - clientId
        - clientSecret
        - discoverDocumentUrl
      properties:
        clientId:
          type: string
        clientSecret:
          type: string
        scopes:
          type: array
          items:
            type: string
            pattern: ^([a-zA-Z0-9-._:]+)(\s[a-zA-Z0-9-._:]+)*$
        mandatoryClaim:
          $ref: '#/components/schemas/MandatoryClaim'
    OcpData:
      type: object
      nullable: true
      properties:
        idpBaseUrl:
          type: string
        clientId:
          type: string
        clientSecret:
          type: string
        scopes:
          type: array
          items:
            type: string
    Mappers:
      type: object
      required:
        - alias
      properties:
        gid:
          type: string
          maxLength: 255
        uid:
          type: string
          maxLength: 255
        groups:
          type: string
          maxLength: 255
        supplementaryGroups:
          type: string
          maxLength: 255
        email:
          type: string
          maxLength: 254
    Idp:
      type: object
      required:
        - alias
        - type
        - redirectUri
      properties:
        alias:
          type: string
          pattern: ^[a-z0-9_-]+$
        type:
          type: string
          enum:
            - saml
            - oidc
            - openshift-v4
        redirectUri:
          type: string
        samlData:
          $ref: '#/components/schemas/SamlData'
        oidcData:
          $ref: '#/components/schemas/OidcData'
        ocpData:
          $ref: '#/components/schemas/OcpData'
        mappers:
          $ref: '#/components/schemas/Mappers'
    Idps:
      type: array
      minItems: 0
      maxItems: 100
      items:
        $ref: '#/components/schemas/Idp'
    IdpCreationRequestTypeEnum:
      type: string
      enum:
        - oidc
        - saml
        - openshift-v4
    SamlCreationDataMetadataXmlTypeEnum:
      type: string
      enum:
        - url
        - file
    SamlCreationData:
      type: object
      nullable: true
      properties:
        metadataXmlUrl:
          type: string
          pattern: /^(https?://)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\s]*)?$|^$/
          maxLength: 2048
        metadataXmlFile:
          type: string
          maxLength: 100000
        fileName:
          type: string
          maxLength: 255
        metadataXmlType:
          allOf:
            - $ref: '#/components/schemas/SamlCreationDataMetadataXmlTypeEnum'
        entityId:
          type: string
          maxLength: 2048
    OidcCreationData:
      type: object
      nullable: true
      required:
        - clientId
        - clientSecret
        - discoverDocumentUrl
      properties:
        clientId:
          type: string
          minLength: 1
          maxLength: 255
        clientSecret:
          type: string
          minLength: 1
          maxLength: 500
        discoverDocumentUrl:
          type: string
          pattern: /^(https?://)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\s]*)?$|^$/
          maxLength: 2048
        scopes:
          type: array
          minItems: 0
          maxItems: 50
          items:
            type: string
            pattern: ^([a-zA-Z0-9-._:]+)(\s[a-zA-Z0-9-._:]+)*$
            minLength: 1
            maxLength: 100
        mandatoryClaim:
          $ref: '#/components/schemas/MandatoryClaim'
    OcpCreationData:
      type: object
      nullable: true
      required:
        - idpBaseUrl
        - clientSecret
      properties:
        clientId:
          type: string
          minLength: 1
          maxLength: 255
        idpBaseUrl:
          type: string
          pattern: /^(https?://)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\s]*)?$|^$/
          maxLength: 2048
        clientSecret:
          type: string
          minLength: 1
          maxLength: 500
        scopes:
          type: array
          minItems: 0
          maxItems: 50
          items:
            type: string
            pattern: ^([a-zA-Z0-9-._:]+)(\s[a-zA-Z0-9-._:]+)*$
            minLength: 1
            maxLength: 100
    IdpCreationRequest:
      type: object
      required:
        - type
        - data
      properties:
        name:
          type: string
          maxLength: 255
        type:
          allOf:
            - $ref: '#/components/schemas/IdpCreationRequestTypeEnum'
        samlData:
          $ref: '#/components/schemas/SamlCreationData'
        oidcData:
          $ref: '#/components/schemas/OidcCreationData'
        ocpData:
          $ref: '#/components/schemas/OcpCreationData'
        mappers:
          $ref: '#/components/schemas/Mappers'
    IdpPostResponse:
      type: object
      required:
        - alias
      properties:
        alias:
          type: string
      example:
        alias: oidc
    IdpResources:
      type: object
      properties:
        resourceName:
          type: string
        resource:
          type: string
        type:
          type: string
          enum:
            - url
            - file
    UsersFilterSortFields:
      type: string
      enum:
        - username
        - createdBy
        - lastLogin
        - creationTime
        - lastUpdated
        - type
    User:
      type: object
      required:
        - id
        - username
        - createdBy
        - createdAt
        - updatedAt
        - lastLogin
        - isLocal
      properties:
        id:
          type: string
        username:
          type: string
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
        lastLogin:
          type: string
          format: date-time
          nullable: true
        isLocal:
          type: boolean
          nullable: true
        groups:
          type: array
          items:
            type: string
          nullable: true
      example:
        id: 3434c-12323ab-4ce2ea6-b44fc-db344d
        username: test@run.ai
        createdBy: devops@run.ai
        createdAt: '2020-01-01T00:00:00Z'
        updatedAt: '2022-01-01T00:00:00Z'
        lastLogin: '2023-02-01T00:00:00Z'
        isLocal: true
        groups:
          - groupA
          - groupB
    Users:
      type: array
      items:
        $ref: '#/components/schemas/User'
    UserCreationRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          pattern: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
          description: The email of the user. Must be a valid email address.
          minLength: 5
          maxLength: 254
        resetPassword:
          type: boolean
          nullable: true
        notify:
          type: boolean
          description: When true, send an email to the user. The email includes a link to reset the password.
          nullable: true
      example:
        email: test@run.ai
        resetPassword: false
        notify: true
    UserPostResponse:
      type: object
      required:
        - id
        - username
        - tempPassword
      properties:
        id:
          type: string
        username:
          type: string
        tempPassword:
          type: string
      example:
        id: 0eeaf222-e503-4f35-9d9c-c419816272e3
        username: test@run.ai
        tempPassword: asdasidjn9d
    UserChangePasswordRequest:
      type: object
      required:
        - currentPassword
        - newPassword
      properties:
        currentPassword:
          type: string
          minLength: 8
          maxLength: 255
        newPassword:
          type: string
          minLength: 8
          maxLength: 255
      example:
        currentPassword: Abcd!234
        newPassword: Zxcv!567
    Groups:
      type: array
      items:
        example: group-A
        type: string
    Application:
      type: object
      required:
        - name
        - createdBy
        - createdAt
        - updatedAt
        - enabled
        - lastLogin
        - id
        - clientId
      properties:
        name:
          type: string
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
        enabled:
          type: boolean
        tenantId:
          type: string
        lastLogin:
          type: string
          format: date-time
          nullable: true
        id:
          type: string
        clientId:
          type: string
      example:
        name: app123
        createdBy: test@run.ai
        createdAt: '2020-01-01T00:00:00Z'
        updatedAt: '2020-01-01T00:00:00Z'
        enabled: true
        tenantId: 1234567890
        lastLogin: '2020-01-01T00:00:00Z'
        id: 3434c-12323ab-4ce2ea6-b44fc-db344d
        clientId: app123
    Applications:
      type: array
      minItems: 0
      maxItems: 1000
      items:
        $ref: '#/components/schemas/Application'
    ApplicationCreationRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          pattern: ^[a-z][-_a-z0-9]*[a-z0-9]$
          description: The name of the application. The name must be unique within the organization and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter.
          minLength: 2
          maxLength: 255
      example:
        name: app-123
    ApplicationPostResponse:
      type: object
      required:
        - id
        - name
        - secret
      properties:
        id:
          type: string
        name:
          type: string
        secret:
          type: string
        clientId:
          type: string
      example:
        id: 0eeaf222-e503-4f35-9d9c-c419816272e3
        name: app123
        secret: asdasidjn9d
        clientId: app123
    ApplicationPatchRequest:
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
      example:
        enabled: true
    ServiceAccount:
      type: object
      required:
        - name
        - createdBy
        - createdAt
        - updatedAt
        - enabled
        - lastLogin
        - id
        - clientId
      properties:
        name:
          type: string
          description: The name of the service account.
        createdBy:
          type: string
          description: The email address of the user who created the service account.
        createdAt:
          type: string
          format: date-time
          nullable: true
          description: The timestamp for when the service account was created.
        updatedAt:
          type: string
          format: date-time
          nullable: true
          description: The timestamp for when the service account was last updated.
        enabled:
          type: boolean
          description: Indicates whether the service account is enabled.
        tenantId:
          type: string
          description: The unique identifier of the tenant.
        lastLogin:
          type: string
          format: date-time
          nullable: true
          description: The timestamp of the last time the service account was used to authenticate.
        id:
          type: string
          description: The unique identifier of the service account.
        clientId:
          type: string
          description: The client identifier associated with the service account. Used when requesting authentication tokens.
      example:
        name: service-account-123
        createdBy: test@run.ai
        createdAt: '2020-01-01T00:00:00Z'
        updatedAt: '2020-01-01T00:00:00Z'
        enabled: true
        tenantId: 1234567890
        lastLogin: '2020-01-01T00:00:00Z'
        id: 3434c-12323ab-4ce2ea6-b44fc-db344d
        clientId: service-account-123
    ServiceAccounts:
      type: array
      minItems: 0
      maxItems: 1000
      items:
        $ref: '#/components/schemas/ServiceAccount'
    ServiceAccountCreationRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          pattern: ^[a-z][-_a-z0-9]*[a-z0-9]$
          description: The name of the service account. The name must be unique within the organization and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter.
          minLength: 2
          maxLength: 255
      example:
        name: service-account-123
    ServiceAccountPostResponse:
      type: object
      required:
        - id
        - name
        - clientSecret
      properties:
        id:
          type: string
          description: The unique identifier of the service account.
        name:
          type: string
          description: The name of the service account.
        clientSecret:
          type: string
          description: Secret credential paired with the client ID. Used to obtain authentication tokens. Displayed only once upon creation.
        clientId:
          type: string
          description: The client identifier associated with the service account. Used when requesting authentication tokens.
      example:
        id: 0eeaf222-e503-4f35-9d9c-c419816272e3
        name: service-account-123
        clientSecret: asdasidjn9d
        clientId: service-account-123
    ServiceAccountPatchRequest:
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          description: Indicates whether the service account is enabled.
      example:
        enabled: true
    RegenerateServiceAccountSecretResponse:
      type: object
      properties:
        clientSecret:
          type: string
          description: Secret credential paired with the client ID. Used to obtain authentication tokens. Displayed only once upon regeneration.
      example:
        clientSecret: 189ej2ijd92fj092k049fk0
    AccessKey1:
      type: object
      required:
        - name
        - id
        - clientId
        - createdAt
        - lastLogin
      properties:
        name:
          type: string
          description: The name of the access key.
        clientId:
          type: string
          description: The client identifier associated with the access key. Used when requesting authentication tokens.
        id:
          type: string
          description: The unique identifier of the access key.
        createdAt:
          type: string
          format: date-time
          nullable: true
          description: The timestamp for when the access key was created.
        lastLogin:
          type: string
          format: date-time
          nullable: true
          description: The timestamp of the last time the access key was used to authenticate.
      example:
        name: my-access-key
        id: 3434c-12323ab-4ce2ea6-b44fc-db344d
        clientId: 3434c-12323ab-4ce2ea6
        createdAt: '2019-01-01T00:00:00Z'
        lastLogin: '2020-01-01T00:00:00Z'
    AccessKeys:
      type: object
      required:
        - accessKeys
      properties:
        accessKeys:
          type: array
          minItems: 0
          maxItems: 100
          items:
            $ref: '#/components/schemas/AccessKey1'
      example:
        accessKeys:
          - name: my-access-key
            id: 3434c-12323ab-4ce2ea6-b44fc-db344d
            clientId: 3434c-12323ab-4ce2ea6
            createdAt: '2019-01-01T00:00:00Z'
            lastLogin: '2020-01-01T00:00:00Z'
          - name: another-access-key
            id: 5656d-45645cd-6de3fb7-c55gd-ef455e
            clientId: 5656d-45645cd-6de3fb7
            createdAt: '2019-01-01T00:00:00Z'
            lastLogin: '2020-01-01T00:00:00Z'
    AccessKeyCreationRequest1:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          pattern: ^[a-z][-_a-z0-9]*[a-z0-9]$
          description: The name of the access key. The name must be unique within the user's access keys list and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter.
          minLength: 2
          maxLength: 255
      example:
        name: access-key-name
    AccessKeyPostResponse:
      type: object
      required:
        - id
        - name
        - clientSecret
        - clientId
        - createdAt
      properties:
        id:
          type: string
          description: The unique identifier of the access key.
        clientId:
          type: string
          description: The client identifier associated with the access key. Used when requesting authentication tokens.
        name:
          type: string
          description: The name of the access key.
        clientSecret:
          type: string
          description: Secret credential paired with the client ID. Used to obtain authentication tokens. Displayed only once upon creation.
        createdAt:
          format: date-time
          nullable: true
          type: string
          description: The timestamp for when the access key was created.
      example:
        id: 0eeaf222-e503-4f35-9d9c-c419816272e3
        clientId: 5e7b3b7b4b7b4b7b
        name: access-key-123
        clientSecret: this-is-the-access-key-secret
        createdAt: '2020-01-01T00:00:00Z'
    AccessKeyAdministration:
      type: object
      required:
        - name
        - id
        - clientId
        - createdBy
        - createdAt
        - lastLogin
      properties:
        name:
          type: string
        id:
          type: string
        clientId:
          type: string
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        lastLogin:
          type: string
          format: date-time
          nullable: true
      example:
        name: my-access-key
        id: 3434c-12323ab-4ce2ea6-b44fc-db344d
        clientId: 1434c-123233ab-4ce2ea6-b44fc-db344d
        createdBy: test@run.ai
        createdAt: '2020-01-01T00:00:00Z'
        lastLogin: '2020-01-01T00:00:00Z'
    AccessKeysAdministration:
      type: object
      required:
        - accessKeys
      properties:
        accessKeys:
          type: array
          minItems: 0
          maxItems: 100
          items:
            $ref: '#/components/schemas/AccessKeyAdministration'
      example:
        accessKeys:
          - name: my-access-key
            id: 3434c-12323ab-4ce2ea6-b44fc-db344d
            clientId: 1434c-123233ab-4ce2ea6-b44fc-db344d
            createdBy: test@run.ai
            createdAt: '2020-01-01T00:00:00Z'
            lastLogin: '2020-01-01T00:00:00Z'
          - name: another-access-key
            id: 5656d-45645cd-6de3fb7-c55gd-ef455e
            clientId: 2545e-234344bc-5df4gc8-d66he-fg566f
            createdBy: user@run.ai
            createdAt: '2020-01-01T00:00:00Z'
            lastLogin: '2020-01-01T00:00:00Z'
    UserApp:
      type: object
      required:
        - name
        - id
        - clientId
        - createdAt
        - lastLogin
      properties:
        name:
          type: string
        clientId:
          type: string
        id:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        lastLogin:
          type: string
          format: date-time
          nullable: true
      example:
        name: my-user-app
        id: 3434c-12323ab-4ce2ea6-b44fc-db344d
        clientId: 3434c-12323ab-4ce2ea6
        createdAt: '2019-01-01T00:00:00Z'
        lastLogin: '2020-01-01T00:00:00Z'
    UserApps:
      type: array
      minItems: 0
      maxItems: 100
      items:
        $ref: '#/components/schemas/UserApp'
    UserAppCreationRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          pattern: ^[a-z][-_a-z0-9]*[a-z0-9]$
          description: The name of the user application. The name must be unique within the user's applications list and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter.
          minLength: 2
          maxLength: 255
      example:
        name: app-name
    UserAppPostResponse:
      type: object
      required:
        - id
        - name
        - secret
        - clientId
        - createdAt
      properties:
        id:
          type: string
        clientId:
          type: string
        name:
          type: string
        secret:
          type: string
        createdAt:
          format: date-time
          nullable: true
          type: string
      example:
        id: 0eeaf222-e503-4f35-9d9c-c419816272e3
        clientId: 5e7b3b7b4b7b4b7b
        name: app123
        secret: this-is-the-app-secret
        createdAt: '2020-01-01T00:00:00Z'
    UserAppAdministration:
      type: object
      required:
        - name
        - id
        - clientId
        - createdBy
        - createdAt
        - lastLogin
      properties:
        name:
          type: string
        id:
          type: string
        clientId:
          type: string
        createdBy:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        lastLogin:
          type: string
          format: date-time
          nullable: true
      example:
        name: my-user-app
        id: 3434c-12323ab-4ce2ea6-b44fc-db344d
        clientId: 1434c-123233ab-4ce2ea6-b44fc-db344d
        createdBy: test@run.ai
        createdAt: '2020-01-01T00:00:00Z'
        lastLogin: '2020-01-01T00:00:00Z'
    UserAppsAdministration:
      type: array
      minItems: 0
      maxItems: 100
      items:
        $ref: '#/components/schemas/UserAppAdministration'
    TokenRequestGrantTypeEnum:
      enum:
        - app_token
        - client_credentials
        - refresh_token
        - exchange_token
        - password
        - external_token_exchange
    TokenRequest:
      type: object
      properties:
        grantType:
          $ref: '#/components/schemas/TokenRequestGrantTypeEnum'
        appID:
          deprecated: true
          type: string
          maxLength: 255
        appSecret:
          deprecated: true
          type: string
          maxLength: 500
        code:
          type: string
          maxLength: 2048
        redirectUri:
          type: string
          maxLength: 2048
        refreshToken:
          type: string
          maxLength: 4096
        username:
          type: string
          maxLength: 255
        password:
          type: string
          maxLength: 255
        clientID:
          type: string
          maxLength: 255
        clientSecret:
          type: string
          maxLength: 500
        externalToken:
          type: string
          maxLength: 4096
    TokenResponse:
      type: object
      properties:
        accessToken:
          type: string
        idToken:
          type: string
        refreshToken:
          type: string
        expiresIn:
          type: integer
          description: Token lifetime in seconds
    OAuth2TokenResponse:
      type: object
      required:
        - access_token
        - token_type
      properties:
        access_token:
          type: string
          description: The access token issued by the authorization server
        token_type:
          type: string
          description: The type of the token issued (typically "Bearer")
          example: Bearer
        expires_in:
          type: integer
          description: The lifetime in seconds of the access token
          example: 3600
        refresh_token:
          type: string
          description: The refresh token, which can be used to obtain new access tokens
        id_token:
          type: string
          description: ID Token value associated with the authenticated session (OpenID Connect)
        scope:
          type: string
          description: The scope of the access token
    OAuth2Error:
      type: object
      description: OAuth 2.0 error response (RFC 6749 Section 5.2)
      required:
        - error
      properties:
        error:
          type: string
          description: A single ASCII error code
          enum:
            - invalid_request
            - invalid_client
            - invalid_grant
            - unauthorized_client
            - unsupported_grant_type
            - invalid_scope
            - server_error
            - temporarily_unavailable
          example: invalid_client
        error_description:
          type: string
          description: Human-readable ASCII text providing additional information
          example: Client authentication failed
        error_uri:
          type: string
          description: URI identifying a human-readable web page with information about the error
    GetAutoRedirectSsoSetting:
      type: object
      properties:
        value:
          type: object
          properties:
            enabled:
              type: boolean
              nullable: true
            idpAlias:
              type: string
              pattern: ^[a-z0-9_-]*$
              nullable: true
              maxLength: 255
        displayName:
          type: string
          description: Human-readable name for this setting
          readOnly: true
        description:
          type: string
          description: Description of what this setting controls
          readOnly: true
      example:
        value:
          enabled: false
          idpAlias: oidc
        displayName: Auto Redirect SSO
        description: Automatically redirect users to the SSO login page after logging in to the application
    GetBrowserSessionTimeoutSetting:
      type: object
      properties:
        value:
          type: object
          properties:
            idleTimeout:
              type: number
              description: Duration in minutes that a user can remain inactive before their browser session automatically expires and requires re-authentication
              default: 0
              minimum: 0
              maximum: 10080
              nullable: true
        displayName:
          type: string
          description: Human-readable name for this setting
          readOnly: true
        description:
          type: string
          description: Description of what this setting controls
          readOnly: true
      example:
        value:
          idleTimeout: 0
        displayName: Browser Session Timeout
        description: The idle timeout duration in minutes for browser sessions
    GetLogoutRedirectUriSetting:
      type: object
      properties:
        value:
          type: object
          properties:
            uri:
              type: string
              description: The URI where users will be redirected after logging out of the application
              nullable: true
              pattern: /^(https?://)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\s]*)?$|^$/
              example: https://example.com/logout
              maxLength: 2048
        displayName:
          type: string
          description: Human-readable name for this setting
          readOnly: true
        description:
          type: string
          description: Description of what this setting controls
          readOnly: true
      example:
        value:
          uri: https://example.com/logout-success
        displayName: Logout Redirect URI
        description: The URI where users will be redirected after logging out of the application
    SettingsGetResponse:
      type: object
      properties:
        autoRedirectSSO:
          $ref: '#/components/schemas/GetAutoRedirectSsoSetting'
        browserSessionTimeout:
          $ref: '#/components/schemas/GetBrowserSessionTimeoutSetting'
        logoutRedirectUri:
          $ref: '#/components/schemas/GetLogoutRedirectUriSetting'
    settingsKeyEnum:
      type: string
      enum:
        - autoRedirectSSO
        - browserSessionTimeout
        - logoutRedirectUri
    Settings:
      type: object
      additionalProperties: true
      minProperties: 0
      maxProperties: 50
    UpdateAutoRedirectSsoSettingValue:
      type: object
      properties:
        enabled:
          type: boolean
          nullable: true
        idpAlias:
          type: string
          pattern: ^[a-z0-9_-]*$
          nullable: true
          maxLength: 255
      example:
        enabled: false
        idpAlias: oidc
    UpdateBrowserSessionTimeoutSettingValue:
      type: object
      properties:
        idleTimeout:
          type: number
          description: Duration in minutes that a user can remain inactive before their browser session automatically expires and requires re-authentication
          default: 0
          minimum: 0
          maximum: 10080
          nullable: true
      example:
        idleTimeout: 0
    UpdateLogoutRedirectUriSettingValue:
      type: object
      properties:
        uri:
          type: string
          description: The URI where users will be redirected after logging out of the application
          nullable: true
          pattern: /^(https?://)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\s]*)?$|^$/
          example: https://example.com/logout
          maxLength: 2048
      example:
        uri: https://example.com/logout-success
    AppTokenRequest:
      type: object
      required:
        - id
        - name
        - secret
      properties:
        id:
          type: string
          maxLength: 64
        name:
          type: string
          maxLength: 255
        secret:
          type: string
          maxLength: 500
    AppTokenResponse:
      type: object
      required:
        - access_token
        - id_token
      properties:
        access_token:
          type: string
        id_token:
          type: string
    IdpResourcdes:
      $ref: '#/components/schemas/IdpResources'
    UserGroups:
      $ref: '#/components/schemas/Groups'
    RequestResourceCores:
      type: object
      properties:
        limit:
          type: number
          nullable: true
          format: double
          example: 1.5
        request:
          type: number
          nullable: true
          format: double
          example: 1
      nullable: true
    RequestResourceQuantity:
      type: object
      properties:
        limit:
          type: string
          nullable: true
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          example: 2G
        request:
          type: string
          nullable: true
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          example: 200M
      nullable: true
    WorkloadsExtendedResource:
      description: Quantity of an extended resource.
      type: object
      properties:
        resource:
          description: The name of the extended resource (mandatory)
          type: string
          example: hardware-vendor.example/foo
          minLength: 1
          nullable: true
        quantity:
          description: The requested quantity for the given resource.
          type: string
          example: 2
          minLength: 1
          nullable: true
        exclude:
          description: Whether to exclude this extended resource from the workload. This is necessary in case the extended resource is inherited from the policy defaults and it is desired not to include it in this workload.
          type: boolean
          example: false
          nullable: true
      nullable: true
    WorkloadsExtendedResources:
      description: Set of extended resources with their quantity
      type: array
      items:
        $ref: '#/components/schemas/WorkloadsExtendedResource'
      nullable: true
    WorkloadRequestResources:
      type: object
      nullable: true
      properties:
        gpuRequestType:
          $ref: '#/components/schemas/GpuRequestType'
        gpu:
          $ref: '#/components/schemas/RequestResourceCores'
        gpuMemory:
          $ref: '#/components/schemas/RequestResourceQuantity'
        cpu:
          $ref: '#/components/schemas/RequestResourceCores'
        cpuMemory:
          $ref: '#/components/schemas/RequestResourceQuantity'
        extendedResources:
          $ref: '#/components/schemas/WorkloadsExtendedResources'
    RequestedPods:
      type: object
      properties:
        number:
          type: integer
          format: int32
          example: 1
          nullable: true
        min:
          type: integer
          format: int32
          example: 2
          nullable: true
        max:
          type: integer
          format: int32
          example: 5
          nullable: true
        parallelism:
          type: integer
          format: int32
          description: specifies how many Pods can run in parallel
          example: 3
          nullable: true
        completions:
          type: integer
          description: specifies how many Pods should terminate successfully before the Workload is completed
          format: int32
          example: 5
          nullable: true
    Datasource:
      type: object
      required:
        - name
        - id
      properties:
        type:
          type: string
          example: pvc
        name:
          type: string
          example: my-pvc-datasource-1
        id:
          type: string
          format: uuid
    Connection1:
      type: object
      description: Connection that either expose port from the container (a port is associated with a tool that the container runs), or URL to be used for connecting to an external tool that is related to the action of the container (such as Weights & Biases).
      required:
        - toolType
        - name
        - connectionType
      properties:
        name:
          type: string
          example: my-pytorch-env
        toolType:
          type: string
          example: pytorch
        connectionType:
          type: string
          example: ExternalUrl
        url:
          type: string
          example: http://wandb.com/yourproject
        authorizationType:
          type: string
          description: |
            Specifies who can access the connection URL:
            - `authenticatedUsers`: Any authenticated user or service account can access the URL; the authorizedUsers and authorizedGroups fields are ignored.
            - `authorizedUsers`: Only users listed in the authorizedUsers field are allowed to access the URL; the authorizedGroups field is ignored.
            - `authorizedGroups`: Only members of user groups listed in the authorizedGroups field are allowed to access the URL; the authorizedUsers field is ignored.
            If not specified, authorization is determined by whether authorizedUsers or authorizedGroups is present. If both fields are set, this results in an error. If neither is set, any authenticatedUser can access.
          enum:
            - public
            - authenticatedUsers
            - authorizedUsersOrGroups
        authorizedUsers:
          type: array
          description: List of users or service accounts that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.
          items:
            type: string
          example:
            - user@company.ai
            - another@company.ai
        authorizedGroups:
          type: array
          items:
            type: string
          example:
            - group-a
            - group-b
        containerPort:
          description: The port that the container running the workload exposes.
          type: integer
          format: int32
          example: 8080
    ReplicaType:
      type: string
      nullable: true
      enum:
        - Master
        - Worker
        - Leader
    Environment:
      type: object
      required:
        - name
        - id
      properties:
        connections:
          type: array
          items:
            $ref: '#/components/schemas/Connection1'
        name:
          type: string
          example: pytorch
        id:
          type: string
          format: uuid
        replicaType:
          $ref: '#/components/schemas/ReplicaType'
    SourceApi:
      type: string
      nullable: true
      enum:
        - WorkloadsV2
    Source:
      type: string
      enum:
        - CLI
        - Control-plane
        - Other
    WorkloadAllocatedResources:
      type: object
      nullable: true
      properties:
        gpu:
          type: number
          nullable: true
          format: double
          example: 1.5
          description: Required if and only if gpuRequestType is portion. States the number of GPUs allocated for the created workload. The default is no allocated GPUs.
        gpuMemory:
          type: string
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          nullable: true
          example: 200Mi
        cpu:
          type: number
          nullable: true
          format: double
          description: States the amount of CPU cores used by the workload running.
          example: 0.5
        cpuMemory:
          type: string
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          nullable: true
          example: 0B
        extendedResources:
          $ref: '#/components/schemas/WorkloadsExtendedResources'
    ActionsSupport:
      description: The actions support provided for the workload.
      type: object
      properties:
        delete:
          type: boolean
          example: true
        suspend:
          description: This permission includes resume as well as suspend.
          type: boolean
          example: true
    Condition1:
      type: object
      required:
        - type
        - status
      properties:
        type:
          description: The type of the condition, such as Failed or Available. See Types of domain status conditions.
          type: string
          example: Ready
        status:
          type: string
          description: The status of the condition, such as True, False or Unknown.
          example: 'False'
        message:
          type: string
          description: An optional, human-readable message providing more details about the condition.
          example: 'Resource validation failed: ...'
        reason:
          type: string
          description: The reason for the Failed condition. Not applicable to other types of condition.
          example: ErrorConfig
        lastTransitionTime:
          description: A timestamp of when the condition was created or the last time the condition transitioned from one status to another.
          type: string
          nullable: true
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
    Conditions:
      type: array
      items:
        $ref: '#/components/schemas/Condition1'
      x-schema-name: Conditions
    PhaseReason:
      type: string
      enum:
        - NonPreemptibleOverQuota
        - OverLimit
    WorkloadTopologyActualPlacement:
      type: object
      description: Indicates the lowest network topology level at which all of the workload’s pods are colocated, representing where the workload was placed in the topology hierarchy.
      nullable: true
      properties:
        level:
          description: The network topology level at which the workload was placed (for example, rack, block, or zone).
          type: string
        value:
          description: The specific topology value at that level where the workload was placed (for example, rack-1 or block-a).
          type: string
    Endpoint:
      type: object
      properties:
        host:
          type: string
          description: The hostname used to access the endpoint (for example, chat.example.com). This value is typically defined by the exposing Kubernetes resource (such as an Ingress).
        port:
          type: integer
          description: The network port exposed by the endpoint. This is the port used when connecting to the workload.
        path:
          type: string
          description: The URL path associated with the endpoint (for example, /v1/completions). Combined with host, it forms the full HTTP route to the workload.
        tlsEnabled:
          type: boolean
          nullable: true
          description: Indicates whether TLS is enabled for the endpoint. When true, the endpoint expects encrypted connections (typically HTTPS).
        protocol:
          type: string
          description: The network protocol used for communication with the endpoint (for example, HTTP or HTTPS).
        url:
          type: string
          description: The fully qualified URL through which the workload is accessible. This value represents the complete access address derived from the protocol, host, and path (for example, https://chat.example.com/v1/completions).
    PodPreferredNodeSelectorTerm:
      type: object
      description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
      properties:
        weight:
          description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
          type: number
        preference:
          $ref: '#/components/schemas/NodeSelectorTerm'
    PodNodeAffinity:
      type: object
      description: group of node affinity scheduling rules.
      properties:
        required:
          type: object
          description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
          properties:
            nodeSelectorTerms:
              description: A list of node selector terms. The terms are ORed.
              type: array
              items:
                $ref: '#/components/schemas/NodeSelectorTerm'
          nullable: true
        preferred:
          type: object
          description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
          properties:
            nodeSelectorTerms:
              description: A list of node selector terms.
              type: array
              items:
                $ref: '#/components/schemas/PodPreferredNodeSelectorTerm'
          nullable: true
    Workload:
      type: object
      required:
        - type
        - name
        - id
        - source
        - priority
        - priorityClassName
        - clusterId
        - projectName
        - projectId
        - departmentName
        - departmentId
        - namespace
        - createdAt
        - phase
        - conditions
        - k8sPhase
        - tenantId
        - runningPods
        - phaseUpdatedAt
        - k8sPhaseUpdatedAt
        - updatedAt
        - deletedAt
        - category
      properties:
        tenantId:
          $ref: '#/components/schemas/TenantId'
        runningPods:
          type: integer
          format: int32
          example: 1
        phaseUpdatedAt:
          type: string
          format: date-time
          example: '2022-06-08T11:28:24.131Z'
        k8sPhaseUpdatedAt:
          type: string
          format: date-time
          example: '2022-06-08T11:28:24.131Z'
        updatedAt:
          type: string
          format: date-time
          example: '2022-06-08T11:28:24.131Z'
        source:
          $ref: '#/components/schemas/Source'
        deletedAt:
          type: string
          format: date-time
          example: '2022-08-12T19:28:24.131Z'
          nullable: true
        type:
          type: string
          example: runai-job
        name:
          type: string
          example: very-important-job
        id:
          type: string
          format: uuid
        priority:
          type: integer
          format: int32
          example: 50
          nullable: true
        priorityClassName:
          type: string
          example: high-priority
        submittedBy:
          type: string
          example: researcher@run.ai
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        projectName:
          type: string
          example: proj-1
        projectId:
          type: string
          example: '1'
        departmentName:
          type: string
          example: department-1
        departmentId:
          type: string
          example: '1'
        namespace:
          type: string
          example: runai-proj-1
        createdAt:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        workloadRequestedResources:
          $ref: '#/components/schemas/WorkloadRequestResources'
        podsRequestedResources:
          $ref: '#/components/schemas/WorkloadRequestResources'
        allocatedResources:
          $ref: '#/components/schemas/WorkloadAllocatedResources'
        actionsSupport:
          $ref: '#/components/schemas/ActionsSupport'
        phase:
          $ref: '#/components/schemas/Phase'
        conditions:
          $ref: '#/components/schemas/Conditions'
        phaseMessage:
          type: string
          example: Not enough resources in the requested nodepool
        k8sPhase:
          type: string
          example: Pending
        requestedPods:
          $ref: '#/components/schemas/RequestedPods'
        requestedNodePools:
          type: array
          items:
            type: string
            example: default
        currentNodePools:
          type: array
          items:
            type: string
            example: default
        completedAt:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
          nullable: true
        images:
          type: array
          items:
            type: string
            example: alpine:latest
        childrenIds:
          type: array
          writeOnly: true
          items:
            type: object
            required:
              - id
            properties:
              id:
                type: string
                format: uuid
              type:
                type: string
        urls:
          description: '**DEPRECATED:** This field is deprecated. Use [Get workload endpoints](/latest/#operation/get_workload_endpoints) to retrieve workload network endpoints instead.Requires cluster version 2.25 or above.'
          type: array
          items:
            type: string
        datasources:
          type: array
          items:
            $ref: '#/components/schemas/Datasource'
        environments:
          type: array
          items:
            $ref: '#/components/schemas/Environment'
        externalConnections:
          description: '**DEPRECATED:** This field is deprecated. Use [Get workload endpoints](/latest/#operation/get_workload_endpoints) to retrieve workload network endpoints instead.Requires cluster version 2.25 or above.'
          type: array
          items:
            $ref: '#/components/schemas/Connection1'
        distributedFramework:
          type: string
          example: Pytorch
        additionalFields:
          type: object
          additionalProperties: true
        preemptible:
          type: boolean
          nullable: true
        environmentVariables:
          type: object
          additionalProperties:
            type: string
        command:
          type: string
          example: sleep
        arguments:
          type: string
          example: '1000'
        phaseReason:
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PhaseReason'
        idleGpus:
          deprecated: true
          type: integer
          nullable: true
          example: 3
          description: deprecated. use idleAllocatedGpus instead
        idleAllocatedGpus:
          type: number
          description: sum of idle allocated gpus in the workload
          nullable: true
          example: 1
        totalPendingTimeSeconds:
          type: integer
          description: The total cumulative time, in seconds, that the workload has spent in the Pending phase since submission.
          nullable: true
          example: 60
        totalRunningTimeSeconds:
          type: integer
          description: The total cumulative time, in seconds, that the workload has spent in the Running phase since submission.
          nullable: true
          example: 60
        category:
          type: string
          example: Train
          description: Category Description
        guaranteedRuntimeEndsAt:
          type: string
          format: date-time
          example: '2025-08-01T03:49:52.531Z'
          nullable: true
          description: A timestamp indicating when the workload will reach its minimum guaranteed runtime, as defined by minGuaranteedRuntime. Until this time, the workload is considered non-preemptible and cannot be interrupted by higher-priority workloads.
        aiApplicationId:
          type: string
        aiApplicationName:
          type: string
        sourceApi:
          $ref: '#/components/schemas/SourceApi'
        topology:
          type: object
          description: The workload’s network topology.
          nullable: true
          properties:
            name:
              type: string
              description: The name of the network topology associated with the workload.
            preferredPlacement:
              type: string
              description: The topology level to use as a preferred placement constraint for the workload.
            requiredPlacement:
              type: string
              description: The topology level to use as required placement constraint for the workload. If the requirement cannot be satisfied at this topology level, placement will fail
            actualPlacement:
              $ref: '#/components/schemas/WorkloadTopologyActualPlacement'
        endpoints:
          description: List of network endpoints through which the workload is exposed.
          type: array
          items:
            $ref: '#/components/schemas/Endpoint'
    OrgType:
      type: string
      enum:
        - PROJECT
        - DEPARTMENT
    WorkloadElement:
      type: object
      required:
        - id
        - name
        - hierarchyLevel
      properties:
        id:
          type: string
          description: The unique identifier of the structure element.
          format: uuid
        name:
          type: string
          description: The display name of the structure element.
          maxLength: 250
        hierarchyLevel:
          type: integer
          format: int32
          description: The position of the element in the workload structure hierarchy. Valid values are 1 (top-level), 2, and 3.
          minimum: 1
          maximum: 3
        parentId:
          type: string
          nullable: true
          description: The unique identifier of the parent element. Empty for level 1 elements, whose parent is implicitly the workload.
          format: uuid
        createdAt:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
          description: The timestamp when the structure element was created.
        kubernetesRef:
          type: object
          nullable: true
          description: Reference to the backing K8s object. Present for object-backed elements, nil for logical elements.
          properties:
            uid:
              description: The unique identifier (UID) of the Kubernetes object backing this element.
              type: string
            name:
              description: The name of the Kubernetes object backing this element.
              type: string
            gvk:
              description: The group, version and kind of the Kubernetes resource.
              type: object
              properties:
                group:
                  description: The API group of the Kubernetes resource (for example, apps or batch).
                  type: string
                version:
                  description: The API version of the Kubernetes resource (for example, v1 or v1beta1).
                  type: string
                kind:
                  description: The kind of the Kubernetes resource (for example, Deployment or Job).
                  type: string
    EndpointSync:
      allOf:
        - $ref: '#/components/schemas/Endpoint'
        - type: object
          properties:
            sourceRef:
              type: object
              description: A reference to the Kubernetes resource responsible for exposing the endpoint. This identifies the underlying object (such as an Ingress or Service) that defines the network routing configuration.
              properties:
                kind:
                  type: string
                  description: The Kubernetes resource kind that exposes the endpoint (for example, Ingress or Service).
                name:
                  type: string
                  description: The name of the Kubernetes resource exposing the endpoint.
    Container:
      type: object
      required:
        - name
        - image
      properties:
        name:
          type: string
          example: alpine
        image:
          type: string
          example: alpine:latest
        startedAt:
          type: string
          nullable: true
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
    PodRequestResources:
      type: object
      nullable: true
      properties:
        gpuRequestType:
          $ref: '#/components/schemas/GpuRequestType'
        gpu:
          $ref: '#/components/schemas/RequestResourceCores'
        gpuMemory:
          $ref: '#/components/schemas/RequestResourceQuantity'
        cpu:
          $ref: '#/components/schemas/RequestResourceCores'
        cpuMemory:
          $ref: '#/components/schemas/RequestResourceQuantity'
        extendedResources:
          $ref: '#/components/schemas/WorkloadsExtendedResources'
    AllocatedResources:
      type: object
      nullable: true
      properties:
        gpu:
          type: number
          nullable: true
          format: double
          example: 1.5
          description: Required if and only if gpuRequestType is portion. States the number of GPUs allocated for the created workload. The default is no allocated GPUs.
        gpuMemory:
          type: string
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          nullable: true
          example: 200Mi
        cpu:
          type: number
          nullable: true
          format: double
          description: States the amount of CPU cores used by the workload running.
          example: 0.5
        cpuMemory:
          type: string
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          nullable: true
          example: 0B
        extendedResources:
          $ref: '#/components/schemas/WorkloadsExtendedResources'
    PodToleration:
      type: object
      properties:
        key:
          description: Key is the taint key that the toleration applies to. Empty means match all taint keys.
          type: string
          example: ''
        operator:
          type: string
          description: Operator represents a key's relationship to the value.
          example: Exists
        value:
          type: string
          description: Value is the taint value the toleration matches to.
          example: ''
        effect:
          type: string
          description: Effect indicates the taint effect to match. Empty means match all taint effects.
          example: NoExecute
        tolerationSeconds:
          description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint.
          type: integer
          nullable: true
          example: '10'
    PodTolerations:
      type: array
      items:
        $ref: '#/components/schemas/PodToleration'
      x-schema-name: Tolerations
    PodElement:
      type: object
      required:
        - elementId
        - hierarchyLevel
      properties:
        elementId:
          type: string
          format: uuid
          description: The unique identifier of the workload structure element this pod is associated with.
        hierarchyLevel:
          type: integer
          format: int32
          description: The hierarchy level of this pod's associated workload structure element. Level 1 represents the top of the hierarchy, with levels 2 and 3 representing progressively nested elements.
          minimum: 1
          maximum: 3
    PodSyncFields:
      type: object
      required:
        - name
        - priorityClassName
        - id
        - workloadId
        - clusterId
        - createdAt
        - containers
        - k8sPhase
      properties:
        name:
          type: string
          example: pod-of-a-very-important-job
        priorityClassName:
          type: string
          example: high-priority
        id:
          type: string
          format: uuid
        workloadId:
          type: string
          format: uuid
        revisionId:
          type: string
          format: uuid
          nullable: true
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        projectId:
          type: string
          example: '1'
        nodeName:
          type: string
          nullable: true
          example: gpu-node-1
        createdAt:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        completedAt:
          type: string
          nullable: true
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        containers:
          type: array
          items:
            $ref: '#/components/schemas/Container'
        currentNodePool:
          type: string
          nullable: true
          example: default
        requestedNodePools:
          type: array
          items:
            type: string
            example: default
        requestedResources:
          $ref: '#/components/schemas/PodRequestResources'
        allocatedResources:
          $ref: '#/components/schemas/AllocatedResources'
        tolerations:
          $ref: '#/components/schemas/PodTolerations'
        k8sPhase:
          type: string
          example: Pending
        ip:
          type: string
          nullable: true
          example: 10.244.1.1
        task:
          type: string
          nullable: true
          description: Identifies the function of the pod within a distributed workload (for example, leader, worker, or master).
          example: leader
        nodeAffinity:
          $ref: '#/components/schemas/PodNodeAffinity'
        elements:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/PodElement'
          description: The workload structure elements this pod belongs to, ordered by hierarchy level.
    Workloads:
      type: array
      items:
        $ref: '#/components/schemas/Workload'
      x-schema-name: Workloads
    PendingSchedulingMessage:
      type: object
      required:
        - nodePool
        - phaseReason
        - reason
      properties:
        nodePool:
          type: string
          example: default
        phaseReason:
          $ref: '#/components/schemas/PhaseReason'
        reason:
          type: string
          example: Non-preemptible over quota
        orgType:
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/OrgType'
        userMessage:
          nullable: true
          type: string
          example: You have reached the limit of non-preemptible resources
    WorkloadDetailed:
      allOf:
        - $ref: '#/components/schemas/Workload'
        - type: object
          properties:
            pendingSchedulingMessages:
              nullable: true
              type: array
              items:
                $ref: '#/components/schemas/PendingSchedulingMessage'
    WorkloadTelemetryType:
      type: string
      description: Select a telemetry type.
      enum:
        - WORKLOADS_COUNT
        - GPU_ALLOCATION
        - PENDING_TIME_DISTRIBUTION
        - IDLE_ALLOCATED_GPUS
    PodVerbosity:
      type: string
      enum:
        - brief
        - full
      default: brief
    PodComputedFields:
      type: object
      required:
        - tenantId
        - k8sPhaseUpdatedAt
        - updatedAt
      properties:
        tenantId:
          $ref: '#/components/schemas/TenantId'
        k8sPhaseUpdatedAt:
          type: string
          format: date-time
          example: '2022-06-08T11:28:24.131Z'
        updatedAt:
          type: string
          format: date-time
          example: '2022-06-08T11:28:24.131Z'
        deletedAt:
          type: string
          format: date-time
          example: '2022-08-12T19:28:24.131Z'
          nullable: true
    PodVerbosityFields:
      type: object
      properties:
        projectName:
          type: string
          example: my-project
        workloadName:
          type: string
          example: my-workload
    Pod:
      allOf:
        - $ref: '#/components/schemas/PodSyncFields'
        - $ref: '#/components/schemas/PodComputedFields'
        - $ref: '#/components/schemas/PodVerbosityFields'
    Pods:
      type: array
      items:
        $ref: '#/components/schemas/Pod'
      x-schema-name: Pods
    PodMetricType:
      type: string
      description: Specify which data to request.
      enum:
        - GPU_UTILIZATION_PER_GPU
        - GPU_UTILIZATION
        - GPU_MEMORY_USAGE_BYTES_PER_GPU
        - GPU_MEMORY_USAGE_BYTES
        - CPU_USAGE_CORES
        - CPU_MEMORY_USAGE_BYTES
        - GPU_GRAPHICS_ENGINE_ACTIVITY_PER_GPU
        - GPU_SM_ACTIVITY_PER_GPU
        - GPU_SM_OCCUPANCY_PER_GPU
        - GPU_TENSOR_ACTIVITY_PER_GPU
        - GPU_FP64_ENGINE_ACTIVITY_PER_GPU
        - GPU_FP32_ENGINE_ACTIVITY_PER_GPU
        - GPU_FP16_ENGINE_ACTIVITY_PER_GPU
        - GPU_MEMORY_BANDWIDTH_UTILIZATION_PER_GPU
        - GPU_NVLINK_TRANSMITTED_BANDWIDTH_PER_GPU
        - GPU_NVLINK_RECEIVED_BANDWIDTH_PER_GPU
        - GPU_PCIE_TRANSMITTED_BANDWIDTH_PER_GPU
        - GPU_PCIE_RECEIVED_BANDWIDTH_PER_GPU
        - GPU_SWAP_MEMORY_BYTES_PER_GPU
        - NIM_NUM_REQUESTS_RUNNING
        - NIM_NUM_REQUESTS_WAITING
        - NIM_NUM_REQUEST_MAX
        - NIM_REQUEST_SUCCESS_TOTAL
        - NIM_REQUEST_FAILURE_TOTAL
        - NIM_GPU_CACHE_USAGE_PERC
        - NIM_TIME_TO_FIRST_TOKEN_SECONDS
        - NIM_E2E_REQUEST_LATENCY_SECONDS
        - NIM_TIME_TO_FIRST_TOKEN_SECONDS_PERCENTILES
        - NIM_E2E_REQUEST_LATENCY_SECONDS_PERCENTILES
        - NVLINK_BANDWIDTH_TOTAL
        - NVLINK_BANDWIDTH_TOTAL_PER_GPU
    HistogramValue:
      type: object
      required:
        - timestamp
        - data
      properties:
        timestamp:
          type: string
          format: date-time
          nullable: true
        data:
          type: object
          additionalProperties:
            type: string
    HistogramSeries:
      type: object
      required:
        - type
        - values
      properties:
        type:
          type: string
          description: specifies what data returned
          example: NIM_TIME_TO_FIRST_TOKEN_SECONDS
        values:
          type: array
          items:
            $ref: '#/components/schemas/HistogramValue'
    MetricsCompositeResponse:
      type: object
      required:
        - measurements
      properties:
        measurements:
          type: array
          items:
            $ref: '#/components/schemas/MeasurementResponse'
        histogram:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/HistogramSeries'
      example:
        measurements:
          - type: ALLOCATED_GPU
            labels:
              gpu: '0'
            values:
              - value: '85'
                timestamp: '2024-12-20T14:30:00Z'
              - value: '92'
                timestamp: '2024-12-20T14:30:30Z'
              - value: '78'
                timestamp: '2024-12-20T14:37:00Z'
        histogram:
          - type: NIM_TIME_TO_FIRST_TOKEN_SECONDS
            values:
              - timestamp: '2024-12-20T14:30:00Z'
                data:
                  '0.001': '45'
                  '0.005': '178'
                  '0.01': '312'
                  '0.05': '624'
                  '0.1': '812'
                  '0.5': '980'
                  '1.0': '1004'
                  '2.0': '1015'
                  +Inf: '1024'
              - timestamp: '2024-12-20T14:30:30Z'
                data:
                  '0.001': '32'
                  '0.005': '152'
                  '0.01': '288'
                  '0.05': '576'
                  '0.1': '756'
                  '0.5': '908'
                  '1.0': '932'
                  '2.0': '943'
                  +Inf: '960'
          - type: NIM_TIME_TO_FIRST_TOKEN_SECONDS_PERCENTILES
            values:
              - timestamp: '2024-12-20T14:30:00Z'
                data:
                  p50: '0.0734'
                  p90: '0.1892'
                  p99: '0.2847'
              - timestamp: '2024-12-20T14:30:30Z'
                data:
                  p50: '0.0823'
                  p90: '0.2134'
                  p99: '0.3156'
    Events:
      type: array
      items:
        $ref: '#/components/schemas/Event'
      x-schema-name: Events
    PhaseUpdate:
      type: object
      nullable: true
      example: null
      required:
        - phase
        - phaseMessage
      properties:
        phase:
          $ref: '#/components/schemas/Phase'
        phaseMessage:
          type: string
          example: Not enough resources in the requested nodepool
    HistoryRecord1:
      type: object
      required:
        - meta
        - spec
      properties:
        meta:
          $ref: '#/components/schemas/HistoryRecordMeta'
        spec:
          type: object
          properties:
            event:
              $ref: '#/components/schemas/Event'
            phaseUpdate:
              $ref: '#/components/schemas/PhaseUpdate'
    WorkloadMetricType:
      type: string
      description: Specify which metric data to request.
      enum:
        - GPU_UTILIZATION
        - GPU_MEMORY_USAGE_BYTES
        - GPU_MEMORY_REQUEST_BYTES
        - CPU_USAGE_CORES
        - CPU_REQUEST_CORES
        - CPU_LIMIT_CORES
        - CPU_MEMORY_USAGE_BYTES
        - CPU_MEMORY_REQUEST_BYTES
        - CPU_MEMORY_LIMIT_BYTES
        - POD_COUNT
        - RUNNING_POD_COUNT
        - GPU_ALLOCATION
        - NIM_NUM_REQUESTS_RUNNING
        - NIM_NUM_REQUESTS_WAITING
        - NIM_NUM_REQUEST_MAX
        - NIM_REQUEST_SUCCESS_TOTAL
        - NIM_REQUEST_FAILURE_TOTAL
        - NIM_GPU_CACHE_USAGE_PERC
        - NIM_TIME_TO_FIRST_TOKEN_SECONDS
        - NIM_E2E_REQUEST_LATENCY_SECONDS
        - NIM_TIME_TO_FIRST_TOKEN_SECONDS_PERCENTILES
        - NIM_E2E_REQUEST_LATENCY_SECONDS_PERCENTILES
        - NVLINK_BANDWIDTH_TOTAL
    SubmitWithTemplateId:
      properties:
        templateId:
          description: The unique identifier of the template to use for submitting this workload. The combined values provided in the spec, template and assets will be used to create the workload.
          type: string
          format: uuid
          example: 550e8400-e29b-41d4-a716-446655440000
          nullable: true
    NodeType3:
      description: Nodes (machines), or a group of nodes on which the workload will run. To use this feature, your Administrator will need to label nodes. For more information, see [Group Nodes](https://docs.run.ai/latest/admin/researcher-setup/limit-to-node-group). When using this flag with with Project-based affinity, it refines the list of allowable node groups set in the Project. For more information, see [Projects](https://docshub.run.ai/guides/platform-management/aiinitiatives/organization/projects).
      type: string
      minLength: 1
      example: my-node-type
      nullable: true
      pattern: .*
    WorkspaceSpecSpec:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              nullable: true
              properties:
                allowPrivilegeEscalation:
                  $ref: '#/components/schemas/AllowPrivilegeEscalation'
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                s3:
                  $ref: '#/components/schemas/S3Items'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    WorkspaceSpec:
      description: The specifications of the workspace to be created.
      properties:
        spec:
          $ref: '#/components/schemas/WorkspaceSpecSpec'
    WorkspaceCreationRequest:
      allOf:
        - $ref: '#/components/schemas/WorkloadCreationMeta'
        - $ref: '#/components/schemas/SubmitWithTemplateId'
        - $ref: '#/components/schemas/WorkspaceSpec'
    Workspace1:
      allOf:
        - $ref: '#/components/schemas/WorkloadMeta'
        - $ref: '#/components/schemas/WorkspaceSpec'
    DistributedInferenceLeaderWorkerSpec1:
      properties:
        annotations:
          $ref: '#/components/schemas/Annotations'
        args:
          $ref: '#/components/schemas/Args'
        command:
          $ref: '#/components/schemas/Command'
        compute:
          nullable: true
          properties:
            cpuCoreLimit:
              $ref: '#/components/schemas/CpuCoreLimit'
            cpuCoreRequest:
              $ref: '#/components/schemas/CpuCoreRequest'
            cpuMemoryLimit:
              $ref: '#/components/schemas/CpuMemoryLimit'
            cpuMemoryRequest:
              $ref: '#/components/schemas/CpuMemoryRequest'
            extendedResources:
              $ref: '#/components/schemas/ExtendedResources'
            gpuDevicesRequest:
              $ref: '#/components/schemas/GpuDevicesRequest'
            gpuMemoryLimit:
              $ref: '#/components/schemas/GpuMemoryLimit'
            gpuMemoryRequest:
              $ref: '#/components/schemas/GpuMemoryRequest'
            gpuPortionLimit:
              $ref: '#/components/schemas/GpuPortionLimit'
            gpuPortionRequest:
              $ref: '#/components/schemas/GpuPortionRequest'
            gpuRequestType:
              $ref: '#/components/schemas/GpuRequestType'
            largeShmRequest:
              $ref: '#/components/schemas/LargeShmRequest'
          type: object
        createHomeDir:
          $ref: '#/components/schemas/CreateHomeDir'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariables'
        image:
          $ref: '#/components/schemas/Image'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicy'
        imagePullSecrets:
          $ref: '#/components/schemas/ImagePullSecrets'
        labels:
          $ref: '#/components/schemas/Labels'
        nodeAffinityRequired:
          $ref: '#/components/schemas/NodeAffinityRequired'
        nodeType:
          $ref: '#/components/schemas/NodeType3'
        podAffinity:
          $ref: '#/components/schemas/PodAffinity'
        probes:
          $ref: '#/components/schemas/Probes'
        security:
          $ref: '#/components/schemas/DistributedInferenceLeaderWorkerSpecSecurity'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapItems'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirItems'
            pvc:
              $ref: '#/components/schemas/PvcItems'
            secretVolume:
              $ref: '#/components/schemas/SecretItems'
          type: object
        tolerations:
          $ref: '#/components/schemas/Tolerations'
        workingDir:
          $ref: '#/components/schemas/WorkingDir'
      type: object
    MasterSpecSameAsWorker:
      description: used for distributed workloads to indicate that the master spec should be the same as the worker spec. in this case, masterSpec should not be specified.
      type: boolean
      nullable: true
    SupersetWorkload:
      allOf:
        - $ref: '#/components/schemas/WorkloadMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/SupersetSpec'
            masterSpecSameAsWorker:
              $ref: '#/components/schemas/MasterSpecSameAsWorker'
            masterSpec:
              $ref: '#/components/schemas/MasterSpec'
    TrainingSpecSpec:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            completions:
              $ref: '#/components/schemas/Completions'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            parallelism:
              $ref: '#/components/schemas/Parallelism'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              nullable: true
              properties:
                allowPrivilegeEscalation:
                  $ref: '#/components/schemas/AllowPrivilegeEscalation'
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                s3:
                  $ref: '#/components/schemas/S3Items'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    TrainingSpec:
      description: The specifications of the training to be created.
      properties:
        spec:
          $ref: '#/components/schemas/TrainingSpecSpec'
    TrainingCreationRequest:
      allOf:
        - $ref: '#/components/schemas/WorkloadCreationMeta'
        - $ref: '#/components/schemas/SubmitWithTemplateId'
        - $ref: '#/components/schemas/TrainingSpec'
    Training1:
      allOf:
        - $ref: '#/components/schemas/WorkloadMeta'
        - $ref: '#/components/schemas/TrainingSpec'
    DistributedSpecSpec:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            cleanPodPolicy:
              $ref: '#/components/schemas/CleanPodPolicy'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            distributedFramework:
              $ref: '#/components/schemas/DistributedFramework'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            maxReplicas:
              $ref: '#/components/schemas/MaxReplicas'
            minReplicas:
              $ref: '#/components/schemas/MinReplicas'
            mpiLauncherCreationPolicy:
              $ref: '#/components/schemas/MpiLauncherCreationPolicy'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            numWorkers:
              $ref: '#/components/schemas/NumWorkers'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              nullable: true
              properties:
                allowPrivilegeEscalation:
                  $ref: '#/components/schemas/AllowPrivilegeEscalation'
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            slotsPerWorker:
              $ref: '#/components/schemas/SlotsPerWorker'
            sshAuthMountPath:
              $ref: '#/components/schemas/SshAuthMountPath'
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                s3:
                  $ref: '#/components/schemas/S3Items'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    DistributedSpec:
      description: The specifications of the training to be created.
      properties:
        spec:
          $ref: '#/components/schemas/DistributedSpecSpec'
        masterSpecSameAsWorker:
          $ref: '#/components/schemas/MasterSpecSameAsWorker'
        masterSpec:
          $ref: '#/components/schemas/MasterSpec'
    DistributedCreationRequest:
      allOf:
        - $ref: '#/components/schemas/WorkloadCreationMeta'
        - $ref: '#/components/schemas/SubmitWithTemplateId'
        - $ref: '#/components/schemas/DistributedSpec'
    DistributedWorkload:
      allOf:
        - $ref: '#/components/schemas/WorkloadMeta'
        - $ref: '#/components/schemas/DistributedSpec'
    DistributedInferenceAssets:
      properties:
        assets:
          type: object
          nullable: true
    DistributedInferenceSpecSpec:
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceCommonSpec'
        - $ref: '#/components/schemas/DistributedInferenceLeaderSpecFields'
        - $ref: '#/components/schemas/DistributedInferenceWorkerSpecFields'
    DistributedInferenceSpec:
      description: The specifications of the distributed inference to be created.
      properties:
        spec:
          $ref: '#/components/schemas/DistributedInferenceSpecSpec'
    DistributedInferenceCreationRequest:
      allOf:
        - $ref: '#/components/schemas/WorkloadCreationMeta'
        - $ref: '#/components/schemas/SubmitWithTemplateId'
        - $ref: '#/components/schemas/DistributedInferenceAssets'
        - $ref: '#/components/schemas/DistributedInferenceSpec'
    DistributedInference:
      allOf:
        - $ref: '#/components/schemas/WorkloadMeta'
        - $ref: '#/components/schemas/DistributedInferenceSpec'
    UpdateSpec:
      description: The specifications of the inference to be updated.
      properties:
        spec:
          allOf:
            - type: object
              properties:
                replicas:
                  description: Specifies the number of leader-worker sets to deploy. Each replica represents a group consisting of one leader pod and multiple worker pods. For example, setting replicas to 3 will create 3 independent groups, each with its own leader and corresponding set of workers.
                  type: integer
                  format: int32
                  minimum: 0
                  maximum: 1000
                  example: 2
                  nullable: true
              nullable: true
    UpdateRequest:
      allOf:
        - $ref: '#/components/schemas/UpdateSpec'
    InferenceSpecSpec:
      allOf:
        - properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            security:
              nullable: true
              properties:
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            servingPort:
              $ref: '#/components/schemas/ServingPort'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
        - $ref: '#/components/schemas/InferenceFields'
    InferenceSpec:
      description: The specifications of the inference to be created.
      properties:
        spec:
          $ref: '#/components/schemas/InferenceSpecSpec'
    InferenceCreationRequest:
      allOf:
        - $ref: '#/components/schemas/WorkloadCreationMeta'
        - $ref: '#/components/schemas/SubmitWithTemplateId'
        - $ref: '#/components/schemas/InferenceSpec'
    Inference1:
      allOf:
        - $ref: '#/components/schemas/WorkloadMeta'
        - $ref: '#/components/schemas/InferenceSpec'
    InferenceUpdateSpecAutoscaling:
      properties:
        autoscaling:
          $ref: '#/components/schemas/AutoScaling'
    InferenceUpdateSpecServingConfiguration:
      properties:
        servingConfiguration:
          $ref: '#/components/schemas/ServingConfiguration'
    InferenceUpdateSpec:
      description: The specifications of the inference to be updated.
      properties:
        spec:
          allOf:
            - nullable: true
              properties:
                args:
                  $ref: '#/components/schemas/Args'
                category:
                  $ref: '#/components/schemas/Category'
                command:
                  $ref: '#/components/schemas/Command'
                compute:
                  nullable: true
                  properties:
                    cpuCoreLimit:
                      $ref: '#/components/schemas/CpuCoreLimit'
                    cpuCoreRequest:
                      $ref: '#/components/schemas/CpuCoreRequest'
                    cpuMemoryLimit:
                      $ref: '#/components/schemas/CpuMemoryLimit'
                    cpuMemoryRequest:
                      $ref: '#/components/schemas/CpuMemoryRequest'
                    extendedResources:
                      $ref: '#/components/schemas/ExtendedResources'
                    gpuDevicesRequest:
                      $ref: '#/components/schemas/GpuDevicesRequest'
                    gpuMemoryLimit:
                      $ref: '#/components/schemas/GpuMemoryLimit'
                    gpuMemoryRequest:
                      $ref: '#/components/schemas/GpuMemoryRequest'
                    gpuPortionLimit:
                      $ref: '#/components/schemas/GpuPortionLimit'
                    gpuPortionRequest:
                      $ref: '#/components/schemas/GpuPortionRequest'
                    gpuRequestType:
                      $ref: '#/components/schemas/GpuRequestType'
                    largeShmRequest:
                      $ref: '#/components/schemas/LargeShmRequest'
                  type: object
                createHomeDir:
                  $ref: '#/components/schemas/CreateHomeDir'
                environmentVariables:
                  $ref: '#/components/schemas/EnvironmentVariables'
                image:
                  $ref: '#/components/schemas/Image'
                imagePullPolicy:
                  $ref: '#/components/schemas/ImagePullPolicy'
                imagePullSecrets:
                  $ref: '#/components/schemas/ImagePullSecrets'
                nodeAffinityRequired:
                  $ref: '#/components/schemas/NodeAffinityRequired'
                nodePools:
                  $ref: '#/components/schemas/NodePools'
                nodeType:
                  $ref: '#/components/schemas/NodeType3'
                podAffinity:
                  $ref: '#/components/schemas/PodAffinity'
                preemptibility:
                  $ref: '#/components/schemas/Preemptibility'
                priorityClass:
                  $ref: '#/components/schemas/PriorityClass'
                probes:
                  $ref: '#/components/schemas/Probes'
                workingDir:
                  $ref: '#/components/schemas/WorkingDir'
              type: object
            - $ref: '#/components/schemas/InferenceUpdateSpecAutoscaling'
            - $ref: '#/components/schemas/InferenceUpdateSpecServingConfiguration'
    InferenceUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/InferenceUpdateSpec'
    InferenceWorkloadMetricType:
      type: string
      description: Specify which data to request.
      enum:
        - THROUGHPUT
        - LATENCY
    InferencePodMetricType:
      type: string
      description: Specifies what data to request.
      enum:
        - THROUGHPUT
        - LATENCY
    Revision:
      type: object
      required:
        - type
        - name
        - id
        - workloadId
        - tenantId
        - clusterId
        - departmentId
        - projectId
        - createdAt
        - phase
      properties:
        type:
          type: string
          example: runai-revision
        name:
          type: string
          example: very-important-job
        id:
          type: string
          format: uuid
        workloadId:
          type: string
          format: uuid
        tenantId:
          $ref: '#/components/schemas/TenantId'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        projectId:
          $ref: '#/components/schemas/ProjectId'
        departmentId:
          $ref: '#/components/schemas/DepartmentId'
        createdAt:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        deletedAt:
          type: string
          format: date-time
          example: '2022-08-12T19:28:24.131Z'
          nullable: true
        revisionRequestedResources:
          $ref: '#/components/schemas/WorkloadRequestResources'
        podsRequestedResources:
          $ref: '#/components/schemas/WorkloadRequestResources'
        requestedPods:
          $ref: '#/components/schemas/RequestedPods'
        requestedNodePools:
          type: array
          items:
            type: string
            example: default
        allocatedResources:
          $ref: '#/components/schemas/WorkloadAllocatedResources'
        currentNodePools:
          type: array
          items:
            type: string
            example: default
        runningPods:
          type: integer
          format: int32
          example: 1
        images:
          type: array
          items:
            type: string
            example: alpine:latest
        environmentVariables:
          type: object
          additionalProperties:
            type: string
        command:
          type: string
          example: sleep
        arguments:
          type: string
          example: '1000'
        childrenIds:
          type: array
          writeOnly: true
          items:
            type: object
            required:
              - id
            properties:
              id:
                type: string
                format: uuid
              type:
                type: string
        conditions:
          $ref: '#/components/schemas/Conditions'
        phase:
          $ref: '#/components/schemas/Phase'
        phaseMessage:
          type: string
          example: Not enough resources in the requested nodepool
        phaseUpdatedAt:
          type: string
          format: date-time
          example: '2022-06-08T11:28:24.131Z'
        additionalFields:
          type: object
          additionalProperties: true
    TemplateId:
      description: A unique ID of the template.
      type: string
      format: uuid
      example: 550e8400-e29b-41d4-a716-446655440000
    TemplateName:
      description: The name of the template.
      type: string
      minLength: 1
      example: my-template-name
    TemplateDescription:
      description: A description of the template.
      type: string
      minLength: 1
      maxLength: 250
      example: description of my template.
      nullable: true
    TemplateMetaFields:
      required:
        - id
        - name
        - scopeType
        - scopeId
        - createdBy
        - createdAt
        - workloadType
      properties:
        id:
          $ref: '#/components/schemas/TemplateId'
        name:
          $ref: '#/components/schemas/TemplateName'
        description:
          $ref: '#/components/schemas/TemplateDescription'
        workloadType:
          $ref: '#/components/schemas/WorkloadType'
        scopeType:
          $ref: '#/components/schemas/ScopeType'
        scopeId:
          $ref: '#/components/schemas/ScopeId'
        clusterId:
          $ref: '#/components/schemas/ClusterIdOptional'
        departmentId:
          $ref: '#/components/schemas/DepartmentIdOptional'
        projectId:
          $ref: '#/components/schemas/ProjectIdOptional'
        createdBy:
          description: The user who created the template
          type: string
          example: test@lab.com
        createdAt:
          description: The creation time of the template.
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        updatedBy:
          description: The user who recently updated the template
          type: string
          nullable: true
          example: test@lab.com
        updatedAt:
          description: The time of the recent update.
          type: string
          nullable: true
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
    TemplateMeta:
      required:
        - meta
      properties:
        meta:
          $ref: '#/components/schemas/TemplateMetaFields'
    RunnableInfo:
      description: whether the template can be submitted, as is
      properties:
        isRunnable:
          type: boolean
          description: indication if the template is runnable, as is
          example: false
        issue:
          type: string
          nullable: true
          description: if the template is non runnable, specify a reason
          example: mandatory image is not provided
    TemplateAssetsIdsOptional:
      type: object
      nullable: true
    MasterTemplateSpec:
      nullable: true
      properties:
        annotations:
          $ref: '#/components/schemas/Annotations'
        args:
          $ref: '#/components/schemas/Args'
        autoDeletionTimeAfterCompletionSeconds:
          $ref: '#/components/schemas/AutoDeletionTimeAfterPreemptionMaster'
        backoffLimit:
          $ref: '#/components/schemas/BackoffLimitMaster'
        category:
          $ref: '#/components/schemas/Category'
        command:
          $ref: '#/components/schemas/Command'
        compute:
          nullable: true
          properties:
            cpuCoreLimit:
              $ref: '#/components/schemas/CpuCoreLimit'
            cpuCoreRequest:
              $ref: '#/components/schemas/CpuCoreRequest'
            cpuMemoryLimit:
              $ref: '#/components/schemas/CpuMemoryLimit'
            cpuMemoryRequest:
              $ref: '#/components/schemas/CpuMemoryRequest'
            extendedResources:
              $ref: '#/components/schemas/ExtendedResources'
            gpuDevicesRequest:
              $ref: '#/components/schemas/GpuDevicesRequest'
            gpuMemoryLimit:
              $ref: '#/components/schemas/GpuMemoryLimit'
            gpuMemoryRequest:
              $ref: '#/components/schemas/GpuMemoryRequest'
            gpuPortionLimit:
              $ref: '#/components/schemas/GpuPortionLimit'
            gpuPortionRequest:
              $ref: '#/components/schemas/GpuPortionRequest'
            gpuRequestType:
              $ref: '#/components/schemas/GpuRequestType'
            largeShmRequest:
              $ref: '#/components/schemas/LargeShmRequest'
          type: object
        createHomeDir:
          $ref: '#/components/schemas/CreateHomeDir'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariables'
        exposedUrls:
          $ref: '#/components/schemas/ExposedUrls'
        image:
          $ref: '#/components/schemas/Image'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicy'
        labels:
          $ref: '#/components/schemas/Labels'
        nodeAffinityRequired:
          $ref: '#/components/schemas/NodeAffinityRequired'
        nodePools:
          $ref: '#/components/schemas/NodePools'
        nodeType:
          $ref: '#/components/schemas/NodeType3'
        podAffinity:
          $ref: '#/components/schemas/PodAffinity'
        ports:
          $ref: '#/components/schemas/Ports'
        preemptibility:
          $ref: '#/components/schemas/Preemptibility'
        priorityClass:
          $ref: '#/components/schemas/PriorityClassMaster'
        probes:
          $ref: '#/components/schemas/Probes'
        relatedUrls:
          $ref: '#/components/schemas/RelatedUrls'
        restartPolicy:
          $ref: '#/components/schemas/RestartPolicy'
        security:
          nullable: true
          properties:
            allowPrivilegeEscalation:
              $ref: '#/components/schemas/AllowPrivilegeEscalation'
            capabilities:
              $ref: '#/components/schemas/Capabilities'
            hostIpc:
              $ref: '#/components/schemas/HostIpc'
            hostNetwork:
              $ref: '#/components/schemas/HostNetwork'
            readOnlyRootFilesystem:
              $ref: '#/components/schemas/ReadOnlyRootFileSystem'
            runAsGid:
              $ref: '#/components/schemas/RunAsGid'
            runAsNonRoot:
              $ref: '#/components/schemas/RunAsNonRoot'
            runAsUid:
              $ref: '#/components/schemas/RunAsUid'
            seccompProfileType:
              $ref: '#/components/schemas/SeccompProfileType'
            supplementalGroups:
              $ref: '#/components/schemas/SupplementalGroups'
            uidGidSource:
              $ref: '#/components/schemas/UidGidSource'
          type: object
        stdin:
          $ref: '#/components/schemas/Stdin'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapItems'
            dataVolume:
              $ref: '#/components/schemas/DataVolumeItems'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirItems'
            git:
              $ref: '#/components/schemas/GitItems'
            hostPath:
              $ref: '#/components/schemas/HostPathItems'
            nfs:
              $ref: '#/components/schemas/NfsItems'
            pvc:
              $ref: '#/components/schemas/PvcItems'
            s3:
              $ref: '#/components/schemas/S3Items'
            secretVolume:
              $ref: '#/components/schemas/SecretItems'
          type: object
        terminateAfterPreemption:
          $ref: '#/components/schemas/TerminateAfterPreemption'
        terminationGracePeriodSeconds:
          $ref: '#/components/schemas/TerminationGracePeriodMaster'
        tolerations:
          $ref: '#/components/schemas/Tolerations'
        tty:
          $ref: '#/components/schemas/Tty'
        workingDir:
          $ref: '#/components/schemas/WorkingDir'
      type: object
    TemplateMasterSection:
      properties:
        spec:
          $ref: '#/components/schemas/MasterTemplateSpec'
        assets:
          $ref: '#/components/schemas/TemplateAssetsIdsOptional'
      nullable: true
      type: object
    TemplateComplianceIssues:
      description: A list of issues preventing the use of a template or asset for creating workloads in a given project.
      type: array
      items:
        $ref: '#/components/schemas/ComplianceInfoReason'
    TemplateComplianceInfo:
      properties:
        complianceIssues:
          $ref: '#/components/schemas/TemplateComplianceIssues'
    SupersetTemplate:
      allOf:
        - $ref: '#/components/schemas/TemplateMeta'
        - type: object
          properties:
            runnable:
              $ref: '#/components/schemas/RunnableInfo'
            spec:
              $ref: '#/components/schemas/SupersetSpec'
            assets:
              $ref: '#/components/schemas/TemplateAssetsIdsOptional'
            masterSpecSameAsWorker:
              $ref: '#/components/schemas/MasterSpecSameAsWorker'
            master:
              $ref: '#/components/schemas/TemplateMasterSection'
            combinedSpec:
              $ref: '#/components/schemas/SupersetSpec'
            combinedMasterSpec:
              $ref: '#/components/schemas/MasterTemplateSpec'
          nullable: true
        - $ref: '#/components/schemas/TemplateComplianceInfo'
    PaginationInfo:
      properties:
        limit:
          type: number
          format: int64
          description: the number of entries included in this bulk of entries
        offset:
          type: number
          format: int64
          description: the first entry that was requested to be included in this bulk
        nextOffset:
          type: number
          format: int64
          description: the offset of the next bulk of entries
    TemplatesListResponse:
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/SupersetTemplate'
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
    WorkspaceTemplateSpec:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              nullable: true
              properties:
                allowPrivilegeEscalation:
                  $ref: '#/components/schemas/AllowPrivilegeEscalation'
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                s3:
                  $ref: '#/components/schemas/S3Items'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    TemplateAssets: {}
    WorkspaceTemplate:
      allOf:
        - $ref: '#/components/schemas/TemplateMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/WorkspaceTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
        - type: object
          properties:
            runnable:
              $ref: '#/components/schemas/RunnableInfo'
            combinedSpec:
              $ref: '#/components/schemas/WorkspaceTemplateSpec'
    WorkspaceTemplatesListResponseItem:
      allOf:
        - $ref: '#/components/schemas/WorkspaceTemplate'
        - $ref: '#/components/schemas/TemplateComplianceInfo'
    WorkspaceTemplatesListResponse:
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/WorkspaceTemplatesListResponseItem'
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
    ScopeIdOptional:
      type: string
      description: The id of the cluster, department or project, depending on the scope type.
      nullable: true
    TemplateCreationMetaFields:
      required:
        - name
        - scopeType
      properties:
        name:
          $ref: '#/components/schemas/TemplateName'
        description:
          $ref: '#/components/schemas/TemplateDescription'
        scopeType:
          $ref: '#/components/schemas/ScopeType'
        scopeId:
          $ref: '#/components/schemas/ScopeIdOptional'
    TemplateCreationMeta:
      required:
        - meta
      properties:
        meta:
          $ref: '#/components/schemas/TemplateCreationMetaFields'
    WorkspaceTemplateCreationRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateCreationMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/WorkspaceTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
    TemplateUpdateMetaFields:
      required:
        - name
      properties:
        name:
          $ref: '#/components/schemas/TemplateName'
        description:
          $ref: '#/components/schemas/TemplateDescription'
    TemplateUpdateMeta:
      required:
        - meta
      properties:
        meta:
          $ref: '#/components/schemas/TemplateUpdateMetaFields'
    WorkspaceTemplateUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateUpdateMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/WorkspaceTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
    TemplateNameOptional:
      description: The name of the template.
      type: string
      example: my-template-name
      nullable: true
    TemplatePatchMetaFields:
      required:
        - name
      properties:
        name:
          $ref: '#/components/schemas/TemplateNameOptional'
        description:
          $ref: '#/components/schemas/TemplateDescription'
      nullable: true
      type: object
    TemplatePatchMeta:
      properties:
        meta:
          $ref: '#/components/schemas/TemplatePatchMetaFields'
      nullable: true
      type: object
    FieldsToClear:
      description: array of xpath expression with fields that their values should be cleared
      type: object
      properties:
        fieldsToClear:
          items:
            type: string
            example: spec.image
            minLength: 1
      nullable: true
    WorkspaceTemplatePatchRequest:
      allOf:
        - $ref: '#/components/schemas/TemplatePatchMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/WorkspaceTemplateSpec'
        - $ref: '#/components/schemas/FieldsToClear'
        - $ref: '#/components/schemas/TemplateAssets'
    TrainingTemplateSpec:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            completions:
              $ref: '#/components/schemas/Completions'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            parallelism:
              $ref: '#/components/schemas/Parallelism'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              nullable: true
              properties:
                allowPrivilegeEscalation:
                  $ref: '#/components/schemas/AllowPrivilegeEscalation'
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                s3:
                  $ref: '#/components/schemas/S3Items'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    TrainingTemplate:
      allOf:
        - $ref: '#/components/schemas/TemplateMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/TrainingTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
        - type: object
          properties:
            runnable:
              $ref: '#/components/schemas/RunnableInfo'
            combinedSpec:
              $ref: '#/components/schemas/TrainingTemplateSpec'
    TrainingTemplatesListResponseItem:
      allOf:
        - $ref: '#/components/schemas/TrainingTemplate'
        - $ref: '#/components/schemas/TemplateComplianceInfo'
    TrainingTemplatesListResponse:
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/TrainingTemplatesListResponseItem'
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
    TrainingTemplateCreationRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateCreationMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/TrainingTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
    TrainingTemplateUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateUpdateMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/TrainingTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
    TrainingTemplatePatchRequest:
      allOf:
        - $ref: '#/components/schemas/TemplatePatchMeta'
        - properties:
            spec:
              $ref: '#/components/schemas/TrainingTemplateSpec'
        - $ref: '#/components/schemas/FieldsToClear'
        - $ref: '#/components/schemas/TemplateAssets'
    DistributedTemplateSpec:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            autoDeletionTimeAfterCompletionSeconds:
              $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
            backoffLimit:
              $ref: '#/components/schemas/BackoffLimit'
            category:
              $ref: '#/components/schemas/Category'
            cleanPodPolicy:
              $ref: '#/components/schemas/CleanPodPolicy'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            distributedFramework:
              $ref: '#/components/schemas/DistributedFramework'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            labels:
              $ref: '#/components/schemas/Labels'
            maxReplicas:
              $ref: '#/components/schemas/MaxReplicas'
            minReplicas:
              $ref: '#/components/schemas/MinReplicas'
            mpiLauncherCreationPolicy:
              $ref: '#/components/schemas/MpiLauncherCreationPolicy'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            numWorkers:
              $ref: '#/components/schemas/NumWorkers'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            restartPolicy:
              $ref: '#/components/schemas/RestartPolicy'
            security:
              nullable: true
              properties:
                allowPrivilegeEscalation:
                  $ref: '#/components/schemas/AllowPrivilegeEscalation'
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            slotsPerWorker:
              $ref: '#/components/schemas/SlotsPerWorker'
            sshAuthMountPath:
              $ref: '#/components/schemas/SshAuthMountPath'
            stdin:
              $ref: '#/components/schemas/Stdin'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                s3:
                  $ref: '#/components/schemas/S3Items'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            terminateAfterPreemption:
              $ref: '#/components/schemas/TerminateAfterPreemption'
            terminationGracePeriodSeconds:
              $ref: '#/components/schemas/TerminationGracePeriod'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            tty:
              $ref: '#/components/schemas/Tty'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
    DistributedTemplate:
      allOf:
        - $ref: '#/components/schemas/TemplateMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedTemplateSpec'
            masterSpecSameAsWorker:
              $ref: '#/components/schemas/MasterSpecSameAsWorker'
            master:
              $ref: '#/components/schemas/TemplateMasterSection'
            runnable:
              $ref: '#/components/schemas/RunnableInfo'
            combinedSpec:
              $ref: '#/components/schemas/DistributedSpecSpec'
            combinedMasterSpec:
              $ref: '#/components/schemas/MasterTemplateSpec'
    DistributedTemplatesListResponseItem:
      allOf:
        - $ref: '#/components/schemas/DistributedTemplate'
        - $ref: '#/components/schemas/TemplateComplianceInfo'
    DistributedTemplatesListResponse:
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/DistributedTemplatesListResponseItem'
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
    DistributedTemplateCreationRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateCreationMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
        - type: object
          properties:
            masterSpecSameAsWorker:
              $ref: '#/components/schemas/MasterSpecSameAsWorker'
            master:
              $ref: '#/components/schemas/TemplateMasterSection'
          nullable: true
    DistributedTemplateUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateUpdateMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
        - type: object
          properties:
            masterSpecSameAsWorker:
              $ref: '#/components/schemas/MasterSpecSameAsWorker'
            master:
              $ref: '#/components/schemas/TemplateMasterSection'
          nullable: true
    DistributedTemplatePatchRequest:
      allOf:
        - $ref: '#/components/schemas/TemplatePatchMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
        - type: object
          properties:
            masterSpecSameAsWorker:
              $ref: '#/components/schemas/MasterSpecSameAsWorker'
            master:
              $ref: '#/components/schemas/TemplateMasterSection'
          nullable: true
        - $ref: '#/components/schemas/FieldsToClear'
    InferenceTemplateSpec:
      allOf:
        - properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            args:
              $ref: '#/components/schemas/Args'
            category:
              $ref: '#/components/schemas/Category'
            command:
              $ref: '#/components/schemas/Command'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                extendedResources:
                  $ref: '#/components/schemas/ExtendedResources'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
                largeShmRequest:
                  $ref: '#/components/schemas/LargeShmRequest'
              type: object
            createHomeDir:
              $ref: '#/components/schemas/CreateHomeDir'
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            exposedUrls:
              $ref: '#/components/schemas/ExposedUrls'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            labels:
              $ref: '#/components/schemas/Labels'
            nodeAffinityRequired:
              $ref: '#/components/schemas/NodeAffinityRequired'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            nodeType:
              $ref: '#/components/schemas/NodeType3'
            podAffinity:
              $ref: '#/components/schemas/PodAffinity'
            ports:
              $ref: '#/components/schemas/Ports'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            relatedUrls:
              $ref: '#/components/schemas/RelatedUrls'
            security:
              nullable: true
              properties:
                capabilities:
                  $ref: '#/components/schemas/Capabilities'
                hostIpc:
                  $ref: '#/components/schemas/HostIpc'
                hostNetwork:
                  $ref: '#/components/schemas/HostNetwork'
                readOnlyRootFilesystem:
                  $ref: '#/components/schemas/ReadOnlyRootFileSystem'
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsNonRoot:
                  $ref: '#/components/schemas/RunAsNonRoot'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
                seccompProfileType:
                  $ref: '#/components/schemas/SeccompProfileType'
                supplementalGroups:
                  $ref: '#/components/schemas/SupplementalGroups'
                uidGidSource:
                  $ref: '#/components/schemas/UidGidSource'
              type: object
            servingPort:
              $ref: '#/components/schemas/ServingPort'
            storage:
              nullable: true
              properties:
                configMapVolume:
                  $ref: '#/components/schemas/ConfigMapItems'
                dataVolume:
                  $ref: '#/components/schemas/DataVolumeItems'
                emptyDirVolume:
                  $ref: '#/components/schemas/EmptyDirItems'
                git:
                  $ref: '#/components/schemas/GitItems'
                hostPath:
                  $ref: '#/components/schemas/HostPathItems'
                nfs:
                  $ref: '#/components/schemas/NfsItems'
                pvc:
                  $ref: '#/components/schemas/PvcItems'
                secretVolume:
                  $ref: '#/components/schemas/SecretItems'
              type: object
            tolerations:
              $ref: '#/components/schemas/Tolerations'
            workingDir:
              $ref: '#/components/schemas/WorkingDir'
          type: object
        - $ref: '#/components/schemas/InferenceFields'
    InferenceTemplate:
      allOf:
        - $ref: '#/components/schemas/TemplateMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/InferenceTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
        - type: object
          properties:
            runnable:
              $ref: '#/components/schemas/RunnableInfo'
            combinedSpec:
              $ref: '#/components/schemas/InferenceTemplateSpec'
          nullable: true
    InferenceTemplatesListResponseItem:
      allOf:
        - $ref: '#/components/schemas/InferenceTemplate'
        - $ref: '#/components/schemas/TemplateComplianceInfo'
    InferenceTemplatesListResponse:
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/InferenceTemplatesListResponseItem'
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
    InferenceTemplateCreationRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateCreationMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/InferenceTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
    InferenceTemplateUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateUpdateMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/InferenceTemplateSpec'
        - $ref: '#/components/schemas/TemplateAssets'
    InferenceTemplatePatchRequest:
      allOf:
        - $ref: '#/components/schemas/TemplatePatchMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/InferenceTemplateSpec'
        - $ref: '#/components/schemas/FieldsToClear'
        - $ref: '#/components/schemas/TemplateAssets'
    DistributedInferenceLeaderWorkerTemplateSpec:
      properties:
        annotations:
          $ref: '#/components/schemas/Annotations'
        args:
          $ref: '#/components/schemas/Args'
        command:
          $ref: '#/components/schemas/Command'
        compute:
          nullable: true
          properties:
            cpuCoreLimit:
              $ref: '#/components/schemas/CpuCoreLimit'
            cpuCoreRequest:
              $ref: '#/components/schemas/CpuCoreRequest'
            cpuMemoryLimit:
              $ref: '#/components/schemas/CpuMemoryLimit'
            cpuMemoryRequest:
              $ref: '#/components/schemas/CpuMemoryRequest'
            extendedResources:
              $ref: '#/components/schemas/ExtendedResources'
            gpuDevicesRequest:
              $ref: '#/components/schemas/GpuDevicesRequest'
            gpuMemoryLimit:
              $ref: '#/components/schemas/GpuMemoryLimit'
            gpuMemoryRequest:
              $ref: '#/components/schemas/GpuMemoryRequest'
            gpuPortionLimit:
              $ref: '#/components/schemas/GpuPortionLimit'
            gpuPortionRequest:
              $ref: '#/components/schemas/GpuPortionRequest'
            gpuRequestType:
              $ref: '#/components/schemas/GpuRequestType'
            largeShmRequest:
              $ref: '#/components/schemas/LargeShmRequest'
          type: object
        createHomeDir:
          $ref: '#/components/schemas/CreateHomeDir'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariables'
        image:
          $ref: '#/components/schemas/Image'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicy'
        labels:
          $ref: '#/components/schemas/Labels'
        nodeAffinityRequired:
          $ref: '#/components/schemas/NodeAffinityRequired'
        nodeType:
          $ref: '#/components/schemas/NodeType3'
        podAffinity:
          $ref: '#/components/schemas/PodAffinity'
        probes:
          $ref: '#/components/schemas/Probes'
        security:
          $ref: '#/components/schemas/DistributedInferenceLeaderWorkerSpecSecurity'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapItems'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirItems'
            pvc:
              $ref: '#/components/schemas/PvcItems'
            secretVolume:
              $ref: '#/components/schemas/SecretItems'
          type: object
        tolerations:
          $ref: '#/components/schemas/Tolerations'
        workingDir:
          $ref: '#/components/schemas/WorkingDir'
      type: object
    DistributedInferenceLeaderTemplateSpecFields:
      properties:
        leader:
          description: Defines the pod specification for the leader.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerTemplateSpec'
          nullable: true
          type: object
    DistributedInferenceWorkerTemplateSpecFields:
      properties:
        worker:
          description: Defines the pod specification for the workers.
          allOf:
            - $ref: '#/components/schemas/DistributedInferenceLeaderWorkerTemplateSpec'
          nullable: true
          type: object
    DistributedInferenceTemplateSpec:
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceCommonSpec'
        - $ref: '#/components/schemas/DistributedInferenceLeaderTemplateSpecFields'
        - $ref: '#/components/schemas/DistributedInferenceWorkerTemplateSpecFields'
    DistributedInferenceTemplate:
      allOf:
        - $ref: '#/components/schemas/TemplateMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedInferenceTemplateSpec'
        - type: object
          properties:
            runnable:
              $ref: '#/components/schemas/RunnableInfo'
            combinedSpec:
              $ref: '#/components/schemas/DistributedInferenceTemplateSpec'
          nullable: true
    DistributedInferenceTemplatesListResponseItem:
      allOf:
        - $ref: '#/components/schemas/DistributedInferenceTemplate'
        - $ref: '#/components/schemas/TemplateComplianceInfo'
    DistributedInferenceTemplateCreationRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateCreationMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedInferenceTemplateSpec'
    DistributedInferenceTemplateUpdateRequest:
      allOf:
        - $ref: '#/components/schemas/TemplateUpdateMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedInferenceTemplateSpec'
    DistributedInferenceTemplatePatchRequest:
      allOf:
        - $ref: '#/components/schemas/TemplatePatchMeta'
        - type: object
          properties:
            spec:
              $ref: '#/components/schemas/DistributedInferenceTemplateSpec'
        - $ref: '#/components/schemas/FieldsToClear'
    DistributedInferenceLeaderWorkerDefaultsV21:
      properties:
        annotations:
          $ref: '#/components/schemas/AnnotationsDefaults'
        args:
          $ref: '#/components/schemas/Args'
        command:
          $ref: '#/components/schemas/Command'
        compute:
          $ref: '#/components/schemas/SupersetDefaultsAllOfCompute'
        createHomeDir:
          $ref: '#/components/schemas/CreateHomeDir'
        environmentVariables:
          $ref: '#/components/schemas/EnvironmentVariablesDefaults'
        image:
          $ref: '#/components/schemas/Image'
        imagePullPolicy:
          $ref: '#/components/schemas/ImagePullPolicy'
        imagePullSecrets:
          $ref: '#/components/schemas/ImagePullSecretsDefaults'
        labels:
          $ref: '#/components/schemas/LabelsDefaults'
        nodeAffinityRequired:
          $ref: '#/components/schemas/NodeAffinityRequired'
        nodeType:
          $ref: '#/components/schemas/NodeType3'
        podAffinity:
          $ref: '#/components/schemas/PodAffinity'
        probes:
          $ref: '#/components/schemas/Probes'
        security:
          $ref: '#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV2Security'
        storage:
          nullable: true
          properties:
            configMapVolume:
              $ref: '#/components/schemas/ConfigMapsDefaults'
            emptyDirVolume:
              $ref: '#/components/schemas/EmptyDirsDefaults'
            pvc:
              $ref: '#/components/schemas/PvcsDefaults'
            secretVolume:
              $ref: '#/components/schemas/SecretsDefaults'
          type: object
        tolerations:
          $ref: '#/components/schemas/TolerationsDefaults'
        workingDir:
          $ref: '#/components/schemas/WorkingDir'
      type: object
    Action1:
      type: string
      description: The action to perform on the list of ids.
      enum:
        - delete
        - suspend
        - resume
    WorkloadBatch:
      type: object
      description: The ids and action to perform on a batch of workloads. The number of ids is limited to 100.
      required:
        - ids
        - action
      properties:
        ids:
          $ref: '#/components/schemas/IdsList'
        action:
          $ref: '#/components/schemas/Action1'
    WorkloadElementsResponse:
      type: object
      required:
        - elements
      properties:
        next:
          type: integer
          format: int32
          description: |
            Offset for the next page of results. Present only when there are more elements beyond the current page (i.e., the number of returned elements equals the limit).
        elements:
          type: array
          description: |
            A flat list of structure elements for this workload, ordered by hierarchy level. This page may contain fewer elements than are stored in the database — use the "next" field to retrieve additional pages. Use the /elements/count endpoint to retrieve total and stored counts.
          items:
            $ref: '#/components/schemas/WorkloadElement'
    WorkloadCategory:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the workload category.
        name:
          type: string
          description: A unique, human-readable name for the workload category.
        description:
          type: string
          description: An optional description providing additional details about the category.
        createdAt:
          type: string
          format: date-time
          description: The date and time when the workload category was created.
        createdBy:
          type: string
          description: The user who created the workload category.
    WorkloadCategories:
      type: array
      items:
        $ref: '#/components/schemas/WorkloadCategory'
      x-schema-name: WorkloadCategories
    WorkloadTypePreemptibility:
      type: string
      description: Indicates the default preemptibility level of the workload type. Only available for workloads submitted to clusters of versions 2.24+. The default, if not specified, is if priority.value >= 100 - then 'non-preemptible', else 'preemptible'.
      example: non-preemptible
      enum:
        - preemptible
        - non-preemptible
    WorkloadTypeAdditionalResponseFields:
      type: object
      properties:
        categoryId:
          type: string
          format: uuid
          description: The unique identifier of the workload category.
        priorityId:
          type: string
          format: uuid
          description: The unique identifier of the workload priority.
        preemptibility:
          $ref: '#/components/schemas/WorkloadTypePreemptibility'
    WorkloadTypeAdditionalCreateFields:
      type: object
      properties:
        name:
          type: string
          example: Deployment
          description: The unique name of the workload type. This value must exactly match the Kubernetes Kind that represents the workload type.
          pattern: ^[A-Z][a-z0-9]*([A-Z][a-z0-9]*)*$
        group:
          type: string
          example: apps
          description: The Kubernetes group associated with the workload resource.
          pattern: ^[a-z](?:[a-z0-9.-]*[a-z0-9])?$
    WorkloadTypeResourceInterface:
      type: object
      description: The resource interface for the workload type.
      additionalProperties: true
      example:
        spec:
          structureDefinition:
            rootComponent:
              kind:
                group: apps
                version: v1
                kind: Deployment
    WorkloadTypeResourceInterfacesWithVersion:
      type: array
      description: Lists the versions of the custom resource definition (CRD) supported for this workload type, such as v1, v1beta1, or v1alpha1. This enables the platform to correctly parse, interpret, and manage manifests for this workload type according to the specific structure and schema associated with each listed version.
      items:
        type: object
        properties:
          version:
            type: string
            example: v1
            description: The version of the resource definition k8s crd.
          resourceInterface:
            $ref: '#/components/schemas/WorkloadTypeResourceInterface'
    WorkloadTypeStatusFields:
      type: object
      properties:
        phase:
          type: string
          description: The current phase of the workload type in the cluster.
          example: Ready
        conditions:
          $ref: '#/components/schemas/Conditions'
        version:
          type: string
          description: The version of the resource definition's Kubernetes CRD.
          example: v1
    WorkloadTypeStatus:
      allOf:
        - $ref: '#/components/schemas/WorkloadTypeStatusFields'
        - type: object
          properties:
            clusterId:
              $ref: '#/components/schemas/ClusterId'
            updatedAt:
              type: string
              format: date-time
              description: The date and time when the workload type status of this cluster was last updated.
    WorkloadTypeConfig:
      allOf:
        - $ref: '#/components/schemas/WorkloadTypeAdditionalResponseFields'
        - $ref: '#/components/schemas/WorkloadTypeAdditionalCreateFields'
        - type: object
          required:
            - name
            - group
            - categoryId
            - priorityId
            - preemptibility
          properties:
            id:
              type: string
              format: uuid
              description: The unique identifier of the workload type.
            categoryName:
              type: string
              example: Build
              description: The name of the workload category.
            priorityName:
              type: string
              example: medium
              description: The name of the workload priority.
            updatedAt:
              type: string
              format: date-time
              description: The timestamp for the last time the workload type was updated.
            updatedBy:
              type: string
              description: Identifier of the user who last updated the workload type.
            createdAt:
              type: string
              format: date-time
              description: The timestamp for when the workload type was created.
            createdBy:
              type: string
              description: Identifier of the user who created the workload type.
            resourceInterfaces:
              $ref: '#/components/schemas/WorkloadTypeResourceInterfacesWithVersion'
            clusterStatuses:
              nullable: true
              type: array
              items:
                $ref: '#/components/schemas/WorkloadTypeStatus'
    WorkloadTypeConfigs:
      type: array
      items:
        $ref: '#/components/schemas/WorkloadTypeConfig'
      x-schema-name: WorkloadTypes
    WorkloadTypeCreateUpdateInnerFields:
      type: object
      properties:
        categoryId:
          type: string
          format: uuid
          description: The unique identifier of the workload category.
        priorityId:
          type: string
          format: uuid
          description: The unique identifier of the workload priority.
        preemptibility:
          type: string
          nullable: true
          allOf:
            - $ref: '#/components/schemas/WorkloadTypePreemptibility'
    WorkloadTypeResourceInterfaces:
      type: array
      description: Lists the versions of the custom resource definition (CRD) supported for this workload type, such as v1, v1beta1, or v1alpha1. This enables the platform to correctly parse, interpret, and manage manifests for this workload type according to the specific structure and schema associated with each listed version. On update, you may only add or remove supported versions, modifying existing version entries is not allowed.
      maxItems: 4
      items:
        $ref: '#/components/schemas/WorkloadTypeResourceInterface'
    WorkloadTypeCreateFields:
      allOf:
        - $ref: '#/components/schemas/WorkloadTypeCreateUpdateInnerFields'
        - $ref: '#/components/schemas/WorkloadTypeAdditionalCreateFields'
        - type: object
          required:
            - name
            - group
            - categoryId
            - priorityId
          properties:
            resourceInterfaces:
              $ref: '#/components/schemas/WorkloadTypeResourceInterfaces'
    WorkloadTypeResourceInterfacesNullable:
      type: array
      nullable: true
      description: Lists the versions of the custom resource definition (CRD) supported for this workload type, such as v1, v1beta1, or v1alpha1. This enables the platform to correctly parse, interpret, and manage manifests for this workload type according to the specific structure and schema associated with each listed version. On update, you may only add or remove supported versions, modifying existing version entries is not allowed.
      maxItems: 4
      items:
        $ref: '#/components/schemas/WorkloadTypeResourceInterface'
    WorkloadTypeUpdateFields:
      allOf:
        - $ref: '#/components/schemas/WorkloadTypeCreateUpdateInnerFields'
        - type: object
          properties:
            resourceInterfaces:
              $ref: '#/components/schemas/WorkloadTypeResourceInterfacesNullable'
    PriorityStatus:
      type: object
      properties:
        clusterId:
          type: string
          example: d73a738f-fab3-430a-8fa3-5241493d7128
          description: The unique identifier of the cluster
        phase:
          type: string
          description: Current phase of the priority in the specified cluster
          example: Ready
    BasePriority:
      type: object
      required:
        - id
        - name
        - value
      properties:
        id:
          type: string
          example: d73a738f-fab3-430a-8fa3-5241493d7128
          description: The unique identifier of the workload priority
        source:
          description: The source of the priority class. Indicates where the priority definition originated. Currently, the value is either Run:ai or empty.
          type: string
          example: Run:ai
        name:
          type: string
          example: medium
          description: The name of the workload priority (e.g., low, medium, high)
        value:
          type: integer
          minimum: 0
          example: 50
          description: The scheduling value assigned to this priority
        createdAt:
          type: string
          format: date-time
          description: The timestamp for when the priority was created
          example: '2022-01-01T03:49:52.531Z'
        updatedAt:
          type: string
          format: date-time
          description: The timestamp for when the priority was updated
          example: '2022-06-08T11:28:24.131Z'
    WorkloadPriority:
      allOf:
        - type: object
        - properties:
            aggregatedPhase:
              type: string
              example: Ready
              description: Combined status of the priority across all clusters
            status:
              type: array
              description: Per-cluster status details
              items:
                $ref: '#/components/schemas/PriorityStatus'
            scopeType:
              description: The type of scope the workload priority applies to.
              type: string
              example: tenant
            scopeId:
              description: The unique identifier of the scope the workload priority applies to.
              type: string
              example: '1'
        - $ref: '#/components/schemas/BasePriority'
    Priorities:
      type: array
      items:
        $ref: '#/components/schemas/WorkloadPriority'
    SyncPriority:
      allOf:
        - type: object
        - properties:
            deletedAt:
              type: string
              format: date-time
              example: '2022-01-01T03:49:52.531Z'
              nullable: true
        - $ref: '#/components/schemas/BasePriority'
    ClusterPriority:
      allOf:
        - type: object
        - properties:
            phase:
              type: string
              example: Ready
              description: Current phase of the priority in the specified cluster
        - $ref: '#/components/schemas/BasePriority'
    AIApplicationVerbosity:
      type: string
      enum:
        - brief
        - full
      default: brief
    AIApplicationsSortFilterFields:
      type: string
      enum:
        - clusterId
        - name
        - projectId
        - projectName
        - source
        - type
        - createdAt
    AIApplicationName:
      type: string
      description: The name of the application. The name must be unique within the organization and can only contain lowercase alphanumeric characters and hyphens. It must start with a letter.
      maxLength: 63
      pattern: ^[a-z]([a-z0-9-]*[a-z0-9])?$
    ProjectName:
      type: string
      description: The name of the project
      example: project-a
      minLength: 1
      pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
    AIApplicationResource:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        kind:
          type: string
    AIApplicationAllocatedResources:
      type: object
      nullable: true
      properties:
        gpu:
          type: number
          nullable: true
          format: double
          example: 1.5
          description: States the number of GPUs allocated for the created workloads.
        gpuMemory:
          type: string
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          nullable: true
          example: 200Mi
        cpu:
          type: number
          nullable: true
          format: double
          description: States the amount of CPU cores used by the workloads running.
          example: 0.5
        cpuMemory:
          type: string
          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          nullable: true
          example: 0B
    AIApplicationRequestResources:
      type: object
      nullable: true
      properties:
        gpu:
          $ref: '#/components/schemas/RequestResourceCores'
        gpuMemory:
          $ref: '#/components/schemas/RequestResourceQuantity'
        cpu:
          $ref: '#/components/schemas/RequestResourceCores'
        cpuMemory:
          $ref: '#/components/schemas/RequestResourceQuantity'
    AiApplicationEndpoint:
      allOf:
        - $ref: '#/components/schemas/Endpoint'
        - type: object
          properties:
            workloadId:
              description: The id of the workload associated with this endpoint.
              type: string
              format: uuid
    AIApplicationChartRepo:
      type: string
      description: The HTTP or HTTPS URL of the Helm repository that hosts the chart. This must match a repository that is accessible. Used together with `name` and `version`.
      maxLength: 250
      example: https://charts.bitnami.com/bitnami
    AIApplicationChartName:
      type: string
      description: The name of the chart within the specified repository. This corresponds to the chart’s directory name.
      maxLength: 250
      example: redis
    AIApplicationChartVersion:
      type: string
      description: The specific Semantic Version (SemVer) of the chart to deploy.
      maxLength: 50
      example: 17.3.17
    AIApplicationChartUrl:
      type: string
      description: A direct HTTPS URL to a packaged Helm chart archive (.tgz). When provided, the chart is downloaded directly from this location instead of being resolved through a Helm repository reference.
      maxLength: 250
      example: https://helm.ngc.nvidia.com/nvidia/blueprint/charts/nvidia-blueprint-rag-v2.3.0.tgz
    AIApplicationSpecChartRef:
      type: object
      description: Specifies the origin of the Helm chart. Provide by referencing a connected Helm repository (`repo` + `name` + `version`) or by providing a direct chart URL.
      properties:
        repo:
          $ref: '#/components/schemas/AIApplicationChartRepo'
        chartName:
          $ref: '#/components/schemas/AIApplicationChartName'
        chartVersion:
          $ref: '#/components/schemas/AIApplicationChartVersion'
        chartURL:
          $ref: '#/components/schemas/AIApplicationChartUrl'
    AIApplicationAuth:
      type: object
      description: Authentication configuration required to access a private Helm repository or chart URL. This is used when the chart source requires credentials.
      properties:
        assetId:
          type: string
          description: The ID of the asset to use for authentication.
          format: uuid
    AIApplicationSpec:
      type: object
      required:
        - chartRef
      properties:
        chartRef:
          $ref: '#/components/schemas/AIApplicationSpecChartRef'
        values:
          type: object
          description: Inline Helm values used to override the Helm chart’s default configuration. These values are merged with the Helm chart’s `values.yaml`. This field is mutually exclusive with `valuesBase64`.
          additionalProperties: true
        valuesBase64:
          type: string
          description: Base64-encoded Helm values used to override the Helm chart’s default configuration. This field is mutually exclusive with `values`.
          format: byte
        auth:
          $ref: '#/components/schemas/AIApplicationAuth'
    AIApplication:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          $ref: '#/components/schemas/AIApplicationName'
        source:
          type: string
        type:
          type: string
        desiredPhase:
          type: string
          description: The desired phase of the application.
          nullable: true
        phase:
          type: string
          description: The actual status of the release in the cluster.
        projectId:
          $ref: '#/components/schemas/ProjectId'
        projectName:
          $ref: '#/components/schemas/ProjectName'
        resources:
          type: array
          items:
            $ref: '#/components/schemas/AIApplicationResource'
        allocatedResources:
          $ref: '#/components/schemas/AIApplicationAllocatedResources'
        requestedResources:
          $ref: '#/components/schemas/AIApplicationRequestResources'
        createdAt:
          type: string
          format: date-time
        createdBy:
          description: The user who created the application.
          type: string
          minLength: 1
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          description: The user who created the application.
          type: string
          minLength: 1
        updateCount:
          type: integer
          format: int64
          description: The sync update counter for this application.
        actionStatus:
          type: string
          description: The status of the recent action preformed on the application.
          nullable: true
        actionMessage:
          type: string
          description: The message of the recent action preformed on the application.
          nullable: true
        endpoints:
          description: List of network endpoints through which the workloads associated with the AI application is exposed.
          type: array
          items:
            $ref: '#/components/schemas/AiApplicationEndpoint'
        spec:
          $ref: '#/components/schemas/AIApplicationSpec'
          nullable: true
    AIApplications:
      type: array
      items:
        $ref: '#/components/schemas/AIApplication'
    AIApplicationCreationRequest:
      type: object
      required:
        - clusterId
        - projectId
        - name
        - spec
      properties:
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        projectId:
          $ref: '#/components/schemas/ProjectId'
        name:
          $ref: '#/components/schemas/AIApplicationName'
        spec:
          $ref: '#/components/schemas/AIApplicationSpec'
    Priority1:
      $ref: '#/components/schemas/WorkloadPriority'
    SupersetWorkloadSpec:
      $ref: '#/components/schemas/SupersetSpec'
    MnnvlMode:
      type: string
      enum:
        - Required
        - None
      description: |
        MNNVL (Multi-Node NVLink) mode:
        - Required: The workload is configured to use MNNVL acceleration. The workload type and at least one project’s node pool must support MNNVL, or the request fails. When set, the workload is scheduled only on compatible nodes, and may remain pending until sufficient MNNVL-capable capacity is available.
        - None: The workload will not use MNNVL acceleration, even if MNNVL-capable nodes are available.
      example: Required
    Authorization:
      type: object
      description: Authorization configuration.
      nullable: true
      properties:
        authorizationType:
          $ref: '#/components/schemas/AuthorizationType'
        authorizedUsers:
          $ref: '#/components/schemas/AuthorizedUsers'
        authorizedGroups:
          $ref: '#/components/schemas/AuthorizedGroups'
    Workloadv2Authorization:
      type: object
      example:
        forceJsonResponse: false
        authorizationType: authenticatedUsers
      allOf:
        - $ref: '#/components/schemas/Authorization'
        - type: object
          properties:
            forceJsonResponse:
              description: Force JSON errors instead of HTTP error pages or redirects.
              type: boolean
              default: false
              nullable: true
      nullable: true
    WorkloadV2Configuration:
      type: object
      description: Specifies the features configuration to apply to a workload.
      properties:
        mnnvl:
          allOf:
            - $ref: '#/components/schemas/MnnvlMode'
            - default: None
          type: string
          nullable: true
    WorkloadV2MetadataCreateParams:
      type: object
      properties:
        name:
          description: The name of the workload.
          type: string
          maxLength: 63
          example: my-workload-name
          pattern: .*
        useGivenNameAsPrefix:
          description: When true, the requested name will be treated as a prefix. The final name of the workload will be composed of the name followed by a random set of characters.
          type: boolean
          example: true
          default: false
        projectId:
          $ref: '#/components/schemas/ProjectId'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        priority:
          $ref: '#/components/schemas/PriorityClass'
        category:
          $ref: '#/components/schemas/Category'
        preemptibility:
          $ref: '#/components/schemas/Preemptibility'
        configuration:
          $ref: '#/components/schemas/WorkloadV2Configuration'
    Manifest:
      type: object
      description: The full Kubernetes manifest for the workload in JSON form. Mutually exclusive with manifestEncodedBase64.
      additionalProperties: true
      example:
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: my-app
        spec:
          replicas: 1
          selector:
            matchLabels:
              app: my-app
          template:
            metadata:
              labels:
                app: my-app
            spec:
              containers:
                - name: app
                  image: nginx:latest
    ManifestEncoded:
      type: string
      format: byte
      maxLength: 2097152
      example: YXBpVmVyc2lvbjogdjEKa2luZDogUG9kCm1ldGFkYXRhOgogIG5hbWU6IG15LXBvZApzcGVjOgogIGNvbnRhaW5lcnM6CiAgLSBuYW1lOiBuZ2lueAogICAgaW1hZ2U6IG5naW54OmxhdGVzdAo=
      description: Kubernetes YAML manifest encoded in base 64. Mutually exclusive with manifest.
    WorkloadV2CreateRequest:
      type: object
      required:
        - metadata
      properties:
        metadata:
          $ref: '#/components/schemas/WorkloadV2MetadataCreateParams'
        manifest:
          $ref: '#/components/schemas/Manifest'
        manifestBase64Encoded:
          $ref: '#/components/schemas/ManifestEncoded'
    WorkloadV2MetadataResponse:
      type: object
      required:
        - name
        - projectId
      properties:
        name:
          $ref: '#/components/schemas/WorkloadName'
        projectId:
          $ref: '#/components/schemas/ProjectId'
        priority:
          $ref: '#/components/schemas/PriorityClass'
        category:
          $ref: '#/components/schemas/Category'
        preemptibility:
          $ref: '#/components/schemas/Preemptibility'
        configuration:
          $ref: '#/components/schemas/WorkloadV2Configuration'
    GVK:
      type: object
      description: Specifies the Group, Version, and Kind (GVK) of the Kubernetes resource that defines the workload.
      required:
        - group
        - version
        - kind
      properties:
        group:
          description: The API group of the Kubernetes resource.
          type: string
          maxLength: 253
          example: apps
        version:
          description: The API version of the resource within the specified group.
          type: string
          maxLength: 250
          example: v1
        kind:
          description: The type of Kubernetes resource being referenced.
          type: string
          maxLength: 250
          example: Deployment
    DepartmentName:
      type: string
      description: The name of the department
      example: default
      minLength: 1
      pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
    WorkloadV2MetadataAutoFill:
      type: object
      required:
        - id
        - gvk
        - projectName
        - clusterId
        - tenantId
        - departmentId
        - departmentName
        - createdAt
        - createdBy
        - updatedAt
        - updatedBy
      properties:
        id:
          $ref: '#/components/schemas/WorkloadId'
        gvk:
          $ref: '#/components/schemas/GVK'
        projectName:
          $ref: '#/components/schemas/ProjectName'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        tenantId:
          $ref: '#/components/schemas/TenantId'
        departmentId:
          $ref: '#/components/schemas/DepartmentId'
        departmentName:
          $ref: '#/components/schemas/DepartmentName'
        createdAt:
          type: string
          format: date-time
          description: The timestamp for when the workload was created.
          example: '2024-01-15T10:30:00Z'
        createdBy:
          type: string
          description: Identifier of the user who created the workload.
          maxLength: 250
          format: .*
          example: user@run.ai
        updatedAt:
          type: string
          format: date-time
          description: The timestamp for the last time the workload was updated.
          example: '2024-01-15T10:35:00Z'
        updatedBy:
          type: string
          description: Identifier of the user who last updated the workload.
          maxLength: 250
          format: .*
          example: user@run.ai
        deletedAt:
          type: string
          format: date-time
          description: The timestamp indicating when the workload was deleted.
          example: '2024-01-15T10:35:00Z'
          nullable: true
        deletedBy:
          type: string
          maxLength: 250
          format: .*
          description: Identifier of the user who deleted the workload.
          example: user@run.ai
          nullable: true
    WorkloadV2Metadata:
      allOf:
        - $ref: '#/components/schemas/WorkloadV2MetadataResponse'
        - $ref: '#/components/schemas/WorkloadV2MetadataAutoFill'
    DesiredPhase:
      description: The desired phase of the workload.
      type: string
      enum:
        - Running
        - Stopped
        - Deleted
    WorkloadV2:
      type: object
      required:
        - metadata
        - desiredPhase
        - workloadManifest
        - rawManifest
      properties:
        metadata:
          $ref: '#/components/schemas/WorkloadV2Metadata'
        desiredPhase:
          $ref: '#/components/schemas/DesiredPhase'
        workloadManifest:
          $ref: '#/components/schemas/Manifest'
        rawManifest:
          $ref: '#/components/schemas/Manifest'
    WorkloadV2SyncStatus:
      type: string
      enum:
        - Queued
        - Applying
        - Deleting
        - Synced
        - Deleted
        - Failed
    WorkloadV2SyncInfo:
      type: object
      required:
        - status
      properties:
        status:
          $ref: '#/components/schemas/WorkloadV2SyncStatus'
        message:
          type: string
          maxLength: 250
          pattern: .*
    WorkloadV2GetResponse:
      type: object
      required:
        - workload
      properties:
        workload:
          $ref: '#/components/schemas/WorkloadV2'
        syncInfo:
          $ref: '#/components/schemas/WorkloadV2SyncInfo'
    WorkloadV2MetadataUpdateParams:
      type: object
      properties:
        priority:
          $ref: '#/components/schemas/PriorityClass'
        category:
          $ref: '#/components/schemas/Category'
    WorkloadV2UpdateRequest:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/WorkloadV2MetadataUpdateParams'
        manifest:
          $ref: '#/components/schemas/Manifest'
        manifestBase64Encoded:
          $ref: '#/components/schemas/ManifestEncoded'
    NIMServiceMetadataCreateParams:
      type: object
      required:
        - name
        - projectId
      properties:
        name:
          $ref: '#/components/schemas/WorkloadName'
        useGivenNameAsPrefix:
          description: When true, the requested name will be treated as a prefix. The final name of the workload will be composed of the name followed by a random set of characters.
          type: boolean
          example: true
          default: false
        projectId:
          $ref: '#/components/schemas/ProjectId'
    NimServiceSpec:
      allOf:
        - nullable: true
          properties:
            annotations:
              $ref: '#/components/schemas/Annotations'
            autoscaling:
              nullable: true
              properties:
                maxReplicas:
                  $ref: '#/components/schemas/AutoScalingMaxReplicas'
                metric:
                  $ref: '#/components/schemas/AutoScalingMetricNim'
                metricThreshold:
                  $ref: '#/components/schemas/AutoScalingMetricThreshold'
                minReplicas:
                  $ref: '#/components/schemas/AutoScalingMinReplicas'
                scaleWindowSeconds:
                  $ref: '#/components/schemas/AutoScalingScaleWindowSeconds'
              type: object
            category:
              $ref: '#/components/schemas/Category'
            compute:
              nullable: true
              properties:
                cpuCoreLimit:
                  $ref: '#/components/schemas/CpuCoreLimit'
                cpuCoreRequest:
                  $ref: '#/components/schemas/CpuCoreRequest'
                cpuMemoryLimit:
                  $ref: '#/components/schemas/CpuMemoryLimit'
                cpuMemoryRequest:
                  $ref: '#/components/schemas/CpuMemoryRequest'
                gpuDevicesRequest:
                  $ref: '#/components/schemas/GpuDevicesRequest'
                gpuMemoryLimit:
                  $ref: '#/components/schemas/GpuMemoryLimit'
                gpuMemoryRequest:
                  $ref: '#/components/schemas/GpuMemoryRequest'
                gpuPortionLimit:
                  $ref: '#/components/schemas/GpuPortionLimit'
                gpuPortionRequest:
                  $ref: '#/components/schemas/GpuPortionRequest'
                gpuRequestType:
                  $ref: '#/components/schemas/GpuRequestType'
              type: object
            environmentVariables:
              $ref: '#/components/schemas/EnvironmentVariables'
            image:
              $ref: '#/components/schemas/Image'
            imagePullPolicy:
              $ref: '#/components/schemas/ImagePullPolicy'
            imagePullSecrets:
              $ref: '#/components/schemas/ImagePullSecrets'
            labels:
              $ref: '#/components/schemas/Labels'
            modelStore:
              nullable: true
              properties:
                nimCache:
                  $ref: '#/components/schemas/NimCache'
                pvc:
                  $ref: '#/components/schemas/NimServicePvcFields'
              type: object
            multiNode:
              $ref: '#/components/schemas/NimServiceMultiNode'
            ngcAuthSecret:
              $ref: '#/components/schemas/NimServiceNgcAuthSecret'
            nodePools:
              $ref: '#/components/schemas/NodePools'
            preemptibility:
              $ref: '#/components/schemas/Preemptibility'
            priorityClass:
              $ref: '#/components/schemas/PriorityClass'
            probes:
              $ref: '#/components/schemas/Probes'
            replicas:
              $ref: '#/components/schemas/NimServiceReplicas'
            security:
              nullable: true
              properties:
                runAsGid:
                  $ref: '#/components/schemas/RunAsGid'
                runAsUid:
                  $ref: '#/components/schemas/RunAsUid'
              type: object
            servingPort:
              $ref: '#/components/schemas/NimServiceServingPort'
            tolerations:
              $ref: '#/components/schemas/Tolerations'
          type: object
    NimServiceCreateRequest:
      type: object
      required:
        - metadata
        - spec
      properties:
        metadata:
          $ref: '#/components/schemas/NIMServiceMetadataCreateParams'
        spec:
          $ref: '#/components/schemas/NimServiceSpec'
    NimServiceResponse:
      type: object
      required:
        - spec
        - metadata
        - desiredPhase
      properties:
        metadata:
          $ref: '#/components/schemas/WorkloadV2Metadata'
        desiredPhase:
          $ref: '#/components/schemas/DesiredPhase'
        spec:
          $ref: '#/components/schemas/NimServiceSpec'
    NimServiceRemovableFields:
      description: Field names that can be removed from a NIM service spec
      type: string
      enum:
        - autoscaling
        - replicas
        - compute
        - environmentVariables
        - security
        - modelStore
        - multiNode
        - probes
        - annotations
        - labels
        - tolerations
        - nodePools
        - imagePullSecrets
    NimServiceUpdateRequest:
      type: object
      required:
        - spec
      properties:
        spec:
          $ref: '#/components/schemas/NimServiceSpec'
        fieldsToRemove:
          type: array
          description: |
            List of field names to remove from the NIM service spec.
            Note: replicas and autoscaling are mutually exclusive - adding one automatically removes the other.
          items:
            $ref: '#/components/schemas/NimServiceRemovableFields'
          example:
            - autoscaling
            - environmentVariables
    YamlSubmissionSetting:
      type: object
      properties:
        enabled:
          type: boolean
          nullable: true
      example:
        enabled: false
    WorkloadsSettingsGetResponse:
      type: object
      properties:
        yamlSubmission:
          $ref: '#/components/schemas/YamlSubmissionSetting'
    WorkloadsSettingsKeyEnum:
      type: string
      enum:
        - yamlSubmission
    LogoCreationRequest:
      type: object
      required:
        - logo
      properties:
        logo:
          type: string
          description: Base64 logo file
          minLength: 1
          maxLength: 500000
    DatavolumeRequestType:
      type: string
      description: Which datavolumes to return in the GET datavolumes response. Originated - datavolumes that are originated in the permitted scopes of the caller. UsableInProject - datavolumes that can be used in a specific project; if you use this value, you must also provide the project ID in the "usableInProjectId" query param.
      example: Originated
      enum:
        - Originated
        - UsableInProject
    BaseFields:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          example: 71f69d83-ba66-4822-adf5-55ce55efd210
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        createdBy:
          type: string
          example: user@run.ai
        updatedBy:
          type: string
          example: user@run.ai
    DatavolumeCreationFields:
      type: object
      required:
        - name
        - projectId
        - originPvcName
      properties:
        name:
          type: string
          maxLength: 63
          pattern: ^[a-z][-a-z0-9]{0,62}$
          example: datavolume-a
          description: The name of the new data volume.
        description:
          type: string
          maxLength: 127
          description: A brief description of the data volume and its purpose.
          example: Results of experiment X
        originPvcName:
          description: The name of the existing PVC that the new data volume is based on.
          type: string
          example: pvc-a
        projectId:
          description: The ID of the project whose namespace contains the origin PVC.
          type: string
          example: '5'
        shouldDeleteOriginalVolume:
          description: True is not supported. This parameter will be removed in a future release.
          type: boolean
          default: false
          example: false
        useOriginalVolume:
          description: If true, the original storage volume will be used together with the data volume. Default true as long as "shouldDeleteOriginalVolume" is false.
          type: boolean
          default: true
          example: true
          nullable: true
    EnrichmentDataFields1:
      type: object
      required:
        - projectName
      properties:
        projectName:
          type: string
          example: project-a
        departmentId:
          type: string
          example: department-a
        clusterId:
          $ref: '#/components/schemas/ClusterId'
    DatavolumeInnerFields:
      allOf:
        - $ref: '#/components/schemas/BaseFields'
        - $ref: '#/components/schemas/DatavolumeCreationFields'
        - $ref: '#/components/schemas/EnrichmentDataFields1'
    DatavolumePhase:
      type: string
      description: Phase of the Datavolume in the cluster
      example: Ready
      enum:
        - Ready
        - NotReady
        - Creating
        - Deleting
        - Unknown
    Condition2:
      type: object
      required:
        - type
        - status
      properties:
        type:
          description: The type of the condition, such as Failed or Available. See Types of domain status conditions.
          type: string
          example: PvcsCreated
        status:
          type: string
          description: The status of the condition, such as True, False or Unknown.
          example: 'False'
        message:
          type: string
          description: An optional, human-readable message providing more details about the condition.
          example: Failed to create pvc in namespace 'runai-proj1'
        reason:
          type: string
          description: The reason for the Failed condition. Not applicable to other types of condition.
          example: ErrorCreatingPvc
        lastTransitionTime:
          description: A timestamp of when the condition was created or the last time time the condition transitioned from one status to another.
          type: string
          nullable: true
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
    Conditions1:
      type: array
      items:
        $ref: '#/components/schemas/Condition2'
      x-schema-name: Conditions
    DatavolumeStatus:
      type: object
      required:
        - phase
      properties:
        phase:
          $ref: '#/components/schemas/DatavolumePhase'
        phaseMessage:
          type: string
          description: Message explaining the phase of the Datavolume in the cluster
          example: Failed to copy pvc to project 'project-a'
        conditions:
          $ref: '#/components/schemas/Conditions1'
        datavolumePvcName:
          type: string
          description: The name of the copied PVC that is created in the cluster in the project namespace
          example: datavolume-pvc-1
        datavolumePvName:
          type: string
          description: The name of the PV that is created in the cluster - copied from the one that was attached to the original pvc
          example: datavolume-pv-1
    DatavolumeNoSharedScopes:
      allOf:
        - $ref: '#/components/schemas/DatavolumeInnerFields'
        - type: object
          required:
            - status
          properties:
            status:
              $ref: '#/components/schemas/DatavolumeStatus'
    DatavolumesNoSharedScopes:
      type: array
      items:
        $ref: '#/components/schemas/DatavolumeNoSharedScopes'
      x-schema-name: DatavolumesNoSharedScopes
    ScopeType2:
      type: string
      enum:
        - cluster
        - department
        - project
    SharedScopeBase:
      type: object
      required:
        - scopeType
        - scopeId
      properties:
        scopeType:
          $ref: '#/components/schemas/ScopeType2'
        scopeId:
          type: string
          example: a418ed33-9399-48c0-a890-122cadd13bfd
    SharedScope:
      allOf:
        - $ref: '#/components/schemas/SharedScopeBase'
        - type: object
          required:
            - scopeName
          properties:
            scopeName:
              type: string
              description: The name of the scope
              example: project-a
            createdAt:
              type: string
              format: date-time
            createdBy:
              type: string
              example: user@run.ai
    Datavolume:
      allOf:
        - $ref: '#/components/schemas/DatavolumeInnerFields'
        - type: object
          required:
            - status
          properties:
            sharedScopes:
              description: Will be returned only if the user has the required permissions to view those scopes
              type: array
              items:
                $ref: '#/components/schemas/SharedScope'
            status:
              $ref: '#/components/schemas/DatavolumeStatus'
    DatavolumePatchFields:
      type: object
      properties:
        description:
          type: string
          maxLength: 127
          example: Results of experiment X
    SharedScopes:
      type: array
      items:
        $ref: '#/components/schemas/SharedScope'
      x-schema-name: SharedScopes
    SharedScopesPatchRequest:
      type: object
      properties:
        add:
          type: array
          items:
            $ref: '#/components/schemas/SharedScopeBase'
          maxLength: 50
        remove:
          type: array
          items:
            $ref: '#/components/schemas/SharedScopeBase'
          maxLength: 50
    DatavolumeStatusInternal:
      allOf:
        - $ref: '#/components/schemas/DatavolumeStatus'
        - type: object
          properties:
            isDeleted:
              type: boolean
              description: If true, the datavolume is deleted in the cluster and 'phase' field is irrelevant.
              example: false
              nullable: true
    DatavolumeInternal:
      allOf:
        - $ref: '#/components/schemas/DatavolumeInnerFields'
        - type: object
          properties:
            sharedScopes:
              description: Will be returned only if the user has the required permissions to view those scopes
              type: array
              items:
                $ref: '#/components/schemas/SharedScope'
            phase:
              $ref: '#/components/schemas/DatavolumePhase'
    DatavolumeStatusForSync:
      allOf:
        - $ref: '#/components/schemas/DatavolumeStatus'
        - type: object
          required:
            - datavolumeId
          properties:
            datavolumeId:
              type: string
              format: uuid
              description: The id of the datavolume
              example: 71f69d83-ba66-4822-adf5-55ce55efd210
    InternalDatavolumeCreationFields:
      type: object
      required:
        - name
        - scope
        - originPvcName
      properties:
        name:
          type: string
          maxLength: 63
          pattern: ^[a-z][-a-z0-9]{0,62}$
          example: datavolume-a
        scope:
          $ref: '#/components/schemas/ScopeType2'
        departmentId:
          description: The ID of the department that in its namespace the origin pvc is located (mandatory if scope is department)
          type: string
          example: '4500001'
        clusterId:
          description: The ID of the cluster that in its namespace the origin pvc is located (mandatory if scope is cluster)
          type: string
          format: uuid
          example: cf8c8ea0-94e4-4177-a050-bbf9b10d9cc5
        description:
          type: string
          maxLength: 127
          example: Results of experiment X
        originPvcName:
          description: The name of the PVC that the datavolume is based on
          type: string
          example: pvc-a
    InternalEnrichmentDataFields:
      type: object
      properties:
        departmentId:
          type: string
          example: '4500001'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
    InternalDatavolume:
      allOf:
        - $ref: '#/components/schemas/BaseFields'
        - $ref: '#/components/schemas/InternalDatavolumeCreationFields'
        - $ref: '#/components/schemas/InternalEnrichmentDataFields'
        - type: object
          required:
            - status
          properties:
            sharedScopes:
              description: Will be returned only if the user has the required permissions to view those scopes
              type: array
              items:
                $ref: '#/components/schemas/SharedScope'
            status:
              $ref: '#/components/schemas/DatavolumeStatus'
    Filters:
      type: object
      maxProperties: 100
      minProperties: 0
      additionalProperties:
        type: array
        maxItems: 100
        minItems: 0
        items:
          type: string
    Quantile:
      type: number
      nullable: true
      description: the quantile value to calculate
      example: 0.5
      minimum: 0
      maximum: 1
    Label1:
      type: object
      required:
        - name
        - displayName
      properties:
        name:
          type: string
          example: nodepoolName
        displayName:
          type: string
          example: Node pool
    ReportCommonFields:
      type: object
      required:
        - name
        - range
      properties:
        name:
          type: string
          example: 2023 GPU report
        description:
          type: string
          example: This report shows the GPU usage of all projects in the organization
        labels:
          type: array
          items:
            $ref: '#/components/schemas/Label1'
        range:
          $ref: '#/components/schemas/Range'
        additionalFields:
          type: object
          additionalProperties: true
    Report1:
      allOf:
        - $ref: '#/components/schemas/ReportCommonFields'
        - $ref: '#/components/schemas/ReportCalculatedFields'
    MetricInformationForReport:
      type: object
      required:
        - name
        - displayName
      properties:
        name:
          type: string
          maxLength: 250
          minLength: 1
          example: gpu_allocation_hours
        displayName:
          type: string
          maxLength: 250
          minLength: 1
          example: GPU allocation hours
        filters:
          $ref: '#/components/schemas/Filters'
        quantile:
          $ref: '#/components/schemas/Quantile'
    ReportRequestFields1:
      type: object
      allOf:
        - type: object
          required:
            - metrics
          properties:
            metrics:
              type: array
              maxItems: 100
              minItems: 1
              items:
                $ref: '#/components/schemas/MetricInformationForReport'
        - $ref: '#/components/schemas/ReportCommonFields'
    MetricStoreType:
      type: string
      enum:
        - grafanalabs
        - mimir
        - thanos
    MetricStoreEndpointAuthType:
      type: string
      enum:
        - basic
    MetricStoreEndpointAuthBasic:
      type: object
      nullable: true
      required:
        - username
        - password
      properties:
        username:
          type: string
          maxLength: 250
        password:
          type: string
          maxLength: 1000
    MetricStoreEndpoint1:
      type: object
      required:
        - url
      properties:
        url:
          type: string
          maxLength: 2000
          minLength: 1
          format: uri
          example: http://mimir-nginx.mimir-test.svc:80/api/v1/query
        auth:
          nullable: true
          type: object
          properties:
            type:
              $ref: '#/components/schemas/MetricStoreEndpointAuthType'
            basic:
              $ref: '#/components/schemas/MetricStoreEndpointAuthBasic'
        headers:
          type: object
          maxProperties: 20
          minProperties: 0
          additionalProperties:
            type: string
            maxLength: 250
            minLength: 1
          example:
            X-Scope-OrgID: abcd
    MetricStoreDetails:
      type: object
      required:
        - type
        - read
        - write
      properties:
        type:
          $ref: '#/components/schemas/MetricStoreType'
        read:
          $ref: '#/components/schemas/MetricStoreEndpoint1'
        write:
          $ref: '#/components/schemas/MetricStoreEndpoint1'
    MetricStore1:
      type: object
      required:
        - tenantId
        - datasourceId
        - metricStoreDetails
      allOf:
        - type: object
          properties:
            tenantId:
              description: The id of the tenant.
              type: integer
              format: int32
            datasourceId:
              description: Id of datasource
              type: string
              minLength: 1
              maxLength: 255
        - type: object
          properties:
            metricStoreDetails:
              $ref: '#/components/schemas/MetricStoreDetails'
    Command1:
      type: object
      required:
        - command
      properties:
        command:
          type: string
          maxLength: 200
          minLength: 1
          example: runai version
          description: The commands that can be used to install the Run:ai CLI.
    AuditLog:
      type: object
      required:
        - tenant_id
        - subject
        - subject_type
        - action
        - result
      properties:
        id:
          type: string
          format: uuid
          maxLength: 40
        timestamp:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        tenant_id:
          type: string
          description: the ID of the tenant
          example: 12345
        subject:
          type: string
          maxLength: 500
          minLength: 1
          description: the user/app which triggered this API
          example: researcher@run.ai
        subject_type:
          type: string
          enum:
            - User
            - App
          default: User
        source_ip:
          type: string
          format: ipv4
          maxLength: 250
        action:
          type: string
          enum:
            - create
            - update
            - delete
            - sign-in
            - sign-out
            - reset-password
        http_method:
          type: string
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
            - CREATE
        url:
          type: string
          format: uri
          maxLength: 2000
        entity_type:
          type: string
          example: project
          maxLength: 500
        entity_name:
          type: string
          example: project-1
        entity_id:
          type: string
          example: '1234'
        result:
          type: string
          enum:
            - Succeeded
            - Failed
        http_status_code:
          type: integer
          example: 200
          maximum: 599
        cluster_name:
          type: string
          example: my favorite cluster
          maxLength: 500
        cluster_id:
          type: string
          format: uuid
          maxLength: 40
        request_id:
          type: string
          format: uuid
          example: bb0c4742-e52f-4d5e-bfee-2c4ff57c339c
          maxLength: 40
        metadata:
          type: object
          maxProperties: 10
          additionalProperties:
            type: string
    AuditLogs:
      type: array
      items:
        $ref: '#/components/schemas/AuditLog'
      x-schema-name: AuditLog
    NotificationType:
      type: object
      required:
        - category
        - type
        - description
      properties:
        category:
          type: string
        type:
          type: string
        description:
          type: string
      example:
        category: Workload status change
        type: Creating
        description: Workload and associated resources are being created in the cluster
    NotificationTypes:
      type: array
      items:
        $ref: '#/components/schemas/NotificationType'
    NotificationStateStatus:
      type: object
      properties:
        enabled:
          type: boolean
          nullable: true
    NotificationState:
      type: object
      properties:
        email:
          $ref: '#/components/schemas/NotificationStateStatus'
        slack:
          $ref: '#/components/schemas/NotificationStateStatus'
      example:
        email:
          enabled: true
        slack:
          enabled: true
    SlackDetails:
      type: object
      properties:
        settings:
          type: object
          properties:
            workspaceName:
              type: string
              nullable: true
            appCredentialsConfigured:
              type: boolean
              nullable: true
    EmailAuthType:
      type: string
      enum:
        - auth_login
        - auth_plain
        - auth_none
        - ''
      default: auth_login
    EmailNotificationChannelConfig:
      type: object
      properties:
        username:
          type: string
          maxLength: 250
        password:
          type: string
          maxLength: 250
        smtpHost:
          type: string
          maxLength: 250
        from:
          type: string
          maxLength: 250
        smtpPort:
          type: integer
          default: 587
          maximum: 65535
        authType:
          $ref: '#/components/schemas/EmailAuthType'
        smtpTlsEnabled:
          type: boolean
          nullable: true
        recipients:
          type: array
          items:
            type: string
          default: []
          minItems: 0
          maxItems: 100
        fromDisplayName:
          type: string
          default: Run:ai
          maxLength: 250
        directNotifications:
          type: boolean
          nullable: true
        useAttachments:
          type: boolean
          nullable: true
        subject:
          type: string
          default: Run:ai notification - {{ .category }} {{ .reason }}
          maxLength: 250
      example:
        username: email@gmail.com
        password: 123456
        smtpHost: smtp.gmail.com
        from: email@gmail.com
        subject: My subject
    EmailChannelConfig:
      type: object
      required:
        - smtpHost
      allOf:
        - $ref: '#/components/schemas/EmailNotificationChannelConfig'
    EmailChannel:
      type: object
      required:
        - config
      properties:
        config:
          $ref: '#/components/schemas/EmailChannelConfig'
      example:
        config:
          username: email@gmail.com
          password: 123456
          smtpHost: smtp.gmail.com
          from: email@gmail.com
          subject: My subject
    EmailChannelConfigForPatch:
      type: object
      allOf:
        - $ref: '#/components/schemas/EmailNotificationChannelConfig'
    EmailChannelForPatch:
      type: object
      required:
        - config
      properties:
        config:
          $ref: '#/components/schemas/EmailChannelConfigForPatch'
      example:
        config:
          username: email@gmail.com
          password: 123456
          smtpHost: smtp.gmail.com
          from: email@gmail.com
          subject: My subject
    ValidateSinkResponse:
      type: object
      properties:
        status:
          type: boolean
        message:
          type: string
      required:
        - status
      example:
        status: false
        message: smtp server validation failed
    NotificationChannelMeta:
      type: object
      required:
        - name
        - type
      properties:
        name:
          type: string
        type:
          type: string
          enum:
            - email
            - slack
          default: email
      example:
        name: my-email
        type: email
    NotificationChannelType:
      type: string
      enum:
        - email
        - slack
      default: email
    SlackNotificationChannelConfig:
      type: object
      properties:
        recipients:
          type: array
          items:
            type: string
          default: []
          minItems: 0
          maxItems: 100
        directNotifications:
          type: boolean
          nullable: true
        apiToken:
          type: string
          maxLength: 500
      example:
        apiToken: <your_api_token>
    NotificationChannelConfig:
      type: object
      allOf:
        - $ref: '#/components/schemas/EmailNotificationChannelConfig'
        - $ref: '#/components/schemas/SlackNotificationChannelConfig'
    NotificationChannelForPatch:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/NotificationChannelType'
        config:
          allOf:
            - $ref: '#/components/schemas/NotificationChannelConfig'
          example:
            username: email@gmail.com
            password: 123456
            smtpHost: smtp.gmail.com
            from: email@gmail.com
            subject: My subject
    NotificationChannel:
      type: object
      required:
        - type
        - config
      allOf:
        - $ref: '#/components/schemas/NotificationChannelForPatch'
    SlackNotificationChannel:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/SlackNotificationChannelConfig'
    SlackNotificationChannelPatchRequest:
      type: object
      required:
        - config
      properties:
        name:
          type: string
          readOnly: true
        config:
          type: object
          properties:
            recipients:
              type: array
              items:
                type: string
              default: []
              minItems: 0
              maxItems: 100
            directNotifications:
              type: boolean
              nullable: true
    DetailedSlackNotificationsState:
      type: object
      allOf:
        - $ref: '#/components/schemas/NotificationStateStatus'
        - $ref: '#/components/schemas/SlackDetails'
      example:
        enabled: true
        settings:
          workspaceName: <your_workspace_name>
          appCredentialsConfigured: true
    CreateSlackAppRequestBody:
      type: object
      required:
        - accessToken
      properties:
        accessToken:
          type: string
          description: The access token required for creating slack app
          maxLength: 1000
      example:
        accessToken: <your_access_token>
    CreateSlackAppResponse:
      type: object
      required:
        - slackAppUrl
      properties:
        slackAppUrl:
          type: string
      example:
        slackAppUrl: https://api.slack.com/apps/A089PHD5S0Q
    NotificationChannelResponse:
      type: object
      required:
        - type
        - config
        - name
      allOf:
        - $ref: '#/components/schemas/NotificationChannel'
        - type: object
          properties:
            name:
              type: string
    NotificationChannelForValidate:
      type: object
      required:
        - type
        - config
      allOf:
        - $ref: '#/components/schemas/NotificationChannelForPatch'
    SubscriptionEvent:
      type: object
      required:
        - category
        - types
      properties:
        category:
          type: string
        types:
          type: array
          items:
            type: string
    SubscriptionEvents:
      type: array
      items:
        $ref: '#/components/schemas/SubscriptionEvent'
      minItems: 0
      maxItems: 100
    SubscriptionForPut:
      type: object
      required:
        - events
        - channels
      properties:
        events:
          $ref: '#/components/schemas/SubscriptionEvents'
        channels:
          type: array
          items:
            type: string
          minItems: 0
          maxItems: 100
      example:
        events:
          - category: cat1
            types:
              - type1
              - type2
          - category: cat2
            types:
              - type3
              - type4
        channels:
          - email
          - email1
    Subscription:
      type: object
      required:
        - events
        - channels
      allOf:
        - $ref: '#/components/schemas/SubscriptionForPut'
        - type: object
          properties:
            id:
              type: string
              maxLength: 100
      example:
        id: 1234
        events:
          - category: cat1
            types:
              - type1
              - type2
          - category: cat2
            types:
              - type3
              - type4
        channels:
          - email
          - email1
    Subscriptions:
      type: array
      items:
        $ref: '#/components/schemas/Subscription'
  responses:
    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.
    503ServiceUnavailable:
      description: unexpected error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 503
            message: Please try again in few minutes.
    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.
    400BadRequest:
      description: Bad request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 400
            message: Required parameter is missing
    204NoContent:
      description: No Content.
    202Accepted:
      description: Accepted.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HttpResponse'
          example:
            code: 202
            message: Request has been accepted.
    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
    409Conflict:
      description: The specified resource already exists
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 409
            message: Resource with this name already exists
    412PreconditionFailed:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 412
            message: Precondition failed
    413RequestEntityTooLarge:
      description: Request entity too large
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    415UnsupportedMediaType:
      description: Unsupported media type
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    501NotImplemented:
      description: unexpected error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 501
            message: Not implemented
    400SubmissionErrorV2:
      description: Bad submission request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SubmissionErrorV2'
          example:
            code: 400
            message: The workload request does not comply with the policy set by the administrator
    V1StorageClassNames:
      description: Expected response to a valid request
      content:
        application/json:
          schema:
            type: object
            properties:
              storageClasses:
                type: array
                items:
                  type: string
                example:
                  - standard
            example:
              storageClasses:
                - standard
    V1Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V1Error'
    V1NotFound:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/V1Error'
  parameters:
    ClusterUuid:
      name: clusterUuid
      in: path
      required: true
      description: The Universally Unique Identifier (UUID) of the cluster.
      schema:
        type: string
        format: uuid
        minLength: 1
        example: 9f55255e-11ed-47c7-acef-fc4054768dbc
    QueryNodeName:
      name: nodeName
      in: query
      description: Deprecated - use filterBy instead. The node name; Cannot be used together with filterBy, sort, offset, limit or search query params.
      schema:
        type: string
      required: false
    NodesFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|status|nodePool|gpuType|nvLinkDomainUid|nvLinkCliqueId|clusterUuid)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    NodesSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/NodeFilterSortFields'
    SortOrder:
      name: sortOrder
      in: query
      required: false
      description: Sort results in descending or ascending order.
      schema:
        type: string
        enum:
          - asc
          - desc
        default: asc
    Offset:
      name: offset
      in: query
      required: false
      description: The offset of the first item returned in the collection.
      schema:
        type: integer
        format: int32
        example: 100
    Limit:
      name: limit
      in: query
      required: false
      description: The maximum number of entries to return.
      schema:
        type: integer
        format: int32
        default: 50
        minimum: 1
        maximum: 500
    Search:
      name: search
      in: query
      required: false
      description: Filter results by a free text search.
      schema:
        type: string
        example: test project
    NodeName:
      name: nodeName
      in: path
      description: The node name.
      schema:
        type: string
      required: true
    QueryVerbosity:
      name: verbosity
      in: query
      required: false
      description: |
        response verbosity level.
      example: full
      schema:
        type: string
        enum:
          - metadata
          - full
        default: full
    QueryIncludeRequestedForDelete:
      name: includeRequestedForDelete
      in: query
      required: false
      example: true
      schema:
        type: boolean
      description: When true, includes clusters that are marked for deletion
    ClustersMinimalFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter clusters by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name==my-cluster
      explode: false
    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
    StartRequired:
      name: start
      in: query
      description: Start date of time range to fetch data in ISO 8601 timestamp format.
      required: true
      schema:
        type: string
        format: date-time
        example: '2023-06-06T12:09:18.211Z'
    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'
    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
    MetricsType:
      name: metricType
      in: query
      required: true
      description: specifies what data to request
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/MetricsType'
    ClusterMetricsGroupBy:
      name: groupBy
      in: query
      description: |
        Labels to group the returned metrics data by. Grouping availability depends on the selected metric type. Supported values: "category" (workload category) or "node pool".
      explode: false
      required: false
      schema:
        type: string
        enum:
          - Category
          - Nodepool
          - Project
          - Department
      example: Category
    FilterByNodepoolName:
      name: nodepoolName
      in: query
      description: Filter using the nodepool.
      required: false
      schema:
        type: string
        example: default
    NodepoolPath:
      in: path
      name: nodepoolName
      required: true
      description: The unique nodepool name.
      schema:
        type: string
        example: default
    NodepoolId:
      name: nodepoolId
      in: path
      required: true
      description: The unique id identifying the Node Pool.
      schema:
        type: string
        example: 17
    ClusterIdRequired:
      name: clusterId
      in: query
      description: The id of the cluster
      required: true
      schema:
        type: string
        format: uuid
        example: d73a738f-fab3-430a-8fa3-5241493d7128
    NodepoolsFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|clusterId|phase|createdAt|updatedAt|gpuNetworkAccelerationDetection|networkTopologyName|gpuNetworkAccelerationDetected|gpuNetworkAccelerationLabelKey|swapEnabled|nodeLevelSchedulerEnabled)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    NodepoolsSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/NodepoolSortFilterFields'
    NodepoolsMinimalFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(clusterId)(==|!=|<=|>=).+$
        example:
          - clusterId==d73a738f-fab3-430a-8fa3-5241493d7128
      explode: false
    NodepoolsMinimalSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameter.
      schema:
        $ref: '#/components/schemas/NodepoolMinimalSortFields'
    ClusterVersion:
      name: version
      in: query
      required: true
      description: The cluster version to install
      schema:
        type: string
        example: 2.16
    ClusterRemoteURL:
      name: remoteClusterUrl
      in: query
      required: false
      description: The remote URL of the runai cluster
      schema:
        type: string
        example: https://cluster.runai
    FilterByCluster:
      name: clusterId
      in: query
      description: Filter using the Universally Unique Identifier (UUID) of the cluster.
      required: false
      schema:
        type: string
        format: uuid
        example: d73a738f-fab3-430a-8fa3-5241493d7128
    TelemetryGroupBy:
      name: groupBy
      in: query
      description: workload fields to group the data by
      explode: false
      required: false
      schema:
        type: array
        maxItems: 2
        items:
          type: string
          enum:
            - ClusterId
            - Nodepool
            - Node
    TelemetryType:
      name: telemetryType
      in: query
      required: true
      description: specifies what data to request
      schema:
        $ref: '#/components/schemas/NodeTelemetryType'
    NodeId:
      name: nodeId
      in: path
      description: The node UUID.
      schema:
        type: string
        format: uuid
        minLength: 1
        example: 9f55255e-11ed-47c7-acef-fc4054768dbc
      required: true
    NodeMetricTypes:
      name: metricType
      in: query
      required: true
      description: Specify which data to request.
      explode: false
      schema:
        type: array
        minItems: 1
        maxItems: 10
        items:
          $ref: '#/components/schemas/NodeMetricType'
    NetworkTopologiesFilterBy:
      name: filterBy
      in: query
      required: false
      description: 'Filter results by a parameter. Use the format field-name operator value. Supported operators:  == Equals  != Not equals  <= Less than or equal  >= Greater than or equal  =@ Contains !@ Does not contain  =^ Starts with  =$ Ends with Date values must be in ISO 8601 timestamp format. Only the following operators support dates: ==, !=, <=, >=.'
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|clusterId|source|phase)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - clusterId==123e4567-e89b-12d3-a456-426614174000
          - source=@Run.ai
      explode: false
    NetworkTopologyId:
      name: networkTopologyId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: The unique identifier for the network topology
      example: 123e4567-e89b-12d3-a456-426614174000
    nodeName:
      $ref: '#/components/parameters/NodeName'
    queryNodeName:
      $ref: '#/components/parameters/QueryNodeName'
    queryVerbosity:
      $ref: '#/components/parameters/QueryVerbosity'
    DepartmentId:
      name: departmentId
      in: path
      required: true
      description: The id of the department.
      schema:
        type: string
        example: '1'
        pattern: .*
    ProjectId:
      name: projectId
      in: path
      required: true
      description: The project id
      example: 575c19e8-c7c3-45b0-8290-2f47397a8383
      schema:
        type: string
    ReportsFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|createdAt|createdBy|status)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    ReportsSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/ReportFilterAndSortFields'
    ReportId:
      name: reportId
      in: path
      required: true
      description: The report id
      example: 575c19e8-c7c3-45b0-8290-2f47397a8383
      schema:
        type: string
        format: uuid
    DepartmentsFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|clusterId|totalGpuQuota|gpuAllocated|createdAt|avgGpuAllocation24h|avgGpuUtilization24h|avgGpuMemoryUtilization24h|avgGpuAllocation7d|avgGpuUtilization7d|avgGpuMemoryUtilization7d|avgGpuAllocation30d|avgGpuUtilization30d|avgGpuMemoryUtilization30d)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    DepartmentsSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/DepartmentFilterSortFields'
    DepartmentsVerbosity:
      name: verbosity
      in: query
      required: false
      description: Departments verbosity. If it is set to "verbose", status will be returned. If it is not defined or set to "brief" only unit specific data will be returned.
      example: verbose
      schema:
        $ref: '#/components/schemas/Verbosity'
    OrgUnitMetricTypes:
      name: metricType
      in: query
      required: true
      description: Specify which data to request.
      explode: false
      schema:
        type: array
        maxItems: 10
        items:
          $ref: '#/components/schemas/OrgUnitMetricType'
    FilterByDepartment:
      name: departmentId
      in: query
      description: Filter using the department id.
      required: false
      schema:
        type: string
        example: '1'
    TelemetryGroupByDepartment:
      name: groupBy
      in: query
      description: department fields to group the data by
      explode: false
      required: false
      schema:
        type: array
        maxItems: 2
        items:
          type: string
          enum:
            - CLUSTER_ID
    TelemetryType1:
      name: telemetryType
      in: query
      required: true
      description: specifies what data to request
      schema:
        $ref: '#/components/schemas/OrgUnitTelemetryType'
    ProjectsFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|clusterId|departmentId|parentId|parentName|phase|totalGpuQuota|gpuAllocated|createdAt|avgGpuAllocation24h|avgGpuUtilization24h|avgGpuMemoryUtilization24h|avgGpuAllocation7d|avgGpuUtilization7d|avgGpuMemoryUtilization7d|avgGpuAllocation30d|avgGpuUtilization30d|avgGpuMemoryUtilization30d)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    ProjectsSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/ProjectFilterSortFields'
    FilterByNodepoolId:
      name: nodepoolId
      in: query
      description: Filter using the nodepool.
      required: false
      schema:
        type: string
        example: '1'
    TelemetryGroupByProject:
      name: groupBy
      in: query
      description: project fields to group the data by
      explode: false
      required: false
      schema:
        type: array
        maxItems: 2
        items:
          type: string
          enum:
            - ClusterId
            - NodepoolId
            - ParentId
            - ProjectId
    NodeTypeId:
      name: nodeTypeId
      in: path
      required: true
      description: The node-type id
      example: 575c19e8-c7c3-45b0-8290-2f47397a8383
      schema:
        type: string
    DepartmentNodePoolResourcesFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(nodePoolName|nodePoolId|orgUnitId|orgUnitName|rank|clusterId)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - nodePoolName!=some-name
      explode: false
    DepartmentNodePoolResourcesSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/DepartmentNodePoolResourcesFilterSortFields'
    ProjectNodePoolResourcesFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(nodePoolName|nodePoolId|parentId|orgUnitId|orgUnitName|rank|clusterId)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - nodePoolName!=some-name
      explode: false
    ProjectNodePoolResourcesSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/ProjectNodePoolResourcesFilterSortFields'
    projectId:
      $ref: '#/components/parameters/ProjectId'
    nodeTypeId:
      $ref: '#/components/parameters/NodeTypeId'
    AssetNameFilter:
      name: name
      in: query
      required: false
      description: Filter results by name.
      schema:
        type: string
    AssetScopeFilter:
      name: scope
      in: query
      required: false
      description: 'Filters results by scope. Returns only assets that belong to the specified scope. Mutually exclusive with includeDescendants. Valid values: tenant, cluster, department, project.'
      schema:
        type: string
    AssetProjectFilter:
      name: projectId
      in: query
      required: false
      description: Filter results by project id. If scope filter is project, only assets from the specific project will be included in the response. Otherwise, the response will include project, department, cluster, tenant and system assets.
      schema:
        type: integer
        format: int32
    IncludeUsageInfo:
      name: usageInfo
      in: query
      required: false
      description: Whether the query should include asset usage information as part of the response.
      schema:
        type: boolean
    ComplyToProject:
      name: complyToProject
      in: query
      required: false
      description: Include workload creation compliance information of an asset, for a given project, as part of the response. To check compliance, you need to provide both project id and workload type.
      schema:
        type: integer
        format: int32
    ComplyToWorkloadType:
      name: complyToWorkloadType
      in: query
      required: false
      description: Include workload creation compliance information of an asset, for a given workload type, as part of the response. To check compliance, you need to provide both project id and workload type.
      schema:
        type: string
        enum:
          - Workspace
          - Training
          - Distributed
          - Inference
          - DistributedInference
    ComplyToReplicaType:
      name: complyToReplicaType
      in: query
      required: false
      description: Include workload creation compliance information of an asset, for a given replica type, as part of the response. To check compliance, you need to provide both project id and workload type. For distributed, replica type should be provided as well.
      schema:
        type: string
        enum:
          - Worker
          - Master
          - Leader
    AssetDepartmentFilter:
      name: departmentId
      in: query
      description: Filter results by department id. If scope filter is department, only assets from the specific department will be included in the response. Otherwise, the response will include department, cluster, tenant and system assets.
      required: false
      schema:
        type: string
        example: '1'
    AssetClusterFilter:
      name: clusterId
      in: query
      description: Filter results by Universally Unique Identifier (UUID) of the cluster. If scope filter is cluster, only assets from the specific cluster will be included in the response. Otherwise, the response will include cluster, tenant and system assets.
      required: false
      schema:
        type: string
        format: uuid
        example: d73a738f-fab3-430a-8fa3-5241493d7128
    includeDescendants:
      name: includeDescendants
      in: query
      required: false
      description: Indicates whether to include assets from all descendant scopes under the specified scope. When set to true, and a specific scope identifier (for example, clusterId) is provided, the query also returns assets from all nested scopes within it (for example, departments and projects).  Mutually exclusive with scope.
      schema:
        type: boolean
    AssetId:
      name: AssetId
      in: path
      required: true
      description: Unique identifier of the asset.
      schema:
        type: string
        format: uuid
        minLength: 1
    IncludeStatus:
      name: statusInfo
      in: query
      required: false
      description: Whether the query should include asset status information as part of the response.
      schema:
        type: boolean
    SearchName:
      name: searchName
      in: query
      required: false
      description: Filter results that contains searchName.
      schema:
        type: string
      allowReserved: true
    DistributedFrameworkQuery:
      name: distributedFramework
      in: query
      required: false
      description: Filter results to workload of type distributed and distributedFramework.
      schema:
        type: string
      allowReserved: true
    IsDistributedQuery:
      name: isDistributed
      in: query
      required: false
      description: Filter results to workload of type distributed.
      schema:
        type: boolean
      allowReserved: true
    IsTrainingQuery:
      name: isTraining
      in: query
      required: false
      description: Filter results to workload of type training.
      schema:
        type: boolean
      allowReserved: true
    IsWorkspaceQuery:
      name: isWorkspace
      in: query
      required: false
      description: Filter results to workload of type workspace.
      schema:
        type: boolean
      allowReserved: true
    IsInferenceQuery:
      name: isInference
      in: query
      required: false
      description: Filter results to workload of type inference.
      schema:
        type: boolean
      allowReserved: true
    IsDistributedInferenceQuery:
      name: isDistributedInference
      in: query
      required: false
      description: Filter results to workload of type distributed inference.
      schema:
        type: boolean
      allowReserved: true
    AssetIdsFilter:
      name: assetIds
      in: query
      required: false
      description: Filter results by the ids of the assets. Provided value should be a comma separated string of UUIDs.
      schema:
        type: string
        example: dbf4767e-2fa1-43b0-97a2-7c0cecda180b,550e8400-e29b-41d4-a716-44665544000a
        pattern: ^\b(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})(?:,(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))*\b$
    WorkloadId:
      name: workloadId
      in: path
      required: true
      description: The  Universally Unique Identifier (UUID) of the workload.
      schema:
        type: string
        format: uuid
    ScopeType:
      name: scopeType
      in: query
      required: true
      description: The resource scope type to filter by.
      schema:
        type: string
        enum:
          - tenant
          - cluster
          - department
          - project
    WorkloadType:
      name: workloadType
      in: query
      required: false
      description: Policy for a specific workload type.
      schema:
        type: string
        minLength: 1
        enum:
          - Workspace
          - Training
          - Distributed
          - Inference
          - DistributedInference
    FilterByProject:
      name: projectId
      in: query
      description: project id to filter by
      required: false
      schema:
        type: string
        example: '1'
    IncludeFallbackPolicies:
      name: includeFallbackPolicies
      in: query
      required: false
      description: whether to include fallback policies in the list. Default to false.
      schema:
        type: boolean
    PolicyScope:
      name: scope
      in: query
      required: true
      description: The scope that the policy relates to.
      schema:
        type: string
        enum:
          - tenant
          - cluster
          - department
          - project
    ValidateOnly:
      name: validateOnly
      in: query
      required: false
      description: Validate the given policy payload without applying it
      schema:
        type: boolean
    ApproveClusterDeletion:
      name: approveClusterDeletion
      in: query
      required: false
      description: Required when modifying or deleting a policy if the tenant includes one or more clusters running version 2.20 or earlier. In such cases, the platform must delete the policy from the affected clusters. This flag indicates that the administrator approves this deletion.
      schema:
        type: boolean
    ScopeId1:
      name: scopeId
      in: query
      description: filter by scope id
      schema:
        type: string
      required: false
    nameFilter:
      name: name
      in: query
      description: filter by name
      schema:
        type: string
      required: false
    originFilter:
      name: origin
      in: query
      description: filter by the origin of the resource. by default, we have to list only customer existing resources (to preserve backward compatibility) to list both existing pvc and assets related pvcs use 'all'.
      schema:
        type: string
        enum:
          - all
          - assets
          - existing
      required: false
    PVCName:
      name: pvcName
      in: path
      description: The pvc name.
      schema:
        type: string
      required: true
    Namespace:
      name: namespace
      in: path
      description: The namespace of the project.
      schema:
        type: string
      required: true
    secretTypeFilter:
      name: secretType
      in: query
      description: filter by secret type. supported values - password, access-key, docker-registry.
      schema:
        type: string
      required: false
    SecretName:
      name: secretName
      in: path
      description: The secret name.
      schema:
        type: string
      required: true
    uuid:
      in: path
      name: uuid
      description: Unique identifier of the cluster
      required: true
      schema:
        type: string
        format: uuid
    V1Storage_class_name:
      in: path
      name: storage_class_name
      description: Unique identifier of the storageClass
      required: true
      schema:
        type: string
        format: string
    StorageClassConfigurationFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        items:
          type: string
          pattern: ^(name|tenantId|scopeType|scopeId)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    StorageClassConfigurationSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        type: string
        enum:
          - name
          - tenantId
          - scopeType
          - scopeId
    StorageClassConfigurationId:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: unique identifier of the storage class configuration
    kotClusterUuid:
      $ref: '#/components/parameters/ClusterUuid'
    departmentId:
      $ref: '#/components/parameters/DepartmentId'
    namespace:
      $ref: '#/components/parameters/Namespace'
    pvcName:
      $ref: '#/components/parameters/PVCName'
    secretName:
      $ref: '#/components/parameters/SecretName'
    name:
      $ref: '#/components/parameters/nameFilter'
    type:
      $ref: '#/components/parameters/secretTypeFilter'
    scopeId:
      $ref: '#/components/parameters/ScopeId1'
    origin:
      $ref: '#/components/parameters/originFilter'
    RoleIdPath:
      name: roleIdPath
      in: path
      required: true
      description: The ID of the role
      example: 32
      schema:
        type: integer
        format: int32
        minimum: 0
    RolesSort:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameter.
      schema:
        $ref: '#/components/schemas/RolesSortFilterFields'
    RolesFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|createdAt|createdBy|custom|scopeType|enabled)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
      example:
        - name!=some-access-rule-name
        - createdAt>=2023-01-01T00:00:00Z
      explode: false
    PermissionSetId:
      name: permissionSetId
      in: path
      required: true
      schema:
        type: string
        format: uuid
    SubjectTypeOptional:
      name: subjectType
      in: query
      required: false
      description: The type of resource we want to filter by.
      schema:
        type: string
        example: user
    SubjectIdOptional:
      name: subjectIdFilter
      in: query
      required: false
      description: Part of the subject id that we want to filter by.
      deprecated: true
      schema:
        type: string
        example: some.user
    SubjectIds:
      name: subjectIds
      in: query
      required: false
      description: The ids of the subjects to filter the response for.
      explode: false
      schema:
        type: array
        maxItems: 100
        items:
          type: string
          example: some.user@run.ai
    LastUpdated:
      name: lastUpdated
      in: query
      required: false
      description: Filter by last update time.
      schema:
        type: string
        example: '2021-12-14T16:04:15.099Z'
    IncludeDeleted:
      name: includeDeleted
      in: query
      required: false
      description: True to include deleted objects in the result.
      schema:
        type: boolean
        example: false
        default: false
    ScopeTypeOptionalQueryDeprecated:
      name: scopeType
      in: query
      required: false
      description: The type of resource we want to filter by.
      deprecated: true
      schema:
        type: string
        example: project
    ScopeIdOptional:
      name: scopeId
      in: query
      required: false
      description: The scope resource id that we want to filter by.
      schema:
        type: string
        example: '2'
    RoleId:
      name: roleId
      in: query
      required: false
      description: The role id we want to filter by.
      deprecated: true
      schema:
        type: integer
        format: int32
        minimum: 1
    AccessRulesSort:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameter.
      schema:
        $ref: '#/components/schemas/AccessRulesSortFilterFields'
    AccessRulesFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(subjectId|subjectType|roleId|scopeId|scopeType|roleName|scopeName|createdAt|deletedAt|createdBy|phase)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
      example:
        - name!=some-access-rule-name
        - createdAt>=2023-01-01T00:00:00Z
      explode: false
    AccessRuleId:
      name: accessRuleId
      in: path
      required: true
      description: The id of the access rule to retrieve
      example: 32
      schema:
        type: integer
        format: int32
        minimum: 0
    DryRun:
      name: dryRun
      in: query
      required: false
      description: True to perform validations only, without side effects.
      schema:
        type: boolean
        example: false
        default: false
    ScopeTypeQuery:
      $ref: '#/components/parameters/ScopeTypeOptionalQueryDeprecated'
    idp:
      name: idp
      in: path
      required: true
      description: The alias of the idp
      schema:
        type: string
    usersFilterBy:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are <= Less than or equal, >= Greater than or equal, =@ contains. Dates are in ISO 8601 timestamp format and available for operators <=, >= and ==.
      schema:
        type: array
        items:
          type: string
          pattern: ^(username|createdBy|lastLogin|creationTime|lastUpdated|isLocal)(==|<=|>=|=@).+$
        example:
          - username=@test,lastLogin>=2024-09-24T00:00:00.00Z,isLocal==false
      explode: false
    usersSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        $ref: '#/components/schemas/UsersFilterSortFields'
    limit:
      name: limit
      in: query
      required: false
      description: The maximum number of entries to return.
      schema:
        type: integer
        format: int32
        default: 500
        minimum: 1
        maximum: 500
    search:
      name: search
      in: query
      required: false
      description: Filter results by a free text search.
      schema:
        type: string
        example: test@run
    userId:
      name: userId
      in: path
      required: true
      description: The id of the user
      schema:
        type: string
    appId:
      name: appId
      in: path
      required: true
      description: The application id to retrieve
      schema:
        type: string
    serviceAccountId:
      name: serviceAccountId
      in: path
      required: true
      description: Service account id
      schema:
        type: string
        example: 6d2894ba-f998-4039-bba1-caba57caf681
    accessKeyId:
      name: accessKeyId
      in: path
      required: true
      description: The access key ID
      schema:
        type: string
    settingsKey:
      name: key
      in: path
      required: true
      description: The settings key
      schema:
        $ref: '#/components/schemas/settingsKeyEnum'
    isHardDelete:
      name: isHardDelete
      in: query
      description: Boolean indicator for soft/hard delete
      schema:
        type: boolean
    exchangeCode:
      name: code
      in: query
      required: true
      description: The exchange code retrieved from the idp server
      schema:
        type: string
    redirectUri:
      name: redirect_uri
      in: query
      required: true
      description: The redirect uri to redirect to after the authorization server completes the authorization flow
      schema:
        type: string
    refreshToken:
      name: refresh_token
      in: query
      required: true
      description: The refresh token retrieved from the idp server
      schema:
        type: string
    appType:
      name: appType
      in: query
      required: true
      description: The type of application
      schema:
        type: string
        enum:
          - Agent
          - MimirWriter
    code:
      $ref: '#/components/parameters/exchangeCode'
    redirect_url:
      $ref: '#/components/parameters/redirectUri'
    refresh_token:
      $ref: '#/components/parameters/refreshToken'
    app_type:
      $ref: '#/components/parameters/appType'
    is_hard_delete:
      $ref: '#/components/parameters/isHardDelete'
    WorkloadsFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(type|name|clusterId|projectId|projectName|departmentId|departmentName|createdAt|deletedAt|submittedBy|phase|completedAt|nodepool|distributedFramework|allocatedGPU|idleGpus|idleAllocatedGpus|phaseUpdatedAt|category|totalPendingTimeSeconds|totalRunningTimeSeconds|priority|priorityClassName|guaranteedRuntimeEndsAt|aiApplicationId|aiApplicationName)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-workload-name
          - allocatedGPU>=2
          - createdAt>=2021-01-01T00:00:00Z
      explode: false
    Deleted:
      name: deleted
      in: query
      description: Return only deleted resources when `true`.
      schema:
        type: boolean
    WorkloadsSort:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameter.
      schema:
        type: string
        enum:
          - type
          - name
          - clusterId
          - projectId
          - projectName
          - departmentId
          - departmentName
          - createdAt
          - deletedAt
          - submittedBy
          - phase
          - completedAt
          - nodepool
          - distributedFramework
          - allocatedGPU
          - idleGpus
          - idleAllocatedGpus
          - phaseUpdatedAt
          - category
          - priority
          - totalPendingTimeSeconds
          - totalRunningTimeSeconds
          - priorityClassName
          - guaranteedRuntimeEndsAt
          - aiApplicationId
          - aiApplicationName
    TelemetryGroupBy1:
      name: groupBy
      in: query
      description: Group workloads by field.
      explode: false
      required: false
      schema:
        type: array
        maxItems: 2
        items:
          type: string
          enum:
            - ClusterId
            - DepartmentId
            - ProjectId
            - Type
            - CurrentNodepools
            - RequestedNodepools
            - Phase
            - Category
    TelemetryType2:
      name: telemetryType
      in: query
      required: true
      description: Specifies the telemetry type.
      schema:
        $ref: '#/components/schemas/WorkloadTelemetryType'
    FilterByPhases:
      name: filterByPhases
      in: query
      required: false
      description: Filter workloads by specific phases. If not specified, all phases are included.
      explode: false
      schema:
        type: array
        maxItems: 10
        items:
          $ref: '#/components/schemas/Phase'
        example:
          - Running
          - Failed
    PodsSort:
      name: sortBy
      in: query
      required: false
      description: Sort results using a parameter.
      schema:
        type: string
        enum:
          - name
          - clusterId
          - workloadId
          - revisionId
          - nodeName
          - currentNodepool
          - task
          - createdAt
          - completedAt
          - deletedAt
    PodsFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results using a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contains, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.
      schema:
        type: array
        items:
          type: string
          pattern: ^(name|clusterId|workloadId|revisionId|nodeName|currentNodepool|task|createdAt|completedAt|deletedAt|elementId)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - nodeName!=some-node-name
      explode: false
    PodsQueryVerbosity:
      name: verbosity
      in: query
      required: false
      description: |
        response verbosity level. if full, the response includes workloadName and projectName fields.
      example: full
      schema:
        $ref: '#/components/schemas/PodVerbosity'
    Completed:
      name: completed
      in: query
      description: Return only completed resources when 'true', return only non-completed resources when 'false'. By default, or when empty, returns all resources.
      schema:
        type: string
        default: all
    PodId:
      name: podId
      in: path
      description: The requested pod id.
      schema:
        type: string
        format: uuid
      required: true
    PodMetricTypes:
      name: metricType
      in: query
      required: true
      description: Specify which metric data to request. Advanced GPU metrics are only supported if the 'Advanced GPU Metrics' feature flag in the settings is enabled.
      explode: false
      schema:
        type: array
        minItems: 1
        maxItems: 10
        items:
          $ref: '#/components/schemas/PodMetricType'
    EventsSort:
      name: sortOrder
      in: query
      required: false
      description: Sort results in descending or ascending order.
      schema:
        type: string
        enum:
          - asc
          - desc
        default: desc
    WorkloadMetricTypes:
      name: metricType
      in: query
      required: true
      description: Specify which data to request.
      explode: false
      schema:
        type: array
        minItems: 1
        maxItems: 10
        items:
          $ref: '#/components/schemas/WorkloadMetricType'
    InferenceWorkloadMetricTypes:
      name: metricType
      in: query
      required: true
      description: Specify which data to request.
      explode: false
      schema:
        type: array
        minItems: 1
        maxItems: 20
        items:
          $ref: '#/components/schemas/InferenceWorkloadMetricType'
    InferencePodMetricTypes:
      name: metricType
      in: query
      required: true
      description: Specifies metrics data to request. Inference metrics are only available for inference workloads.
      explode: false
      schema:
        type: array
        minItems: 1
        maxItems: 20
        items:
          $ref: '#/components/schemas/InferencePodMetricType'
    RevisionId:
      name: revisionId
      in: path
      required: true
      description: The  Universally Unique Identifier (UUID) of the revision.
      schema:
        type: string
        format: uuid
    TemplatesSort:
      name: sortBy
      in: query
      required: false
      description: Sort results by parameter.
      schema:
        type: string
        enum:
          - name
          - workloadType
          - runnable
          - scopeType
          - clusterId
          - projectId
          - departmentId
          - createdAt
          - updatedAt
          - createdBy
          - updatedBy
    TemplatesFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|workloadType|runnable|scopeType|clusterId|projectId|departmentId|createdAt|updatedAt|createdBy|updatedBy)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-template-name
          - createdAt>=2021-01-01T00:00:00Z
      explode: false
    TemplateName:
      name: templateName
      in: query
      description: The name of the template.
      required: true
      schema:
        type: string
        example: my-template-name
        minLength: 1
    ScopeId3:
      name: scopeId
      in: query
      description: filter by scope id
      schema:
        type: string
      required: false
    TemplateId:
      name: templateId
      in: path
      required: true
      description: The  Universally Unique Identifier (UUID) of the template.
      schema:
        type: string
        format: uuid
      example: 550e8400-e29b-41d4-a716-446655440000
    ExternalTypesOnly:
      name: externalTypesOnly
      in: query
      required: false
      description: Return only external and user_external sourced workload types.
      schema:
        type: boolean
        default: false
    WorkloadTypesFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|group)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name==Deployment
          - group==apps
      explode: false
    WorkloadTypeId:
      name: workloadTypeId
      in: path
      required: true
      description: The unique identifier of the workload type.
      schema:
        type: string
        format: uuid
    WorkloadsPrioritiesSort:
      name: sortBy
      description: Defines the field to sort the results by
      in: query
      required: false
      schema:
        type: string
        enum:
          - name
          - source
          - value
    WorkloadsPrioritiesFilter:
      name: filterBy
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=
      in: query
      required: false
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(name|source|value)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    ApplicationQueryVerbosity:
      name: verbosity
      in: query
      required: false
      description: response verbosity level.
      example: full
      schema:
        $ref: '#/components/schemas/AIApplicationVerbosity'
    ApplicationsSort:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameter.
      schema:
        $ref: '#/components/schemas/AIApplicationsSortFilterFields'
    ApplicationsFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.
      schema:
        type: array
        maxItems: 10
        items:
          type: string
          pattern: ^(clusterId|name|projectId|projectName|source|type|createdAt)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-name
      explode: false
    ApplicationId:
      name: aiApplicationId
      in: path
      required: true
      description: The unique identifier of the application.
      schema:
        type: string
        format: uuid
    workloadId:
      $ref: '#/components/parameters/WorkloadId'
    podId:
      $ref: '#/components/parameters/PodId'
    workloadTypeId:
      $ref: '#/components/parameters/WorkloadTypeId'
    WorkloadV2Id:
      name: WorkloadV2Id
      in: path
      required: true
      schema:
        type: string
        format: uuid
        description: The ID of the workload.
    WorkloadSettingsKey:
      name: key
      in: path
      required: true
      description: The settings key
      schema:
        $ref: '#/components/schemas/WorkloadsSettingsKeyEnum'
    DatavolumesRequestType:
      name: requestType
      in: query
      required: true
      description: Which datavolumes would be returned in the response. Originated - datavolumes that are originated in the permitted scopes of the caller. UsableInProject - datavolumes that can be used in a specific project; if you use this value, you must also provide the project ID in the "usableInProjectId" query param.
      schema:
        $ref: '#/components/schemas/DatavolumeRequestType'
    DatavolumesUsableInProjectId:
      name: usableInProjectId
      in: query
      required: false
      description: Only when using "UsableInProject" requestType; Filter results for only datavolumes that are shared with - or originated in - the project.
      schema:
        type: string
        example: '5'
    DatavolumesSortBy:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        type: string
        enum:
          - name
          - projectId
          - clusterId
          - departmentId
          - projectName
          - createdAt
          - createdBy
          - phase
    DatavolumesFilter:
      name: filterBy
      in: query
      required: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        items:
          type: string
          pattern: ^(name|projectId|clusterId|departmentId|projectName|createdAt|createdBy|phase)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - name!=some-datavolume-name
      explode: false
    DatavolumeId:
      name: datavolumeId
      in: path
      required: true
      description: The id of the datavolume to retrieve
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
      schema:
        type: string
        format: uuid
    DataVolumeName:
      name: dataName
      in: query
      required: true
      description: the name of the datavolume
      schema:
        type: string
        minLength: 1
    OperatingSystem:
      name: operatingSystem
      in: path
      required: true
      description: The operating system name.
      schema:
        type: string
        enum:
          - linux
          - windows
          - darwin
        maxLength: 7
        minLength: 4
        example: linux
    Architecture:
      name: architecture
      in: path
      required: true
      description: The architecture type.
      schema:
        type: string
        maxLength: 10
        minLength: 4
        example: arm64
    DocumentName:
      name: documentName
      in: path
      required: true
      description: The manual document name.
      schema:
        type: string
        maxLength: 255
        minLength: 4
        pattern: ^[A-Za-z0-9_]+\.md$
        example: runai.md
    AuditLogSort:
      name: sortBy
      in: query
      required: false
      description: Sort results by a parameters.
      schema:
        type: string
        enum:
          - timestamp
          - subject
          - subject_type
          - source_ip
          - action
          - http_method
          - result
          - url
          - entity_type
          - entity_name
          - entity_id
    AuditLogFilter:
      name: filterBy
      in: query
      required: false
      explode: false
      description: Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.
      schema:
        type: array
        items:
          type: string
          pattern: ^(timestamp|subject|subject_type|source_ip|action|result|url|entity_type|entity_name|cluster_name)(==|!=|<=|>=|=@|!@|=\^|=\$).+$
        example:
          - cluster_name==my-cluster_name
          - entity_type==cluster,entity_name==test
    NotificationChannelName:
      name: name
      in: path
      description: Notification Channel name
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 250
    SubscriptionId:
      name: id
      in: path
      description: Subscription id
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 100
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer authentication
x-tagGroups:
  - name: Organizations
    tags:
      - Clusters
      - Departments
      - Reports
      - NodePools
      - Nodes
      - Projects
      - Logo
      - Researcher Command Line Interface
      - Researcher Command Line Interface Deprecated
      - Network Topologies
  - name: Authentication and Authorization
    tags:
      - Access Keys
      - Access rules
      - Permissions
      - Applications
      - Service Accounts
      - Roles
      - Tokens
      - Users
      - User Applications
      - Idps
      - Me
      - Settings
      - Org unit
  - name: Audit
    tags:
      - AuditLogs
  - name: Datavolumes
    tags:
      - Datavolumes-API
  - name: Workloads
    tags:
      - Events
      - Pods
      - Workloads-API
      - Workloads V2
      - NVIDIA NIM
      - Workspaces
      - Trainings
      - Inferences
      - Revisions
      - Distributed
      - Workloads batch
      - Workload properties
      - Workload templates
      - Distributed Inferences
  - name: Workload assets
    tags:
      - Compute
      - Credentials
      - Datasources
      - Environment
      - Storage Classes
      - Storage Class Configuration
      - Git
      - HostPath
      - NFS
      - PVC
      - Registry
      - S3
      - ConfigMap
      - Secret
      - Template
  - name: Policies
    tags:
      - Policy
  - name: Notifications
    tags:
      - Notification State
      - Notification Types
      - NotificationChannels
      - Slack
      - Email
      - Subscriptions
  - name: AI Applications
    tags:
      - AI Applications