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 Compute 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: Compute
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/saas/workloads-in-nvidia-run-ai/assets/compute-resources).\n"
paths:
/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'
components:
schemas:
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
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
nullable: true
pattern: .*
quantity:
description: The requested quantity for the resource.
type: string
example: 2
minLength: 1
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
HttpResponse:
required:
- code
- message
properties:
code:
type: integer
minimum: 100
maximum: 599
message:
type: string
AssetDescription:
description: The description of the asset.
type: string
minLength: 1
maxLength: 250
example: description of my asset.
nullable: true
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
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
WorkloadId1:
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: .*
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
nullable: true
nullable: true
type: object
AssetsUsageRefCompute:
allOf:
- $ref: '#/components/schemas/AssetRef'
nullable: true
type: object
ComputeListResponse:
required:
- entries
properties:
entries:
type: array
items:
$ref: '#/components/schemas/ComputeAsset'
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
AssetUpdatableFields:
required:
- name
properties:
name:
$ref: '#/components/schemas/AssetName'
description:
$ref: '#/components/schemas/AssetDescription'
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
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
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
AssetId:
description: Unique identifier of the asset.
type: string
format: uuid
minLength: 1
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'
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
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
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
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]*)$
example: 30M
nullable: true
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
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
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'
ComputeCreationRequest:
required:
- meta
- spec
properties:
meta:
$ref: '#/components/schemas/AssetCreationRequest'
spec:
allOf:
- $ref: '#/components/schemas/ComputeAssetSpec'
nullable: true
type: object
AssetName:
description: The name of the asset.
type: string
minLength: 1
example: my-asset
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
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
UpdateCount:
description: the value of an update counter of a data in the system.
type: integer
format: int64
example: 12345
ExtendedResources:
description: Extended resources and their quantity.
type: array
items:
$ref: '#/components/schemas/ExtendedResource'
nullable: true
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
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
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
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]*)$
example: 10M
nullable: true
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'
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
ComputeUpdateRequest:
required:
- meta
- spec
properties:
meta:
$ref: '#/components/schemas/AssetUpdateRequest'
spec:
allOf:
- $ref: '#/components/schemas/ComputeAssetSpec'
nullable: true
type: object
AssetRef:
description: Reference information about an asset.
required:
- id
- name
properties:
id:
$ref: '#/components/schemas/AssetId'
name:
$ref: '#/components/schemas/AssetName'
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]*)$
example: 10M
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
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
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'
AssetUpdateRequest:
allOf:
- $ref: '#/components/schemas/AssetUpdatableFields'
example:
name: my-asset
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
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
ClusterIdOptional:
description: The id of the cluster.
type: string
format: uuid
minLength: 1
example: 71f69d83-ba66-4822-adf5-55ce55efd210
nullable: true
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
WorkloadRefAndStatus:
description: Id, name and status of a workspace or training
required:
- id
- name
properties:
id:
$ref: '#/components/schemas/WorkloadId1'
name:
$ref: '#/components/schemas/WorkloadName'
status:
description: The status of the workspace or training.
type: string
minLength: 1
responses:
202Accepted:
description: Accepted.
content:
application/json:
schema:
$ref: '#/components/schemas/HttpResponse'
example:
code: 202
message: Request has been accepted.
404NotFound:
description: The specified resource was not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 404
message: Resource id not found.
403Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 403
message: You do not have sufficient permissions.
503ServiceUnavailable:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 503
message: Please try again in few minutes.
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
401Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 401
message: Issuer is not familiar.
400BadRequest:
description: Bad request.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 400
message: Required parameter is missing
parameters:
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
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
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
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
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
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
AssetId:
name: AssetId
in: path
required: true
description: Unique identifier of the asset.
schema:
type: string
format: uuid
minLength: 1
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
en
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/runai/refs/heads/main/openapi/runai-compute-api-openapi.yml