Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/xsky-pools-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
description: XMS is the controller of distributed storage system
version: SDS_4.2.000.0.200302
title: XMS access-paths Pools API
contact: {}
license:
name: Commercial
servers:
- url: /v1
tags:
- name: pools
description: 'PoolController Operations about Pools
'
paths:
/pools/:
get:
tags:
- pools
description: List pools
operationId: ListPools
parameters:
- name: limit
in: query
description: paging param
required: false
x-exportParamName: Limit
schema:
type: integer
format: int64
- name: offset
in: query
description: paging param
required: false
x-exportParamName: Offset
schema:
type: integer
format: int64
- name: all
in: query
description: show all pools
required: false
x-exportParamName: All
schema:
type: boolean
- name: protection_domain_id
in: query
description: protection domain id
required: false
x-exportParamName: ProtectionDomainId
schema:
type: integer
format: int64
- name: compound_osd_only
in: query
description: filter pool with only compound osds
required: false
x-exportParamName: CompoundOsdOnly
schema:
type: boolean
- name: osd_group_id
in: query
description: osd group id
required: false
x-exportParamName: OsdGroupId
schema:
type: integer
format: int64
- name: pool_type
in: query
description: filter pool by type
required: false
x-exportParamName: PoolType
schema:
type: string
- name: pool_role
in: query
description: filter pool by role
required: false
x-exportParamName: PoolRole
schema:
type: string
- name: pool_mode
in: query
description: filter pool by pool_mode
required: false
x-exportParamName: PoolMode
schema:
type: string
- name: stretched
in: query
description: filter stretched pool
required: false
x-exportParamName: Stretched
schema:
type: boolean
- name: with_compound
in: query
description: with compound pool
required: false
x-exportParamName: WithCompound
schema:
type: boolean
- name: os_policy_id
in: query
description: filter data pool by object storage policy id
required: false
x-exportParamName: OsPolicyId
schema:
type: integer
format: int64
- name: storage_class_id
in: query
description: filter data pool by os storage class id
required: false
x-exportParamName: StorageClassId
schema:
type: integer
format: int64
- name: storage_class_pool_type
in: query
description: storage class pool type(active inactive) to query
required: false
x-exportParamName: StorageClassPoolType
schema:
type: string
- name: q
in: query
description: query param of search
required: false
x-exportParamName: Q
schema:
type: string
- name: sort
in: query
description: sort param of search
required: false
x-exportParamName: Sort
schema:
type: string
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolsResp'
400:
description: BadRequest
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
post:
tags:
- pools
description: Create pool
operationId: CreatePool
responses:
202:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PoolCreateReq'
description: the pool info
required: true
/pools/{pool_id}:
get:
tags:
- pools
description: get pool
operationId: GetPool
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
500:
description: InternalServerError
security:
- tokenInHeader: []
- tokenInQuery: []
delete:
tags:
- pools
description: Delete pool
operationId: DeletePool
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
- name: force
in: query
description: force delete or not
required: false
x-exportParamName: Force
schema:
type: boolean
responses:
202:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
404:
description: NotFound
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
patch:
tags:
- pools
description: update pool info
operationId: UpdatePool
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
409:
description: Conflict
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PoolUpdateReq'
description: pool info
required: true
/pools/{pool_id}/osds:
put:
tags:
- pools
description: Add osds to pool
operationId: AddOsdsToPool
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
202:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OsdsAddReq'
description: osd infos
required: true
delete:
tags:
- pools
description: Remove multiple osds from a pool
operationId: RemoveOsdsFromPool
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
202:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
409:
description: Conflict
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OsdsRemoveReq'
description: osd infos
required: true
/pools/{pool_id}/predictions:
get:
tags:
- pools
description: get a pool's prediction
operationId: GetPoolPredictions
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolPredictionsResp'
404:
description: NotFound
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
/pools/{pool_id}/samples:
get:
tags:
- pools
description: get pool's samples
operationId: GetPoolSamples
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
- name: duration_begin
in: query
description: duration begin timestamp
required: false
x-exportParamName: DurationBegin
schema:
type: string
- name: duration_end
in: query
description: duration end timestamp
required: false
x-exportParamName: DurationEnd
schema:
type: string
- name: period
in: query
description: samples period
required: false
x-exportParamName: Period
schema:
type: string
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolSamplesResp'
400:
description: BadRequest
404:
description: NotFound
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
/pools/{pool_id}/topology:
get:
tags:
- pools
description: get pool topology
operationId: GetPoolTopology
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolTopologyResp'
400:
description: BadRequest
404:
description: NotFound
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
/pools/{pool_id}:disable-device-type-check:
post:
tags:
- pools
description: Disable device type check when add osd
operationId: DisableDeviceTypeCheck
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
409:
description: Conflict
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
/pools/{pool_id}:enable-device-type-check:
post:
tags:
- pools
description: Enable device type check when add osd
operationId: EnableDeviceTypeCheck
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
409:
description: Conflict
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
/pools/{pool_id}:reweight:
post:
tags:
- pools
description: Reweight a pool
operationId: ReweightPool
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
409:
description: Conflict
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
/pools/{pool_id}:switch-role:
post:
tags:
- pools
description: Switch pool role to compound
operationId: SwitchPoolRole
parameters:
- name: pool_id
in: path
description: pool id
required: true
x-exportParamName: PoolId
schema:
type: integer
format: int64
responses:
200:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
202:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/PoolResp'
400:
description: BadRequest
404:
description: NotFound
409:
description: Conflict
500:
description: InternalServerError
security:
- tokenInQuery: []
- tokenInHeader: []
components:
schemas:
PredictionPoint:
type: object
properties:
create:
type: string
format: date-time
used_kbyte:
type: integer
format: int64
title: PredictionPoint
description: PredictionPoint is a point in a prediction graph
example:
used_kbyte: 5
create: '2000-01-23T04:56:07.000+00:00'
PoolTopologyResp:
type: object
required:
- pool_topology
properties:
pool_topology:
description: pool topology
$ref: '#/components/schemas/PoolPlacementNode'
title: PoolTopologyResp
example:
pool_topology:
children:
- null
- null
create: '2000-01-23T04:56:07.000+00:00'
replicate_num: 1
update: '2000-01-23T04:56:07.000+00:00'
id: 0
placement_node:
parent: null
name: name
create: '2000-01-23T04:56:07.000+00:00'
update: '2000-01-23T04:56:07.000+00:00'
id: 6
type: type
properties:
is_witness: true
status: status
PlacementNode:
type: object
properties:
create:
type: string
format: date-time
description: time of creating placement node
id:
type: integer
format: int64
description: id of placement node
name:
type: string
description: name of placement node
parent:
description: parent of placement node
$ref: '#/components/schemas/PlacementNode'
properties:
description: properties for this placement node like is_witness
$ref: '#/components/schemas/PlacementNodeProperties'
type:
type: string
description: type of placement node
update:
type: string
format: date-time
description: time of updating placement node
title: PlacementNode
description: PlacementNode defines a placement node managing a range of hosts
example:
parent: null
name: name
create: '2000-01-23T04:56:07.000+00:00'
update: '2000-01-23T04:56:07.000+00:00'
id: 6
type: type
properties:
is_witness: true
PoolSamplesResp:
type: object
required:
- pool_samples
properties:
pool_samples:
type: array
description: pool samples
items:
$ref: '#/components/schemas/PoolStat'
title: PoolSamplesResp
example:
pool_samples:
- healthy_percent: 9.301444243932576
error_kbyte: 2
recovery_percent: 1.1730742509559433
total_bandwidth_kbyte: 4.965218492984954
read_latency_us: 1.0246457001441578
data_kbyte: 1
read_bandwidth_kbyte: 7.386281948385884
healthy_num: 7
recovery_iops: 6.84685269835264
omap_total_kbyte: 3.616076749251911
degraded_num: 5
create: '2000-01-23T04:56:07.000+00:00'
recovery_bandwidth_kbyte: 1.4894159098541704
write_iops: 3.5571952270680973
total_kbyte: 9
degraded_percent: 5.637376656633329
unavailable_num: 9
write_latency_us: 6.965117697638846
total_iops: 5.025004791520295
unavailable_percent: 6.683562403749608
read_iops: 1.2315135367772556
actual_kbyte: 0
omap_used_kbyte: 2.027123023002322
omap_used_percent: 4.145608029883936
used_kbyte: 8
write_bandwidth_kbyte: 6.438423552598547
creating_num: 6
used_percent: 9.018348186070783
recovery_num: 7
- healthy_percent: 9.301444243932576
error_kbyte: 2
recovery_percent: 1.1730742509559433
total_bandwidth_kbyte: 4.965218492984954
read_latency_us: 1.0246457001441578
data_kbyte: 1
read_bandwidth_kbyte: 7.386281948385884
healthy_num: 7
recovery_iops: 6.84685269835264
omap_total_kbyte: 3.616076749251911
degraded_num: 5
create: '2000-01-23T04:56:07.000+00:00'
recovery_bandwidth_kbyte: 1.4894159098541704
write_iops: 3.5571952270680973
total_kbyte: 9
degraded_percent: 5.637376656633329
unavailable_num: 9
write_latency_us: 6.965117697638846
total_iops: 5.025004791520295
unavailable_percent: 6.683562403749608
read_iops: 1.2315135367772556
actual_kbyte: 0
omap_used_kbyte: 2.027123023002322
omap_used_percent: 4.145608029883936
used_kbyte: 8
write_bandwidth_kbyte: 6.438423552598547
creating_num: 6
used_percent: 9.018348186070783
recovery_num: 7
Pool:
type: object
properties:
action_status:
type: string
block_volume_num:
type: integer
format: int64
coding_chunk_num:
type: integer
format: int64
create:
type: string
format: date-time
data_chunk_num:
type: integer
format: int64
default_managed_volume_format:
type: integer
format: int64
device_type:
type: string
device_type_check_disabled:
type: boolean
failure_domain_type:
type: string
hidden:
type: boolean
id:
type: integer
format: int64
io_bypass_enabled:
type: boolean
io_bypass_threshold:
type: integer
format: int64
name:
type: string
osd_group:
$ref: '#/components/schemas/OsdGroup_Nestview'
osd_num:
type: integer
format: int64
pool_id:
type: integer
format: int32
pool_mode:
type: string
pool_name:
type: string
pool_role:
type: string
pool_type:
type: string
primary_placement_node:
description: placement node with the primary replica
$ref: '#/components/schemas/PlacementNode_Nestview'
property:
type: object
protection_domain:
$ref: '#/components/schemas/ProtectionDomain_Nestview'
qos:
$ref: '#/components/schemas/OsdQos'
replicate_size:
type: integer
format: int64
status:
type: string
stretched:
type: boolean
update:
type: string
format: date-time
title: Pool
description: 'A Pool is a set of temporary objects that may be individually saved and
retrieved.
Any item stored in the Pool may be removed automatically at any time without
notification. If the Pool holds the only reference when this happens, the item
might be deallocated.
A Pool is safe for use by multiple goroutines simultaneously.
Pool''s purpose is to cache allocated but unused items for later reuse, relieving
pressure on the garbage collector. That is, it makes it easy to build efficient,
thread-safe free lists. However, it is not suitable for all free lists.
An appropriate use of a Pool is to manage a group of temporary items silently
shared among and potentially reused by concurrent independent clients of a
package. Pool provides a way to amortize allocation overhead across many
clients.
An example of good use of a Pool is in the fmt package, which maintains a
dynamically-sized store of temporary output buffers. The store scales under load
(when many goroutines are actively printing) and shrinks when quiescent.
On the other hand, a free list maintained as part of a short-lived object is not
a suitable use for a Pool, since the overhead does not amortize well in that
scenario. It is more efficient to have such objects implement their own free
list.
A Pool must not be copied after first use.'
PlacementNode_Nestview_parent:
properties:
create:
type: string
format: date-time
description: time of creating placement node
id:
type: integer
format: int64
description: id of placement node
name:
type: string
description: name of placement node
parent:
description: parent of placement node
$ref: '#/components/schemas/PlacementNode'
properties:
description: properties for this placement node like is_witness
$ref: '#/components/schemas/PlacementNodeProperties'
type:
type: string
description: type of placement node
update:
type: string
format: date-time
description: time of updating placement node
description: parent of placement node
PoolRecord:
title: PoolRecord
allOf:
- $ref: '#/components/schemas/Pool'
- properties:
samples:
type: array
items:
$ref: '#/components/schemas/PoolStat'
description: PoolRecord is used to combine Pool and PoolStat to let API comfortable
PoolsResp:
type: object
required:
- pools
properties:
pools:
type: array
description: pools
items:
$ref: '#/components/schemas/PoolRecord'
title: PoolsResp
example:
pools:
- ''
- ''
PoolUpdateReq_Pool:
type: object
properties:
default_managed_volume_format:
type: integer
format: int64
description: 'default managed volume format: 128 or 129'
failure_domain_type:
type: string
io_bypass_enabled:
type: boolean
io_bypass_threshold:
type: integer
format: int64
name:
type: string
primary_placement_node_id:
type: integer
format: int64
property:
type: object
additionalProperties:
$ref: '#/components/schemas/RawMessage'
qos:
$ref: '#/components/schemas/OsdQos'
ruleset:
type: array
items:
$ref: '#/components/schemas/PoolRuleReq'
size:
type: integer
format: int64
title: PoolUpdateReq_Pool
example:
failure_domain_type: failure_domain_type
io_bypass_enabled: true
qos:
mode: 5
bandwidth: 0
bandwidth_max: 6
id: 5
client_threshold: 1
recovery_rate_type: recovery_rate_type
size: 5
name: name
property:
key: ''
ruleset:
- placement_node_id: 2
replicate_num: 7
- placement_node_id: 2
replicate_num: 7
primary_placement_node_id: 1
default_managed_volume_format: 0
io_bypass_threshold: 6
PoolUpdateReq:
type: object
required:
- pool
properties:
pool:
$ref: '#/components/schemas/PoolUpdateReq_Pool'
title: PoolUpdateReq
example:
pool:
failure_domain_type: failure_domain_type
io_bypass_enabled: true
qos:
mode: 5
bandwidth: 0
bandwidth_max: 6
id: 5
client_threshold: 1
recovery_rate_type: recovery_rate_type
size: 5
name: name
property:
key: ''
ruleset:
- placement_node_id: 2
replicate_num: 7
- placement_node_id: 2
replicate_num: 7
primary_placement_node_id: 1
default_managed_volume_format: 0
io_bypass_threshold: 6
PoolCreateReq:
type: object
properties:
pool:
$ref: '#/components/schemas/PoolCreateReq_Pool'
title: PoolCreateReq
example:
pool:
data_chunk_num: 6
failure_domain_type: failure_domain_type
osd_ids:
- 1
- 1
ruleset:
- placement_node_id: 2
replicate_num: 7
- placement_node_id: 2
replicate_num: 7
coding_chunk_num: 0
primary_placement_node_id: 5
protection_domain_id: 5
stretched: true
size: 3
name: name
pool_role: pool_role
pool_type: pool_type
shared_pool_id: 9
OsdQos:
type: object
properties:
bandwidth:
type: integer
format: int64
bandwidth_max:
type: integer
format: int64
client_threshold:
type: integer
format: int64
id:
type: integer
format: int64
mode:
type: integer
format: int64
recovery_rate_type:
type: string
title: OsdQos
description: OsdQos defines qos for osd
example:
mode: 5
bandwidth: 0
bandwidth_max: 6
id: 5
client_threshold: 1
recovery_rate_type: recovery_rate_type
OsdGroup_Nestview:
type: object
properties:
id:
type: integer
format: int64
title: OsdGroup_Nestview
PoolPlacementNode:
type: object
properties:
children:
type: array
items:
$ref: '#/components/schemas/PoolPlacementNode'
create:
type: string
format: date-time
id:
type: integer
format: int64
placement_node:
$ref: '#/components/schemas/PlacementNode'
replicate_num:
type: integer
format: int64
status:
type: string
update:
type: string
format: date-time
title: PoolPlacementNode
description: PoolPlacementNode defines a shadow placement node in a pool
example:
children:
- null
- null
create: '2000-01-23T04:56:07.000+00:00'
replicate_num: 1
update: '2000-01-23T04:56:07.000+00:00'
id: 0
placement_node:
parent: null
name: name
create: '2000-01-23T04:56:07.000+00:00'
update: '2000-01-23T04:56:07.000+00:00'
id: 6
type: type
properties:
is_witness: true
status: status
PlacementNode_Nestview:
type: object
properties:
id:
type: integer
format: int64
description: id of placement node
parent:
$ref: '#/components/schemas/PlacementNode_Nestview_parent'
title: PlacementNode_Nestview
PoolPrediction:
type: object
properties:
create:
type: string
format: date-time
data_kbyte_1day:
type: integer
format: int64
data_kbyte_30days:
type: integer
format: int64
data_kbyte_7days:
type: integer
format: int64
data_kbyte_points:
type: array
items:
$ref: '#/components/schemas/PredictionPoint'
id:
type: integer
format: int64
used_kbyte_1day:
type: integer
format: int64
used_kbyte_30days:
type: integer
format: int64
used_kbyte_7days:
type: integer
format: int64
used_kbyte_points:
type: array
items:
$ref: '#/components/schemas/PredictionPoint'
title: PoolPrediction
description: PoolPrediction contains pool prediction data
example:
used_kbyte_30days: 2
data_kbyte_1day: 0
used_kbyte_7days: 7
used_kbyte_points:
- used_kbyte: 5
create: '2000-01-23T04:56:07.000+00:00'
- used_kbyte: 5
create: '2000-01-23T04:56:07.000+00:00'
data_kbyte_7days: 1
used_kbyte_1day: 5
create: '2000-01-23T04:56:07.000+00:00'
data_kbyte_points:
- used_kbyte: 5
create: '2000-01-23T04:56:07.000+00:00'
- used_kbyte: 5
create: '2000-01-23T04:56:07.000+00:00'
id: 5
data_kbyte_30days: 6
ProtectionDomain_Nestview:
type: object
properties:
id:
type: integer
format: int64
description: id of protection domain
name:
type: string
description: name of protection domain
title: ProtectionDomain_Nestview
example:
name: name
id: 5
PlacementNodeProperties:
type: object
properties:
is_witness:
type: boolean
description: whether this is a witness node
title: PlacementNodeProperties
description: PlacementNodeProperties contains properties for a placement node.
example:
is_witness: true
PoolStat:
type: object
properties:
actual_kbyte:
type: integer
format: int64
create:
type: string
format: date-time
creating_num:
type: integer
format: int
# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xsky/refs/heads/main/openapi/xsky-pools-api-openapi.yml