Portworx

Portworx by Pure Storage is a Kubernetes data services platform that provides persistent storage, data protection, disaster recovery, and security for containerized applications running in production. The OpenStorage SDK exposes a REST API for volume, cluster, snapshot, backup, and credential management.

OpenAPI Specification

portworx-openapi.yml Raw ↑
components:
  schemas:
    CloudMigrateStage:
      default: InvalidStage
      enum:
      - InvalidStage
      - Backup
      - Restore
      - VolumeUpdate
      - Done
      type: string
    FilesystemCheckFilesystemCheckStatus:
      default: FS_CHECK_UNKNOWN
      description: "- FS_CHECK_UNKNOWN: Filesystem Check operation is an unknown state\n\
        \ - FS_CHECK_NOT_RUNNING: FilesystemCheck operation not running for the specified\
        \ volume\n - FS_CHECK_STARTED: FilesystemCheck operation started for the specified\
        \ volume\n - FS_CHECK_INPROGRESS: FilesystemCheck operation is in progress\n\
        \ - FS_CHECK_STOPPED: FilesystemCheck operation was stopped by the user\n\
        \ - FS_CHECK_COMPLETED: FilesystemCheck operation completed successfully\n\
        \ - FS_CHECK_FAILED: FilesystemCheck operation failed due to internal error"
      enum:
      - FS_CHECK_UNKNOWN
      - FS_CHECK_NOT_RUNNING
      - FS_CHECK_STARTED
      - FS_CHECK_INPROGRESS
      - FS_CHECK_STOPPED
      - FS_CHECK_COMPLETED
      - FS_CHECK_FAILED
      title: 'FilesystemCheckStatus represents the status codes returned from

        OpenStorageFilesystemCheck service APIs()'
      type: string
    FilesystemTrimFilesystemTrimStatus:
      default: FS_TRIM_UNKNOWN
      description: "- FS_TRIM_UNKNOWN: Filesystem Trim operation is an unknown state\n\
        \ - FS_TRIM_NOT_RUNNING: Filesystem Trim operation is not running for the\
        \ specified volume\n - FS_TRIM_STARTED: Filesystem Trim operation started\
        \ for the specified volume\n - FS_TRIM_INPROGRESS: Filesystem Trim operation\
        \ is in progress for the specified volume\n - FS_TRIM_STOPPED: Filesystem\
        \ Trim operation was stopped by the user for the specified volume\n - FS_TRIM_COMPLETED:\
        \ Filesystem Trim operation completed successfully for the specified volume\n\
        \ - FS_TRIM_FAILED: Filesystem Trim operation failed due to internal error\
        \ for the specified\nvolume"
      enum:
      - FS_TRIM_UNKNOWN
      - FS_TRIM_NOT_RUNNING
      - FS_TRIM_STARTED
      - FS_TRIM_INPROGRESS
      - FS_TRIM_STOPPED
      - FS_TRIM_COMPLETED
      - FS_TRIM_FAILED
      title: 'FilesystemTrimStatus represents the status codes returned from

        OpenStorageFilesystemTrim service APIs()'
      type: string
    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
    OwnershipAccessControl:
      properties:
        collaborators:
          additionalProperties:
            $ref: '#/components/schemas/OwnershipAccessType'
          description: 'Collaborator access to resource gives access to other user.

            Must be the username (unique id) set in the authorization token.

            The owner or the administrator can set this value. Possible values are:

            1. no collaborators: Means no users are given access.

            2. `["*"]`: All users are allowed.

            3. `["username1", "username2"]`: Only certain usernames are allowed. In
            this example only

            _username1_ and _username2_ are allowed.'
          type: object
        groups:
          additionalProperties:
            $ref: '#/components/schemas/OwnershipAccessType'
          description: 'Group access to resource which must match the group set in
            the

            authorization token.

            Can be set by the owner or the system administrator only.

            Possible values are:

            1. no groups: Means no groups are given access.

            2. `["*"]`: All groups are allowed.

            3. `["group1", "group2"]`: Only certain groups are allowed. In this example
            only

            _group1_ and _group2_ are allowed.'
          type: object
        public:
          $ref: '#/components/schemas/OwnershipPublicAccessControl'
      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.\n\
        This type automatically provides Read and Write access also."
      enum:
      - Read
      - Write
      - Admin
      type: string
    OwnershipPublicAccessControl:
      properties:
        type:
          $ref: '#/components/schemas/OwnershipAccessType'
      title: PublicAccessControl allows assigning public ownership
      type: object
    ScanPolicyScanAction:
      default: SCAN_ACTION_NONE
      enum:
      - SCAN_ACTION_NONE
      - SCAN_ACTION_SCAN_ONLY
      - SCAN_ACTION_SCAN_REPAIR
      type: string
    ScanPolicyScanTrigger:
      default: SCAN_TRIGGER_NONE
      enum:
      - SCAN_TRIGGER_NONE
      - SCAN_TRIGGER_ON_MOUNT
      - SCAN_TRIGGER_ON_NEXT_MOUNT
      type: string
    SdkCloudMigrateStartRequestMigrateAllVolumes:
      title: Defines a migration request for all volumes in a cluster
      type: object
    SdkCloudMigrateStartRequestMigrateVolume:
      properties:
        volume_id:
          type: string
      title: Defines a migration request for a volume
      type: object
    SdkCloudMigrateStartRequestMigrateVolumeGroup:
      properties:
        group_id:
          type: string
      title: Defines a migration request for a volume group
      type: object
    SdkServiceCapabilityOpenStorageService:
      properties:
        type:
          $ref: '#/components/schemas/SdkServiceCapabilityOpenStorageServiceType'
      type: object
    SdkServiceCapabilityOpenStorageServiceType:
      default: UNKNOWN
      enum:
      - UNKNOWN
      - CLUSTER
      - CLOUD_BACKUP
      - CREDENTIALS
      - NODE
      - OBJECT_STORAGE
      - SCHEDULE_POLICY
      - VOLUME
      - ALERTS
      - MOUNT_ATTACH
      - ROLE
      - CLUSTER_PAIR
      - MIGRATE
      - STORAGE_POLICY
      title: "- UNKNOWN: Unknown service\n - CLUSTER: Cluster management\n - CLOUD_BACKUP:\
        \ Cloud backup of volumes management\n - CREDENTIALS: Credentials management\n\
        \ - NODE: Node management\n - OBJECT_STORAGE: Object Storage management\n\
        \ - SCHEDULE_POLICY: Schedule policy management\n - VOLUME: Volume management\n\
        \ - ALERTS: Alert enumeration\n - MOUNT_ATTACH: Mount/Attach Support\n - ROLE:\
        \ Role service\n - CLUSTER_PAIR: Cluster Pair service\n - MIGRATE: Migrate\
        \ service\n - STORAGE_POLICY: StoragePolicy Service"
      type: string
    SdkStoragePoolOperationStatus:
      default: OPERATION_PENDING
      description: "- OPERATION_PENDING: Operation pending\n - OPERATION_IN_PROGRESS:\
        \ Operation is in progress\n - OPERATION_SUCCESSFUL: Operation is successful\n\
        \ - OPERATION_FAILED: Operation failed"
      enum:
      - OPERATION_PENDING
      - OPERATION_IN_PROGRESS
      - OPERATION_SUCCESSFUL
      - OPERATION_FAILED
      title: OperationStatus captures the various statuses of a storage pool operation
      type: string
    SdkStoragePoolResizeOperationType:
      default: RESIZE_TYPE_AUTO
      description: "- RESIZE_TYPE_AUTO: Automatically pick the optimum resize operation\
        \ type\n - RESIZE_TYPE_ADD_DISK: Add a new drive to resize the pool\n - RESIZE_TYPE_RESIZE_DISK:\
        \ Resize existing drives to resize the pool"
      enum:
      - RESIZE_TYPE_AUTO
      - RESIZE_TYPE_ADD_DISK
      - RESIZE_TYPE_RESIZE_DISK
      title: Defines the operation types available to resize a storage pool
      type: string
    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
    StorageNodeSecurityStatus:
      default: UNSPECIFIED
      description: " - UNSPECIFIED: Security status type is unknown\n - UNSECURED:\
        \ Node is unsecure\n - SECURED: Node is secured with authentication and authorization\n\
        \ - SECURED_ALLOW_SECURITY_REMOVAL: Node is secured, but in the process of\
        \ removing security. This state allows\nother unsecured nodes to join the\
        \ cluster since the cluster is in the process\nof removing security authentication\
        \ and authorization."
      enum:
      - UNSPECIFIED
      - UNSECURED
      - SECURED
      - SECURED_ALLOW_SECURITY_REMOVAL
      type: string
    StorageRebalanceAuditStorageRebalanceAction:
      default: ADD_REPLICA
      description: "- ADD_REPLICA: Indicates new replica was added\n - REMOVE_REPLICA:\
        \ Indicates existing replica was removed"
      enum:
      - ADD_REPLICA
      - REMOVE_REPLICA
      title: StorageRebalanceAction describes type of rebalance action
      type: string
    StorageRebalanceTriggerThresholdMetric:
      default: PROVISION_SPACE
      description: "- PROVISION_SPACE: ProvisionSpace indicates rebalance for provisioned\
        \ space\n - USED_SPACE: UsedSpace indicates rebalance for used space"
      enum:
      - PROVISION_SPACE
      - USED_SPACE
      title: Metric is an enum that defines the metric to use for rebalance
      type: string
    VerifyChecksumVerifyChecksumStatus:
      default: VERIFY_CHECKSUM_UNKNOWN
      description: "- VERIFY_CHECKSUM_UNKNOWN: VerifyChecksum operation is an unknown\
        \ state\n - VERIFY_CHECKSUM_NOT_RUNNING: VerifyChecksum operation is not running\
        \ for the specified volume\n - VERIFY_CHECKSUM_STARTED: VerifyChecksum operation\
        \ started for the specified volume\n - VERIFY_CHECKSUM_STOPPED: VerifyChecksum\
        \ operation was stopped by the user for the specified volume\n - VERIFY_CHECKSUM_COMPLETED:\
        \ VerifyChecksum operation completed successfully for the specified volume\n\
        \ - VERIFY_CHECKSUM_FAILED: VerifyChecksum operation failed"
      enum:
      - VERIFY_CHECKSUM_UNKNOWN
      - VERIFY_CHECKSUM_NOT_RUNNING
      - VERIFY_CHECKSUM_STARTED
      - VERIFY_CHECKSUM_STOPPED
      - VERIFY_CHECKSUM_COMPLETED
      - VERIFY_CHECKSUM_FAILED
      title: 'VerifyChecksumStatus represents the status codes returned from

        OpenStorageVerifyChecksum service APIs()'
      type: string
    VolumeSpecPolicyPolicyOp:
      default: Equal
      description: "- Equal: Policy will make sure the value must be equal\n - Minimum:\
        \ Policy will make sure the requested value must be greater than or equal\n\
        \ - Maximum: Policy will make sure the requested value must be less than or\
        \ equal"
      enum:
      - Equal
      - Minimum
      - Maximum
      title: This defines an operator for the policy comparisons
      type: string
    apiAlert:
      properties:
        alert_type:
          format: int64
          title: AlertType user defined alert type
          type: string
        cleared:
          title: Cleared Flag
          type: boolean
        count:
          description: Count of such alerts raised so far.
          format: int64
          type: string
        first_seen:
          description: Timestamp when such alert was raised the very first time.
          format: date-time
          type: string
        id:
          format: int64
          title: Id for Alert
          type: string
        message:
          title: Message describing the Alert
          type: string
        resource:
          $ref: '#/components/schemas/apiResourceType'
        resource_id:
          title: ResourceId where Alert occurred
          type: string
        severity:
          $ref: '#/components/schemas/apiSeverityType'
        timestamp:
          format: date-time
          title: Timestamp when Alert occurred
          type: string
        ttl:
          format: uint64
          title: Time-to-live in seconds for this Alert
          type: string
        unique_tag:
          title: UniqueTag helps identify a unique alert for a given resouce
          type: string
      title: Alert is a structure that represents an alert object
      type: object
    apiAnonymousBucketAccessMode:
      default: UnknownBucketAccessMode
      description: " - Private: Default, disallow uncredentialed access to the backend\
        \ storage.\n - ReadOnly: Read only, uncredentialed users can call ListBucket\
        \ and GetObject.\n - WriteOnly: Write only, uncredentialed users can only\
        \ call PutObject.\n - ReadWrite: Read/Write, uncredentialed users can read\
        \ objects as well as PutObject."
      enum:
      - UnknownBucketAccessMode
      - Private
      - ReadOnly
      - WriteOnly
      - ReadWrite
      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
    apiBucketAccessCredentials:
      properties:
        access_key_id:
          title: Access key id
          type: string
        secret_access_key:
          title: Secret access key
          type: string
      title: Defines the bucket access credential object
      type: object
    apiBucketCreateRequest:
      description: Defines a request to create a bucket.
      properties:
        anonymousBucketAccessMode:
          $ref: '#/components/schemas/apiAnonymousBucketAccessMode'
        endpoint:
          title: Endpoint to use when creating the bucket
          type: string
        name:
          description: Unique name of the bucket. This will be used for idempotency.
          type: string
        region:
          description: Region in which bucket will be created.
          type: string
      type: object
    apiBucketCreateResponse:
      properties:
        bucket_id:
          title: Id of new bucket
          type: string
      title: Defines a response to the creation of a bucket
      type: object
    apiBucketDeleteResponse:
      title: Empty response
      type: object
    apiBucketGrantAccessRequest:
      properties:
        access_policy:
          title: Access policy to be applied for the account
          type: string
        account_name:
          title: Name of the account to which access to be provided
          type: string
        bucket_id:
          title: Id of the bucket
          type: string
      title: Defines a request to grant access to the bucket
      type: object
    apiBucketGrantAccessResponse:
      properties:
        account_id:
          description: 'This is the account_id that is being provided access. This
            will

            This will be required later to revoke access.'
          type: string
        credentials:
          $ref: '#/components/schemas/apiBucketAccessCredentials'
      title: Defines a response to the creation of a bucket
      type: object
    apiBucketRevokeAccessRequest:
      properties:
        account_id:
          description: AccountId that is having its access revoked.
          type: string
        bucket_id:
          title: Id of bucket to delete
          type: string
      title: Defines the request to revoke access to the bucket
      type: object
    apiBucketRevokeAccessResponse:
      title: Empty response
      type: object
    apiCapacityUsageInfo:
      description: 'Provides details on exclusive and shared storage used by

        snapshot/volume specifically for copy-on-write(COW) snapshots. Deletion

        of snapshots and overwrite of volume will affect the exclusive storage

        used by the other dependent snaps and parent volume.'
      properties:
        exclusive_bytes:
          description: 'Storage consumed exclusively by this single snapshot. Deletion
            of this

            snapshot may increase the free storage available by this amount.'
          format: int64
          type: string
        shared_bytes:
          format: int64
          title: Storage consumed by this snapshot that is shared with parent and
            children
          type: string
        total_bytes:
          format: int64
          title: TotalBytes used by this volume
          type: string
      type: object
    apiCatalog:
      properties:
        LastModified:
          format: date-time
          title: Last Modified
          type: string
        children:
          items:
            $ref: '#/components/schemas/apiCatalog'
          title: Children
          type: array
        name:
          title: Name of the Directory/File
          type: string
        path:
          title: Full Path of the Directory/File
          type: string
        size:
          format: uint64
          title: File or Directory Size
          type: string
        type:
          title: Type Directory or File
          type: string
      type: object
    apiCatalogResponse:
      properties:
        report:
          $ref: '#/components/schemas/apiReport'
        root:
          $ref: '#/components/schemas/apiCatalog'
      type: object
    apiCloudDriveTransferJob:
      properties:
        destination_instance_id:
          title: DestinationInstanceID is the ID of the storageless instance that
            needs to take over the SourceDriveSetID
          type: string
        source_driveset_id:
          title: SourceDrivesetID is the ID of the current driveset that needs to
            be transferred
          type: string
        status:
          title: Status describes a helpful status of this operation
          type: string
      type: object
    apiCloudMigrateCancelRequest:
      properties:
        task_id:
          title: The id of the task to cancel
          type: string
      title: Request to stop a cloud migration
      type: object
    apiCloudMigrateInfo:
      properties:
        bytes_done:
          format: uint64
          title: BytesDone is the number of bytes already transferred
          type: string
        bytes_total:
          format: uint64
          title: BytesTotal is the number of bytes being transferred
          type: string
        cloudbackup_id:
          title: ID of the cloudbackup used for the migration
          type: string
        cluster_id:
          title: ID of the cluster where the volume is being migrated
          type: string
        completed_time:
          format: date-time
          title: CompletedTime indicates Op's completed time
          type: string
        current_stage:
          $ref: '#/components/schemas/CloudMigrateStage'
        error_reason:
          title: Contains the reason for the migration error
          type: string
        eta_seconds:
          format: int64
          title: ETASeconds the time duration in seconds for cloud migration completion
          type: string
        last_update:
          format: date-time
          title: Last time the status was updated
          type: string
        local_volume_id:
          title: ID of the volume on the local cluster
          type: string
        local_volume_name:
          title: Name of the volume on the local cluster
          type: string
        remote_volume_id:
          title: ID of the volume on the remote cluster
          type: string
        start_time:
          format: date-time
          title: StartTime indicates Op's start time
          type: string
        status:
          $ref: '#/components/schemas/apiCloudMigrateStatus'
        task_id:
          title: Task id associated with this migration
          type: string
      type: object
    apiCloudMigrateInfoList:
      properties:
        list:
          items:
            $ref: '#/components/schemas/apiCloudMigrateInfo'
          type: array
      type: object
    apiCloudMigrateStartResponse:
      properties:
        task_id:
          title: TaskId assocaiated with the migration that was started
          type: string
      title: Response to start a cloud migration
      type: object
    apiCloudMigrateStatus:
      default: InvalidStatus
      enum:
      - InvalidStatus
      - Queued
      - Initialized
      - InProgress
      - Failed
      - Complete
      - Canceled
      type: string
    apiCloudMigrateStatusRequest:
      properties:
        cluster_id:
          title: ID of the cluster for which to return migration statuses
          type: string
        task_id:
          title: Task id for which to return status
          type: string
      title: Request for cloud migration operation status
      type: object
    apiCloudMigrateStatusResponse:
      properties:
        info:
          additionalProperties:
            $ref: '#/components/schemas/apiCloudMigrateInfoList'
          title: Map of cluster id to the status of volumes being migrated
          type: object
      title: Response with a status of the cloud migration operations
      type: object
    apiClusterPairCreateRequest:
      properties:
        credential_id:
          title: 'Use for the cluster pairing, if given

            credential id will be used in ClusterPairCreate service'
          type: string
        mode:
          $ref: '#/components/schemas/apiClusterPairModeMode'
        remote_cluster_ip:
          title: IP of the remote cluster
          type: string
        remote_cluster_port:
          format: int64
          title: Port for the remote cluster
          type: integer
        remote_cluster_token:
          title: Token used to authenticate with the remote cluster
          type: string
        set_default:
          title: Set the new pair as the default
          type: boolean
      title: Used to send a request to create a cluster pair
      type: object
    apiClusterPairCreateResponse:
      properties:
        remote_cluster_id:
          title: ID of the remote cluster
          type: string
        remote_cluster_name:
          title: Name of the remote cluster
          type: string
      title: Response for a pair request
      type: object
    apiClusterPairGetResponse:
      properties:
        pair_info:
          $ref: '#/components/schemas/apiClusterPairInfo'
      title: Response to get a cluster pair
      type: object
    apiClusterPairInfo:
      properties:
        current_endpoints:
          items:
            type: string
          title: Current endpoints of the cluster
          type: array
        endpoint:
          title: The endpoint used for creating the pair
          type: string
        id:
          title: ID of the cluster
          type: string
        mode:
          $ref: '#/components/schemas/apiClusterPairModeMode'
        name:
          title: Name of the cluster
          type: string
        options:
          additionalProperties:
            type: string
          title: 'Key/value pair of options associated with the cluster

            Opaque to openstorage and interpreted by the drivers'
          type: object
        secure:
          title: Flag used to determine if communication is over a secure channel
          type: boolean
        token:
          title: Token associated with cluster
          type: string
      title: Information about a cluster pair
      type: object
    apiClusterPairModeMode:
      default: Default
      enum:
      - Default
      - DisasterRecovery
      - OneTimeMigration
      title: "- Default: Default pairing mode\n - DisasterRecovery: Paired for DisasterRecovery\n\
        \ - OneTimeMigration: Paired for one-time migration"
      type: string
    apiClusterPairTokenGetResponse:
      properties:
        token:
          title: Token used to authenticate clusters
          type: string
      title: Response to get the cluster token
      type: object
    apiClusterPairsEnumerateResponse:
      properties:
        default_id:
          title: ID of the default cluster pair
          type: string
        pairs:
          additionalProperties:
            $ref: '#/components/schemas/apiClusterPairInfo'
          title: Pairs Info about the cluster pairs
          type: object
      title: Response to enumerate all the cluster pairs
      type: object
    apiCollectDiagsJob:
      properties:
        request:
          $ref: '#/components/schemas/apiSdkDiagsCollectRequest'
        statuses:
          items:
            $ref: '#/components/schemas/apiDiagsCollectionStatus'
          title: Statuses is a list of statuses for diags collection for each node
            that is part of the request
          type: array
      type: object
    apiCosType:
      default: NONE
      enum:
      - NONE
      - LOW
      - MEDIUM
      - HIGH
      type: string
    apiDefragJob:
      properties:
        current_running_nodes:
          items:
            type: string
          title: CurrentRunningNodes stores the nodes on which the job is currently
            running
          type: array
        exclude_nodes:
          items:
            type: string
          title: 'ExcludeNodes is a list of node UUID: if provided, the job will skip
            these nodes;

            if not provided, will run on all nodes

            cannot coexist with IncludeNodes'
          type: array
        include_nodes:
          items:
            type: string
          title: 'IncludeNodes is a list of node UUID: if provided, will only run
            the job on these nodes;

            if not provided, will run on all nodes

            cannot coexist with ExcludeNodes and NodeSelector'
          type: array
        max_duration_minutes:
          format: int64
          title: MaxDurationMinutes defines the time limit in minutes
          type: integer
        max_nodes_in_parallel:
          format: int64
          title: MaxNodesInParallel defines the maximum number of nodes running the
            defrag job in parallel
          type: integer
        node_selector:
          items:
            $ref: '#/components/schemas/apiLabelSelectorRequirement'
          title: 'NodeSelector is a list of node label `key=value` pairs,

            which selects the nodes to be run on for the job

            can coexist with ExcludeNodes but cannot coexist with IncludeNodes'
          type: array
        schedule_id:
          title: ScheduleId is the ID of the schedule which started this job
          type: string
        schedule_one_iteration_only:
          title: ScheduleOneIterationOnly is true when the defragJob is run by a one-iteration-only
            schedule
          type: boolean
      title: DefragJob describes a job to run defragmentation on cluster nodes
      type: object
    apiDefragNodeStatus:
      properties:
        last_update_time:
          format: date-time
          title: LastUpdateTime is the time when DefragNodeStatus or any DefragPoolStatus
            was last updated on this node
          type: string
        pool_status:
          additionalProperties:
            $ref: '#/components/schemas/apiDefragPoolStatus'
          title: PoolStatus is a map of <pool_uuid, DefragPoolStatus> pairs
          type: object
        running_schedule:
          title: RunningSchedule is the defrag schedule being run on the node
          type: string
      title: DefragNodeStatus describes the defragmentation status of a node
      type: object
    apiDefragPoolStatus:
      properties:
        last_complete_time:
          format: date-time
          title: LastCompleteTime is the completion time of the last run on this pool
          type: string
        last_offset:
          format: int64
          title: 'LastOffset is the offset of the last defrag command executed on
            the pending volume

            -1 means no volume is in a pending state (either not started or fully
            finished)'
          type: string
        last_start_time:
          format: date-time
          title: LastStartTime is the start time of the latest run (current or last
            run) on this pool
          type: string
        last_success:
          title: LastSuccess indicates whether the last run of defrag on this pool
            was successful
          type: boolean
        last_volume_id:
          title: 'LastVolumeId is the volume on which defrag has started but not yet
            finished

            if provided, volume is currently being defraged or was interrupted in
            the last run of defrag'
          type: string
        num_iterations:
          format: int64
          title: NumIterations counts the number of times the pool gets defraged
          type: integer
        progress_percentage:
          format: int64
          title: 'ProgressPercentage describes the progress of the lastest defrag
            job (current or last run) on this pool

            percentage = bytes completed / sum of file sizes'
          type: integer
        running:
          title: Running indicates whether the pool is being defraged
          type: boolean
      title: DefragNodeStatus describes the defragmentation status of a pool
      type: object
    apiDiagsCollectionStatus:
      properties:
        message:
          title: Message is a user friendly message for current status of diags collection
          type: string
        node:
          title: Node is the node that's collecting the diags
          type: string
        state:
          $ref: '#/components/schemas/apiDiagsCollectionStatusState'
      type: object
    apiDiagsCollectionStatusState:
      default: UNSPECIFIED
      description: "- UNSPECIFIED: Unspecified means uninitialized or unknown state\n\
        \ - PENDING: Pending indicates the diags collection is pending and hasn't\
        \ started\n - RUNNING: Running indicates diags collection is actively running\n\
        \ - DONE: Done indicates diags collection has finished\n - FAILED: Failed\
        \ indicates diags collection has failed"
      enum:
      - UNSPECIFIED
      - PENDING
      - RUNNING
      - DONE
      - FAILED
      title: State is an enum for state of diags collection on a given node
      type: string
    apiDiagsNodeSelector:
      properties:
        all:
          title: All selects all nodes for diags collection
          type: boolean
        node_ids:
          items:
            type: string
          title: NodeIDs are unique IDs fo the nodes for which the diags will be collected
          type: array
        node_label_selector:
          items:
            $ref: '#/components/schemas/apiLabelSelectorRequirement'
          title: NodeLabelSelector is a label selector used to select the nodes for
            which diags will be collected
          type: array
      title: 'DiagsNodeSelector allows selecting nodes for diags collection

        User can select NodeLabelSelector AND/OR NodeIDs. If both are provided, the
        implementation will select nodes based on

        both labels and IDs and also handle overlaps

        If All is set to true, other selectors are ignored since it selects all nodes'
      type: obj

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