Portworx OpenStorageWatch API

The OpenStorageWatch API from Portworx — 1 operation(s) for openstoragewatch.

OpenAPI Specification

portworx-openstoragewatch-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: OpenStorage SDK OpenStorageAlerts OpenStorageWatch API
  version: 0.186.0
security:
- bearerAuth: []
tags:
- name: OpenStorageWatch
paths:
  /v1/watch:
    post:
      description: Requires access AccessType.Read
      operationId: OpenStorageWatch_Watch
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/apiSdkWatchRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  error:
                    $ref: '#/components/schemas/runtimeStreamError'
                  result:
                    $ref: '#/components/schemas/apiSdkWatchResponse'
                title: Stream result of apiSdkWatchResponse
                type: object
          description: A successful response.(streaming responses)
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/runtimeError'
          description: An unexpected error response.
      summary: Watch on resources managed by the driver and receive them as a stream of events.
      tags:
      - OpenStorageWatch
components:
  schemas:
    apiSdkWatchRequest:
      properties:
        volume_event:
          $ref: '#/components/schemas/apiSdkVolumeWatchRequest'
      title: Defines the request to watch an openstorage event. An event can be a volume, a node, a disk, etc
      type: object
    OwnershipAccessType:
      default: Read
      description: "Access types can be set by owner to have different levels of access to\na resource.\n\nIt is up to the resource to interpret what the types mean and are\nused for.\n\n - Read: Read access only and cannot affect the resource.\n - Write: Write access and can affect the resource.\nThis type automatically provides Read access also.\n - Admin: Administrator access.\nThis type automatically provides Read and Write access also."
      enum:
      - Read
      - Write
      - Admin
      type: string
    apiVolumeState:
      default: VOLUME_STATE_NONE
      description: "VolumeState represents the state of a volume.\n\n - VOLUME_STATE_PENDING: Volume is transitioning to new state\n - VOLUME_STATE_AVAILABLE: Volume is ready to be assigned to a container\n - VOLUME_STATE_ATTACHED: Volume is attached to container\n - VOLUME_STATE_DETACHED: Volume is detached but associated with a container\n - VOLUME_STATE_DETATCHING: Volume detach is in progress\n - VOLUME_STATE_ERROR: Volume is in error state\n - VOLUME_STATE_DELETED: Volume is deleted, it will remain in this state\nwhile resources are asynchronously reclaimed\n - VOLUME_STATE_TRY_DETACHING: Volume is trying to be detached\n - VOLUME_STATE_RESTORE: Volume is undergoing restore"
      enum:
      - VOLUME_STATE_NONE
      - VOLUME_STATE_PENDING
      - VOLUME_STATE_AVAILABLE
      - VOLUME_STATE_ATTACHED
      - VOLUME_STATE_DETACHED
      - VOLUME_STATE_DETATCHING
      - VOLUME_STATE_ERROR
      - VOLUME_STATE_DELETED
      - VOLUME_STATE_TRY_DETACHING
      - VOLUME_STATE_RESTORE
      type: string
    apiProxyProtocol:
      default: PROXY_PROTOCOL_INVALID
      description: "ProxyProtocol defines the protocol used for proxy.\n\n - PROXY_PROTOCOL_INVALID: Invalid uninitialized value\n - PROXY_PROTOCOL_NFS: NFS indicates that the external data source is NFS and the volume\nwill be reflected over NFS protocol\n - PROXY_PROTOCOL_S3: S3 indicates that the external data source is an object store.\n - PROXY_PROTOCOL_PXD: PXD indicates that the external data source is a Portworx block volume.\n - PROXY_PROTOCOL_PURE_BLOCK: PURE_BLOCK indicates that the external data source is a pure_block volume.\n - PROXY_PROTOCOL_PURE_FILE: PURE_FILE indicates that the external data source is a pure_file volume."
      enum:
      - PROXY_PROTOCOL_INVALID
      - PROXY_PROTOCOL_NFS
      - PROXY_PROTOCOL_S3
      - PROXY_PROTOCOL_PXD
      - PROXY_PROTOCOL_PURE_BLOCK
      - PROXY_PROTOCOL_PURE_FILE
      type: string
    OwnershipPublicAccessControl:
      properties:
        type:
          $ref: '#/components/schemas/OwnershipAccessType'
      title: PublicAccessControl allows assigning public ownership
      type: object
    apiS3ProxySpec:
      description: S3ProxySpec is the spec for proxying an external object store.
      properties:
        bucket_name:
          title: BucketName is the name of the bucket from the object store
          type: string
      type: object
    Sharedv4ServiceSpecServiceType:
      default: UNSPECIFIED
      description: "Type of sharedv4 service. Values are governed by the different types\nof services supported by container orchestrators such as Kubernetes.\n\n - UNSPECIFIED: Unspecified\n - NODEPORT: Export the sharedv4 service on each Node's IP.\nIn this mode the sharedv4 volume can be accessed from outside the\ncluster using one of the node's IPs.\n - CLUSTERIP: Export the shared4 service on an internal cluster IP.\nIn this mode the sharedv4 volume will only be accessible\nwithin the cluster via this service.\n - LOADBALANCER: Expose the sharedv4 service on cloud provider's load balancer.\nApplicable when running in cloud. In this mode the sharedv4 volume\ncan be accessed from outside the cluster.\n - NONE: Do not use sharedv4 service feature. Use legacy sharedv4 volumes instead."
      enum:
      - UNSPECIFIED
      - NODEPORT
      - CLUSTERIP
      - LOADBALANCER
      - NONE
      type: string
    apiXattrValue:
      default: UNSPECIFIED
      enum:
      - UNSPECIFIED
      - COW_ON_DEMAND
      title: "- UNSPECIFIED: Value is uninitialized or unknown\n - COW_ON_DEMAND: Enable on-demand copy-on-write on the volume"
      type: string
    apiIoStrategy:
      description: IoStrategy defines how I/O should be performed to backing storage media.
      properties:
        async_io:
          description: AsyncIO enables kaio.
          type: boolean
        direct_io:
          title: Enable direct I/O on the backing datastore
          type: boolean
        early_ack:
          description: EarlyAck enables acks for async I/O at the source.
          type: boolean
      type: object
    apiCosType:
      default: NONE
      enum:
      - NONE
      - LOW
      - MEDIUM
      - HIGH
      type: string
    apiRuntimeStateMap:
      description: 'RuntimeStateMap is a list of name value mapping of driver specific runtime

        information.'
      properties:
        runtime_state:
          additionalProperties:
            type: string
          type: object
      type: object
    apiReplicaSet:
      properties:
        id:
          format: int64
          title: ID is the unique ID of this replica set
          type: integer
        nodes:
          items:
            type: string
          type: array
        pool_uuids:
          items:
            type: string
          title: Unique IDs of the storage pools for this replica set
          type: array
      title: 'ReplicaSet set of machine IDs (nodes) to which part of this volume is erasure

        coded - for clustered storage arrays'
      type: object
    apiFilesystemHealthStatus:
      default: FS_HEALTH_STATUS_UNKNOWN
      enum:
      - FS_HEALTH_STATUS_UNKNOWN
      - FS_HEALTH_STATUS_HEALTHY
      - FS_HEALTH_STATUS_SAFE_TO_FIX
      - FS_HEALTH_STATUS_NEEDS_INSPECTION
      title: "- FS_HEALTH_STATUS_UNKNOWN: filesystem health status is unknown\n - FS_HEALTH_STATUS_HEALTHY: filesystem is a healthy\n - FS_HEALTH_STATUS_SAFE_TO_FIX: filesystem has errors, but can be fixed safely\n - FS_HEALTH_STATUS_NEEDS_INSPECTION: filesystem has errors, these cannot be fixed automatically,\nuser needs to review the reported errors and take appropriate action"
      type: string
    apiVolumeStatus:
      default: VOLUME_STATUS_NONE
      description: "VolumeStatus represents a health status for a volume.\n\n - VOLUME_STATUS_NOT_PRESENT: Volume is not present\n - VOLUME_STATUS_UP: Volume is healthy\n - VOLUME_STATUS_DOWN: Volume is in fail mode\n - VOLUME_STATUS_DEGRADED: Volume is up but with degraded performance\nIn a RAID group, this may indicate a problem with one or more drives"
      enum:
      - VOLUME_STATUS_NONE
      - VOLUME_STATUS_NOT_PRESENT
      - VOLUME_STATUS_UP
      - VOLUME_STATUS_DOWN
      - VOLUME_STATUS_DEGRADED
      type: string
    apiNearSyncReplicationStrategy:
      default: NEAR_SYNC_STRATEGY_NONE
      enum:
      - NEAR_SYNC_STRATEGY_NONE
      - NEAR_SYNC_STRATEGY_AGGRESSIVE
      - NEAR_SYNC_STRATEGY_OPTIMIZED
      type: string
    apiSharedv4Spec:
      properties:
        failover_strategy:
          $ref: '#/components/schemas/apiSharedv4FailoverStrategyValue'
      title: Sharedv4Spec specifies common properties of sharedv4 and sharedv4 service volumes
      type: object
    apiLabelSelectorRequirement:
      description: 'LabelSelectorRequirement is a selector that contains values, a key, and an operator that

        relates the key and values.'
      properties:
        key:
          description: Key is the label key that the selector applies to.
          type: string
        operator:
          $ref: '#/components/schemas/LabelSelectorRequirementOperator'
        values:
          description: 'Values is an array of string values. If the operator is In or NotIn,

            the values array must be non-empty. If the operator is Exists or DoesNotExist,

            the values array must be empty. This array is replaced during a strategic

            merge patch.'
          items:
            type: string
          type: array
      type: object
    apiFastpathStatus:
      default: FASTPATH_UNKNOWN
      description: "- FASTPATH_UNKNOWN: backward compatible state\n - FASTPATH_ACTIVE: fastpath activated and enabled\n - FASTPATH_INACTIVE: fastpath inactive\n - FASTPATH_UNSUPPORTED: fastpath unsupported, disabled\n - FASTPATH_PENDING: fastpath operation setup in progress\n - FASTPATH_ERRORED: fastpath error'd, possible stuck failure"
      enum:
      - FASTPATH_UNKNOWN
      - FASTPATH_ACTIVE
      - FASTPATH_INACTIVE
      - FASTPATH_UNSUPPORTED
      - FASTPATH_PENDING
      - FASTPATH_ERRORED
      title: fastpath extensions
      type: string
    apiReplicaPlacementSpec:
      properties:
        affected_replicas:
          format: int32
          title: 'AffectedReplicas defines the number of volume replicas affected by this rule. If not provided,

            rule would affect all replicas

            (optional)'
          type: integer
        enforcement:
          $ref: '#/components/schemas/apiEnforcementType'
        match_expressions:
          description: MatchExpressions is a list of label selector requirements. The requirements are ANDed.
          items:
            $ref: '#/components/schemas/apiLabelSelectorRequirement'
          type: array
        topology_key:
          title: 'TopologyKey key for the matching all segments of the cluster topology with the same key

            e.g If the key is failure-domain.beta.kubernetes.io/zone, this should match all nodes with

            the same value for this key (i.e in the same zone)'
          type: string
        weight:
          format: int64
          title: 'Weight defines the weight of the rule which allows to break the tie with other matching rules. A rule with

            higher weight wins over a rule with lower weight.

            (optional)'
          type: string
      type: object
    apiExportSpec:
      description: ExportSpec defines how the volume is exported..
      properties:
        export_options:
          description: ExportOptions options exporting the volume.
          type: string
        export_protocol:
          $ref: '#/components/schemas/apiExportProtocol'
      type: object
    apiEnforcementType:
      default: required
      description: "- required: This specifies that the rule is required and must be strictly enforced\n - preferred: This specifies that the rule is preferred and can be best effort"
      enum:
      - required
      - preferred
      title: Defines the types of enforcement on the given rules
      type: string
    apiTopologyRequirement:
      properties:
        labels:
          additionalProperties:
            type: string
          title: Key-value pairs defining the required topology for a volume
          type: object
      title: TopologyRequirement defines the topology requirement for a volume
      type: object
    ScanPolicyScanTrigger:
      default: SCAN_TRIGGER_NONE
      enum:
      - SCAN_TRIGGER_NONE
      - SCAN_TRIGGER_ON_MOUNT
      - SCAN_TRIGGER_ON_NEXT_MOUNT
      type: string
    apiFastpathReplState:
      properties:
        acl:
          type: boolean
        block:
          type: boolean
        dev_id:
          format: uint64
          type: string
        devpath:
          type: string
        exported:
          type: boolean
        exported_device:
          title: target info
          type: string
        imported:
          title: initiator info
          type: boolean
        node_id:
          format: int64
          type: integer
        node_uuid:
          title: node_uuid added to enhance UI reporting
          type: string
        protocol:
          $ref: '#/components/schemas/apiFastpathProtocol'
        target:
          type: string
      type: object
    apiFastpathConfig:
      properties:
        coord_uuid:
          title: fastpath coordinator node uuid to enhance reporting
          type: string
        dirty:
          title: Dirty flag on volume - was attached in userspace
          type: boolean
        force_failover:
          title: fastpath force failover, disable auto promote to fastpath
          type: boolean
        promote:
          title: Fastpath temporary promotion during attach
          type: boolean
        replicas:
          items:
            $ref: '#/components/schemas/apiFastpathReplState'
          title: Fastpath replica state for each replica in replica set
          type: array
        setup_on:
          format: int32
          title: fastpath setup on this node
          type: integer
        status:
          $ref: '#/components/schemas/apiFastpathStatus'
        verbose:
          title: Verbose contains detailed info on fastpath status
          type: string
      title: FastpathConfig part of volume
      type: object
    apiSharedv4FailoverStrategyValue:
      default: UNSPECIFIED
      description: " - UNSPECIFIED: Unspecified\n - AGGRESSIVE: Fail over to the new NFS server quickly. This is appropriate for\nthe apps with sharedv4 service volumes. It can also be used\nfor the apps with sharedv4 volumes when such apps are able\nto restart quickly.\n - NORMAL: Give the old NFS server more time to come back up before\ntriggering the failover. This is appropriate for the apps\nwith sharedv4 volumes (non-service)."
      enum:
      - UNSPECIFIED
      - AGGRESSIVE
      - NORMAL
      type: string
    apiAttachState:
      default: ATTACH_STATE_EXTERNAL
      enum:
      - ATTACH_STATE_EXTERNAL
      - ATTACH_STATE_INTERNAL
      - ATTACH_STATE_INTERNAL_SWITCH
      title: "- ATTACH_STATE_EXTERNAL: Attached and available externally\n - ATTACH_STATE_INTERNAL: Attached but only available internally\n - ATTACH_STATE_INTERNAL_SWITCH: Switching from External to Internal"
      type: string
    apiIoThrottle:
      properties:
        read_bw_mbytes:
          format: int64
          type: integer
        read_iops:
          format: int64
          type: integer
        write_bw_mbytes:
          format: int64
          type: integer
        write_iops:
          format: int64
          type: integer
      title: 'IoThrottle defines IO throttle limits for a volume

        read_iops : maximum read iops this volume is allowed

        write_iops : maximum write iops this volume is allowed

        read_bw_mbytes  : maximum read bandwidth this volume is allowed in MegaBytes

        write_bw_mbytes : maximum write bandwidth this volume is allowed in MegaBytes'
      type: object
    apiSdkVolumeWatchResponse:
      properties:
        name:
          title: Name of volume
          type: string
        volume:
          $ref: '#/components/schemas/apiVolume'
      title: Defines the response containing an volume with a state changed
      type: object
    apiFastpathProtocol:
      default: FASTPATH_PROTO_UNKNOWN
      enum:
      - FASTPATH_PROTO_UNKNOWN
      - FASTPATH_PROTO_NVMEOF_TCP
      - FASTPATH_PROTO_ISCSI
      - FASTPATH_PROTO_LOCAL
      type: string
    apiVolumePlacementStrategy:
      description: 'VolumePlacementStrategy defines a strategy for placing volumes in the cluster which will be a series of rules

        All the rules specified will be applied for volume placement.

        Rules that have enforcement as "required" are strictly enforced while "preferred" are best effort.

        In situations, where 2 or more rules conflict, the weight of the rules will dictate which wins.'
      properties:
        replica_affinity:
          items:
            $ref: '#/components/schemas/apiReplicaPlacementSpec'
          title: ReplicaAffinity defines affinity rules between replicas within a volume
          type: array
        replica_anti_affinity:
          items:
            $ref: '#/components/schemas/apiReplicaPlacementSpec'
          title: ReplicaAntiAffinity defines anti-affinity rules between replicas within a volume
          type: array
        volume_affinity:
          items:
            $ref: '#/components/schemas/apiVolumePlacementSpec'
          title: VolumeAffinity defines affinity rules between volumes
          type: array
        volume_anti_affinity:
          items:
            $ref: '#/components/schemas/apiVolumePlacementSpec'
          title: VolumeAntiAffinity defines anti-affinity rules between volumes
          type: array
      type: object
    runtimeStreamError:
      properties:
        details:
          items:
            $ref: '#/components/schemas/protobufAny'
          type: array
        grpc_code:
          format: int32
          type: integer
        http_code:
          format: int32
          type: integer
        http_status:
          type: string
        message:
          type: string
      type: object
    apiSdkVolumeWatchRequest:
      properties:
        labels:
          additionalProperties:
            type: string
          title: labels to filter out the volumes to watch on
          type: object
      title: 'Defines the request to watch an openstorage volume event for the given label

        if the label is empty, it returns all the volume events'
      type: object
    apiOwnership:
      description: 'Ownership information for resource.

        Administrators are users who belong to the group `*`, meaning, every group.'
      properties:
        acls:
          $ref: '#/components/schemas/OwnershipAccessControl'
        owner:
          description: 'Username of owner.


            The storage system uses the username taken from the security authorization

            token and is saved on this field. Only users with system administration

            can edit this value.'
          type: string
      type: object
    apiVolume:
      description: Volume represents an abstract storage volume.
      properties:
        attach_info:
          additionalProperties:
            type: string
          description: AttachInfo is a list of name value mappings that provides attach information.
          type: object
        attach_path:
          description: AttachPath is the mounted path in the host namespace.
          items:
            type: string
          type: array
        attach_time:
          description: AttachTime time this device was last attached externally.
          format: date-time
          type: string
        attached_on:
          description: AttachedOn is the node instance identifier for clustered systems.
          type: string
        attached_state:
          $ref: '#/components/schemas/apiAttachState'
        ctime:
          format: date-time
          title: Volume creation time
          type: string
        derived_io_profile:
          $ref: '#/components/schemas/apiIoProfile'
        detach_time:
          description: DetachTime time this device was detached.
          format: date-time
          type: string
        device_path:
          description: DevicePath is the device exported by block device implementations.
          type: string
        error:
          description: Error is the Last recorded error.
          type: string
        format:
          $ref: '#/components/schemas/apiFSType'
        fpConfig:
          $ref: '#/components/schemas/apiFastpathConfig'
        fs_resize_required:
          description: FsResizeRequired if an FS resize is required on the volume.
          type: boolean
        group:
          $ref: '#/components/schemas/apiGroup'
        id:
          description: Self referential volume ID.
          type: string
        in_trashcan:
          title: InTrashcan if the volume is in trashcan
          type: boolean
        last_scan:
          description: LastScan is the time when an integrity check was run.
          format: date-time
          type: string
        last_scan_fix:
          format: date-time
          title: LastScanFix is the time when an integrity check fixed errors in filesystem
          type: string
        last_scan_status:
          $ref: '#/components/schemas/apiFilesystemHealthStatus'
        locator:
          $ref: '#/components/schemas/apiVolumeLocator'
        mount_options:
          $ref: '#/components/schemas/apiMountOptions'
        readonly:
          description: Readonly is true if this volume is to be mounted with readonly access.
          type: boolean
        replica_sets:
          description: ReplicatSets storage for this volumefor clustered storage arrays.
          items:
            $ref: '#/components/schemas/apiReplicaSet'
          type: array
        runtime_state:
          description: 'RuntimeState is a lst of name value mapping of driver specific runtime

            information.'
          items:
            $ref: '#/components/schemas/apiRuntimeStateMap'
          type: array
        secure_device_path:
          description: SecureDevicePath is the device path for an encrypted volume.
          type: string
        sharedv4_mount_options:
          $ref: '#/components/schemas/apiMountOptions'
        source:
          $ref: '#/components/schemas/apiSource'
        spec:
          $ref: '#/components/schemas/apiVolumeSpec'
        state:
          $ref: '#/components/schemas/apiVolumeState'
        status:
          $ref: '#/components/schemas/apiVolumeStatus'
        usage:
          description: Usage is bytes consumed by this volume.
          format: uint64
          type: string
        volume_consumers:
          items:
            $ref: '#/components/schemas/apiVolumeConsumer'
          title: VolumeConsumers are entities that consume this volume
          type: array
      type: object
    apiPureBlockSpec:
      properties:
        full_vol_name:
          type: string
        pod_name:
          type: string
        serial_num:
          type: string
      title: PureBlockSpec is the spec for proxying a volume on pure_block backends
      type: object
    ScanPolicyScanAction:
      default: SCAN_ACTION_NONE
      enum:
      - SCAN_ACTION_NONE
      - SCAN_ACTION_SCAN_ONLY
      - SCAN_ACTION_SCAN_REPAIR
      type: string
    runtimeError:
      properties:
        code:
          format: int32
          type: integer
        details:
          items:
            $ref: '#/components/schemas/protobufAny'
          type: array
        error:
          type: string
        message:
          type: string
      type: object
    apiMountOptions:
      description: MountOptions defines the mount options with which a volume is mounted.
      properties:
        options:
          additionalProperties:
            type: string
          title: 'Options are opaque key value pairs that are passed as mount options when

            a volume is mounted.

            If an empty value is provided only the key will be passed as an option

            If both key and value are provided then ''key=value'' will be passed as an

            option'
          type: object
      type: object
    apiScanPolicy:
      description: 'ScanPolicy defines when a filesystem check is triggered and what action to take

        User can specify *one* of the following valid policies

        1. trigger=SCAN_TRIGGER_ON_MOUNT, action=SCAN_ACTION_SCAN_ONLY

        2. trigger=SCAN_TRIGGER_ON_MOUNT, action=SCAN_ACTION_SCAN_REPAIR

        3. trigger=SCAN_TRIGGER_ON_NEXT_MOUNT, action=SCAN_ACTION_SCAN_ONLY

        4. trigger=SCAN_TRIGGER_ON_NEXT_MOUNT, action=SCAN_ACTION_SCAN_REPAIR

        5. trigger=SCAN_TRIGGER_NONE, action=SCAN_ACTION_NONE

        Note: When trigger == SCAN_TRIGGER_ON_NEXT_MOUNT, the associated action is

        performed once on the next mount and the scanpolicy gets reset to

        `trigger=SCAN_TRIGGER_NONE, action=SCAN_ACTION_NONE`, irrespective of the

        output of the action.'
      properties:
        action:
          $ref: '#/components/schemas/ScanPolicyScanAction'
        trigger:
          $ref: '#/components/schemas/ScanPolicyScanTrigger'
      type: object
    LabelSelectorRequirementOperator:
      default: In
      description: "- In: In means the value for 'key' should be in one of the given value(s)\n - NotIn: NotIn means the value for 'key' should NOT be in one of the given value(s)\n - Exists: Exists means the 'key' should just exist regardless of the value\n - DoesNotExist: DoesNotExist means the 'key' should NOT exist\n - Gt: Gt means the 'key' should be greater than the value(s)\n - Lt: Lt means the 'key' should be less than the value(s)"
      enum:
      - In
      - NotIn
      - Exists
      - DoesNotExist
      - Gt
      - Lt
      title: This defines operator types used in a label matching rule
      type: string
    apiSdkWatchResponse:
      properties:
        volume_event:
          $ref: '#/components/schemas/apiSdkVolumeWatchResponse'
      title: Defines the response to watch an openstorage event. An event can be a volume, a node, a disk, etc
      type: object
    apiProxySpec:
      description: ProxySpec defines how this volume will reflect an external data source.
      properties:
        endpoint:
          description: 'Endpoint is the external endpoint which can be used for accessing the

            external data source.'
          type: string
        nfs_spec:
          $ref: '#/components/schemas/apiNFSProxySpec'
        proxy_protocol:
          $ref: '#/components/schemas/apiProxyProtocol'
        pure_block_spec:
          $ref: '#/components/schemas/apiPureBlockSpec'
        pure_file_spec:
          $ref: '#/components/schemas/apiPureFileSpec'
        pxd_spec:
          $ref: '#/components/schemas/apiPXDProxySpec'
        s3_spec:
          $ref: '#/components/schemas/apiS3ProxySpec'
      type: object
    apiPXDProxySpec:
      properties:
        id:
          title: ID of the remote portworx volume
          type: string
      title: PXDProxySpec is the spec for proxying a Portworx volume
      type: object
    apiExportProtocol:
      default: INVALID
      description: "ExportProtocol defines how the device is exported..\n\n - INVALID: Invalid uninitialized value\n - PXD: PXD the volume is exported over Portworx block interface.\n - ISCSI: ISCSI the volume is exported over ISCSI.\n - NFS: NFS the volume is exported over NFS.\n - CUSTOM: Custom the volume is exported over custom interface."
      enum:
      - INVALID
      - PXD
      - ISCSI
      - NFS
      - CUSTOM
      type: string
    apiNFSProxySpec:
      description: NFSProxySpec is the spec for proxying an NFS share.
      properties:
        export_path:
          title: ExportPath is the NFS export path on the NFS server
          type: string
        sub_path:
          description: SubPath is the sub-directory from an NFS share that should be reflected.
          type: string
      type: object
    apiVolumeSpec:
      description: VolumeSpec has the properties needed to create a volume.
      properties:
        aggregation_level:
          description: Aggregation level Specifies the number of parts the volume can be aggregated from.
          format: int64
          type: integer
        auto_fstrim:
          title: Autofstrim indicates that fstrim would be run on this volume automatically, without user intervention
          type: boolean
        block_size:
          description: BlockSize for the filesystem.
          format: int64
          type: string
        cascaded:
          description: Cascaded is true if this volume can be populated on any node from an external source.
          type: boolean
        checksum_clone_id:
          title: clone created to trigger checksum verification
          type: string
        checksummed:
          title: Checksummed indicates if volumed data is checksummed to provide data integrity
          type: boolean
        compressed:
          description: Compressed is true if this volume is to be compressed.
          type: boolean
        cos:
          $ref: '#/components/schemas/apiCosType'
        dedupe:
          description: Dedupe specifies if the volume data is to be de-duplicated.
          type: boolean
        encrypted:
          description: Encrypted is true if this volume will be cryptographically secured.
          type: boolean
        ephemeral:
          title: Ephemeral storage
          type: boolean
        export_spec:
          $ref: '#/components/schemas/apiExportSpec'
        fa_create_options:
          description: Filesystem create options to be honored.
          type: string
        force_unsupported_fs_type:
          description: 'Use to force a file system type which is not recommended.

            The driver may still refuse to use the file system type.'
          type: boolean
        format:
          $ref: '#/components/schemas/apiFSType'
        fp_preference:
          title: fastpath extensions
          type: boolean
        group:
          $ref: '#/components/schemas/apiGroup'
        group_enforced:
          description: GroupEnforced is true if consistency group creation is enforced.
          type: boolean
        ha_level:
          description: HaLevel specifies the number of copies of data.
          format: int64
          type: string
        io_profile:
          $ref: '#/components/schemas/apiIoProfile'
        io_strategy:
          $ref: '#/components/schemas/apiIoStrategy'
        io_throttle:
          $ref: '#/components/schemas/apiIoThrottle'
        journal:
          description: Journal is true if data for the volume goes into the journal.
          type: boolean
        mount_options:
          $ref: '#/components/schemas/apiMountOptions'
        near_sync:
          title: NearSync specifies the volume has a near-sync replica
          type: boolean
        near_sync_replication_strategy:
          $ref: '#/components/schemas/apiNearSyncReplicationStrategy'
        nodiscard:
          description: 'Nodiscard specifies if the volume will be mounted with discard support disabled.

            i.e. FS will not release allocated blocks back to the backing storage pool.'
          type: boolean
        number_of_chunks:
          format: int64
          title: NumberOfChunks indicates how many chunks must be created, 0 and 1 both mean 1
          type: integer
        ownership:
          $ref: '#/components/schemas/apiOwnership'
        passphrase:
          title: Passphrase for an encrypted volume
          type: string
        placement_strategy:
          $ref: '#/components/schemas/apiVolumePlacementStrategy'
        proxy_spec:
          $ref: '#/components/schemas/apiProxySpec'
        proxy_write:
          title: Proxy_write if true, per volume proxy write replication enabled
          type: boolean
        queue_depth:
          format: int64
          title: QueueDepth defines the desired block device queue depth
          type: integer
        readahead:
          title: Enable readahead for the volume
          type: boolean
        replica_set:
          $ref: '#/components/schemas/apiReplicaSet'
        scale:
          description: Scale allows autocreation of volumes.
          format: int64
          type: integer
        scan_policy:
          $ref: '#/components/schemas/apiScanPolicy'
        shared:
          description: Share

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