NVIDIA Run:ai Workload templates API

This set of endpoints manages workload templates used to define reusable workload configurations across various workload types in the NVIDIA Run:ai platform. Templates help standardize workload definitions for consistent submission and resource usage across projects and users.

OpenAPI Specification

runai-workload-templates-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: latest
  description: '# Introduction


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


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

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


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

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

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


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

    '
  title: NVIDIA Run:ai Access Keys Workload templates API
  x-logo:
    url: https://api.redocly.com/registry/raw/runai-xq8/saas/latest/public/runai-logo-api.png
    altText: NVIDIA Run:ai
    href: https://run.ai
  license:
    name: NVIDIA Run:ai
    url: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-software-license-agreement/
servers:
- url: https://app.run.ai
security:
- bearerAuth: []
tags:
- name: Workload templates
  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"
paths:
  /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. [Experimental]
      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. [Experimental]
      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. [Experimental]
      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. [Experimental]
      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'
components:
  schemas:
    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
    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: .*
    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
    AutoScalingMetricField:
      properties:
        metric:
          $ref: '#/components/schemas/AutoScalingMetric'
    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
    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:
          description: The URL for connecting to the container port. If not specified, the URL will be auto-generated by the system..
          type: string
          pattern: .*
          example: https://my-url.com
          nullable: true
        authorizationType:
          $ref: '#/components/schemas/AuthorizationType'
        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
            pattern: .*
          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
            pattern: .*
          example:
          - group-a
          - group-b
          nullable: true
        toolTy

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