NVIDIA Run:ai Distributed Inferences API

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). Each 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

OpenAPI Specification

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


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


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

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


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

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

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


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

    '
  title: NVIDIA Run:ai Access Keys Distributed Inferences 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: Distributed Inferences
  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"
paths:
  /api/v1/workloads/distributed-inferences:
    post:
      summary: Create a distributed inference. [Experimental]
      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'
components:
  schemas:
    PodAffinity:
      description: Pod affinity scheduling rules (e.g. co-locate this workload in the same node, zone, etc. as some other workloads).
      type:
      - object
      - 'null'
      properties:
        type:
          $ref: '#/components/schemas/PodAffinityType'
        key:
          description: The label key to use. (mandatory)
          type:
          - string
          - 'null'
          pattern: .*
    DistributedInferenceServingPortProtocol:
      description: The protocol used to access the port.
      type:
      - string
      - 'null'
      enum:
      - http
      default: http
    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
    NodeAffinityRequired:
      type:
      - object
      - 'null'
      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'
    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
      - 'null'
      example: 2,3,5,8
      pattern: .*
    Tolerations:
      description: Set of tolerations to apply to the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/Toleration'
    ImagePullPolicy:
      description: Image pull policy. Defaults to `Always` if `:latest` tag is specified, otherwise it is `IfNotPresent`.
      type:
      - string
      - 'null'
      minLength: 1
      enum:
      - Always
      - Never
      - IfNotPresent
    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://docs.run.ai/latest/admin/runai-setup/config/non-root-containers/).
      type:
      - string
      - 'null'
      enum:
      - fromTheImage
      - fromIdpToken
      - custom
    Label:
      description: Label details to be populated into the container.
      properties:
        name:
          description: The name of the label (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          maxLength: 63
          example: stage
          pattern: .*
        value:
          description: The value of the label.
          type:
          - string
          - 'null'
          example: initial-research
          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
          - 'null'
          example: false
      type:
      - object
      - 'null'
    ProbeHandler:
      description: The action taken to determine the health of the container. (mandatory)
      type:
      - object
      - 'null'
      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
              - 'null'
              pattern: ^(\x2F[a-zA-Z0-9\-_.\x2F]*)?$
              example: /
            port:
              description: Number of the port to access on the container.
              type:
              - integer
              - 'null'
              format: int32
              minimum: 1
              maximum: 65535
            host:
              description: Host name to connect to, defaults to the pod IP.
              type:
              - string
              - 'null'
              format: hostname
              example: example.com
              pattern: .*
            scheme:
              $ref: '#/components/schemas/ProbeHandlerScheme'
    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
          - 'null'
          minLength: 1
          example: metadata.name
          pattern: .*
      type:
      - object
      - 'null'
    Labels:
      description: Set of labels to populate into the container running the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/Label'
    ImagePullSecrets:
      description: A list of references to Kubernetes secrets in the same namespace used for pulling container images.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/ImagePullSecret'
    SecretFieldsNonUpdatable:
      properties:
        secret:
          description: The name of the Secret resource. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
      type:
      - object
      - 'null'
    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
      - 'null'
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 30M
    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
      - 'null'
      enum:
      - LeaderCreated
      - LeaderReady
      default: LeaderCreated
    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
          - 'null'
          minLength: 1
          example: my_postgres_user_and_password
        key:
          description: The key in the user credential resource. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: POSTGRES_PASSWORD
      type:
      - object
      - 'null'
    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
          - 'null'
          format: int32
          minimum: 0
          maximum: 1000
          example: 4
    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'
      type:
      - object
      - 'null'
    Args:
      description: Arguments to the command that the container running the workload executes.
      type:
      - string
      - 'null'
      minLength: 1
      example: -x my-script.py
      pattern: .*
    Phase:
      type: string
      enum:
      - Creating
      - Initializing
      - Resuming
      - Pending
      - Deleting
      - Running
      - Updating
      - Stopped
      - Stopping
      - Degraded
      - Failed
      - Completed
      - Terminating
      - Unknown
    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
      - 'null'
      enum:
      - RuntimeDefault
      - Unconfined
      - Localhost
    EmptyDir:
      properties:
        path:
          description: Local path within the workload to which the EmptyDir volume will be mapped. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: /mnt/emptydir
          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
          - 'null'
          minLength: 1
          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
          - 'null'
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          example: 1G
      type:
      - object
      - 'null'
    PodAffinityType:
      description: The affinity type, required or preferred. (mandatory)
      type:
      - string
      - 'null'
      enum:
      - Required
      - Preferred
    Annotations:
      description: Set of annotations to populate into the container running the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/Annotation'
    Annotation:
      description: Annotation details to be populated into the container.
      properties:
        name:
          description: The name of the annotation (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          maxLength: 63
          example: billing
          pattern: .*
        value:
          description: The value of the annotation.
          type:
          - string
          - 'null'
          example: my-billing-unit
          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
          - 'null'
          default: false
          example: false
      type:
      - object
      - 'null'
    UpdateSpec:
      description: The specifications of the inference to be updated.
      properties:
        spec:
          allOf:
          - type:
            - object
            - 'null'
            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
                - 'null'
                format: int32
                minimum: 0
                maximum: 1000
                example: 2
    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
      - 'null'
      format: int64
      example: 500
    ReadOnlyRootFileSystem:
      description: If true, mounts the container's root filesystem as read-only.
      type:
      - boolean
      - 'null'
      example: false
    PvcVolumeMode:
      description: Default volume mode for the PVC. Choose between Filesystem (default) or Block.
      type:
      - string
      - 'null'
      enum:
      - Filesystem
      - Block
    ConfigMapInstance:
      allOf:
      - $ref: '#/components/schemas/StorageInstanceName'
      - $ref: '#/components/schemas/ConfigMap'
      - $ref: '#/components/schemas/ExcludeField'
      type:
      - object
      - 'null'
    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'
          type:
          - object
          - 'null'
    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
      - 'null'
      items:
        type: string
        pattern: .*
      example:
      - my-node-pool-a
      - my-node-pool-b
    PvcClaimSize:
      description: 'Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB'
      type:
      - string
      - 'null'
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 1G
    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
      - 'null'
      enum:
      - RecreateGroupOnPodRestart
      - None
      default: RecreateGroupOnPodRestart
    ConfigMapItems:
      description: Set of config map volumes to use in the workload
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/ConfigMapInstance'
    EnvironmentVariables:
      description: Set of environment variables to populate into the container running the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/EnvironmentVariable'
    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
      - 'null'
      minLength: 1
      example: /home/myfolder
      pattern: .*
    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
      - 'null'
      format: double
      example: 0.5
      minimum: 0
    DistributedInferenceCommonSpec:
      allOf:
      - 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
        - 'null'
      - $ref: '#/components/schemas/DistributedInferenceStartupPolicyField'
      - $ref: '#/components/schemas/DistributedInferenceWorkersField'
      - $ref: '#/components/schemas/DistributedInferenceReplicasField'
      type:
      - object
      - 'null'
    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
          - 'null'
          minLength: 1
          example: my-config-map
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        key:
          description: The key in the config-map resource. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: MY_POSTGRES_SCHEMA
          pattern: .*
      type:
      - object
      - 'null'
    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
          - 'null'
          format: int32
          minimum: 0
          maximum: 1000
          example: 2
    ConfigMap:
      properties:
        configMap:
          description: The name of the ConfigMap resource. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          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
          - 'null'
          minLength: 1
          pattern: .*
        subPath:
          description: Path within the volume from which the container's volume should be mounted.
          type:
          - string
          - 'null'
          minLength: 1
          pattern: .*
        defaultMode:
          $ref: '#/components/schemas/DefaultMode'
      type:
      - object
      - 'null'
    ExtendedResources:
      description: Extended resources and their quantity.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/ExtendedResource'
    ClusterId:
      description: The id of the cluster.
      type: string
      format: uuid
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
    WorkloadMeta1:
      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/WorkloadId2'
        projectId:
          $ref: '#/components/schemas/ProjectId'
        departmentId:
          $ref: '#/components/schemas/DepartmentId2'
        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
          - 'null'
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        desiredPhase:
          $ref: '#/components/schemas/WorkloadDesiredPhase'
        actualPhase:
          $ref: '#/components/schemas/Phase'
    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
      - 'null'
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 20M
    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
          - 'null'
          default: false
          example: false
      type:
      - object
      - 'null'
    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: .*
    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'
    EmptyDirInstance:
      allOf:
      - $ref: '#/components/schemas/StorageInstanceName'
      - $ref: '#/components/schemas/EmptyDir'
      - $ref: '#/components/schemas/ExcludeField'
      type:
      - object
      - 'null'
    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
      - 'null'
      format: int32
      example: 1
      minimum: 0
    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
      - 'null'
      minLength: 1
      example: python:3.8
      pattern: .*
    Command:
      description: A command to the server as the entry point of the container running the workload.
      type:
      - string
      - 'null'
      minLength: 1
      example: python
      pattern: .*
    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
          - 'null'
          items:
            type: string
            pattern: .*
          example:
          - user.a@example.com
          - user.b@example.com
        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
          - 'null'
          items:
            type: string
            pattern: .*
          example:
          - group-a
          - group-b
        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/saas/getting-started/installation/system-requirements#inference). section.
          type:
          - boolean
          - 'null'
          default: true
        exposedUrl:
          description: The custom URL to use for the serving port. If empty (default), an autogenerated URL will be used.
          type:
          - string
          - 'null'
          pattern: .*
    PvcFieldsUpdatable:
      properties:
        path:
          description: Local path within the workload to which the PVC bucket will be mapped. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: /container/my-claim
          pattern: .*
      type:
      - object
      - 'null'
    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
      - 'null'
      minLength: 1
      enum:
      - portion
      - memory
    DistributedInferenceServingPortContainerAndProtocol:
      properties:
        port:
          description: The port exposed by the container running the distributed inference service.
          type:
          - integer
          - 'null'
          format: int32
          minimum: 1
          maximum: 65535
          example: 8080
        protocol:
          $ref: '#/components/schemas/DistributedInferenceServingPortProtocol'
    DefaultMode:
      type:
      - string
      - 'null'
      description: 'File permission mode in octal string format. This value must be a 4-digit octal number, representing the default fil

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