NVIDIA Run:ai PVC API

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

OpenAPI Specification

runai-pvc-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: latest
  description: '# Introduction


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


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

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


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

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

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


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

    '
  title: NVIDIA Run:ai Access Keys PVC API
  x-logo:
    url: https://api.redocly.com/registry/raw/runai-xq8/saas/latest/public/runai-logo-api.png
    altText: NVIDIA Run:ai
    href: https://run.ai
  license:
    name: NVIDIA Run:ai
    url: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-software-license-agreement/
servers:
- url: https://app.run.ai
security:
- bearerAuth: []
tags:
- name: PVC
  description: Use a PVC as a data source location for data sets that are relevant to the workload being submitted.
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'
    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'
  /api/v1/asset/datasource/pvc/{AssetId}:
    parameters:
    - $ref: '#/components/parameters/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'
    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:
      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'
  /api/v1/asset/datasource/pvc/{AssetId}/history:
    get:
      summary: Get the PVC history.
      description: Retrieve PVC history details, including events, using a PVC id.
      operationId: get_pvc_history
      tags:
      - PVC
      parameters:
      - $ref: '#/components/parameters/AssetId'
      - $ref: '#/components/parameters/Offset'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PVCHistoryResponse'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
components:
  schemas:
    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
          example: my-claim
          nullable: true
          pattern: .*
        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
          example: 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
          example: false
          nullable: true
      nullable: true
      type: object
    DataSourceOverrides:
      description: specific fields to override in the data source.
      type: object
      nullable: true
      properties:
        containerPath:
          type: string
          minLength: 1
          example: /container/directory
          nullable: true
    PVCListResponse:
      required:
      - entries
      properties:
        entries:
          type: array
          items:
            $ref: '#/components/schemas/PVCAsset'
    AssetsUsageRefCompute:
      allOf:
      - $ref: '#/components/schemas/AssetRef'
      nullable: true
      type: object
    Error:
      required:
      - code
      - message
      properties:
        code:
          type: integer
          minimum: 100
          maximum: 599
        message:
          type: string
        details:
          type: string
      example:
        code: 400
        message: Bad request - Resource should have a name
    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'
    PVCAssetSpec:
      allOf:
      - $ref: '#/components/schemas/Pvc'
    PVCCreationRequest:
      required:
      - meta
      - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetCreationRequest'
        spec:
          $ref: '#/components/schemas/PVCAssetSpec'
    PVCHistoryResponse:
      type: object
      required:
      - records
      properties:
        next:
          type: integer
          example: 1
        records:
          $ref: '#/components/schemas/HistoryRecords'
    PvcClaimSize:
      description: 'Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB'
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 1G
      nullable: true
    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
    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'
    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'
    AssetName:
      description: The name of the asset.
      type: string
      minLength: 1
      example: my-asset
    ClusterId:
      description: The id of the cluster.
      type: string
      format: uuid
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
    AssetCreationRequest:
      allOf:
      - $ref: '#/components/schemas/AssetUpdatableFields'
      - $ref: '#/components/schemas/AssetCreationFields'
      example:
        name: my-asset
        scope: tenant
        workloadSupportedTypes:
          workspace: false
          training: false
          inference: false
          distributed: true
          distFramework: TF
    Pvc:
      allOf:
      - $ref: '#/components/schemas/PvcFieldsUpdatable'
      - $ref: '#/components/schemas/PvcFieldsNonUpdatable'
    ComplianceInfoReason:
      description: An issue preventing the use of a template or asset for creating workloads in a given project.
      required:
      - details
      properties:
        field:
          description: For policy related issues, includes a json path to the field in the policy for which the issue applies.
          nullable: true
          type: string
          pattern: .*
        details:
          description: Explanation of the issue.
          type: string
          pattern: .*
        rule:
          $ref: '#/components/schemas/PolicyRuleEnum'
    AssetMeta:
      allOf:
      - $ref: '#/components/schemas/AssetUpdatableFields'
      - $ref: '#/components/schemas/AssetCreationFields'
      - $ref: '#/components/schemas/AssetReadOnlyFields'
      example:
        name: my-asset
        scope: tenant
        id: a418ed33-9399-48c0-a890-122cadd13bfd
        kind: s3
        createdBy: test@run.ai
        createdAt: '2023-02-23T14:25:36.707685Z'
        updatedBy: test@run.ai
        updatedAt: '2023-02-23T14:25:36.707685Z'
        workloadSupportedTypes:
          workspace: false
          training: false
          distributed: true
          distFramework: TF
    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'
    AssetDescription:
      description: The description of the asset.
      type: string
      minLength: 1
      maxLength: 250
      example: description of my asset.
      nullable: true
    AssetClusterStatusInfo:
      properties:
        status:
          $ref: '#/components/schemas/AssetSyncStatusEnum'
        issues:
          $ref: '#/components/schemas/AssetClusterStatusIssues'
        message:
          type: string
        url:
          type: string
      nullable: true
      type: object
    WorkloadName:
      description: The name of the workload.
      type: string
      minLength: 1
      example: my-workload-name
      pattern: .*
    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
          example: my-storage-class
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        accessModes:
          $ref: '#/components/schemas/PvcAccessModes'
        volumeMode:
          $ref: '#/components/schemas/PvcVolumeMode'
        addedAttrValues:
          $ref: '#/components/schemas/PvcAddedAttrValues'
      nullable: true
      type: object
    AssetId:
      description: Unique identifier of the asset.
      type: string
      format: uuid
      minLength: 1
    HistoryRecord:
      type: object
      required:
      - meta
      - spec
      properties:
        meta:
          $ref: '#/components/schemas/HistoryRecordMeta'
        spec:
          type: object
          properties:
            event:
              $ref: '#/components/schemas/Event1'
            phaseUpdate:
              $ref: '#/components/schemas/AssetPhaseUpdate'
    HistoryRecordType:
      type: string
      enum:
      - Event
      - PhaseUpdate
    PolicyRuleEnum:
      description: Indicates which validation rule (e.g., min, max, step, options, required, canEdit, canAdd) conflicted with policy restrictions, causing the asset or template to be rejected.
      type: string
      nullable: true
      enum:
      - min
      - max
      - step
      - options
      - required
      - canEdit
      - canAdd
      - locked
    AssetReadOnlyFields:
      required:
      - id
      - kind
      - createdBy
      - createdAt
      - updatedBy
      - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        kind:
          $ref: '#/components/schemas/AssetKind'
        tenantId:
          description: The id of the tenant.
          type: integer
          format: int32
          nullable: true
        createdBy:
          description: The user who created the asset.
          type: string
          minLength: 1
        createdAt:
          description: The time at which the asset were created
          type: string
          minLength: 1
          format: date-time
        updatedBy:
          description: The user who updated the asset.
          type: string
          minLength: 1
        updatedAt:
          description: The time at which the asset has been updated
          type: string
          minLength: 1
          format: date-time
        deletedAt:
          description: Deletion time of the asset (relevant for assets that sync to the cluster)
          type: string
          minLength: 1
          format: date-time
        deletedBy:
          description: The user who deleted the asset
          type: string
          minLength: 1
        projectName:
          description: The name of the project that the asset is associated with, for project scoped assets.
          type: string
          minLength: 1
          nullable: true
        updateCount:
          $ref: '#/components/schemas/UpdateCount'
      type: object
    UpdateCount:
      description: the value of an update counter of a data in the system.
      type: integer
      format: int64
      example: 12345
    AssetKind:
      description: The kind of the asset.
      type: string
      minLength: 1
      enum:
      - compute
      - environment
      - accessKey
      - dockerRegistry
      - password
      - genericSecret
      - registry
      - s3
      - git
      - nfs
      - pvc
      - hostPath
      - workload-template
      - model
      - config-map
      - secret-volume
      - data-volume
      - ngcApiKey
    AssetSyncStatusEnum:
      type: string
      enum:
      - Creating
      - Deleting
      - Failed
      - Deletion failed
      - Issues found
      - No issues found
      - No status
      - Updating
    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
    AssetClusterStatusIssueEnum:
      type: string
      enum:
      - ReplicationError
      - LostPhase
      - NotCreated
    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
    ComplianceInfo:
      description: Compliance of an asset with creation of workloads in a given project.
      properties:
        imposed:
          description: Whether the asset is imposed on created workloads by the administrator.
          type: boolean
        compliance:
          description: Whether the asset info complies with creation of workloads in the project.
          type: boolean
        reason:
          description: For asset that does not comply, specify one or more reason why.
          type: array
          items:
            $ref: '#/components/schemas/ComplianceInfoReason'
      nullable: true
      type: object
    PvcAddedAttrValue:
      type: object
      required:
      - key
      properties:
        key:
          type: string
          minLength: 1
          maxLength: 63
          pattern: ^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$
          example: dnsname
        value:
          type: string
          example: my.dns.com
          pattern: .*
    HistoryRecordMeta:
      type: object
      required:
      - creationTimestamp
      - type
      properties:
        creationTimestamp:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        type:
          $ref: '#/components/schemas/HistoryRecordType'
    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
    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
    AssetRef:
      description: Reference information about an asset.
      required:
      - id
      - name
      properties:
        id:
          $ref: '#/components/schemas/AssetId'
        name:
          $ref: '#/components/schemas/AssetName'
    PvcVolumeMode:
      description: Default volume mode for the PVC. Choose between Filesystem (default) or Block.
      type: string
      enum:
      - Filesystem
      - Block
      nullable: true
    AssetUpdateRequest:
      allOf:
      - $ref: '#/components/schemas/AssetUpdatableFields'
      example:
        name: my-asset
    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'
    PVCUpdateRequest:
      required:
      - meta
      - spec
      properties:
        meta:
          $ref: '#/components/schemas/AssetUpdateRequest'
        spec:
          $ref: '#/components/schemas/PvcFieldsUpdatable'
    HttpResponse:
      required:
      - code
      - message
      properties:
        code:
          type: integer
          minimum: 100
          maximum: 599
        message:
          type: string
    ClusterInfo1:
      description: Cluster related information of the asset.
      properties:
        resources:
          type: array
          items:
            $ref: '#/components/schemas/ClusterResourceInfo'
      nullable: true
      type: object
    InvolvedObject:
      type: object
      required:
      - uid
      - kind
      - name
      - namespace
      properties:
        uid:
          type: string
          format: uuid
        kind:
          type: string
          example: Pod
        name:
          type: string
          example: test-0-1
        namespace:
          type: string
          example: runai-test
    WorkloadId1:
      description: A unique ID of the workload.
      type: string
      format: uuid
    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
    AssetUpdatableFields:
      required:
      - name
      properties:
        name:
          $ref: '#/components/schemas/AssetName'
        description:
          $ref: '#/components/schemas/AssetDescription'
    HistoryRecords:
      type: array
      items:
        $ref: '#/components/schemas/HistoryRecord'
      x-schema-name: HistoryRecords
    ClusterResourceInfo:
      properties:
        name:
          example: password-credential-1
          description: The name of the resource created for the asset in the cluster.
          type: string
          nullable: true
      nullable: true
      type: object
    ToolType:
      description: Super set of Internal and External tool types.
      type: string
      minLength: 1
      enum:
      - jupyter-notebook
      - pycharm
      - visual-studio-code
      - tensorboard
      - rstudio
      - mlflow
      - custom
      - wandb
      - matlab
      - comet
      - chatbot-ui
    AssetCreationFields:
      type: object
      required:
      - scope
      properties:
        scope:
          $ref: '#/components/schemas/Scope'
        clusterId:
          $ref: '#/components/schemas/ClusterIdOptional'
        departmentId:
          description: The id of the department. Must be specified for department scoped assets.
          type: string
          nullable: true
          minLength: 1
        projectId:
          description: The id of the project. Must be specified for project scoped assets.
          type: integer
          format: int32
          nullable: true
        autoDelete:
          description: The asset will be deleted automatically. This is intended for internal use.
          type: boolean
          nullable: true
          default: false
        workloadSupportedTypes:
          $ref: '#/components/schemas/WorkloadSupportedTypes'
        private:
          description: The asset will be private to the user who created it. supported only for docker registry and generic secrets
          type: boolean
          nullable: true
          default: false
    ScopeType:
      type: string
      enum:
      - system
      - tenant
      - cluster
      - department
      - project
    ScopeId:
      type: string
      description: The id of the cluster, department or project, depending on the scope type.
    Event1:
      type: object
      nullable: true
      required:
      - createdAt
      - type
      - clusterId
      - message
      properties:
        createdAt:
          type: string
          format: date-time
          example: '2022-01-01T03:49:52.531Z'
        id:
          type: string
          format: uuid
        type:
          type: string
          example: Normal
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        message:
          type: string
          example: Started container z
        reason:
          type: string
          example: Started
        source:
          type: string
          example: kubelet
        involvedObject:
          $ref: '#/components/schemas/InvolvedObject'
    ClusterIdOptional:
      description: The id of the cluster.
      type: string
      format: uuid
      minLength: 1
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
      nullable: true
    AssetPhaseUpdate:
      type: object
      nullable: true
      required:
      - phase
      - phaseMessage
      properties:
        phase:
          type: string
          example: Creating
        phaseMessage:
          type: string
          example: Creating PVC asset pvc-123
    PvcFieldsUpdatable:
      properties:
        path:
          description: Local path within the workload to which the PVC bucket will be mapped. (mandatory)
          type: string
          minLength: 1
          example: /container/my-claim
          nullable: true
          pattern: .*
      nullable: true
      type: object
    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
  parameters:
    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
        example: dbf4767e-2fa1-43b0-97a2-7c0cecda180b,550e8400-e29b-41d4-a716-44665544000a
        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$
    IncludeUsageInfo:
      name: usageInfo
      in: query
      required: false
      description: Whether the query should include asset usage information as part of the response.
      schema:
        type: boolean
    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
    ComplyToWorkloadType:
      name: complyToWorkloadType
      in: query
      required: false
      description: Include wo

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