# Storage Class Configuration

## List storage class configurations

> Retrieves a list of storage class configurations defined in the system.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.25"},"tags":[{"name":"Storage Class Configuration"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"StorageClassConfigurationFilterBy":{"name":"filterBy","in":"query","required":false,"description":"Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.","schema":{"type":"array","items":{"type":"string","pattern":"^(name|tenantId|scopeType|scopeId)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$"}},"explode":false},"StorageClassConfigurationSortBy":{"name":"sortBy","in":"query","required":false,"description":"Sort results by a parameters.","schema":{"type":"string","enum":["name","tenantId","scopeType","scopeId"]}},"SortOrder":{"name":"sortOrder","in":"query","required":false,"description":"Sort results in descending or ascending order.","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},"Offset":{"name":"offset","in":"query","required":false,"description":"The offset of the first item returned in the collection.","schema":{"type":"integer","format":"int32"}},"Limit":{"name":"limit","in":"query","required":false,"description":"The maximum number of entries to return.","schema":{"type":"integer","format":"int32","default":50,"minimum":1,"maximum":500}}},"schemas":{"StorageClassConfigurationListResponse":{"type":"object","required":["storageClassConfigurations"],"properties":{"storageClassConfigurations":{"description":"A list of storage class configuration objects. Each object defines the configuration details for a specific storage class.","type":"array","items":{"$ref":"#/components/schemas/StorageClassConfiguration"}},"next":{"type":"integer"}}},"StorageClassConfiguration":{"type":"object","required":["id","tenantId","scopeType","scopeId","name"],"properties":{"id":{"description":"The unique identifier of the storage class configuration.","type":"string","format":"uuid"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"scopeType":{"description":"Currently supported value: 'cluster', which is also the default.","type":"string","enum":["cluster"],"default":"cluster"},"scopeId":{"$ref":"#/components/schemas/ScopeClusterId"},"name":{"$ref":"#/components/schemas/StorageClassName"},"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"$ref":"#/components/schemas/StorageClassCustomization"}}},"TenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"ScopeClusterId":{"description":"The ID of the cluster.","type":"string","format":"uuid"},"StorageClassName":{"description":"The name of the storage class to which the configuration applies.","type":"string"},"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"}}},"AllowedForAssets":{"type":"boolean","nullable":true,"description":"Determines whether PVC assets can be created using this storage class."},"AllowedForWorkloads":{"type":"boolean","nullable":true,"description":"Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class."},"AllowedForEphemeralVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowedForPersistentVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowDataSharing":{"type":"boolean","nullable":true,"description":"Allows creation of PVCs using a shared volume."},"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},"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"},"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"},"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},"PvcVolumeMode":{"description":"Default volume mode for the PVC. Choose between Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"ClaimSizeCustomization":{"description":"Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.","properties":{"default":{"$ref":"#/components/schemas/PvcClaimSize"},"supportedUnits":{"description":"Units supported for specifying PVC sizes. Valid values: \"MB\", \"MiB\", \"GB\", \"GiB\", \"TB\", \"TiB\".","type":"array","items":{"type":"string","enum":["MB","MiB","GB","GiB","TB","TiB"]}},"min":{"$ref":"#/components/schemas/PvcClaimMinSize"},"max":{"$ref":"#/components/schemas/PvcClaimMaxSize"},"step":{"$ref":"#/components/schemas/PvcClaimStepSize"}},"type":"object","nullable":true},"PvcClaimSize":{"description":"Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","maxLength":63,"nullable":true},"PvcClaimMinSize":{"description":"Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","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]*)$","nullable":true},"PvcClaimStepSize":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","nullable":true},"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"}},"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]$"},"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},"description":{"type":"string","minLength":1,"description":"A description of the attribute's purpose or expected values.","nullable":true},"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},"required":{"description":"Indicates whether this attribute is mandatory.","type":"boolean","nullable":true},"defaultValue":{"description":"Default value assigned to the attribute when not explicitly provided.","type":"string","minLength":1,"nullable":true},"validationRegexp":{"description":"Regular expression used to validate user input for text attributes.","type":"string","minLength":1,"nullable":true},"minValue":{"description":"Minimum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"maxValue":{"description":"Maximum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"step":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"number","minLength":1,"nullable":true},"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}},"nullable":true,"type":"object"},"PvcAddedAttributeFormat":{"type":"string","description":"Defines the data type the attribute can accept. Enum: \"text\" \"number\" \"boolean\"","enum":["text","number","boolean"],"nullable":true},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/storage-class-configuration":{"get":{"summary":"List storage class configurations","description":"Retrieves a list of storage class configurations defined in the system.","operationId":"list_storage_class_configuration","tags":["Storage Class Configuration"],"parameters":[{"$ref":"#/components/parameters/StorageClassConfigurationFilterBy"},{"$ref":"#/components/parameters/StorageClassConfigurationSortBy"},{"$ref":"#/components/parameters/SortOrder"},{"$ref":"#/components/parameters/Offset"},{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"Executed successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfigurationListResponse"}}}},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"500":{"$ref":"#/components/responses/500InternalServerError"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Create storage class configuration

> Creates a new storage class configuration in the NVIDIA Run:ai platform.\
> This endpoint enables administrators to define storage class behavior and customize their usage settings.<br>

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.25"},"tags":[{"name":"Storage Class Configuration"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"StorageClassConfigurationCreationRequest":{"type":"object","required":["scopeType","scopeId","name"],"properties":{"tenantId":{"type":"integer","nullable":true,"allOf":[{"$ref":"#/components/schemas/TenantId"}]},"scopeType":{"type":"string","description":"the scope type of the configuration.","enum":["cluster"],"default":"cluster"},"scopeId":{"$ref":"#/components/schemas/ScopeClusterId"},"name":{"$ref":"#/components/schemas/StorageClassName"},"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"$ref":"#/components/schemas/StorageClassCustomization"}}},"TenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"ScopeClusterId":{"description":"The ID of the cluster.","type":"string","format":"uuid"},"StorageClassName":{"description":"The name of the storage class to which the configuration applies.","type":"string"},"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"}}},"AllowedForAssets":{"type":"boolean","nullable":true,"description":"Determines whether PVC assets can be created using this storage class."},"AllowedForWorkloads":{"type":"boolean","nullable":true,"description":"Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class."},"AllowedForEphemeralVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowedForPersistentVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowDataSharing":{"type":"boolean","nullable":true,"description":"Allows creation of PVCs using a shared volume."},"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},"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"},"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"},"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},"PvcVolumeMode":{"description":"Default volume mode for the PVC. Choose between Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"ClaimSizeCustomization":{"description":"Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.","properties":{"default":{"$ref":"#/components/schemas/PvcClaimSize"},"supportedUnits":{"description":"Units supported for specifying PVC sizes. Valid values: \"MB\", \"MiB\", \"GB\", \"GiB\", \"TB\", \"TiB\".","type":"array","items":{"type":"string","enum":["MB","MiB","GB","GiB","TB","TiB"]}},"min":{"$ref":"#/components/schemas/PvcClaimMinSize"},"max":{"$ref":"#/components/schemas/PvcClaimMaxSize"},"step":{"$ref":"#/components/schemas/PvcClaimStepSize"}},"type":"object","nullable":true},"PvcClaimSize":{"description":"Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","maxLength":63,"nullable":true},"PvcClaimMinSize":{"description":"Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","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]*)$","nullable":true},"PvcClaimStepSize":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","nullable":true},"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"}},"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]$"},"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},"description":{"type":"string","minLength":1,"description":"A description of the attribute's purpose or expected values.","nullable":true},"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},"required":{"description":"Indicates whether this attribute is mandatory.","type":"boolean","nullable":true},"defaultValue":{"description":"Default value assigned to the attribute when not explicitly provided.","type":"string","minLength":1,"nullable":true},"validationRegexp":{"description":"Regular expression used to validate user input for text attributes.","type":"string","minLength":1,"nullable":true},"minValue":{"description":"Minimum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"maxValue":{"description":"Maximum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"step":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"number","minLength":1,"nullable":true},"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}},"nullable":true,"type":"object"},"PvcAddedAttributeFormat":{"type":"string","description":"Defines the data type the attribute can accept. Enum: \"text\" \"number\" \"boolean\"","enum":["text","number","boolean"],"nullable":true},"StorageClassConfiguration":{"type":"object","required":["id","tenantId","scopeType","scopeId","name"],"properties":{"id":{"description":"The unique identifier of the storage class configuration.","type":"string","format":"uuid"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"scopeType":{"description":"Currently supported value: 'cluster', which is also the default.","type":"string","enum":["cluster"],"default":"cluster"},"scopeId":{"$ref":"#/components/schemas/ScopeClusterId"},"name":{"$ref":"#/components/schemas/StorageClassName"},"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"$ref":"#/components/schemas/StorageClassCustomization"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/storage-class-configuration":{"post":{"summary":"Create storage class configuration","description":"Creates a new storage class configuration in the NVIDIA Run:ai platform.\nThis endpoint enables administrators to define storage class behavior and customize their usage settings.\n","operationId":"create_storage_class_configuration","tags":["Storage Class Configuration"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfigurationCreationRequest"}}}},"responses":{"201":{"description":"Executed successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfiguration"}}}},"400":{"$ref":"#/components/responses/400BadRequest"},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"500":{"$ref":"#/components/responses/500InternalServerError"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Get storage class configuration by id

> Retrieves a specific storage class configuration by its unique identifier. Use this endpoint to view detailed information about the configuration, including its permissions and customization options.<br>

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.25"},"tags":[{"name":"Storage Class Configuration"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"StorageClassConfigurationId":{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"unique identifier of the storage class configuration"}},"schemas":{"StorageClassConfiguration":{"type":"object","required":["id","tenantId","scopeType","scopeId","name"],"properties":{"id":{"description":"The unique identifier of the storage class configuration.","type":"string","format":"uuid"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"scopeType":{"description":"Currently supported value: 'cluster', which is also the default.","type":"string","enum":["cluster"],"default":"cluster"},"scopeId":{"$ref":"#/components/schemas/ScopeClusterId"},"name":{"$ref":"#/components/schemas/StorageClassName"},"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"$ref":"#/components/schemas/StorageClassCustomization"}}},"TenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"ScopeClusterId":{"description":"The ID of the cluster.","type":"string","format":"uuid"},"StorageClassName":{"description":"The name of the storage class to which the configuration applies.","type":"string"},"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"}}},"AllowedForAssets":{"type":"boolean","nullable":true,"description":"Determines whether PVC assets can be created using this storage class."},"AllowedForWorkloads":{"type":"boolean","nullable":true,"description":"Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class."},"AllowedForEphemeralVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowedForPersistentVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowDataSharing":{"type":"boolean","nullable":true,"description":"Allows creation of PVCs using a shared volume."},"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},"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"},"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"},"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},"PvcVolumeMode":{"description":"Default volume mode for the PVC. Choose between Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"ClaimSizeCustomization":{"description":"Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.","properties":{"default":{"$ref":"#/components/schemas/PvcClaimSize"},"supportedUnits":{"description":"Units supported for specifying PVC sizes. Valid values: \"MB\", \"MiB\", \"GB\", \"GiB\", \"TB\", \"TiB\".","type":"array","items":{"type":"string","enum":["MB","MiB","GB","GiB","TB","TiB"]}},"min":{"$ref":"#/components/schemas/PvcClaimMinSize"},"max":{"$ref":"#/components/schemas/PvcClaimMaxSize"},"step":{"$ref":"#/components/schemas/PvcClaimStepSize"}},"type":"object","nullable":true},"PvcClaimSize":{"description":"Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","maxLength":63,"nullable":true},"PvcClaimMinSize":{"description":"Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","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]*)$","nullable":true},"PvcClaimStepSize":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","nullable":true},"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"}},"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]$"},"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},"description":{"type":"string","minLength":1,"description":"A description of the attribute's purpose or expected values.","nullable":true},"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},"required":{"description":"Indicates whether this attribute is mandatory.","type":"boolean","nullable":true},"defaultValue":{"description":"Default value assigned to the attribute when not explicitly provided.","type":"string","minLength":1,"nullable":true},"validationRegexp":{"description":"Regular expression used to validate user input for text attributes.","type":"string","minLength":1,"nullable":true},"minValue":{"description":"Minimum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"maxValue":{"description":"Maximum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"step":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"number","minLength":1,"nullable":true},"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}},"nullable":true,"type":"object"},"PvcAddedAttributeFormat":{"type":"string","description":"Defines the data type the attribute can accept. Enum: \"text\" \"number\" \"boolean\"","enum":["text","number","boolean"],"nullable":true},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/storage-class-configuration/{id}":{"get":{"summary":"Get storage class configuration by id","description":"Retrieves a specific storage class configuration by its unique identifier. Use this endpoint to view detailed information about the configuration, including its permissions and customization options.\n","operationId":"get_storage_class_configuration_by_id","tags":["Storage Class Configuration"],"parameters":[{"$ref":"#/components/parameters/StorageClassConfigurationId"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Storage class configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfiguration"}}}},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"500":{"$ref":"#/components/responses/500InternalServerError"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Update storage class configuration by id

> Updates an existing storage class configuration by its unique identifier. Use this endpoint to fully replace an existing configuration, including permissions and customization settings.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.25"},"tags":[{"name":"Storage Class Configuration"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"StorageClassConfigurationId":{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"unique identifier of the storage class configuration"}},"schemas":{"StorageClassConfigurationUpdateRequest":{"type":"object","properties":{"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"$ref":"#/components/schemas/StorageClassCustomization"}}},"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"}}},"AllowedForAssets":{"type":"boolean","nullable":true,"description":"Determines whether PVC assets can be created using this storage class."},"AllowedForWorkloads":{"type":"boolean","nullable":true,"description":"Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class."},"AllowedForEphemeralVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowedForPersistentVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowDataSharing":{"type":"boolean","nullable":true,"description":"Allows creation of PVCs using a shared volume."},"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},"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"},"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"},"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},"PvcVolumeMode":{"description":"Default volume mode for the PVC. Choose between Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"ClaimSizeCustomization":{"description":"Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.","properties":{"default":{"$ref":"#/components/schemas/PvcClaimSize"},"supportedUnits":{"description":"Units supported for specifying PVC sizes. Valid values: \"MB\", \"MiB\", \"GB\", \"GiB\", \"TB\", \"TiB\".","type":"array","items":{"type":"string","enum":["MB","MiB","GB","GiB","TB","TiB"]}},"min":{"$ref":"#/components/schemas/PvcClaimMinSize"},"max":{"$ref":"#/components/schemas/PvcClaimMaxSize"},"step":{"$ref":"#/components/schemas/PvcClaimStepSize"}},"type":"object","nullable":true},"PvcClaimSize":{"description":"Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","maxLength":63,"nullable":true},"PvcClaimMinSize":{"description":"Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","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]*)$","nullable":true},"PvcClaimStepSize":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","nullable":true},"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"}},"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]$"},"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},"description":{"type":"string","minLength":1,"description":"A description of the attribute's purpose or expected values.","nullable":true},"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},"required":{"description":"Indicates whether this attribute is mandatory.","type":"boolean","nullable":true},"defaultValue":{"description":"Default value assigned to the attribute when not explicitly provided.","type":"string","minLength":1,"nullable":true},"validationRegexp":{"description":"Regular expression used to validate user input for text attributes.","type":"string","minLength":1,"nullable":true},"minValue":{"description":"Minimum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"maxValue":{"description":"Maximum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"step":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"number","minLength":1,"nullable":true},"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}},"nullable":true,"type":"object"},"PvcAddedAttributeFormat":{"type":"string","description":"Defines the data type the attribute can accept. Enum: \"text\" \"number\" \"boolean\"","enum":["text","number","boolean"],"nullable":true},"StorageClassConfiguration":{"type":"object","required":["id","tenantId","scopeType","scopeId","name"],"properties":{"id":{"description":"The unique identifier of the storage class configuration.","type":"string","format":"uuid"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"scopeType":{"description":"Currently supported value: 'cluster', which is also the default.","type":"string","enum":["cluster"],"default":"cluster"},"scopeId":{"$ref":"#/components/schemas/ScopeClusterId"},"name":{"$ref":"#/components/schemas/StorageClassName"},"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"$ref":"#/components/schemas/StorageClassCustomization"}}},"TenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"ScopeClusterId":{"description":"The ID of the cluster.","type":"string","format":"uuid"},"StorageClassName":{"description":"The name of the storage class to which the configuration applies.","type":"string"},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/storage-class-configuration/{id}":{"put":{"summary":"Update storage class configuration by id","description":"Updates an existing storage class configuration by its unique identifier. Use this endpoint to fully replace an existing configuration, including permissions and customization settings.","operationId":"update_storage_class_configuration_by_id","tags":["Storage Class Configuration"],"parameters":[{"$ref":"#/components/parameters/StorageClassConfigurationId"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfigurationUpdateRequest"}}}},"responses":{"200":{"description":"Storage class configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfiguration"}}}},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"500":{"$ref":"#/components/responses/500InternalServerError"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Delete storage class configuration by id

> Deletes a specific storage class configuration by its unique identifier. Use this endpoint to permanently remove configurations that are no longer needed.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.25"},"tags":[{"name":"Storage Class Configuration"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"StorageClassConfigurationId":{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"unique identifier of the storage class configuration"}},"responses":{"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}}},"paths":{"/api/v1/storage-class-configuration/{id}":{"delete":{"summary":"Delete storage class configuration by id","description":"Deletes a specific storage class configuration by its unique identifier. Use this endpoint to permanently remove configurations that are no longer needed.","operationId":"delete_storage_class_configuration_by_id","tags":["Storage Class Configuration"],"parameters":[{"$ref":"#/components/parameters/StorageClassConfigurationId"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Storage class configuration deleted"},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"500":{"$ref":"#/components/responses/500InternalServerError"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Patch storage class configuration by id

> Partially updates an existing storage class configuration by its unique identifier. Use this endpoint to modify specific fields, such as permissions, customization values, or attributes, without replacing the entire configuration.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.25"},"tags":[{"name":"Storage Class Configuration"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"StorageClassConfigurationId":{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"unique identifier of the storage class configuration"}},"schemas":{"StorageClassConfigurationPatchRequest":{"type":"object","properties":{"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"type":"object","allOf":[{"$ref":"#/components/schemas/StorageClassCustomization"},{"$ref":"#/components/schemas/PvcAttributesToRemove"}],"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"}}},"AllowedForAssets":{"type":"boolean","nullable":true,"description":"Determines whether PVC assets can be created using this storage class."},"AllowedForWorkloads":{"type":"boolean","nullable":true,"description":"Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class."},"AllowedForEphemeralVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowedForPersistentVolumes":{"type":"boolean","nullable":true,"description":"Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class."},"AllowDataSharing":{"type":"boolean","nullable":true,"description":"Allows creation of PVCs using a shared volume."},"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},"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"},"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"},"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},"PvcVolumeMode":{"description":"Default volume mode for the PVC. Choose between Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"ClaimSizeCustomization":{"description":"Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.","properties":{"default":{"$ref":"#/components/schemas/PvcClaimSize"},"supportedUnits":{"description":"Units supported for specifying PVC sizes. Valid values: \"MB\", \"MiB\", \"GB\", \"GiB\", \"TB\", \"TiB\".","type":"array","items":{"type":"string","enum":["MB","MiB","GB","GiB","TB","TiB"]}},"min":{"$ref":"#/components/schemas/PvcClaimMinSize"},"max":{"$ref":"#/components/schemas/PvcClaimMaxSize"},"step":{"$ref":"#/components/schemas/PvcClaimStepSize"}},"type":"object","nullable":true},"PvcClaimSize":{"description":"Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","maxLength":63,"nullable":true},"PvcClaimMinSize":{"description":"Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","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]*)$","nullable":true},"PvcClaimStepSize":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"string","pattern":"^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$","nullable":true},"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"}},"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]$"},"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},"description":{"type":"string","minLength":1,"description":"A description of the attribute's purpose or expected values.","nullable":true},"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},"required":{"description":"Indicates whether this attribute is mandatory.","type":"boolean","nullable":true},"defaultValue":{"description":"Default value assigned to the attribute when not explicitly provided.","type":"string","minLength":1,"nullable":true},"validationRegexp":{"description":"Regular expression used to validate user input for text attributes.","type":"string","minLength":1,"nullable":true},"minValue":{"description":"Minimum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"maxValue":{"description":"Maximum allowed value for attributes of type number.","type":"number","minLength":1,"nullable":true},"step":{"description":"Defines the incremental step between allowed numeric values (for example, 1, 0.1).","type":"number","minLength":1,"nullable":true},"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}},"nullable":true,"type":"object"},"PvcAddedAttributeFormat":{"type":"string","description":"Defines the data type the attribute can accept. Enum: \"text\" \"number\" \"boolean\"","enum":["text","number","boolean"],"nullable":true},"PvcAttributesToRemove":{"description":"optional list of attributes that you wish to remove","properties":{"attributesToRemove":{"type":"array","items":{"type":"string"}}},"type":"object","nullable":true},"StorageClassConfiguration":{"type":"object","required":["id","tenantId","scopeType","scopeId","name"],"properties":{"id":{"description":"The unique identifier of the storage class configuration.","type":"string","format":"uuid"},"tenantId":{"$ref":"#/components/schemas/TenantId"},"scopeType":{"description":"Currently supported value: 'cluster', which is also the default.","type":"string","enum":["cluster"],"default":"cluster"},"scopeId":{"$ref":"#/components/schemas/ScopeClusterId"},"name":{"$ref":"#/components/schemas/StorageClassName"},"permissions":{"$ref":"#/components/schemas/StorageClassPermissions"},"customization":{"$ref":"#/components/schemas/StorageClassCustomization"}}},"TenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"ScopeClusterId":{"description":"The ID of the cluster.","type":"string","format":"uuid"},"StorageClassName":{"description":"The name of the storage class to which the configuration applies.","type":"string"},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/storage-class-configuration/{id}":{"patch":{"summary":"Patch storage class configuration by id","description":"Partially updates an existing storage class configuration by its unique identifier. Use this endpoint to modify specific fields, such as permissions, customization values, or attributes, without replacing the entire configuration.","operationId":"patch_storage_class_configuration_by_id","tags":["Storage Class Configuration"],"parameters":[{"$ref":"#/components/parameters/StorageClassConfigurationId"},{"name":"tenantId","in":"query","required":false,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfigurationPatchRequest"}}}},"responses":{"200":{"description":"Storage class configuration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageClassConfiguration"}}}},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"500":{"$ref":"#/components/responses/500InternalServerError"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://run-ai-docs.nvidia.com/api/2.25/workload-assets/storage-class-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
