# PVC

Use a PVC as a data source location for data sets that are relevant to the workload being submitted.

## List PVC assets.

> Retrieves a list of PVC datasource assets.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.22"},"tags":[{"name":"PVC","description":"Use a PVC as a data source location for data sets that are relevant to the workload being submitted."}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"AssetNameFilter":{"name":"name","in":"query","required":false,"description":"Filter results by name.","schema":{"type":"string"}},"AssetScopeFilter":{"name":"scope","in":"query","required":false,"description":"Filter results by scope.","schema":{"type":"string"}},"AssetProjectFilter":{"name":"projectId","in":"query","required":false,"description":"Filter results by project id. If scope filter is project, only assets from the specific project will be included in the response. Otherwise, the response will include project, department, cluster, tenant and system assets.","schema":{"type":"integer","format":"int32"}},"AssetDepartmentFilter":{"name":"departmentId","in":"query","description":"Filter results by department id. If scope filter is department, only assets from the specific department will be included in the response. Otherwise, the response will include department, cluster, tenant and system assets.","required":false,"schema":{"type":"string"}},"AssetClusterFilter":{"name":"clusterId","in":"query","description":"Filter results by Universally Unique Identifier (UUID) of the cluster. If scope filter is cluster, only assets from the specific cluster will be included in the response. Otherwise, the response will include cluster, tenant and system assets.","required":false,"schema":{"type":"string","format":"uuid"}},"IncludeUsageInfo":{"name":"usageInfo","in":"query","required":false,"description":"Whether the query should include asset usage information as part of the response.","schema":{"type":"boolean"}},"ComplyToProject":{"name":"complyToProject","in":"query","required":false,"description":"Include workload creation compliance information of an asset, for a given project, as part of the response. To check compliance, you need to provide both project id and workload type.","schema":{"type":"integer","format":"int32"}},"ComplyToWorkloadType":{"name":"complyToWorkloadType","in":"query","required":false,"description":"Include workload creation compliance information of an asset, for a given workload type, as part of the response. To check compliance, you need to provide both project id and workload type.","schema":{"type":"string","enum":["Workspace","Training","Distributed","Inference"]}},"IncludeStatus":{"name":"statusInfo","in":"query","required":false,"description":"Whether the query should include asset status information as part of the response.","schema":{"type":"boolean"}},"AssetIdsFilter":{"name":"assetIds","in":"query","required":false,"description":"Filter results by the ids of the assets. Provided value should be a comma separated string of UUIDs.","schema":{"type":"string","pattern":"^\\b(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})(?:,(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))*\\b$"}},"ComplyToReplicaType":{"name":"complyToReplicaType","in":"query","required":false,"description":"Include workload creation compliance information of an asset, for a given replica type, as part of the response. To check compliance, you need to provide both project id and workload type. For distributed, replica type should be provided as well.","schema":{"type":"string","enum":["Worker","Master"]}}},"schemas":{"PVCListResponse":{"required":["entries"],"properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/PVCAsset"}}}},"PVCAsset":{"required":["meta","spec"],"properties":{"meta":{"$ref":"#/components/schemas/AssetMeta"},"spec":{"$ref":"#/components/schemas/PVCAssetSpec"},"usedBy":{"$ref":"#/components/schemas/AssetUsageInfo"},"usageTimes":{"$ref":"#/components/schemas/UsageTimesInfo"},"compliance":{"$ref":"#/components/schemas/ComplianceInfo"},"status":{"$ref":"#/components/schemas/AssetClusterStatusInfo"},"clusterInfo":{"$ref":"#/components/schemas/ClusterInfo1"}}},"AssetMeta":{"allOf":[{"$ref":"#/components/schemas/AssetUpdatableFields"},{"$ref":"#/components/schemas/AssetCreationFields"},{"$ref":"#/components/schemas/AssetReadOnlyFields"}]},"AssetUpdatableFields":{"required":["name"],"properties":{"name":{"$ref":"#/components/schemas/AssetName"},"description":{"$ref":"#/components/schemas/AssetDescription"}}},"AssetName":{"description":"The name of the asset.","type":"string","minLength":1},"AssetDescription":{"description":"The description of the asset.","type":"string","minLength":1,"maxLength":250,"nullable":true},"AssetCreationFields":{"type":"object","required":["scope"],"properties":{"scope":{"$ref":"#/components/schemas/Scope"},"clusterId":{"$ref":"#/components/schemas/ClusterIdOptional"},"departmentId":{"description":"The id of the department. Must be specified for department scoped assets.","type":"string","nullable":true,"minLength":1},"projectId":{"description":"The id of the project. Must be specified for project scoped assets.","type":"integer","format":"int32","nullable":true},"autoDelete":{"description":"The asset will be deleted automatically. This is intended for internal use.","type":"boolean","nullable":true,"default":false},"workloadSupportedTypes":{"$ref":"#/components/schemas/WorkloadSupportedTypes"}}},"Scope":{"description":"The scope in which an asset can be used. The highest scope, system, is intended for internal purposes only.","type":"string","minLength":1,"enum":["system","tenant","cluster","department","project"]},"ClusterIdOptional":{"description":"The id of the cluster.","type":"string","format":"uuid","minLength":1,"nullable":true},"WorkloadSupportedTypes":{"properties":{"inference":{"description":"Is inference a supported workload type.","type":"boolean","nullable":true},"workspace":{"description":"Is workspace a supported workload type.","type":"boolean","nullable":true},"training":{"description":"Is training a supported workload type.","type":"boolean","nullable":true},"distributed":{"description":"Is distributed a supported workload type.","type":"boolean","nullable":true},"distFramework":{"description":"The distributed training framework used in the workload.","type":"string","enum":["MPI","PyTorch","TF","XGBoost"],"nullable":true}},"nullable":true,"type":"object"},"AssetReadOnlyFields":{"required":["id","kind","createdBy","createdAt","updatedBy","updatedAt"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"kind":{"$ref":"#/components/schemas/AssetKind"},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32","nullable":true},"createdBy":{"description":"The user who created the asset.","type":"string","minLength":1},"createdAt":{"description":"The time at which the asset were created","type":"string","minLength":1,"format":"date-time"},"updatedBy":{"description":"The user who updated the asset.","type":"string","minLength":1},"updatedAt":{"description":"The time at which the asset has been updated","type":"string","minLength":1,"format":"date-time"},"deletedAt":{"description":"Deletion time of the asset (relevant for assets that sync to the cluster)","type":"string","minLength":1,"format":"date-time"},"deletedBy":{"description":"The user who deleted the asset","type":"string","minLength":1},"projectName":{"description":"The name of the project that the asset is associated with, for project scoped assets.","type":"string","minLength":1,"nullable":true},"updateCount":{"$ref":"#/components/schemas/UpdateCount"}},"type":"object"},"AssetId":{"description":"Unique identifier of the asset.","type":"string","format":"uuid","minLength":1},"AssetKind":{"description":"The kind of the asset.","type":"string","minLength":1,"enum":["compute","environment","accessKey","dockerRegistry","password","genericSecret","registry","s3","git","nfs","pvc","hostPath","workload-template","model","config-map","secret-volume","data-volume"]},"UpdateCount":{"description":"the value of an update counter of a data in the system.","type":"integer","format":"int64"},"PVCAssetSpec":{"allOf":[{"$ref":"#/components/schemas/Pvc"}]},"Pvc":{"allOf":[{"$ref":"#/components/schemas/PvcFieldsUpdatable"},{"$ref":"#/components/schemas/PvcFieldsNonUpdatable"}]},"PvcFieldsUpdatable":{"properties":{"path":{"description":"Local path within the workload to which the PVC bucket will be mapped. (mandatory)","type":"string","minLength":1,"nullable":true}},"nullable":true,"type":"object"},"PvcFieldsNonUpdatable":{"properties":{"existingPvc":{"description":"Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.","type":"boolean","default":false,"nullable":true},"claimName":{"description":"Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.","type":"string","minLength":1,"maxLength":63,"nullable":true},"readOnly":{"description":"Permit only read access to PVC.","type":"boolean","default":false,"nullable":true},"ephemeral":{"description":"Use `true` to set PVC to ephemeral. If set to `true`, the PVC will be deleted when the workload is stopped. Not supported for inference workloads.","type":"boolean","default":false,"nullable":true},"claimInfo":{"$ref":"#/components/schemas/ClaimInfo"},"dataSharing":{"description":"use `true` to share the PVC data to all projects under the selected scope.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"ClaimInfo":{"description":"Claim information for the newly created PVC. The information should not be provided when attempting to use existing PVC.","properties":{"size":{"$ref":"#/components/schemas/PvcClaimSize"},"storageClass":{"description":"Storage class name to associate with the PVC. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. For more information, see [Storage class](https://kubernetes.io/docs/concepts/storage/storage-classes).","type":"string","minLength":1,"nullable":true},"accessModes":{"$ref":"#/components/schemas/PvcAccessModes"},"volumeMode":{"$ref":"#/components/schemas/PvcVolumeMode"},"addedAttrValues":{"$ref":"#/components/schemas/PvcAddedAttrValues"}},"nullable":true,"type":"object"},"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]*)$","nullable":true},"PvcAccessModes":{"description":"Requested access mode(s) for the newly created PVC.","properties":{"readWriteOnce":{"description":"Requesting claim that can be mounted in read/write mode to exactly one host. This is the default access mode.","type":"boolean","default":true,"nullable":true},"readOnlyMany":{"description":"Requesting claim that can be mounted in read-only mode to many hosts.","type":"boolean","default":false,"nullable":true},"readWriteMany":{"description":"Requesting claim that can be mounted in read/write mode to many hosts.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"PvcVolumeMode":{"description":"The volume mode required by the claim. Choose Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"PvcAddedAttrValues":{"description":"an optional array of key-values pairs that are written as annotations on the created PVC. the allowed attributes are determined according to the storage class configuration (see k8s-objects-tracker for further info).","type":"array","items":{"$ref":"#/components/schemas/PvcAddedAttrValue"}},"PvcAddedAttrValue":{"type":"object","required":["key"],"properties":{"key":{"type":"string","minLength":1,"maxLength":63,"pattern":"^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$"},"value":{"type":"string"}}},"AssetUsageInfo":{"description":"Details about resources that use the asset.","properties":{"workspaces":{"description":"workspaces that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"trainings":{"description":"trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"distributed":{"description":"distributed trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"inferences":{"description":"inferences that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"templates":{"description":"templates that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"assets":{"description":"list of other assets that use this asset. specifically, accessKeys used by s3, and passwords used by git.","$ref":"#/components/schemas/AssetsUsageRef"}},"nullable":true,"type":"object"},"WorkloadRefAndStatus":{"description":"Id, name and status of a workspace or training","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/WorkloadId1"},"name":{"$ref":"#/components/schemas/WorkloadName"},"status":{"description":"The status of the workspace or training.","type":"string","minLength":1}}},"WorkloadId1":{"description":"A unique ID of the workload.","type":"string","format":"uuid"},"WorkloadName":{"description":"The name of the workload.","type":"string","minLength":1},"AssetRef":{"description":"Reference information about an asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"}}},"AssetsUsageRef":{"description":"Reference information about usage of assets by other assets, for example datasources that uses credentials.","properties":{"environment":{"nullable":true,"type":"object","description":"environment asset.","allOf":[{"$ref":"#/components/schemas/EnvironmentAssetRef"}],"deprecated":true},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"compute":{"$ref":"#/components/schemas/AssetsUsageRefCompute","deprecated":true},"computes":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"datasources":{"type":"array","items":{"$ref":"#/components/schemas/AssetDatasourceRef"}}}},"EnvironmentAssetRef":{"description":"Reference information about environment asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"toolTypes":{"description":"the type of tools as defined in the connections of the environment asset.","type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ToolType"}}}},"ToolType":{"description":"Super set of Internal and External tool types.","type":"string","minLength":1,"enum":["jupyter-notebook","pycharm","visual-studio-code","tensorboard","rstudio","mlflow","custom","wandb","matlab","comet","chatbot-ui"]},"AssetsUsageRefCompute":{"allOf":[{"$ref":"#/components/schemas/AssetRef"}],"nullable":true,"type":"object"},"AssetDatasourceRef":{"description":"Reference information about a datasource asset.","required":["id","name","kind"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"kind":{"$ref":"#/components/schemas/AssetKind"},"overrides":{"$ref":"#/components/schemas/DataSourceOverrides","deprecated":true}}},"DataSourceOverrides":{"description":"specific fields to override in the data source.","type":"object","nullable":true,"properties":{"containerPath":{"type":"string","minLength":1,"nullable":true}}},"UsageTimesInfo":{"description":"Details about times the asset has been used by workloads, etc.","properties":{"lastUsedByWorkload":{"description":"The time at which the asset were last used by a workload of given type and project. This field requires complyToProject and complyToWorkload types flags of the API, to specify the workload type and project id.","type":"string","minLength":1,"format":"date-time","nullable":true}},"nullable":true,"type":"object"},"ComplianceInfo":{"description":"Compliance of the asset with creation of workloads in the given project.","properties":{"imposed":{"description":"Whether the asset is imposed on created workloads by the administrator.","type":"boolean"},"compliance":{"description":"Whether the asset info complies with creation of workloads in the project.","type":"boolean"},"reason":{"description":"For asset that does not comply, specify one or more reason why.","type":"array","items":{"$ref":"#/components/schemas/ComplianceInfoReason"}}},"nullable":true,"type":"object"},"ComplianceInfoReason":{"description":"A reason explaining why the asset does not comply with workloads creation for a given project.","required":["details"],"properties":{"field":{"description":"for policy related issues, includes a json path to the field in the policy for which the message applies.","nullable":true,"type":"string"},"details":{"description":"explanation of the reason for rejecting the asset.","type":"string"}}},"AssetClusterStatusInfo":{"properties":{"status":{"$ref":"#/components/schemas/AssetSyncStatusEnum"},"issues":{"$ref":"#/components/schemas/AssetClusterStatusIssues"},"message":{"type":"string"},"url":{"type":"string"}},"nullable":true,"type":"object"},"AssetSyncStatusEnum":{"type":"string","enum":["Creating","Deleting","Failed","Deletion failed","Issues found","No issues found","No status","Updating"]},"AssetClusterStatusIssues":{"type":"array","items":{"$ref":"#/components/schemas/AssetClusterStatusIssue"}},"AssetClusterStatusIssue":{"type":"object","required":["scopeId","scopeType","issue"],"properties":{"scopeId":{"$ref":"#/components/schemas/ScopeId"},"scopeType":{"$ref":"#/components/schemas/ScopeType"},"issue":{"$ref":"#/components/schemas/AssetClusterStatusIssueEnum"}}},"ScopeId":{"type":"string","description":"The id of the cluster, department or project, depending on the scope type."},"ScopeType":{"type":"string","enum":["system","tenant","cluster","department","project"]},"AssetClusterStatusIssueEnum":{"type":"string","enum":["ReplicationError","LostPhase","NotCreated"]},"ClusterInfo1":{"description":"Cluster related information of the asset.","properties":{"resources":{"type":"array","items":{"$ref":"#/components/schemas/ClusterResourceInfo"}}},"nullable":true,"type":"object"},"ClusterResourceInfo":{"properties":{"name":{"description":"The name of the resource created for the asset in the cluster.","type":"string","nullable":true}},"nullable":true,"type":"object"},"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"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/asset/datasource/pvc":{"get":{"summary":"List PVC assets.","description":"Retrieves a list of PVC datasource assets.","operationId":"list_pvc_assets","tags":["PVC"],"parameters":[{"$ref":"#/components/parameters/AssetNameFilter"},{"$ref":"#/components/parameters/AssetScopeFilter"},{"$ref":"#/components/parameters/AssetProjectFilter"},{"$ref":"#/components/parameters/AssetDepartmentFilter"},{"$ref":"#/components/parameters/AssetClusterFilter"},{"$ref":"#/components/parameters/IncludeUsageInfo"},{"$ref":"#/components/parameters/ComplyToProject"},{"$ref":"#/components/parameters/ComplyToWorkloadType"},{"$ref":"#/components/parameters/IncludeStatus"},{"$ref":"#/components/parameters/AssetIdsFilter"},{"$ref":"#/components/parameters/ComplyToReplicaType"}],"responses":{"200":{"description":"Request completed successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PVCListResponse"}}}},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Create a PVC asset.

> Use to create a PVC datasource asset.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.22"},"tags":[{"name":"PVC","description":"Use a PVC as a data source location for data sets that are relevant to the workload being submitted."}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"PVCCreationRequest":{"required":["meta","spec"],"properties":{"meta":{"$ref":"#/components/schemas/AssetCreationRequest"},"spec":{"$ref":"#/components/schemas/PVCAssetSpec"}}},"AssetCreationRequest":{"allOf":[{"$ref":"#/components/schemas/AssetUpdatableFields"},{"$ref":"#/components/schemas/AssetCreationFields"}]},"AssetUpdatableFields":{"required":["name"],"properties":{"name":{"$ref":"#/components/schemas/AssetName"},"description":{"$ref":"#/components/schemas/AssetDescription"}}},"AssetName":{"description":"The name of the asset.","type":"string","minLength":1},"AssetDescription":{"description":"The description of the asset.","type":"string","minLength":1,"maxLength":250,"nullable":true},"AssetCreationFields":{"type":"object","required":["scope"],"properties":{"scope":{"$ref":"#/components/schemas/Scope"},"clusterId":{"$ref":"#/components/schemas/ClusterIdOptional"},"departmentId":{"description":"The id of the department. Must be specified for department scoped assets.","type":"string","nullable":true,"minLength":1},"projectId":{"description":"The id of the project. Must be specified for project scoped assets.","type":"integer","format":"int32","nullable":true},"autoDelete":{"description":"The asset will be deleted automatically. This is intended for internal use.","type":"boolean","nullable":true,"default":false},"workloadSupportedTypes":{"$ref":"#/components/schemas/WorkloadSupportedTypes"}}},"Scope":{"description":"The scope in which an asset can be used. The highest scope, system, is intended for internal purposes only.","type":"string","minLength":1,"enum":["system","tenant","cluster","department","project"]},"ClusterIdOptional":{"description":"The id of the cluster.","type":"string","format":"uuid","minLength":1,"nullable":true},"WorkloadSupportedTypes":{"properties":{"inference":{"description":"Is inference a supported workload type.","type":"boolean","nullable":true},"workspace":{"description":"Is workspace a supported workload type.","type":"boolean","nullable":true},"training":{"description":"Is training a supported workload type.","type":"boolean","nullable":true},"distributed":{"description":"Is distributed a supported workload type.","type":"boolean","nullable":true},"distFramework":{"description":"The distributed training framework used in the workload.","type":"string","enum":["MPI","PyTorch","TF","XGBoost"],"nullable":true}},"nullable":true,"type":"object"},"PVCAssetSpec":{"allOf":[{"$ref":"#/components/schemas/Pvc"}]},"Pvc":{"allOf":[{"$ref":"#/components/schemas/PvcFieldsUpdatable"},{"$ref":"#/components/schemas/PvcFieldsNonUpdatable"}]},"PvcFieldsUpdatable":{"properties":{"path":{"description":"Local path within the workload to which the PVC bucket will be mapped. (mandatory)","type":"string","minLength":1,"nullable":true}},"nullable":true,"type":"object"},"PvcFieldsNonUpdatable":{"properties":{"existingPvc":{"description":"Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.","type":"boolean","default":false,"nullable":true},"claimName":{"description":"Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.","type":"string","minLength":1,"maxLength":63,"nullable":true},"readOnly":{"description":"Permit only read access to PVC.","type":"boolean","default":false,"nullable":true},"ephemeral":{"description":"Use `true` to set PVC to ephemeral. If set to `true`, the PVC will be deleted when the workload is stopped. Not supported for inference workloads.","type":"boolean","default":false,"nullable":true},"claimInfo":{"$ref":"#/components/schemas/ClaimInfo"},"dataSharing":{"description":"use `true` to share the PVC data to all projects under the selected scope.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"ClaimInfo":{"description":"Claim information for the newly created PVC. The information should not be provided when attempting to use existing PVC.","properties":{"size":{"$ref":"#/components/schemas/PvcClaimSize"},"storageClass":{"description":"Storage class name to associate with the PVC. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. For more information, see [Storage class](https://kubernetes.io/docs/concepts/storage/storage-classes).","type":"string","minLength":1,"nullable":true},"accessModes":{"$ref":"#/components/schemas/PvcAccessModes"},"volumeMode":{"$ref":"#/components/schemas/PvcVolumeMode"},"addedAttrValues":{"$ref":"#/components/schemas/PvcAddedAttrValues"}},"nullable":true,"type":"object"},"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]*)$","nullable":true},"PvcAccessModes":{"description":"Requested access mode(s) for the newly created PVC.","properties":{"readWriteOnce":{"description":"Requesting claim that can be mounted in read/write mode to exactly one host. This is the default access mode.","type":"boolean","default":true,"nullable":true},"readOnlyMany":{"description":"Requesting claim that can be mounted in read-only mode to many hosts.","type":"boolean","default":false,"nullable":true},"readWriteMany":{"description":"Requesting claim that can be mounted in read/write mode to many hosts.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"PvcVolumeMode":{"description":"The volume mode required by the claim. Choose Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"PvcAddedAttrValues":{"description":"an optional array of key-values pairs that are written as annotations on the created PVC. the allowed attributes are determined according to the storage class configuration (see k8s-objects-tracker for further info).","type":"array","items":{"$ref":"#/components/schemas/PvcAddedAttrValue"}},"PvcAddedAttrValue":{"type":"object","required":["key"],"properties":{"key":{"type":"string","minLength":1,"maxLength":63,"pattern":"^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$"},"value":{"type":"string"}}},"PVCAsset":{"required":["meta","spec"],"properties":{"meta":{"$ref":"#/components/schemas/AssetMeta"},"spec":{"$ref":"#/components/schemas/PVCAssetSpec"},"usedBy":{"$ref":"#/components/schemas/AssetUsageInfo"},"usageTimes":{"$ref":"#/components/schemas/UsageTimesInfo"},"compliance":{"$ref":"#/components/schemas/ComplianceInfo"},"status":{"$ref":"#/components/schemas/AssetClusterStatusInfo"},"clusterInfo":{"$ref":"#/components/schemas/ClusterInfo1"}}},"AssetMeta":{"allOf":[{"$ref":"#/components/schemas/AssetUpdatableFields"},{"$ref":"#/components/schemas/AssetCreationFields"},{"$ref":"#/components/schemas/AssetReadOnlyFields"}]},"AssetReadOnlyFields":{"required":["id","kind","createdBy","createdAt","updatedBy","updatedAt"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"kind":{"$ref":"#/components/schemas/AssetKind"},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32","nullable":true},"createdBy":{"description":"The user who created the asset.","type":"string","minLength":1},"createdAt":{"description":"The time at which the asset were created","type":"string","minLength":1,"format":"date-time"},"updatedBy":{"description":"The user who updated the asset.","type":"string","minLength":1},"updatedAt":{"description":"The time at which the asset has been updated","type":"string","minLength":1,"format":"date-time"},"deletedAt":{"description":"Deletion time of the asset (relevant for assets that sync to the cluster)","type":"string","minLength":1,"format":"date-time"},"deletedBy":{"description":"The user who deleted the asset","type":"string","minLength":1},"projectName":{"description":"The name of the project that the asset is associated with, for project scoped assets.","type":"string","minLength":1,"nullable":true},"updateCount":{"$ref":"#/components/schemas/UpdateCount"}},"type":"object"},"AssetId":{"description":"Unique identifier of the asset.","type":"string","format":"uuid","minLength":1},"AssetKind":{"description":"The kind of the asset.","type":"string","minLength":1,"enum":["compute","environment","accessKey","dockerRegistry","password","genericSecret","registry","s3","git","nfs","pvc","hostPath","workload-template","model","config-map","secret-volume","data-volume"]},"UpdateCount":{"description":"the value of an update counter of a data in the system.","type":"integer","format":"int64"},"AssetUsageInfo":{"description":"Details about resources that use the asset.","properties":{"workspaces":{"description":"workspaces that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"trainings":{"description":"trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"distributed":{"description":"distributed trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"inferences":{"description":"inferences that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"templates":{"description":"templates that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"assets":{"description":"list of other assets that use this asset. specifically, accessKeys used by s3, and passwords used by git.","$ref":"#/components/schemas/AssetsUsageRef"}},"nullable":true,"type":"object"},"WorkloadRefAndStatus":{"description":"Id, name and status of a workspace or training","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/WorkloadId1"},"name":{"$ref":"#/components/schemas/WorkloadName"},"status":{"description":"The status of the workspace or training.","type":"string","minLength":1}}},"WorkloadId1":{"description":"A unique ID of the workload.","type":"string","format":"uuid"},"WorkloadName":{"description":"The name of the workload.","type":"string","minLength":1},"AssetRef":{"description":"Reference information about an asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"}}},"AssetsUsageRef":{"description":"Reference information about usage of assets by other assets, for example datasources that uses credentials.","properties":{"environment":{"nullable":true,"type":"object","description":"environment asset.","allOf":[{"$ref":"#/components/schemas/EnvironmentAssetRef"}],"deprecated":true},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"compute":{"$ref":"#/components/schemas/AssetsUsageRefCompute","deprecated":true},"computes":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"datasources":{"type":"array","items":{"$ref":"#/components/schemas/AssetDatasourceRef"}}}},"EnvironmentAssetRef":{"description":"Reference information about environment asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"toolTypes":{"description":"the type of tools as defined in the connections of the environment asset.","type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ToolType"}}}},"ToolType":{"description":"Super set of Internal and External tool types.","type":"string","minLength":1,"enum":["jupyter-notebook","pycharm","visual-studio-code","tensorboard","rstudio","mlflow","custom","wandb","matlab","comet","chatbot-ui"]},"AssetsUsageRefCompute":{"allOf":[{"$ref":"#/components/schemas/AssetRef"}],"nullable":true,"type":"object"},"AssetDatasourceRef":{"description":"Reference information about a datasource asset.","required":["id","name","kind"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"kind":{"$ref":"#/components/schemas/AssetKind"},"overrides":{"$ref":"#/components/schemas/DataSourceOverrides","deprecated":true}}},"DataSourceOverrides":{"description":"specific fields to override in the data source.","type":"object","nullable":true,"properties":{"containerPath":{"type":"string","minLength":1,"nullable":true}}},"UsageTimesInfo":{"description":"Details about times the asset has been used by workloads, etc.","properties":{"lastUsedByWorkload":{"description":"The time at which the asset were last used by a workload of given type and project. This field requires complyToProject and complyToWorkload types flags of the API, to specify the workload type and project id.","type":"string","minLength":1,"format":"date-time","nullable":true}},"nullable":true,"type":"object"},"ComplianceInfo":{"description":"Compliance of the asset with creation of workloads in the given project.","properties":{"imposed":{"description":"Whether the asset is imposed on created workloads by the administrator.","type":"boolean"},"compliance":{"description":"Whether the asset info complies with creation of workloads in the project.","type":"boolean"},"reason":{"description":"For asset that does not comply, specify one or more reason why.","type":"array","items":{"$ref":"#/components/schemas/ComplianceInfoReason"}}},"nullable":true,"type":"object"},"ComplianceInfoReason":{"description":"A reason explaining why the asset does not comply with workloads creation for a given project.","required":["details"],"properties":{"field":{"description":"for policy related issues, includes a json path to the field in the policy for which the message applies.","nullable":true,"type":"string"},"details":{"description":"explanation of the reason for rejecting the asset.","type":"string"}}},"AssetClusterStatusInfo":{"properties":{"status":{"$ref":"#/components/schemas/AssetSyncStatusEnum"},"issues":{"$ref":"#/components/schemas/AssetClusterStatusIssues"},"message":{"type":"string"},"url":{"type":"string"}},"nullable":true,"type":"object"},"AssetSyncStatusEnum":{"type":"string","enum":["Creating","Deleting","Failed","Deletion failed","Issues found","No issues found","No status","Updating"]},"AssetClusterStatusIssues":{"type":"array","items":{"$ref":"#/components/schemas/AssetClusterStatusIssue"}},"AssetClusterStatusIssue":{"type":"object","required":["scopeId","scopeType","issue"],"properties":{"scopeId":{"$ref":"#/components/schemas/ScopeId"},"scopeType":{"$ref":"#/components/schemas/ScopeType"},"issue":{"$ref":"#/components/schemas/AssetClusterStatusIssueEnum"}}},"ScopeId":{"type":"string","description":"The id of the cluster, department or project, depending on the scope type."},"ScopeType":{"type":"string","enum":["system","tenant","cluster","department","project"]},"AssetClusterStatusIssueEnum":{"type":"string","enum":["ReplicationError","LostPhase","NotCreated"]},"ClusterInfo1":{"description":"Cluster related information of the asset.","properties":{"resources":{"type":"array","items":{"$ref":"#/components/schemas/ClusterResourceInfo"}}},"nullable":true,"type":"object"},"ClusterResourceInfo":{"properties":{"name":{"description":"The name of the resource created for the asset in the cluster.","type":"string","nullable":true}},"nullable":true,"type":"object"},"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"}}}},"409Conflict":{"description":"The specified resource already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/asset/datasource/pvc":{"post":{"summary":"Create a PVC asset.","description":"Use to create a PVC datasource asset.","operationId":"create_pvc_asset","tags":["PVC"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PVCCreationRequest"}}}},"responses":{"202":{"description":"Request accepted successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PVCAsset"}}}},"400":{"$ref":"#/components/responses/400BadRequest"},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"409":{"$ref":"#/components/responses/409Conflict"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Get a PVC asset.

> Retrieve the details of a PVC datasource asset by id.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.22"},"tags":[{"name":"PVC","description":"Use a PVC as a data source location for data sets that are relevant to the workload being submitted."}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"IncludeUsageInfo":{"name":"usageInfo","in":"query","required":false,"description":"Whether the query should include asset usage information as part of the response.","schema":{"type":"boolean"}},"ComplyToProject":{"name":"complyToProject","in":"query","required":false,"description":"Include workload creation compliance information of an asset, for a given project, as part of the response. To check compliance, you need to provide both project id and workload type.","schema":{"type":"integer","format":"int32"}},"ComplyToWorkloadType":{"name":"complyToWorkloadType","in":"query","required":false,"description":"Include workload creation compliance information of an asset, for a given workload type, as part of the response. To check compliance, you need to provide both project id and workload type.","schema":{"type":"string","enum":["Workspace","Training","Distributed","Inference"]}},"IncludeStatus":{"name":"statusInfo","in":"query","required":false,"description":"Whether the query should include asset status information as part of the response.","schema":{"type":"boolean"}},"ComplyToReplicaType":{"name":"complyToReplicaType","in":"query","required":false,"description":"Include workload creation compliance information of an asset, for a given replica type, as part of the response. To check compliance, you need to provide both project id and workload type. For distributed, replica type should be provided as well.","schema":{"type":"string","enum":["Worker","Master"]}}},"schemas":{"PVCAsset":{"required":["meta","spec"],"properties":{"meta":{"$ref":"#/components/schemas/AssetMeta"},"spec":{"$ref":"#/components/schemas/PVCAssetSpec"},"usedBy":{"$ref":"#/components/schemas/AssetUsageInfo"},"usageTimes":{"$ref":"#/components/schemas/UsageTimesInfo"},"compliance":{"$ref":"#/components/schemas/ComplianceInfo"},"status":{"$ref":"#/components/schemas/AssetClusterStatusInfo"},"clusterInfo":{"$ref":"#/components/schemas/ClusterInfo1"}}},"AssetMeta":{"allOf":[{"$ref":"#/components/schemas/AssetUpdatableFields"},{"$ref":"#/components/schemas/AssetCreationFields"},{"$ref":"#/components/schemas/AssetReadOnlyFields"}]},"AssetUpdatableFields":{"required":["name"],"properties":{"name":{"$ref":"#/components/schemas/AssetName"},"description":{"$ref":"#/components/schemas/AssetDescription"}}},"AssetName":{"description":"The name of the asset.","type":"string","minLength":1},"AssetDescription":{"description":"The description of the asset.","type":"string","minLength":1,"maxLength":250,"nullable":true},"AssetCreationFields":{"type":"object","required":["scope"],"properties":{"scope":{"$ref":"#/components/schemas/Scope"},"clusterId":{"$ref":"#/components/schemas/ClusterIdOptional"},"departmentId":{"description":"The id of the department. Must be specified for department scoped assets.","type":"string","nullable":true,"minLength":1},"projectId":{"description":"The id of the project. Must be specified for project scoped assets.","type":"integer","format":"int32","nullable":true},"autoDelete":{"description":"The asset will be deleted automatically. This is intended for internal use.","type":"boolean","nullable":true,"default":false},"workloadSupportedTypes":{"$ref":"#/components/schemas/WorkloadSupportedTypes"}}},"Scope":{"description":"The scope in which an asset can be used. The highest scope, system, is intended for internal purposes only.","type":"string","minLength":1,"enum":["system","tenant","cluster","department","project"]},"ClusterIdOptional":{"description":"The id of the cluster.","type":"string","format":"uuid","minLength":1,"nullable":true},"WorkloadSupportedTypes":{"properties":{"inference":{"description":"Is inference a supported workload type.","type":"boolean","nullable":true},"workspace":{"description":"Is workspace a supported workload type.","type":"boolean","nullable":true},"training":{"description":"Is training a supported workload type.","type":"boolean","nullable":true},"distributed":{"description":"Is distributed a supported workload type.","type":"boolean","nullable":true},"distFramework":{"description":"The distributed training framework used in the workload.","type":"string","enum":["MPI","PyTorch","TF","XGBoost"],"nullable":true}},"nullable":true,"type":"object"},"AssetReadOnlyFields":{"required":["id","kind","createdBy","createdAt","updatedBy","updatedAt"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"kind":{"$ref":"#/components/schemas/AssetKind"},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32","nullable":true},"createdBy":{"description":"The user who created the asset.","type":"string","minLength":1},"createdAt":{"description":"The time at which the asset were created","type":"string","minLength":1,"format":"date-time"},"updatedBy":{"description":"The user who updated the asset.","type":"string","minLength":1},"updatedAt":{"description":"The time at which the asset has been updated","type":"string","minLength":1,"format":"date-time"},"deletedAt":{"description":"Deletion time of the asset (relevant for assets that sync to the cluster)","type":"string","minLength":1,"format":"date-time"},"deletedBy":{"description":"The user who deleted the asset","type":"string","minLength":1},"projectName":{"description":"The name of the project that the asset is associated with, for project scoped assets.","type":"string","minLength":1,"nullable":true},"updateCount":{"$ref":"#/components/schemas/UpdateCount"}},"type":"object"},"AssetId":{"description":"Unique identifier of the asset.","type":"string","format":"uuid","minLength":1},"AssetKind":{"description":"The kind of the asset.","type":"string","minLength":1,"enum":["compute","environment","accessKey","dockerRegistry","password","genericSecret","registry","s3","git","nfs","pvc","hostPath","workload-template","model","config-map","secret-volume","data-volume"]},"UpdateCount":{"description":"the value of an update counter of a data in the system.","type":"integer","format":"int64"},"PVCAssetSpec":{"allOf":[{"$ref":"#/components/schemas/Pvc"}]},"Pvc":{"allOf":[{"$ref":"#/components/schemas/PvcFieldsUpdatable"},{"$ref":"#/components/schemas/PvcFieldsNonUpdatable"}]},"PvcFieldsUpdatable":{"properties":{"path":{"description":"Local path within the workload to which the PVC bucket will be mapped. (mandatory)","type":"string","minLength":1,"nullable":true}},"nullable":true,"type":"object"},"PvcFieldsNonUpdatable":{"properties":{"existingPvc":{"description":"Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.","type":"boolean","default":false,"nullable":true},"claimName":{"description":"Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.","type":"string","minLength":1,"maxLength":63,"nullable":true},"readOnly":{"description":"Permit only read access to PVC.","type":"boolean","default":false,"nullable":true},"ephemeral":{"description":"Use `true` to set PVC to ephemeral. If set to `true`, the PVC will be deleted when the workload is stopped. Not supported for inference workloads.","type":"boolean","default":false,"nullable":true},"claimInfo":{"$ref":"#/components/schemas/ClaimInfo"},"dataSharing":{"description":"use `true` to share the PVC data to all projects under the selected scope.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"ClaimInfo":{"description":"Claim information for the newly created PVC. The information should not be provided when attempting to use existing PVC.","properties":{"size":{"$ref":"#/components/schemas/PvcClaimSize"},"storageClass":{"description":"Storage class name to associate with the PVC. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. For more information, see [Storage class](https://kubernetes.io/docs/concepts/storage/storage-classes).","type":"string","minLength":1,"nullable":true},"accessModes":{"$ref":"#/components/schemas/PvcAccessModes"},"volumeMode":{"$ref":"#/components/schemas/PvcVolumeMode"},"addedAttrValues":{"$ref":"#/components/schemas/PvcAddedAttrValues"}},"nullable":true,"type":"object"},"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]*)$","nullable":true},"PvcAccessModes":{"description":"Requested access mode(s) for the newly created PVC.","properties":{"readWriteOnce":{"description":"Requesting claim that can be mounted in read/write mode to exactly one host. This is the default access mode.","type":"boolean","default":true,"nullable":true},"readOnlyMany":{"description":"Requesting claim that can be mounted in read-only mode to many hosts.","type":"boolean","default":false,"nullable":true},"readWriteMany":{"description":"Requesting claim that can be mounted in read/write mode to many hosts.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"PvcVolumeMode":{"description":"The volume mode required by the claim. Choose Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"PvcAddedAttrValues":{"description":"an optional array of key-values pairs that are written as annotations on the created PVC. the allowed attributes are determined according to the storage class configuration (see k8s-objects-tracker for further info).","type":"array","items":{"$ref":"#/components/schemas/PvcAddedAttrValue"}},"PvcAddedAttrValue":{"type":"object","required":["key"],"properties":{"key":{"type":"string","minLength":1,"maxLength":63,"pattern":"^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$"},"value":{"type":"string"}}},"AssetUsageInfo":{"description":"Details about resources that use the asset.","properties":{"workspaces":{"description":"workspaces that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"trainings":{"description":"trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"distributed":{"description":"distributed trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"inferences":{"description":"inferences that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"templates":{"description":"templates that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"assets":{"description":"list of other assets that use this asset. specifically, accessKeys used by s3, and passwords used by git.","$ref":"#/components/schemas/AssetsUsageRef"}},"nullable":true,"type":"object"},"WorkloadRefAndStatus":{"description":"Id, name and status of a workspace or training","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/WorkloadId1"},"name":{"$ref":"#/components/schemas/WorkloadName"},"status":{"description":"The status of the workspace or training.","type":"string","minLength":1}}},"WorkloadId1":{"description":"A unique ID of the workload.","type":"string","format":"uuid"},"WorkloadName":{"description":"The name of the workload.","type":"string","minLength":1},"AssetRef":{"description":"Reference information about an asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"}}},"AssetsUsageRef":{"description":"Reference information about usage of assets by other assets, for example datasources that uses credentials.","properties":{"environment":{"nullable":true,"type":"object","description":"environment asset.","allOf":[{"$ref":"#/components/schemas/EnvironmentAssetRef"}],"deprecated":true},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"compute":{"$ref":"#/components/schemas/AssetsUsageRefCompute","deprecated":true},"computes":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"datasources":{"type":"array","items":{"$ref":"#/components/schemas/AssetDatasourceRef"}}}},"EnvironmentAssetRef":{"description":"Reference information about environment asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"toolTypes":{"description":"the type of tools as defined in the connections of the environment asset.","type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ToolType"}}}},"ToolType":{"description":"Super set of Internal and External tool types.","type":"string","minLength":1,"enum":["jupyter-notebook","pycharm","visual-studio-code","tensorboard","rstudio","mlflow","custom","wandb","matlab","comet","chatbot-ui"]},"AssetsUsageRefCompute":{"allOf":[{"$ref":"#/components/schemas/AssetRef"}],"nullable":true,"type":"object"},"AssetDatasourceRef":{"description":"Reference information about a datasource asset.","required":["id","name","kind"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"kind":{"$ref":"#/components/schemas/AssetKind"},"overrides":{"$ref":"#/components/schemas/DataSourceOverrides","deprecated":true}}},"DataSourceOverrides":{"description":"specific fields to override in the data source.","type":"object","nullable":true,"properties":{"containerPath":{"type":"string","minLength":1,"nullable":true}}},"UsageTimesInfo":{"description":"Details about times the asset has been used by workloads, etc.","properties":{"lastUsedByWorkload":{"description":"The time at which the asset were last used by a workload of given type and project. This field requires complyToProject and complyToWorkload types flags of the API, to specify the workload type and project id.","type":"string","minLength":1,"format":"date-time","nullable":true}},"nullable":true,"type":"object"},"ComplianceInfo":{"description":"Compliance of the asset with creation of workloads in the given project.","properties":{"imposed":{"description":"Whether the asset is imposed on created workloads by the administrator.","type":"boolean"},"compliance":{"description":"Whether the asset info complies with creation of workloads in the project.","type":"boolean"},"reason":{"description":"For asset that does not comply, specify one or more reason why.","type":"array","items":{"$ref":"#/components/schemas/ComplianceInfoReason"}}},"nullable":true,"type":"object"},"ComplianceInfoReason":{"description":"A reason explaining why the asset does not comply with workloads creation for a given project.","required":["details"],"properties":{"field":{"description":"for policy related issues, includes a json path to the field in the policy for which the message applies.","nullable":true,"type":"string"},"details":{"description":"explanation of the reason for rejecting the asset.","type":"string"}}},"AssetClusterStatusInfo":{"properties":{"status":{"$ref":"#/components/schemas/AssetSyncStatusEnum"},"issues":{"$ref":"#/components/schemas/AssetClusterStatusIssues"},"message":{"type":"string"},"url":{"type":"string"}},"nullable":true,"type":"object"},"AssetSyncStatusEnum":{"type":"string","enum":["Creating","Deleting","Failed","Deletion failed","Issues found","No issues found","No status","Updating"]},"AssetClusterStatusIssues":{"type":"array","items":{"$ref":"#/components/schemas/AssetClusterStatusIssue"}},"AssetClusterStatusIssue":{"type":"object","required":["scopeId","scopeType","issue"],"properties":{"scopeId":{"$ref":"#/components/schemas/ScopeId"},"scopeType":{"$ref":"#/components/schemas/ScopeType"},"issue":{"$ref":"#/components/schemas/AssetClusterStatusIssueEnum"}}},"ScopeId":{"type":"string","description":"The id of the cluster, department or project, depending on the scope type."},"ScopeType":{"type":"string","enum":["system","tenant","cluster","department","project"]},"AssetClusterStatusIssueEnum":{"type":"string","enum":["ReplicationError","LostPhase","NotCreated"]},"ClusterInfo1":{"description":"Cluster related information of the asset.","properties":{"resources":{"type":"array","items":{"$ref":"#/components/schemas/ClusterResourceInfo"}}},"nullable":true,"type":"object"},"ClusterResourceInfo":{"properties":{"name":{"description":"The name of the resource created for the asset in the cluster.","type":"string","nullable":true}},"nullable":true,"type":"object"},"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"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/asset/datasource/pvc/{AssetId}":{"get":{"summary":"Get a PVC asset.","description":"Retrieve the details of a PVC datasource asset by id.","operationId":"get_pvc_asset_by_id","tags":["PVC"],"parameters":[{"$ref":"#/components/parameters/IncludeUsageInfo"},{"$ref":"#/components/parameters/ComplyToProject"},{"$ref":"#/components/parameters/ComplyToWorkloadType"},{"$ref":"#/components/parameters/IncludeStatus"},{"$ref":"#/components/parameters/ComplyToReplicaType"}],"responses":{"200":{"description":"Request completed successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PVCAsset"}}}},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Update a PVC asset.

> Use to update the details of a PVC datasource asset by id.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.22"},"tags":[{"name":"PVC","description":"Use a PVC as a data source location for data sets that are relevant to the workload being submitted."}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"PVCUpdateRequest":{"required":["meta","spec"],"properties":{"meta":{"$ref":"#/components/schemas/AssetUpdateRequest"},"spec":{"$ref":"#/components/schemas/PvcFieldsUpdatable"}}},"AssetUpdateRequest":{"allOf":[{"$ref":"#/components/schemas/AssetUpdatableFields"}]},"AssetUpdatableFields":{"required":["name"],"properties":{"name":{"$ref":"#/components/schemas/AssetName"},"description":{"$ref":"#/components/schemas/AssetDescription"}}},"AssetName":{"description":"The name of the asset.","type":"string","minLength":1},"AssetDescription":{"description":"The description of the asset.","type":"string","minLength":1,"maxLength":250,"nullable":true},"PvcFieldsUpdatable":{"properties":{"path":{"description":"Local path within the workload to which the PVC bucket will be mapped. (mandatory)","type":"string","minLength":1,"nullable":true}},"nullable":true,"type":"object"},"PVCAsset":{"required":["meta","spec"],"properties":{"meta":{"$ref":"#/components/schemas/AssetMeta"},"spec":{"$ref":"#/components/schemas/PVCAssetSpec"},"usedBy":{"$ref":"#/components/schemas/AssetUsageInfo"},"usageTimes":{"$ref":"#/components/schemas/UsageTimesInfo"},"compliance":{"$ref":"#/components/schemas/ComplianceInfo"},"status":{"$ref":"#/components/schemas/AssetClusterStatusInfo"},"clusterInfo":{"$ref":"#/components/schemas/ClusterInfo1"}}},"AssetMeta":{"allOf":[{"$ref":"#/components/schemas/AssetUpdatableFields"},{"$ref":"#/components/schemas/AssetCreationFields"},{"$ref":"#/components/schemas/AssetReadOnlyFields"}]},"AssetCreationFields":{"type":"object","required":["scope"],"properties":{"scope":{"$ref":"#/components/schemas/Scope"},"clusterId":{"$ref":"#/components/schemas/ClusterIdOptional"},"departmentId":{"description":"The id of the department. Must be specified for department scoped assets.","type":"string","nullable":true,"minLength":1},"projectId":{"description":"The id of the project. Must be specified for project scoped assets.","type":"integer","format":"int32","nullable":true},"autoDelete":{"description":"The asset will be deleted automatically. This is intended for internal use.","type":"boolean","nullable":true,"default":false},"workloadSupportedTypes":{"$ref":"#/components/schemas/WorkloadSupportedTypes"}}},"Scope":{"description":"The scope in which an asset can be used. The highest scope, system, is intended for internal purposes only.","type":"string","minLength":1,"enum":["system","tenant","cluster","department","project"]},"ClusterIdOptional":{"description":"The id of the cluster.","type":"string","format":"uuid","minLength":1,"nullable":true},"WorkloadSupportedTypes":{"properties":{"inference":{"description":"Is inference a supported workload type.","type":"boolean","nullable":true},"workspace":{"description":"Is workspace a supported workload type.","type":"boolean","nullable":true},"training":{"description":"Is training a supported workload type.","type":"boolean","nullable":true},"distributed":{"description":"Is distributed a supported workload type.","type":"boolean","nullable":true},"distFramework":{"description":"The distributed training framework used in the workload.","type":"string","enum":["MPI","PyTorch","TF","XGBoost"],"nullable":true}},"nullable":true,"type":"object"},"AssetReadOnlyFields":{"required":["id","kind","createdBy","createdAt","updatedBy","updatedAt"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"kind":{"$ref":"#/components/schemas/AssetKind"},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32","nullable":true},"createdBy":{"description":"The user who created the asset.","type":"string","minLength":1},"createdAt":{"description":"The time at which the asset were created","type":"string","minLength":1,"format":"date-time"},"updatedBy":{"description":"The user who updated the asset.","type":"string","minLength":1},"updatedAt":{"description":"The time at which the asset has been updated","type":"string","minLength":1,"format":"date-time"},"deletedAt":{"description":"Deletion time of the asset (relevant for assets that sync to the cluster)","type":"string","minLength":1,"format":"date-time"},"deletedBy":{"description":"The user who deleted the asset","type":"string","minLength":1},"projectName":{"description":"The name of the project that the asset is associated with, for project scoped assets.","type":"string","minLength":1,"nullable":true},"updateCount":{"$ref":"#/components/schemas/UpdateCount"}},"type":"object"},"AssetId":{"description":"Unique identifier of the asset.","type":"string","format":"uuid","minLength":1},"AssetKind":{"description":"The kind of the asset.","type":"string","minLength":1,"enum":["compute","environment","accessKey","dockerRegistry","password","genericSecret","registry","s3","git","nfs","pvc","hostPath","workload-template","model","config-map","secret-volume","data-volume"]},"UpdateCount":{"description":"the value of an update counter of a data in the system.","type":"integer","format":"int64"},"PVCAssetSpec":{"allOf":[{"$ref":"#/components/schemas/Pvc"}]},"Pvc":{"allOf":[{"$ref":"#/components/schemas/PvcFieldsUpdatable"},{"$ref":"#/components/schemas/PvcFieldsNonUpdatable"}]},"PvcFieldsNonUpdatable":{"properties":{"existingPvc":{"description":"Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.","type":"boolean","default":false,"nullable":true},"claimName":{"description":"Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.","type":"string","minLength":1,"maxLength":63,"nullable":true},"readOnly":{"description":"Permit only read access to PVC.","type":"boolean","default":false,"nullable":true},"ephemeral":{"description":"Use `true` to set PVC to ephemeral. If set to `true`, the PVC will be deleted when the workload is stopped. Not supported for inference workloads.","type":"boolean","default":false,"nullable":true},"claimInfo":{"$ref":"#/components/schemas/ClaimInfo"},"dataSharing":{"description":"use `true` to share the PVC data to all projects under the selected scope.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"ClaimInfo":{"description":"Claim information for the newly created PVC. The information should not be provided when attempting to use existing PVC.","properties":{"size":{"$ref":"#/components/schemas/PvcClaimSize"},"storageClass":{"description":"Storage class name to associate with the PVC. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. For more information, see [Storage class](https://kubernetes.io/docs/concepts/storage/storage-classes).","type":"string","minLength":1,"nullable":true},"accessModes":{"$ref":"#/components/schemas/PvcAccessModes"},"volumeMode":{"$ref":"#/components/schemas/PvcVolumeMode"},"addedAttrValues":{"$ref":"#/components/schemas/PvcAddedAttrValues"}},"nullable":true,"type":"object"},"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]*)$","nullable":true},"PvcAccessModes":{"description":"Requested access mode(s) for the newly created PVC.","properties":{"readWriteOnce":{"description":"Requesting claim that can be mounted in read/write mode to exactly one host. This is the default access mode.","type":"boolean","default":true,"nullable":true},"readOnlyMany":{"description":"Requesting claim that can be mounted in read-only mode to many hosts.","type":"boolean","default":false,"nullable":true},"readWriteMany":{"description":"Requesting claim that can be mounted in read/write mode to many hosts.","type":"boolean","default":false,"nullable":true}},"nullable":true,"type":"object"},"PvcVolumeMode":{"description":"The volume mode required by the claim. Choose Filesystem (default) or Block.","type":"string","enum":["Filesystem","Block"],"nullable":true},"PvcAddedAttrValues":{"description":"an optional array of key-values pairs that are written as annotations on the created PVC. the allowed attributes are determined according to the storage class configuration (see k8s-objects-tracker for further info).","type":"array","items":{"$ref":"#/components/schemas/PvcAddedAttrValue"}},"PvcAddedAttrValue":{"type":"object","required":["key"],"properties":{"key":{"type":"string","minLength":1,"maxLength":63,"pattern":"^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$"},"value":{"type":"string"}}},"AssetUsageInfo":{"description":"Details about resources that use the asset.","properties":{"workspaces":{"description":"workspaces that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"trainings":{"description":"trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"distributed":{"description":"distributed trainings that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"inferences":{"description":"inferences that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/WorkloadRefAndStatus"}},"templates":{"description":"templates that rely on this asset.","type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"assets":{"description":"list of other assets that use this asset. specifically, accessKeys used by s3, and passwords used by git.","$ref":"#/components/schemas/AssetsUsageRef"}},"nullable":true,"type":"object"},"WorkloadRefAndStatus":{"description":"Id, name and status of a workspace or training","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/WorkloadId1"},"name":{"$ref":"#/components/schemas/WorkloadName"},"status":{"description":"The status of the workspace or training.","type":"string","minLength":1}}},"WorkloadId1":{"description":"A unique ID of the workload.","type":"string","format":"uuid"},"WorkloadName":{"description":"The name of the workload.","type":"string","minLength":1},"AssetRef":{"description":"Reference information about an asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"}}},"AssetsUsageRef":{"description":"Reference information about usage of assets by other assets, for example datasources that uses credentials.","properties":{"environment":{"nullable":true,"type":"object","description":"environment asset.","allOf":[{"$ref":"#/components/schemas/EnvironmentAssetRef"}],"deprecated":true},"environments":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"compute":{"$ref":"#/components/schemas/AssetsUsageRefCompute","deprecated":true},"computes":{"type":"array","items":{"$ref":"#/components/schemas/AssetRef"}},"datasources":{"type":"array","items":{"$ref":"#/components/schemas/AssetDatasourceRef"}}}},"EnvironmentAssetRef":{"description":"Reference information about environment asset.","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"toolTypes":{"description":"the type of tools as defined in the connections of the environment asset.","type":"array","nullable":true,"items":{"$ref":"#/components/schemas/ToolType"}}}},"ToolType":{"description":"Super set of Internal and External tool types.","type":"string","minLength":1,"enum":["jupyter-notebook","pycharm","visual-studio-code","tensorboard","rstudio","mlflow","custom","wandb","matlab","comet","chatbot-ui"]},"AssetsUsageRefCompute":{"allOf":[{"$ref":"#/components/schemas/AssetRef"}],"nullable":true,"type":"object"},"AssetDatasourceRef":{"description":"Reference information about a datasource asset.","required":["id","name","kind"],"properties":{"id":{"$ref":"#/components/schemas/AssetId"},"name":{"$ref":"#/components/schemas/AssetName"},"kind":{"$ref":"#/components/schemas/AssetKind"},"overrides":{"$ref":"#/components/schemas/DataSourceOverrides","deprecated":true}}},"DataSourceOverrides":{"description":"specific fields to override in the data source.","type":"object","nullable":true,"properties":{"containerPath":{"type":"string","minLength":1,"nullable":true}}},"UsageTimesInfo":{"description":"Details about times the asset has been used by workloads, etc.","properties":{"lastUsedByWorkload":{"description":"The time at which the asset were last used by a workload of given type and project. This field requires complyToProject and complyToWorkload types flags of the API, to specify the workload type and project id.","type":"string","minLength":1,"format":"date-time","nullable":true}},"nullable":true,"type":"object"},"ComplianceInfo":{"description":"Compliance of the asset with creation of workloads in the given project.","properties":{"imposed":{"description":"Whether the asset is imposed on created workloads by the administrator.","type":"boolean"},"compliance":{"description":"Whether the asset info complies with creation of workloads in the project.","type":"boolean"},"reason":{"description":"For asset that does not comply, specify one or more reason why.","type":"array","items":{"$ref":"#/components/schemas/ComplianceInfoReason"}}},"nullable":true,"type":"object"},"ComplianceInfoReason":{"description":"A reason explaining why the asset does not comply with workloads creation for a given project.","required":["details"],"properties":{"field":{"description":"for policy related issues, includes a json path to the field in the policy for which the message applies.","nullable":true,"type":"string"},"details":{"description":"explanation of the reason for rejecting the asset.","type":"string"}}},"AssetClusterStatusInfo":{"properties":{"status":{"$ref":"#/components/schemas/AssetSyncStatusEnum"},"issues":{"$ref":"#/components/schemas/AssetClusterStatusIssues"},"message":{"type":"string"},"url":{"type":"string"}},"nullable":true,"type":"object"},"AssetSyncStatusEnum":{"type":"string","enum":["Creating","Deleting","Failed","Deletion failed","Issues found","No issues found","No status","Updating"]},"AssetClusterStatusIssues":{"type":"array","items":{"$ref":"#/components/schemas/AssetClusterStatusIssue"}},"AssetClusterStatusIssue":{"type":"object","required":["scopeId","scopeType","issue"],"properties":{"scopeId":{"$ref":"#/components/schemas/ScopeId"},"scopeType":{"$ref":"#/components/schemas/ScopeType"},"issue":{"$ref":"#/components/schemas/AssetClusterStatusIssueEnum"}}},"ScopeId":{"type":"string","description":"The id of the cluster, department or project, depending on the scope type."},"ScopeType":{"type":"string","enum":["system","tenant","cluster","department","project"]},"AssetClusterStatusIssueEnum":{"type":"string","enum":["ReplicationError","LostPhase","NotCreated"]},"ClusterInfo1":{"description":"Cluster related information of the asset.","properties":{"resources":{"type":"array","items":{"$ref":"#/components/schemas/ClusterResourceInfo"}}},"nullable":true,"type":"object"},"ClusterResourceInfo":{"properties":{"name":{"description":"The name of the resource created for the asset in the cluster.","type":"string","nullable":true}},"nullable":true,"type":"object"},"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"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/asset/datasource/pvc/{AssetId}":{"put":{"summary":"Update a PVC asset.","description":"Use to update the details of a PVC datasource asset by id.","operationId":"update_pvc_asset_by_id","tags":["PVC"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PVCUpdateRequest"}}}},"responses":{"202":{"description":"Request accepted successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PVCAsset"}}}},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"default":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Delete a PVC asset.

> Use to delete a PVC datasource asset by id.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.22"},"tags":[{"name":"PVC","description":"Use a PVC as a data source location for data sets that are relevant to the workload being submitted."}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"responses":{"202Accepted":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpResponse"}}}},"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"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"HttpResponse":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}}},"paths":{"/api/v1/asset/datasource/pvc/{AssetId}":{"delete":{"summary":"Delete a PVC asset.","description":"Use to delete a PVC datasource asset by id.","operationId":"delete_pvc_asset_by_id","tags":["PVC"],"responses":{"202":{"$ref":"#/components/responses/202Accepted"},"401":{"$ref":"#/components/responses/401Unauthorized"},"403":{"$ref":"#/components/responses/403Forbidden"},"404":{"$ref":"#/components/responses/404NotFound"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```
