| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| |
| openapi: 3.0.0 |
| info: |
| title: Ozone Recon REST API |
| license: |
| url: http://www.apache.org/licenses/LICENSE-2.0.html |
| name: Apache 2.0 License |
| servers: |
| - url: /api/v1/ |
| tags: |
| - name: Containers |
| description: APIs to fetch information about the available containers. **Admin Only** |
| - name: Volumes |
| description: APIs to fetch information about the available volumes. **Admin Only** |
| - name: Buckets |
| description: APIs to fetch information about the available buckets. **Admin Only** |
| - name: Keys |
| description: APIs to fetch information about the available keys. **Admin Only** |
| - name: Containers and Keys |
| description: APIs to fetch information about the available containers and keys. **Admin Only** |
| - name: Blocks Metadata |
| description: APIs to fetch metadata for the blocks available. **Admin Only** |
| - name: Namespace Metadata |
| description: APIs to fetch metadata for the namespace. **Admin Only** |
| - name: Cluster State |
| description: APIs to fetch data about the cluster state |
| - name: Datanodes |
| description: APIs to fetch data about the Datanodes |
| - name: Pipelines |
| description: APIs to fetch data about the Pipelines |
| - name: Tasks |
| description: APIs to fetch data about status of Recon Tasks |
| - name: Utilization |
| description: APIs to fetch data about space utilization |
| - name: Metrics |
| description: APIs to fetch data about various metrics from Prometheus |
| externalDocs: |
| description: Prometheus API docs |
| url: https://prometheus.io/docs/prometheus/latest/querying/api/ |
| paths: |
| /containers: |
| get: |
| tags: |
| - Containers |
| summary: Get all Container Metadata information |
| operationId: getContainerInfo |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ContainerMetadata' |
| /containers/deleted: |
| get: |
| tags: |
| - Containers |
| summary: Return all DELETED containers in SCM |
| operationId: getSCMDeletedContainers |
| responses: |
| 200: |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DeletedContainers' |
| /containers/missing: |
| get: |
| tags: |
| - Containers |
| summary: Get the MissingContainerMetadata for all missing containers |
| operationId: getMissingContainers |
| parameters: |
| - name: limit |
| in: query |
| description: Limit of the number of results returned |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MissingContainerMetadata' |
| /containers/{id}/replicaHistory: |
| get: |
| tags: |
| - Containers |
| summary: Get all the Replica history for a given container id |
| operationId: getReplicaHistoryForContainer |
| parameters: |
| - name: id |
| in: path |
| description: ID of the container for which we want ContainerHistory |
| required: true |
| schema: |
| type: integer |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| type: array |
| items: |
| $ref: '#/components/schemas/ReplicaHistory' |
| /containers/unhealthy: |
| get: |
| tags: |
| - Containers |
| summary: Get UnhealthyContainerMetadata for all the unhealthy containers |
| operationId: getUnhealthyContainers |
| parameters: |
| - name: batchNum |
| in: query |
| description: Size of the batch for the result. It will give us results from **(limit + 1) to (2 * limit)** |
| required: false |
| schema: |
| type: integer |
| - name: limit |
| in: query |
| description: Limit of the number of results returned |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UnhealthyContainerMetadata' |
| /containers/unhealthy/{state}: |
| get: |
| tags: |
| - Containers |
| summary: Returns UnhealthyContainerMetadata for all the unhealthy containers with the specified state |
| operationId: getUnhealthyContainersWithState |
| parameters: |
| - name: state |
| in: path |
| description: State of the container which is one of **MISSING**, **MIS_REPLICATED**, **UNDER_REPLICATED**, **OVER_REPLICATED** |
| required: true |
| schema: |
| type: string |
| example: MISSING |
| - name: batchNum |
| in: query |
| description: Size of the batch for the result. It will give us results from **(limit + 1) to (2 * limit)** |
| required: false |
| schema: |
| type: integer |
| - name: limit |
| in: query |
| description: Limit of the number of results returned |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UnhealthyContainerMetadata' |
| /containers/mismatch: |
| get: |
| tags: |
| - Containers |
| summary: Returns the list of mis-matched containers between OM and SCM |
| operationId: getContainerMisMatchInsights |
| parameters: |
| - name: prevKey |
| in: query |
| description: Stores the previous key after which to fetch the data |
| required: false |
| schema: |
| type: integer |
| default: 0 |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| - name: missingIn |
| in: query |
| description: Filters by where a given container is missing i.e. in OM or SCM |
| required: false |
| schema: |
| type: string |
| default: SCM |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MismatchedContainers' |
| /containers/mismatch/deleted: |
| get: |
| tags: |
| - Containers |
| summary: Returns the list of DELETED containers in SCM that are present in OM |
| operationId: getOmContainersDeletedInSCM |
| parameters: |
| - name: prevKey |
| in: query |
| description: Stores the previous key after which to fetch the data |
| required: false |
| schema: |
| type: integer |
| default: 0 |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DeletedMismatchedContainers' |
| /volumes: |
| get: |
| tags: |
| - Volumes |
| summary: Returns the set of all volumes present |
| operationId: getVolumes |
| parameters: |
| - name: prevKey |
| in: query |
| description: Stores the previous key after which to fetch the data |
| required: false |
| schema: |
| type: string |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Volumes' |
| /buckets: |
| get: |
| tags: |
| - Buckets |
| summary: Returns the set of all buckets across all volumes |
| operationId: getBuckets |
| parameters: |
| - name: volume |
| in: query |
| description: Stores the name of the volumes whose buckets to fetch |
| required: false |
| schema: |
| type: string |
| - name: prevKey |
| in: query |
| description: Stores the previous key after which to fetch the data |
| required: false |
| schema: |
| type: string |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Buckets' |
| /keys/open: |
| get: |
| tags: |
| - Keys |
| summary: Returns the set of keys/files which are open |
| operationId: getOpenKeyInfo |
| parameters: |
| - name: prevKey |
| in: query |
| description: Stores the previous key after which to fetch the data. |
| required: false |
| schema: |
| type: string |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| - name: startPrefix |
| in: query |
| description: Will return keys matching this prefix |
| schema: |
| type: integer |
| - name: includeFso |
| in: query |
| description: Boolean value to determine whether to include FSO keys or not |
| required: false |
| schema: |
| type: boolean |
| default: false |
| - name: includeNonFso |
| in: query |
| description: Boolean value to determine whether to include non-FSO keys or not |
| required: false |
| schema: |
| type: boolean |
| default: false |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/OpenKeys' |
| /keys/open/summary: |
| get: |
| tags: |
| - Keys |
| summary: Returns the summary of all open keys info |
| operationId: getOpenKeySummary |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/OpenKeysSummary' |
| |
| /keys/deletePending: |
| get: |
| tags: |
| - Keys |
| summary: Returns the set of keys/files which are pending for deletion |
| operationId: getDeletedKeyInfo |
| parameters: |
| - name: prevKey |
| in: query |
| description: Stores the previous key after which to fetch the data. |
| required: false |
| schema: |
| type: string |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| - name: startPrefix |
| in: query |
| description: Will return keys matching this prefix |
| schema: |
| type: string |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DeletePendingKeys' |
| /keys/deletePending/dirs: |
| get: |
| tags: |
| - Keys |
| summary: Returns the set of keys/files which are pending for deletion |
| operationId: getDeletedDirInfo |
| parameters: |
| - name: prevKey |
| in: query |
| description: Stores the previous key after which to fetch the data. |
| required: false |
| schema: |
| type: string |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DeletePendingDirs' |
| /keys/deletePending/summary: |
| get: |
| tags: |
| - Keys |
| summary: Returns the summary of all keys pending deletion info |
| operationId: getDeletedKeySummary |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DeletePendingSummary' |
| /keys/deletePending/dirs/summary: |
| get: |
| tags: |
| - Keys |
| summary: Retrieves the summary of deleted directories. |
| operationId: getDeletedDirectorySummary |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| type: object |
| properties: |
| totalDeletedDirectories: |
| type: integer |
| /containers/{id}/keys: |
| get: |
| tags: |
| - Containers and Keys |
| summary: Get the Key metadata for all keys present in the given container ID |
| operationId: getKeysForContainer |
| parameters: |
| - name: id |
| in: path |
| description: ID of the container for which we want Key Metadata |
| required: true |
| schema: |
| type: integer |
| - name: prevKey |
| in: query |
| description: Only return keys that are present after the given key prevKey prefix |
| required: false |
| schema: |
| type: string |
| - name: limit |
| in: query |
| description: Limit of the number of results returned |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/KeyMetadata' |
| /blocks/deletePending: |
| get: |
| tags: |
| - Blocks Metadata |
| summary: Fetch the list of blocks pending for deletion |
| operationId: getBlocksPendingDeletion |
| parameters: |
| - name: prevKey |
| in: query |
| description: Only returns the list of blocks pending for deletion, that are present after the given block id (prevKey). |
| example: 4 |
| required: false |
| schema: |
| type: string |
| - name: limit |
| in: query |
| description: Stores the limit for the number of results to fetch |
| required: false |
| schema: |
| type: integer |
| default: 1000 |
| responses: |
| '200': |
| description: Successful operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DeletePendingBlocks' |
| /namespace/summary: |
| get: |
| tags: |
| - Namespace Metadata |
| summary: Returns a basic summary of the path, including entity type and aggregate count of objects under the path. |
| operationId: getBasicInfo |
| parameters: |
| - name: path |
| in: query |
| description: The path request in string without any protocol prefix. |
| example: /volume1/bucket1 |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: | |
| Successful operation<br> |
| #### **Note**: |
| #### status can be either **OK** if path exists else **PATH_NOT_FOUND** |
| #### If **any num parameter is -1**, the path request is not applicable to such an entity type. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/NamespaceMetadataResponse' |
| /namespace/usage: |
| get: |
| tags: |
| - Namespace Metadata |
| summary: Returns namespace usage of all sub-paths under the path. |
| operationId: getDiskUsage |
| parameters: |
| - name: path |
| in: query |
| description: The path request in string without any protocol prefix. |
| example: /volume1/bucket1 |
| required: true |
| schema: |
| type: string |
| - name: files |
| in: query |
| description: This boolean has a default value of false. When set to true, it calculates the namespace usage for keys within the specified path and also provides a list of their corresponding sub-paths. |
| example: true |
| required: false |
| schema: |
| type: boolean |
| - name: replica |
| in: query |
| description: A boolean with a default value of false. If set to true, computes namespace usage with replicated size of keys. |
| example: true |
| required: false |
| schema: |
| type: boolean |
| responses: |
| '200': |
| description: | |
| Successful operation<br> |
| #### **Note**: |
| #### The below example response is for the sample endpoint: **namespace/usage?path=/vol1/bucket1&files=true&replica=true** |
| #### status can be either **OK** if path exists else **PATH_NOT_FOUND** |
| #### If files is set to **false**, sub-path **/vol1/bucket1/key1-1 is omitted**. |
| #### If replica is set to **false**, **sizeWithReplica returns -1**. |
| #### If the path’s entity type cannot have direct keys (Root, Volume), sizeDirectKey returns -1. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MetadataDiskUsage' |
| /namespace/quota: |
| get: |
| tags: |
| - Namespace Metadata |
| summary: Returns the quota allowed and used under the path. Only volumes and buckets have quota. Other types are not applicable to the quota request. |
| operationId: getQuotaUsage |
| parameters: |
| - name: path |
| in: query |
| description: The path request in string without any protocol prefix. |
| example: /volume1/bucket1 |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: | |
| Successful operation<br> |
| #### **Note**: |
| #### status can be either **OK** if path exists else **PATH_NOT_FOUND**, **TYPE_NOT_APPLICABLE** if path exists, but the path’s entity type is not applicable to the request. |
| #### If **quota is not set, "allowed" returns -1** |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MetadataQuota' |
| /namespace/dist: |
| get: |
| tags: |
| - Namespace Metadata |
| summary: Returns the file size distribution of all keys under the path. |
| operationId: getFileSizeDistribution |
| parameters: |
| - name: path |
| in: query |
| description: The path request in string without any protocol prefix. |
| example: / |
| required: true |
| schema: |
| type: string |
| responses: |
| '200': |
| description: | |
| Successful operation<br> |
| #### **Note**: |
| #### status can be either **OK** if path exists else **PATH_NOT_FOUND**, **TYPE_NOT_APPLICABLE** if path exists, but the path is a key, which does not have a file size distribution. |
| #### Recon keeps track of all keys with size from **1 KB to 1 PB**. |
| #### For keys **smaller than 1 KB, map to the first bin (index)**, for **keys larger than 1 PB, map to the last bin (index)**. |
| #### Each **index of dist** is mapped to a file size range (e.g. **1 MB - 2 MB**). |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MetadataSpaceDist' |
| /clusterState: |
| get: |
| tags: |
| - Cluster State |
| summary: Returns the summary of the current state of the Ozone cluster. |
| operationId: getClusterState |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ClusterState' |
| /datanodes: |
| get: |
| tags: |
| - Datanodes |
| summary: Returns all the datanodes in the cluster. |
| operationId: getDatanodes |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DatanodesSummary' |
| /datanodes/decommission/info: |
| get: |
| tags: |
| - Datanodes |
| summary: Returns all the datanodes in the decommissioning state |
| operationId: getDecommissioningDatanodes |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DatanodesDecommissionInfo' |
| /datanodes/decommission/info/datanode: |
| get: |
| tags: |
| - Datanodes |
| summary: Returns info of a specific datanode for which decommissioning is initiated |
| operationId: getDecommissionInfoForDatanode |
| parameters: |
| - name: uuid |
| in: query |
| description: The uuid of the datanode being decommissioned. |
| required: false |
| schema: |
| type: string |
| - name: ipAddress |
| in: query |
| description: The ipAddress of the datanode being decommissioned. |
| required: false |
| schema: |
| type: string |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/DatanodesDecommissionInfo' |
| /datanodes/remove: |
| put: |
| tags: |
| - Datanodes |
| summary: Removes datanodes from Recon's memory and nodes table in Recon DB. |
| operationId: removeDatanodes |
| requestBody: |
| description: List of datanodes to be removed |
| required: true |
| content: |
| application/json: |
| schema: |
| type: array |
| items: |
| type: string |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/RemovedDatanodesResponse' |
| |
| /pipelines: |
| get: |
| tags: |
| - Pipelines |
| summary: Returns all the pipelines in the cluster. |
| operationId: getPipelines |
| responses: |
| '200': |
| description: | |
| Successful Operation<br> |
| #### **Note**: The following sample response shows only one pipeline in the array |
| #### but since the pipeline totalCount is 5, there are 4 more pipelines expected in the array |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PipelinesSummary' |
| /task/status: |
| get: |
| tags: |
| - Tasks |
| summary: Returns the status of all the Recon tasks. |
| operationId: getTaskTimes |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/TasksStatus' |
| /utilization/fileCount: |
| get: |
| tags: |
| - Utilization |
| summary: Returns the file counts within different file ranges with fileSize in the response object being the upper cap for file size range. |
| operationId: getFileCounts |
| parameters: |
| - name: volume |
| in: query |
| description: Filters the results based on the given volume name. |
| example: sampleVol |
| required: false |
| schema: |
| type: string |
| - name: bucket |
| in: query |
| description: Filters the results based on the given bucket name. |
| example: sampleBucket |
| required: false |
| schema: |
| type: string |
| - name: fileSize |
| in: query |
| description: | |
| Filters the results based on the given file size.<br> |
| The smallest file size being tracked for count is 1 KB i.e. 1024 bytes. |
| example: 1024 |
| required: false |
| schema: |
| type: number |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/FileSizeUtilization' |
| /utilization/containerCount: |
| get: |
| tags: |
| - Utilization |
| summary: Returns the container counts within the given container size. |
| operationId: getContainerCounts |
| parameters: |
| - name: containerSize |
| in: query |
| description: | |
| Filters the results based on the given containerSize.<br> |
| The smallest container size being tracked for count is 512 MB i.e. 512000000 bytes. |
| example: 512000000 |
| required: false |
| schema: |
| type: number |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ContainerUtilization' |
| /metrics/query: |
| get: |
| tags: |
| - Metrics |
| summary: This is a proxy endpoint for Prometheus, and helps to fetch different metrics for Ozone |
| operationId: getMetricsResponse |
| parameters: |
| - name: query |
| in: query |
| description: The query in a Prometheus query format for which to fetch results |
| example: ratis_leader_election_electionCount |
| required: true |
| schema: |
| type: string |
| allowReserved: true |
| responses: |
| '200': |
| description: Successful Operation |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MetricsQuery' |
| components: |
| schemas: |
| Volumes: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| volumes: |
| type: array |
| items: |
| type: object |
| properties: |
| metadata: |
| type: object |
| name: |
| type: string |
| quotaInBytes: |
| type: integer |
| quotaInNamespace: |
| type: integer |
| usedNamespace: |
| type: integer |
| creationTime: |
| type: integer |
| modificationTime: |
| type: integer |
| acls: |
| $ref: "#/components/schemas/ACL" |
| admin: |
| type: string |
| owner: |
| type: string |
| volume: |
| type: string |
| Buckets: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| buckets: |
| type: array |
| items: |
| type: object |
| properties: |
| versioningEnabled: |
| type: boolean |
| metadata: |
| type: object |
| name: |
| type: string |
| quotaInBytes: |
| type: integer |
| quotaInNamespace: |
| type: integer |
| usedNamespace: |
| type: integer |
| creationTime: |
| type: integer |
| modificationTime: |
| type: integer |
| acls: |
| $ref: "#/components/schemas/ACL" |
| volumeName: |
| type: string |
| storageType: |
| type: string |
| versioning: |
| type: boolean |
| usedBytes: |
| type: integer |
| encryptionInfo: |
| type: object |
| properties: |
| version: |
| type: string |
| suite: |
| type: string |
| keyName: |
| type: string |
| replicationConfigInfo: |
| type: object |
| nullable: true |
| sourceVolume: |
| type: string |
| nullable: true |
| sourceBucket: |
| type: string |
| nullable: true |
| bucketLayout: |
| type: string |
| owner: |
| type: string |
| ContainerMetadata: |
| type: object |
| properties: |
| data: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| example: 3 |
| prevKey: |
| type: integer |
| example: 3019 |
| containers: |
| type: array |
| items: |
| type: object |
| properties: |
| ContainerID: |
| type: integer |
| example: 1 |
| NumberOfKeys: |
| type: integer |
| example: 834 |
| pipelines: |
| type: string |
| nullable: true |
| xml: |
| name: containerMetadata |
| example: |
| - ContainerID: 1 |
| NumberOfKeys: 834 |
| pipelines: null |
| - ContainerID: 2 |
| NumberOfKeys: 833 |
| pipelines: null |
| - ContainerID: 3 |
| NumberOfKeys: 833 |
| pipelines: null |
| xml: |
| name: containerMetadataResponse |
| DeletedContainers: |
| type: array |
| items: |
| type: object |
| properties: |
| containerId: |
| type: integer |
| pipelineId: |
| type: object |
| properties: |
| id: |
| type: string |
| containerState: |
| type: string |
| stateEnterTime: |
| type: integer |
| lastUsed: |
| type: integer |
| replicationConfig: |
| type: object |
| properties: |
| replicationType: |
| type: string |
| replicationFactor: |
| type: string |
| replicationNodes: |
| type: integer |
| replicationFactor: |
| type: string |
| KeyMetadata: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| example: 7 |
| lastKey: |
| type: string |
| example: /vol1/buck1/file1 |
| keys: |
| type: array |
| items: |
| type: object |
| properties: |
| Volume: |
| type: string |
| example: vol-1-73141 |
| Bucket: |
| type: string |
| example: bucket-3-35816 |
| Key: |
| type: string |
| example: key-0-43637 |
| CompletePath: |
| type: string |
| example: /vol1/buck1/dir1/dir2/file1 |
| DataSize: |
| type: integer |
| example: 1000 |
| Versions: |
| type: array |
| items: |
| type: integer |
| example: [0] |
| Blocks: |
| type: object |
| properties: |
| 0: |
| type: array |
| items: |
| type: object |
| properties: |
| containerID: |
| type: integer |
| localID: |
| type: number |
| example: |
| - containerID: 1 |
| localID: 105232659753992201 |
| CreationTime: |
| type: string |
| format: date-time |
| example: 2020-11-18T18:09:17.722Z |
| ModificationTime: |
| type: string |
| format: date-time |
| example: 2020-11-18T18:09:30.405Z |
| ReplicaHistory: |
| type: object |
| properties: |
| containerID: |
| type: integer |
| example: 1 |
| datanodeUuid: |
| type: string |
| example: 841be80f-0454-47df-b676 |
| datanodeHost: |
| type: string |
| example: localhost-1 |
| firstSeenTime: |
| type: number |
| example: 1605724047057 |
| lastSeenTime: |
| type: number |
| example: 1605731201301 |
| lastBcsId: |
| type: integer |
| example: 123 |
| state: |
| type: string |
| example: OPEN |
| MissingContainerMetadata: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| example: 26 |
| containers: |
| type: array |
| items: |
| type: object |
| properties: |
| containerID: |
| type: integer |
| example: 1 |
| missingSince: |
| type: number |
| example: 1605731029145 |
| keys: |
| type: integer |
| example: 7 |
| pipelineID: |
| type: string |
| example: 88646d32-a1aa-4e1a |
| replicas: |
| type: array |
| items: |
| $ref: "#/components/schemas/ReplicaHistory" |
| UnhealthyContainerMetadata: |
| type: object |
| properties: |
| missingCount: |
| type: integer |
| example: 2 |
| underReplicatedCount: |
| type: integer |
| example: 0 |
| overReplicatedCount: |
| type: integer |
| example: 0 |
| misReplicatedCount: |
| type: integer |
| example: 0 |
| containers: |
| type: array |
| items: |
| type: object |
| properties: |
| containerID: |
| type: integer |
| example: 1 |
| containerState: |
| type: string |
| example: MISSING |
| unhealthySince: |
| type: number |
| example: 1605731029145 |
| expectedReplicaCount: |
| type: integer |
| example: 3 |
| actualReplicaCount: |
| type: integer |
| example: 0 |
| replicaDeltaCount: |
| type: integer |
| example: 3 |
| reason: |
| type: string |
| example: null |
| keys: |
| type: integer |
| example: 7 |
| pipelineID: |
| type: string |
| example: 88646d32-a1aa-4e1a |
| replicas: |
| type: array |
| items: |
| $ref: "#/components/schemas/ReplicaHistory" |
| MismatchedContainers: |
| type: object |
| properties: |
| lastKey: |
| type: integer |
| example: 21 |
| containerDiscrepancyInfo: |
| type: array |
| items: |
| type: object |
| properties: |
| containerId: |
| type: integer |
| example: 11 |
| numberOfKeys: |
| type: integer |
| example: 1 |
| pipelines: |
| type: array |
| items: |
| type: object |
| properties: |
| id: |
| type: object |
| properties: |
| id: |
| type: string |
| example: 1202e6bb-b7c1-4a85-8067-61374b069adb |
| replicationConfig: |
| type: object |
| properties: |
| replicationFactor: |
| type: string |
| example: THREE |
| requiredNodes: |
| type: integer |
| example: 3 |
| replicationType: |
| type: string |
| example: RATIS |
| healthy: |
| type: boolean |
| example: true |
| existsAt: |
| type: string |
| example: OM |
| example: |
| - containerId: 2 |
| numberOfKeys: 2 |
| pipelines: |
| - id: |
| id: 1202e6bb-b7c1-4a85-8067-61374b069adb |
| replicationConfig: |
| replicationFactor: ONE |
| requiredNodes: 1 |
| replicationType: RATIS |
| healthy: true |
| existsAt: OM |
| - containerId: 11 |
| numberOfKeys: 2 |
| pipelines: |
| - id: |
| id: 1202e6bb-b7c1-4a85-8067-61374b069adb |
| replicationConfig: |
| replicationFactor: TWO |
| requiredNodes: 2 |
| replicationType: RATIS |
| healthy: true |
| - id: |
| id: 1202e6bb-b7c1-4a85-8067-613724nn |
| replicationConfig: |
| replicationFactor: ONE |
| requiredNodes: 1 |
| replicationType: RATIS |
| healthy: true |
| existsAt: SCM |
| DeletedMismatchedContainers: |
| type: object |
| properties: |
| lastKey: |
| type: integer |
| example: 21 |
| containerDiscrepancyInfo: |
| type: array |
| items: |
| type: object |
| properties: |
| containerId: |
| type: integer |
| example: 11 |
| numberOfKeys: |
| type: integer |
| example: 1 |
| pipelines: |
| type: array |
| items: |
| type: object |
| properties: |
| id: |
| type: object |
| properties: |
| id: |
| type: string |
| example: 1202e6bb-b7c1-4a85-8067-61374b069adb |
| replicationConfig: |
| type: object |
| properties: |
| replicationFactor: |
| type: string |
| example: THREE |
| requiredNodes: |
| type: integer |
| example: 3 |
| replicationType: |
| type: string |
| example: RATIS |
| healthy: |
| type: boolean |
| example: true |
| existsAt: |
| type: string |
| example: OM |
| example: |
| - containerId: 2 |
| numberOfKeys: 2 |
| pipelines: |
| - id: |
| id: 1202e6bb-b7c1-4a85-8067-61374b069adb |
| replicationConfig: |
| replicationFactor: ONE |
| requiredNodes: 1 |
| replicationType: RATIS |
| healthy: true |
| - containerId: 11 |
| numberOfKeys: 2 |
| pipelines: |
| - id: |
| id: 1202e6bb-b7c1-4a85-8067-61374b069adb |
| replicationConfig: |
| replicationFactor: TWO |
| requiredNodes: 2 |
| replicationType: RATIS |
| healthy: true |
| - id: |
| id: 1202e6bb-b7c1-4a85-8067-613724nn |
| replicationConfig: |
| replicationFactor: ONE |
| requiredNodes: 1 |
| replicationType: RATIS |
| healthy: true |
| OpenKeysSummary: |
| type: object |
| properties: |
| totalUnreplicatedDataSize: |
| type: integer |
| totalReplicatedDataSize: |
| type: integer |
| totalOpenKeys: |
| type: integer |
| OpenKeys: |
| type: object |
| required: ['lastKey', 'replicatedDataSize', 'unreplicatedDataSize', 'status'] |
| properties: |
| lastKey: |
| type: string |
| example: /vol1/fso-bucket/dir1/dir2/file2 |
| replicatedDataSize: |
| type: integer |
| example: 13824 |
| unreplicatedDataSize: |
| type: integer |
| example: 4608 |
| status: |
| type: string |
| fso: |
| type: array |
| items: |
| type: object |
| properties: |
| path: |
| type: string |
| key: |
| type: string |
| inStateSince: |
| type: number |
| size: |
| type: integer |
| replicatedSize: |
| type: integer |
| replicationInfo: |
| type: object |
| properties: |
| replicationFactor: |
| type: string |
| example: THREE |
| requiredNodes: |
| type: integer |
| example: 3 |
| replicationType: |
| type: string |
| example: RATIS |
| creationTime: |
| type: integer |
| modificationTime: |
| type: integer |
| isKey: |
| type: boolean |
| nonFSO: |
| type: array |
| items: |
| type: object |
| properties: |
| path: |
| type: string |
| key: |
| type: string |
| inStateSince: |
| type: number |
| size: |
| type: integer |
| replicatedSize: |
| type: integer |
| replicationInfo: |
| type: object |
| properties: |
| replicationFactor: |
| type: string |
| example: THREE |
| requiredNodes: |
| type: integer |
| example: 3 |
| replicationType: |
| type: string |
| example: RATIS |
| creationTime: |
| type: integer |
| modificationTime: |
| type: integer |
| isKey: |
| type: boolean |
| OMKeyInfoList: |
| type: array |
| items: |
| type: object |
| properties: |
| metadata: |
| type: object |
| objectID: |
| type: number |
| updateID: |
| type: number |
| parentObjectID: |
| type: number |
| volumeName: |
| type: string |
| bucketName: |
| type: string |
| keyName: |
| type: string |
| dataSize: |
| type: number |
| keyLocationVersions: |
| type: array |
| items: |
| $ref: "#/components/schemas/VersionLocation" |
| creationTime: |
| type: number |
| modificationTime: |
| type: number |
| replicationConfig: |
| type: object |
| properties: |
| replicationFactor: |
| type: string |
| requiredNodes: |
| type: integer |
| replicationType: |
| type: string |
| fileChecksum: |
| type: number |
| nullable: true |
| fileName: |
| type: string |
| ownerName: |
| type: string |
| acls: |
| $ref: "#/components/schemas/ACL" |
| tags: |
| type: object |
| expectedDataGeneration: |
| type: string |
| nullable: true |
| file: |
| type: boolean |
| path: |
| type: string |
| generation: |
| type: integer |
| replicatedSize: |
| type: number |
| fileEncryptionInfo: |
| type: string |
| nullable: true |
| objectInfo: |
| type: string |
| latestVersionLocations: |
| $ref: "#/components/schemas/VersionLocation" |
| hsync: |
| type: boolean |
| VersionLocation: |
| type: object |
| properties: |
| version: |
| type: integer |
| locationVersionMap: |
| type: object |
| properties: |
| 0: |
| $ref: "#/components/schemas/LocationList" |
| multipartKey: |
| type: boolean |
| blocksLatestVersionOnly: |
| $ref: "#/components/schemas/LocationList" |
| locationListCount: |
| type: integer |
| locationLists: |
| type: array |
| items: |
| $ref: "#/components/schemas/LocationList" |
| locationList: |
| $ref: "#/components/schemas/LocationList" |
| LocationList: |
| type: array |
| items: |
| type: object |
| properties: |
| blockID: |
| type: object |
| properties: |
| containerBlockID: |
| type: object |
| properties: |
| containerID: |
| type: integer |
| localID: |
| type: integer |
| blockCommitSequenceID: |
| type: integer |
| replicaIndex: |
| type: integer |
| nullable: true |
| containerID: |
| type: integer |
| localID: |
| type: integer |
| length: |
| type: integer |
| offset: |
| type: integer |
| token: |
| type: string |
| nullable: true |
| createVersion: |
| type: integer |
| pipeline: |
| type: string |
| nullable: true |
| partNumber: |
| type: integer |
| underConstruction: |
| type: boolean |
| blockCommitSequenceId: |
| type: integer |
| containerID: |
| type: integer |
| localID: |
| type: integer |
| DeletePendingKeys: |
| type: object |
| properties: |
| lastKey: |
| type: string |
| example: sampleVol/bucketOne/key_one |
| replicatedDataSize: |
| type: number |
| example: 300000000 |
| unreplicatedDataSize: |
| type: number |
| example: 100000000 |
| deletedKeyInfo: |
| type: array |
| items: |
| type: object |
| properties: |
| omKeyInfoList: |
| $ref: "#/components/schemas/OMKeyInfoList" |
| totalSize: |
| type: object |
| properties: |
| 63: |
| type: integer |
| example: 189 |
| status: |
| type: string |
| example: OK |
| DeletePendingSummary: |
| type: object |
| properties: |
| totalUnreplicatedDataSize: |
| type: integer |
| totalReplicatedDataSize: |
| type: integer |
| totalDeletedKeys: |
| type: integer |
| ACL: |
| type: object |
| properties: |
| type: |
| type: string |
| name: |
| type: string |
| aclScope: |
| type: string |
| aclList: |
| type: array |
| items: |
| type: string |
| DeletePendingDirs: |
| type: object |
| properties: |
| lastKey: |
| type: string |
| example: vol1/bucket1/bucket1/dir1 |
| replicatedDataSize: |
| type: integer |
| example: 13824 |
| unreplicatedDataSize: |
| type: integer |
| example: 4608 |
| deletedDirInfo: |
| type: array |
| items: |
| type: object |
| properties: |
| path: |
| type: string |
| key: |
| type: string |
| inStateSince: |
| type: number |
| size: |
| type: integer |
| replicatedSize: |
| type: integer |
| replicationInfo: |
| type: object |
| properties: |
| replicationFactor: |
| type: string |
| example: THREE |
| requiredNodes: |
| type: integer |
| example: 3 |
| replicationType: |
| type: string |
| example: RATIS |
| creationTime: |
| type: integer |
| modificationTime: |
| type: integer |
| isKey: |
| type: boolean |
| status: |
| type: string |
| example: OK |
| DeletePendingBlocks: |
| type: object |
| properties: |
| OPEN: |
| type: array |
| items: |
| type: object |
| properties: |
| containerId: |
| type: number |
| example: 100 |
| localIDList: |
| type: array |
| items: |
| type: integer |
| example: |
| - 1 |
| - 2 |
| - 3 |
| - 4 |
| localIDCount: |
| type: integer |
| example: 4 |
| txID: |
| type: number |
| example: 1 |
| NamespaceMetadataResponse: |
| type: object |
| properties: |
| status: |
| type: string |
| example: OK |
| type: |
| type: string |
| example: BUCKET |
| numVolume: |
| type: number |
| example: -1 |
| numBucket: |
| type: integer |
| example: 100 |
| numDir: |
| type: number |
| example: 50 |
| numKey: |
| type: number |
| example: 400 |
| MetadataDiskUsage: |
| type: object |
| properties: |
| status: |
| type: string |
| example: OK |
| path: |
| type: string |
| example: /vol1/bucket1 |
| size: |
| type: number |
| example: 150000 |
| sizeWithReplica: |
| type: number |
| example: 450000 |
| subPathCount: |
| type: number |
| example: 4 |
| subPaths: |
| type: array |
| items: |
| type: object |
| properties: |
| key: |
| type: boolean |
| path: |
| type: string |
| size: |
| type: number |
| sizeWithReplica: |
| type: number |
| isKey: |
| type: boolean |
| example: |
| - key: false |
| path: /vol1/bucket1/dir1-1 |
| size: 30000 |
| sizeWithReplica: 90000 |
| isKey: false |
| - key: false |
| path: /vol1/bucket1/dir1-2 |
| size: 30000 |
| sizeWithReplica: 90000 |
| isKey": false |
| - key: false |
| path: /vol1/bucket1/dir1-3 |
| size: 30000 |
| sizeWithReplica: 90000 |
| isKey": false |
| - key: true |
| path: /vol1/bucket1/key1-1 |
| size: 30000 |
| sizeWithReplica: 90000 |
| isKey": true |
| sizeDirectKey: |
| type: number |
| example: 10000 |
| MetadataQuota: |
| type: object |
| properties: |
| status: |
| type: string |
| example: OK |
| allowed: |
| type: number |
| example: 200000 |
| used: |
| type: number |
| example: 160000 |
| MetadataSpaceDist: |
| type: object |
| properties: |
| status: |
| type: string |
| example: OK |
| dist: |
| type: array |
| items: |
| type: integer |
| example: |
| - 0 |
| - 0 |
| - 10 |
| - 20 |
| - 0 |
| - 30 |
| - 0 |
| - 100 |
| - 40 |
| StorageReport: |
| type: object |
| properties: |
| capacity: |
| type: number |
| example: 270429917184 |
| used: |
| type: number |
| example: 358805504 |
| remaining: |
| type: number |
| example: 270071111680 |
| committed: |
| type: number |
| example: 27007111 |
| ClusterState: |
| type: object |
| properties: |
| deletedDirs: |
| type: integer |
| missingContainers: |
| type: integer |
| openContainers: |
| type: integer |
| deletedContainers: |
| type: integer |
| keysPendingDeletion: |
| type: integer |
| scmServiceId: |
| type: string |
| omServiceId: |
| type: string |
| pipelines: |
| type: integer |
| example: 5 |
| totalDatanodes: |
| type: integer |
| example: 4 |
| healthyDatanodes: |
| type: integer |
| example: 4 |
| storageReport: |
| $ref: "#/components/schemas/StorageReport" |
| containers: |
| type: integer |
| example: 26 |
| volumes: |
| type: integer |
| example: 6 |
| buckets: |
| type: integer |
| example: 26 |
| keys: |
| type: integer |
| example: 25 |
| DatanodesSummary: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| example: 4 |
| datanodes: |
| type: array |
| items: |
| type: object |
| properties: |
| buildDate: |
| type: string |
| layoutVersion: |
| type: integer |
| networkLocation: |
| type: string |
| opState: |
| type: string |
| revision: |
| type: string |
| setupTime: |
| type: integer |
| version: |
| type: string |
| uuid: |
| type: string |
| example: f8f8cb45-3ab2-4123 |
| hostname: |
| type: string |
| example: localhost-1 |
| state: |
| type: string |
| example: HEALTHY |
| lastHeartbeat: |
| type: number |
| example: 1605738400544 |
| storageReport: |
| $ref: "#/components/schemas/StorageReport" |
| pipelines: |
| type: array |
| items: |
| type: object |
| properties: |
| pipelineID: |
| type: string |
| replicationType: |
| type: string |
| replicationFactor: |
| type: integer |
| leaderNode: |
| type: string |
| example: |
| - pipelineID: b9415b20-b9bd-4225 |
| replicationType: RATIS |
| replicationFactor: 3 |
| leaderNode: localhost-2 |
| - pipelineID: 3bf4a9e9-69cc-4d20 |
| replicationType: RATIS |
| replicationFactor: 1 |
| leaderNode: localhost-1 |
| containers: |
| type: integer |
| example: 17 |
| leaderCount: |
| type: integer |
| example: 1 |
| RemovedDatanodesResponse: |
| type: object |
| properties: |
| datanodesResponseMap: |
| type: object |
| properties: |
| removedDatanodes: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| datanodes: |
| type: array |
| items: |
| type: object |
| properties: |
| uuid: |
| type: string |
| hostname: |
| type: string |
| state: |
| type: string |
| pipelines: |
| type: string |
| nullable: true |
| DatanodesDecommissionInfo: |
| type: object |
| properties: |
| DatanodesDecommissionInfo: |
| type: array |
| items: |
| type: object |
| properties: |
| containers: |
| type: object |
| metrics: |
| type: object |
| properties: |
| decommissionStartTime: |
| type: string |
| numOfUnclosedContainers: |
| type: integer |
| numOfUnclosedPipelines: |
| type: integer |
| numOfUnderReplicatedContainers: |
| type: integer |
| nullable: true |
| datanodeDetails: |
| $ref: "#/components/schemas/DatanodeDetails" |
| ByteString: |
| type: object |
| properties: |
| string: |
| type: string |
| bytes: |
| type: object |
| properties: |
| validUtf8: |
| type: boolean |
| empty: |
| type: boolean |
| DatanodeDetails: |
| type: object |
| properties: |
| level: |
| type: integer |
| parent: |
| type: string |
| nullable: true |
| cost: |
| type: integer |
| uuid: |
| type: string |
| uuidString: |
| type: string |
| ipAddress: |
| type: string |
| hostName: |
| type: string |
| ports: |
| type: array |
| items: |
| type: object |
| properties: |
| name: |
| type: string |
| value: |
| type: integer |
| certSerialId: |
| type: integer |
| version: |
| type: string |
| nullable: true |
| setupTime: |
| type: string |
| revision: |
| type: string |
| nullable: true |
| buildDate: |
| type: string |
| nullable: true |
| persistedOpState: |
| type: string |
| persistedOpStateExpiryEpochSec: |
| type: integer |
| initialVersion: |
| type: integer |
| currentVersion: |
| type: integer |
| decommissioned: |
| type: boolean |
| maintenance: |
| type: boolean |
| ipAddressAsByteString: |
| $ref: '#/components/schemas/ByteString' |
| hostNameAsByteString: |
| $ref: '#/components/schemas/ByteString' |
| networkName: |
| type: string |
| networkLocation: |
| type: string |
| networkFullPath: |
| type: string |
| numOfLeaves: |
| type: integer |
| networkNameAsByteString: |
| $ref: '#/components/schemas/ByteString' |
| networkLocationAsByteString: |
| $ref: '#/components/schemas/ByteString' |
| PipelinesSummary: |
| type: object |
| properties: |
| totalCount: |
| type: integer |
| example: 5 |
| pipelines: |
| type: array |
| items: |
| type: object |
| properties: |
| pipelineId: |
| type: string |
| example: b9415b20-b9bd-4225 |
| status: |
| type: string |
| example: OPEN |
| leaderNode: |
| type: string |
| example: localhost-1 |
| datanodes: |
| type: array |
| items: |
| $ref: '#/components/schemas/DatanodeDetails' |
| lastLeaderElection: |
| type: integer |
| example: 0 |
| duration: |
| type: number |
| example: 23166128 |
| leaderElections: |
| type: integer |
| example: 0 |
| replicationType: |
| type: string |
| example: RATIS |
| replicationFactor: |
| type: integer |
| example: 3 |
| containers: |
| type: integer |
| example: 3 |
| TasksStatus: |
| type: array |
| items: |
| type: object |
| properties: |
| taskName: |
| type: string |
| lastUpdatedTimestamp: |
| type: number |
| lastUpdatedSeqNumber: |
| type: number |
| example: |
| - taskName: OmDeltaRequest |
| lastUpdatedTimestamp: 1605724099147 |
| lastUpdatedSeqNumber: 186 |
| - taskName: OmDeltaRequest |
| lastUpdatedTimestamp: 1605724103892 |
| lastUpdatedSeqNumber: 188 |
| FileSizeUtilization: |
| type: array |
| items: |
| type: object |
| properties: |
| volume: |
| type: string |
| bucket: |
| type: string |
| fileSize: |
| type: number |
| count: |
| type: integer |
| example: |
| - volume: vol-2-04168 |
| bucket: bucket-0-11685 |
| fileSize: 1024 |
| count: 1 |
| - volume: vol-2-04168 |
| bucket: bucket-1-41795 |
| fileSize: 1024 |
| count: 1 |
| - volume: vol-2-04168 |
| bucket: bucket-2-93377 |
| fileSize: 1024 |
| count: 1 |
| - volume: vol-2-04168 |
| bucket: bucket-3-50336 |
| fileSize: 1024 |
| count: 2 |
| ContainerUtilization: |
| type: array |
| items: |
| type: object |
| properties: |
| containerSize: |
| type: number |
| count: |
| type: number |
| example: |
| - containerSize: 2147483648 |
| count: 9 |
| - containerSize: 1073741824 |
| count: 3 |
| MetricsQuery: |
| type: object |
| properties: |
| status: |
| type: string |
| example: success |
| data: |
| type: object |
| properties: |
| resultType: |
| type: string |
| example: vector |
| result: |
| type: array |
| items: |
| type: object |
| properties: |
| metric: |
| type: object |
| properties: |
| __name__: |
| type: string |
| example: ratis_leader_election_electionCount |
| exported_instance: |
| type: string |
| example: 33a5ac1d-8c65-4c74-a0b8-9314dfcccb42 |
| group: |
| type: string |
| example: group-03CA9397D54B |
| instance: |
| type: string |
| example: ozone_datanode_1:9882 |
| job: |
| type: string |
| example: ozone |
| value: |
| oneOf: |
| - type: string |
| - type: number |
| example: |
| - 1599159384.455 |
| - "5" |