NVIDIA Run:ai Storage Classes API
The Storage Classes API retrieves a list of available, pre-defined storage classes in the system.
The Storage Classes API retrieves a list of available, pre-defined storage classes in the system.
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 Storage Classes 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: Storage Classes
description: The Storage Classes API retrieves a list of available, pre-defined storage classes in the system.
paths:
/v1/k8s/clusters/{uuid}/storage-classes:
parameters:
- $ref: '#/components/parameters/uuid'
get:
summary: Get all storageClasses from a cluster.
description: this API is used by cluster versions < 2.20
deprecated: true
operationId: V1GetStorageClasses
tags:
- Storage Classes
parameters:
- name: includeNone
in: query
description: Include runai-none storage class to be able to create PVCs without a storage class
required: false
schema:
type: boolean
responses:
'200':
$ref: '#/components/responses/V1StorageClassNames'
'401':
$ref: '#/components/responses/V1Unauthorized'
'404':
$ref: '#/components/responses/V1NotFound'
default:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/V1Error'
/api/v1/storage-classes:
get:
summary: get a Storage Class/Classes for a given cluster
operationId: getStorageClasses
tags:
- Storage Classes
parameters:
- $ref: '#/components/parameters/ClusterIdRequired'
- $ref: '#/components/parameters/nameFilter'
- name: includeNone
in: query
description: Include runai-none storage class, which is used for static provisioning of PVC. In static provisioning storage is omitted.
required: false
schema:
type: boolean
responses:
'200':
description: Executed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/StorageClasses1'
'401':
$ref: '#/components/responses/401Unauthorized'
'403':
$ref: '#/components/responses/403Forbidden'
'500':
$ref: '#/components/responses/500InternalServerError'
'503':
$ref: '#/components/responses/503ServiceUnavailable'
/api/v2/storage-classes:
get:
summary: get a Storage Class/Classes for a given cluster
operationId: getStorageClassesV2
tags:
- Storage Classes
parameters:
- $ref: '#/components/parameters/ClusterIdRequired'
- $ref: '#/components/parameters/nameFilter'
- name: includeNone
in: query
description: Include runai-none storage class, which is used for static provisioning of PVC. In static provisioning storage is omitted.
required: false
schema:
type: boolean
responses:
'200':
description: Executed successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/StorageClassesV2'
'401':
$ref: '#/components/responses/401Unauthorized'
'403':
$ref: '#/components/responses/403Forbidden'
'500':
$ref: '#/components/responses/500InternalServerError'
'503':
$ref: '#/components/responses/503ServiceUnavailable'
components:
parameters:
nameFilter:
name: name
in: query
description: filter by name
schema:
type: string
required: false
ClusterIdRequired:
name: clusterId
in: query
description: The id of the cluster
required: true
schema:
type: string
format: uuid
example: d73a738f-fab3-430a-8fa3-5241493d7128
uuid:
in: path
name: uuid
description: Unique identifier of the cluster
required: true
schema:
type: string
format: uuid
schemas:
AttributesCustomization:
description: Defines additional annotation attributes to be applied to PVCs created under this storage class. Each attribute describes an annotation key and its expected value format, display name, and purpose.
type: array
items:
$ref: '#/components/schemas/PvcAddedAttribute'
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
AllowedForEphemeralVolumes:
type: boolean
nullable: true
description: Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class.
StorageClassCustomization:
description: Optional UI/policy controls that define defaults and requirements when creating PVCs with this storage class.
properties:
accessMode:
$ref: '#/components/schemas/AccessModeCustomization'
volumeMode:
$ref: '#/components/schemas/VolumeModeCustomization'
claimSize:
$ref: '#/components/schemas/ClaimSizeCustomization'
attributes:
$ref: '#/components/schemas/AttributesCustomization'
type: object
nullable: true
AccessModeCustomization:
description: Controls whether PVC access modes are required and what defaults to apply.
properties:
required:
type: boolean
description: If true, the accessMode field is mandatory when creating a PVC that uses this storage class.
nullable: true
default:
$ref: '#/components/schemas/PvcAccessModes'
supportedValues:
$ref: '#/components/schemas/PvcSupportedAccessModes'
type: object
nullable: true
StorageClasses1:
type: object
required:
- items
properties:
items:
type: array
items:
$ref: '#/components/schemas/StorageClass1'
AllowDataSharing:
type: boolean
nullable: true
description: Allows creation of PVCs using a shared volume.
ClaimSizeCustomization:
description: Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.
properties:
default:
$ref: '#/components/schemas/PvcClaimSize'
supportedUnits:
description: 'Units supported for specifying PVC sizes. Valid values: "MB", "MiB", "GB", "GiB", "TB", "TiB".'
type: array
items:
type: string
enum:
- MB
- MiB
- GB
- GiB
- TB
- TiB
min:
$ref: '#/components/schemas/PvcClaimMinSize'
max:
$ref: '#/components/schemas/PvcClaimMaxSize'
step:
$ref: '#/components/schemas/PvcClaimStepSize'
type: object
nullable: true
PvcClaimSize:
description: 'Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB'
type: string
pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
example: 1G
nullable: true
PvcAddedAttributeFormat:
type: string
description: 'Defines the data type the attribute can accept. Enum: "text" "number" "boolean"'
enum:
- text
- number
- boolean
nullable: true
StorageClassSpec:
type: object
required:
- isDefault
properties:
provisioner:
type: string
description: The provisioner type (unique name)
example: kubernetes.io/aws-ebs
allowVolumeExpansion:
type: boolean
description: Indicates whether the storage class allows volume expansion
example: true
isDefault:
type: boolean
description: Indicates whether the storage class is the default one
example: false
AllowedForAssets:
type: boolean
nullable: true
description: Determines whether PVC assets can be created using this storage class.
PvcAddedAttribute:
description: Attribute that is added to any PVC of a given storage class.
required:
- key
properties:
key:
type: string
minLength: 1
description: 'The annotation key for the PVC. Must comply with Kubernetes naming rules: ≤63 characters, beginning and ending with an alphanumeric character ([A-Za-z0-9]), and may include dashes (-), underscores (_), or dots (.).'
maxLength: 63
pattern: ^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$
example: dnsname
format:
description: 'Defines the data type the attribute can accept. Enum: "text" "number" "boolean"'
$ref: '#/components/schemas/PvcAddedAttributeFormat'
display:
type: string
minLength: 1
description: User-friendly display name for the attribute, shown in the UI.
nullable: true
example: DNS Name
description:
type: string
minLength: 1
description: A description of the attribute's purpose or expected values.
nullable: true
example: The host name of the DNS
placeholder:
type: string
minLength: 1
description: Example or hint text for the attribute's value, displayed as a watermark or help message in the UI.
nullable: true
example: enter hostname or IP address
required:
description: Indicates whether this attribute is mandatory.
type: boolean
nullable: true
example: 'true'
defaultValue:
description: Default value assigned to the attribute when not explicitly provided.
type: string
minLength: 1
nullable: true
example: my.dns.com
validationRegexp:
description: Regular expression used to validate user input for text attributes.
type: string
minLength: 1
nullable: true
example: ^[a-zA-Z0-9.-_]+$
minValue:
description: Minimum allowed value for attributes of type number.
type: number
minLength: 1
nullable: true
example: '100'
maxValue:
description: Maximum allowed value for attributes of type number.
type: number
minLength: 1
nullable: true
example: '200'
step:
description: Defines the incremental step between allowed numeric values (for example, 1, 0.1).
type: number
minLength: 1
nullable: true
example: '5'
validationError:
description: Custom validation error message shown if input fails validation. If omitted, a default error message is generated automatically.
type: string
minLength: 1
nullable: true
example: Invalid URL
nullable: true
type: object
PvcClaimMinSize:
description: 'Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.'
type: string
pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
example: 1G
nullable: true
PvcClaimMaxSize:
description: 'Maximum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.'
type: string
pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
example: 1G
nullable: true
AllowedForWorkloads:
type: boolean
nullable: true
description: Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class.
PvcSupportedAccessModes:
description: Defines the access modes supported by the given storage class. These values indicate which access configurations can be used when creating PVCs with this class.
properties:
readWriteOnce:
description: Indicates whether the readWriteOnce access mode is supported. This mode allows a volume to be mounted as read/write by a single node.
type: boolean
default: true
nullable: true
readOnlyMany:
description: Indicates whether the readOnlyMany access mode is supported. This mode allows a volume to be mounted as read-only by many nodes.
type: boolean
default: true
nullable: true
readWriteMany:
description: Indicates whether the readWriteMany access mode is supported. This mode allows a volume to be mounted as read/write by many nodes.
type: boolean
default: true
nullable: true
nullable: true
type: object
PvcVolumeMode:
description: Default volume mode for the PVC. Choose between Filesystem (default) or Block.
type: string
enum:
- Filesystem
- Block
nullable: true
AllowedForPersistentVolumes:
type: boolean
nullable: true
description: Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class.
StorageClass1:
type: object
required:
- storage_class_name
properties:
cluster_id:
type: string
format: uuid
description: Cluster ID which has sent the resource info
example: 550e8400-e29b-41d4-a716-446655440000
storage_class_name:
type: string
description: Storage class name
example: my-storage-class
Spec:
type: object
required:
- is_default
properties:
provisioner:
type: string
description: The provisioner type (unique name)
example: kubernetes.io/aws-ebs
allow_volume_expansion:
type: boolean
description: Indicates whether the storage class allows volume expansion
example: true
is_default:
type: boolean
description: Indicates whether the storage class is the default one
example: false
StorageClassV2:
type: object
required:
- clusterId
- storageClassName
- spec
properties:
clusterId:
type: string
format: uuid
description: Cluster ID which has sent the resource info
example: 550e8400-e29b-41d4-a716-446655440000
storageClassName:
type: string
description: Storage class name
example: my-storage-class
spec:
$ref: '#/components/schemas/StorageClassSpec'
permissions:
$ref: '#/components/schemas/StorageClassPermissions'
customization:
$ref: '#/components/schemas/StorageClassCustomization'
PvcClaimStepSize:
description: Defines the incremental step between allowed numeric values (for example, 1, 0.1).
type: string
pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
example: 1G
nullable: true
StorageClassPermissions:
type: object
nullable: true
description: Defines the access permissions and behavioral rules for this storage class.
properties:
allowedForAssets:
$ref: '#/components/schemas/AllowedForAssets'
allowedForWorkloads:
$ref: '#/components/schemas/AllowedForWorkloads'
allowedForEphemeralVolumes:
$ref: '#/components/schemas/AllowedForEphemeralVolumes'
allowedForPersistentVolumes:
$ref: '#/components/schemas/AllowedForPersistentVolumes'
allowDataSharing:
$ref: '#/components/schemas/AllowDataSharing'
V1Error:
required:
- code
- message
properties:
code:
type: integer
minimum: 100
maximum: 599
message:
type: string
details:
type: string
example:
code: 400
message: Bad request - Resource should have a name
StorageClassesV2:
type: object
required:
- items
properties:
items:
type: array
items:
$ref: '#/components/schemas/StorageClassV2'
VolumeModeCustomization:
description: Defines whether the volumeMode field is required when creating PVCs and specifies default and supported modes for the storage class.
properties:
required:
type: boolean
description: Indicates whether the volumeMode field is mandatory when creating a PVC.
nullable: true
default:
$ref: '#/components/schemas/PvcVolumeMode'
supportedValues:
description: Lists which volume modes are supported for this storage class.
type: object
nullable: true
properties:
filesystem:
type: boolean
description: Indicates whether filesystem mode is supported. Filesystem allows the volume to be mounted as a filesystem, enabling the usage of directories and files.
default: true
nullable: true
block:
type: boolean
description: Indicates whether block mode is supported. Exposes the volume as a block storage, which can be formatted or used by applications directly without a filesystem.
default: true
nullable: true
type: object
nullable: true
PvcAccessModes:
description: Default access mode(s) applied to newly created PVCs unless explicitly overridden.
properties:
readWriteOnce:
description: Mount the volume as read/write by a single node.
type: boolean
default: true
nullable: true
readOnlyMany:
description: Mount the volume as read-only by many nodes.
type: boolean
default: false
nullable: true
readWriteMany:
description: Mount the volume as read/write by many nodes.
type: boolean
default: false
nullable: true
nullable: true
type: object
responses:
500InternalServerError:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 500
message: Something went wrong.
V1Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/V1Error'
V1StorageClassNames:
description: Expected response to a valid request
content:
application/json:
schema:
type: object
properties:
storageClasses:
type: array
items:
type: string
example:
- standard
example:
storageClasses:
- standard
403Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 403
message: You do not have sufficient permissions.
V1NotFound:
description: The specified resource was not found
content:
application/json:
schema:
$ref: '#/components/schemas/V1Error'
503ServiceUnavailable:
description: unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 503
message: Please try again in few minutes.
401Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
code: 401
message: Issuer is not familiar.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Bearer authentication
x-tagGroups:
- name: Organizations
tags:
- Clusters
- Departments
- Reports
- NodePools
- Nodes
- Projects
- Tenant
- Logo
- Researcher Command Line Interface
- Researcher Command Line Interface Deprecated
- Administrator Command Line Interface
- Network Topologies
- name: Authentication and Authorization
tags:
- Access Keys
- Access rules
- Permissions
- Applications
- Service Accounts
- Roles
- Tokens
- Users
- User Applications
- Idps
- Me
- Settings
- Org unit
- name: Audit
tags:
- AuditLogs
- name: Datavolumes
tags:
- Datavolumes
- name: Workloads
tags:
- Events
- Pods
- Workloads
- Workloads V2
- NVIDIA NIM
- Workspaces
- Trainings
- Inferences
- Revisions
- Distributed
- Workloads batch
- Workload properties
- Workload templates
- Distributed Inferences
- name: Workload assets
tags:
- Compute
- Credentials
- Datasources
- Environment
- Storage Classes
- Storage Class Configuration
- Git
- HostPath
- NFS
- PVC
- Registry
- S3
- ConfigMap
- Secret
- Template
- name: Policies
tags:
- Policy
- name: Notifications
tags:
- Notification State
- Notification Types
- NotificationChannels
- Subscriptions
- name: AI Applications
tags:
- AI Applications