modules/rest-api/openapi/openapi.yaml (973 lines of code) (raw):
openapi: 3.0.1
info:
title: Ignite REST module
contact:
email: user@ignite.apache.org
license:
name: Apache 2.0
url: https://ignite.apache.org
version: 3.0.0-SNAPSHOT
paths:
/management/v1/cluster/init:
post:
tags:
- clusterManagement
summary: Initializes cluster.
description: Initializes a new cluster.
operationId: init
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InitCommand'
required: true
responses:
"200":
description: Cluster initialized.
content:
application/json:
schema:
$ref: '#/components/schemas/Void'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"400":
description: Incorrect configuration.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/cluster/state:
get:
tags:
- clusterManagement
summary: Returns cluster state.
description: Returns current cluster status.
operationId: clusterState
responses:
"200":
description: Cluster status returned.
content:
application/json:
schema:
$ref: '#/components/schemas/ClusterState'
"404":
description: "Cluster status not found. Most likely, the cluster is not\
\ initialized."
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/cluster/topology/logical:
get:
tags:
- topology
summary: Cluster logical topology.
description: Gets information about logical cluster topology.
operationId: logical
responses:
"200":
description: Logical topology returned.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClusterNode'
"404":
description: "Logical topology not found. Most likely, the cluster is not\
\ initialized."
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"500":
description: Internal error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/cluster/topology/physical:
get:
tags:
- topology
summary: Cluster physical topology.
description: Gets information about physical cluster topology.
operationId: physical
responses:
"200":
description: Physical topology returned.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClusterNode'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/configuration/cluster:
get:
tags:
- clusterConfiguration
summary: Returns cluster configuration in HOCON format.
description: Gets the current configuration of the cluster.
operationId: getClusterConfiguration
responses:
"200":
description: Received cluster configuration.
content:
text/plain:
schema:
type: string
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"400":
description: Incorrect configuration.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"404":
description: "Configuration not found. Most likely, the cluster is not initialized."
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
patch:
tags:
- clusterConfiguration
summary: Updates cluster configuration in HOCON format.
description: Updates cluster configuration. New configuration should be provided
in HOCON format.
operationId: updateClusterConfiguration
requestBody:
description: The cluster configuration to update.
content:
text/plain:
schema:
type: string
required: true
responses:
"200":
description: Configuration updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Void'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"400":
description: Incorrect configuration.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"404":
description: "Configuration not found. Most likely, the cluster is not initialized."
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/configuration/cluster/{path}:
get:
tags:
- clusterConfiguration
summary: Returns configuration in HOCON format represented by path.
description: Gets the configuration on the specific path. Configuration is in
HOCON format
operationId: getClusterConfigurationByPath
parameters:
- name: path
in: path
description: "Configuration tree address. For example: `element.subelement`."
required: true
schema:
type: string
responses:
"200":
description: Configuration of the cluster on the specified path.
content:
text/plain:
schema:
type: string
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"400":
description: Incorrect configuration.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"404":
description: "Configuration not found. Most likely, the cluster is not initialized."
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/configuration/node:
get:
tags:
- nodeConfiguration
summary: Returns node configuration in HOCON format.
description: Gets node configuration in HOCON format.
operationId: getNodeConfiguration
responses:
"200":
description: Full node configuration.
content:
text/plain:
schema:
type: string
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"400":
description: Incorrect configuration.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
patch:
tags:
- nodeConfiguration
summary: Updates node configuration in HOCON format.
description: Updates node configuration. New configuration should be provided
in HOCON format.
operationId: updateNodeConfiguration
requestBody:
description: The node configuration to update.
content:
text/plain:
schema:
type: string
required: true
responses:
"200":
description: Configuration successfully updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Void'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"400":
description: Incorrect configuration.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/configuration/node/{path}:
get:
tags:
- nodeConfiguration
summary: Returns configuration in HOCON format represented by path.
description: "Gets a configuration of a specific node, in HOCON format."
operationId: getNodeConfigurationByPath
parameters:
- name: path
in: path
description: "Configuration tree address. For example: `element.subelement`."
required: true
schema:
type: string
responses:
"200":
description: Returned node configuration.
content:
text/plain:
schema:
type: string
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"400":
description: Incorrect configuration.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/deployment/cluster/units:
get:
tags:
- deployment
summary: Cluster unit statuses REST method.
description: Cluster unit statuses.
operationId: listClusterStatuses
parameters:
- name: statuses
in: query
schema:
type: array
description: Deployment status filter.
nullable: true
items:
$ref: '#/components/schemas/DeploymentStatus'
responses:
"200":
description: All statuses returned successfully.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UnitStatus'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/deployment/cluster/units/{unitId}:
get:
tags:
- deployment
summary: Cluster unit statuses REST method.
description: Cluster unit statuses.
operationId: listClusterStatusesByUnit
parameters:
- name: unitId
in: path
required: true
schema:
type: string
description: The ID of the deployment unit.
- name: version
in: query
schema:
type: string
description: Unit version filter.
nullable: true
- name: statuses
in: query
schema:
type: array
description: Deployment status filter.
nullable: true
items:
$ref: '#/components/schemas/DeploymentStatus'
responses:
"200":
description: All statuses returned successfully.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UnitStatus'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/deployment/node/units:
get:
tags:
- deployment
summary: Node unit statuses REST method.
description: Node unit statuses.
operationId: listNodeStatuses
parameters:
- name: statuses
in: query
schema:
type: array
description: Deployment status filter.
nullable: true
items:
$ref: '#/components/schemas/DeploymentStatus'
responses:
"200":
description: All statuses returned successfully.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UnitStatus'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/deployment/node/units/{unitId}:
get:
tags:
- deployment
summary: Node unit statuses REST method.
description: Node unit statuses.
operationId: listNodeStatusesByUnit
parameters:
- name: unitId
in: path
required: true
schema:
type: string
description: The ID of the deployment unit.
- name: version
in: query
schema:
type: string
description: Unit version filter.
nullable: true
- name: statuses
in: query
schema:
type: array
description: Deployment status filter.
nullable: true
items:
$ref: '#/components/schemas/DeploymentStatus'
responses:
"200":
description: All statuses returned successfully.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UnitStatus'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/deployment/units/{unitId}/{unitVersion}:
post:
tags:
- deployment
summary: Deploy unit REST method.
description: Deploys provided unit to the cluster.
operationId: deployUnit
parameters:
- name: unitId
in: path
required: true
schema:
type: string
description: The ID of the deployment unit.
- name: unitVersion
in: path
required: true
schema:
type: string
description: The version of the deployment unit.
- name: deployMode
in: query
schema:
nullable: true
allOf:
- $ref: '#/components/schemas/deployMode'
- type: object
description: ALL or MAJORITY.
- name: initialNodes
in: query
schema:
type: array
description: List of node identifiers to deploy to.
nullable: true
items:
type: string
requestBody:
content:
multipart/form-data:
schema:
required:
- unitContent
type: object
properties:
unitContent:
type: array
description: The code to deploy.
items:
type: string
format: binary
required: true
responses:
"200":
description: Unit deployed successfully.
content:
application/json:
schema:
type: boolean
"409":
description: Unit with same identifier and version is already deployed.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
delete:
tags:
- deployment
summary: Undeploy unit REST method.
description: Undeploys the unit with provided unitId and unitVersion.
operationId: undeployUnit
parameters:
- name: unitId
in: path
required: true
schema:
type: string
description: The ID of the deployment unit.
- name: unitVersion
in: path
required: true
schema:
type: string
description: The version of the deployment unit.
responses:
"200":
description: Unit undeployed successfully.
content:
application/json:
schema:
type: boolean
"404":
description: Unit with provided identifier and version does not exist.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/metric/node/disable:
post:
tags:
- nodeMetric
summary: Disable metric source.
description: Disables the specified metric source.
operationId: disableNodeMetric
requestBody:
content:
text/plain:
schema:
type: string
required: true
responses:
"200":
description: Metric source disabled.
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"404":
description: Metric source not found.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/metric/node/enable:
post:
tags:
- nodeMetric
summary: Enable metric source.
description: Enables the specified metric source.
operationId: enableNodeMetric
requestBody:
content:
text/plain:
schema:
type: string
required: true
responses:
"200":
description: Metric source enabled.
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
"404":
description: Metric source not found.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/metric/node/set:
get:
tags:
- nodeMetric
summary: List metric sets.
description: Gets a list of all enabled metric sets.
operationId: listNodeMetricSets
responses:
"200":
description: Returned a list of metric sets.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MetricSet'
"500":
description: Internal error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/metric/node/source:
get:
tags:
- nodeMetric
summary: List metric sources.
description: Gets a list of all available metric sources.
operationId: listNodeMetricSources
responses:
"200":
description: Returned a list of metric sources.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MetricSource'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/node/state:
get:
tags:
- nodeManagement
description: Gets current network status.
operationId: nodeState
responses:
"200":
description: Current node status.
content:
application/json:
schema:
$ref: '#/components/schemas/NodeState'
"500":
description: Internal error.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/management/v1/node/version:
get:
tags:
- nodeManagement
description: Gets the version of Apache Ignite the node uses.
operationId: nodeVersion
responses:
"200":
description: Node version.
content:
text/plain:
schema:
type: string
"500":
description: Internal error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
components:
schemas:
ClusterNode:
type: object
properties:
id:
type: string
description: Node ID.
name:
type: string
description: Unique cluster name.
address:
description: Network address of this node.
allOf:
- $ref: '#/components/schemas/NetworkAddress'
- type: object
description: Cluster network address information.
metadata:
allOf:
- $ref: '#/components/schemas/NodeMetadata'
- type: object
description: Node metadata information.
description: Information about the cluster node.
ClusterState:
type: object
properties:
cmgNodes:
type: array
description: List of cluster management group nodes. These nodes are responsible
for maintaining RAFT cluster topology.
items:
type: string
msNodes:
type: array
description: List of metastorage nodes. These nodes are responsible for
storing RAFT cluster metadata.
items:
type: string
igniteVersion:
type: string
description: Version of Apache Ignite that the cluster was created on.
clusterTag:
allOf:
- $ref: '#/components/schemas/ClusterTag'
- type: object
description: Unique tag that identifies the cluster.
description: Information about current cluster state.
ClusterTag:
type: object
properties:
clusterId:
type: string
description: Unique cluster UUID. Generated automatically.
format: uuid
clusterName:
type: string
description: Unique cluster name.
description: Unique tag that identifies the cluster.
DeploymentStatus:
type: string
description: Status of deployment process.
enum:
- UPLOADING
- DEPLOYED
- OBSOLETE
- REMOVING
InitCommand:
type: object
properties:
metaStorageNodes:
type: array
description: A list of RAFT metastorage nodes.
items:
type: string
cmgNodes:
type: array
description: A list of RAFT cluster management nodes.
items:
type: string
clusterName:
type: string
description: The name of the cluster.
clusterConfiguration:
type: string
description: Cluster configuration in HOCON format.
description: Cluster initialization configuration.
InvalidParam:
type: object
properties:
name:
type: string
description: Parameter name.
reason:
type: string
description: The issue with the parameter.
description: Information about invalid request parameter.
Metric:
type: object
properties:
name:
type: string
description: Metric name.
desc:
type: string
description: Metric description.
nullable: true
description: Metric representation.
MetricSet:
required:
- metrics
- name
type: object
properties:
name:
type: string
description: Metric set name.
metrics:
type: array
description: Metrics.
items:
$ref: '#/components/schemas/Metric'
description: Metrics set representation.
MetricSource:
required:
- enabled
- name
type: object
properties:
name:
type: string
description: Metric source name.
enabled:
type: boolean
description: "If True, the metric is tracked. Otherwise, the metric is not\
\ tracked."
description: A list of metric sources provided by modules.
NetworkAddress:
type: object
properties:
host:
type: string
description: Name of the host node runs on.
port:
type: integer
description: Port the node runs on.
format: int32
description: Node network address information.
NodeMetadata:
type: object
properties:
restHost:
type: string
description: The host exposed to REST API.
httpPort:
type: integer
description: The HTTP port exposed to REST API.
format: int32
httpsPort:
type: integer
description: The HTTPS port exposed to REST API.
format: int32
description: Node metadata information.
NodeState:
required:
- name
- state
type: object
properties:
name:
type: string
description: Unique node name.
state:
allOf:
- $ref: '#/components/schemas/State'
- type: object
description: Node status.
description: Node state.
Problem:
type: object
properties:
title:
type: string
description: Short summary of the issue.
status:
type: integer
description: Returned HTTP status code.
format: int32
code:
type: string
description: Ignite 3 error code.
type:
type: string
description: URI to documentation regarding the issue.
detail:
type: string
description: Extended explanation of the issue.
node:
type: string
description: Name of the node the issue happened on.
traceId:
type: string
description: Unique issue identifier. This identifier can be used to find
logs related to the issue.
format: uuid
invalidParams:
type: array
description: A list of parameters that did not pass validation and the reason
for it.
items:
$ref: '#/components/schemas/InvalidParam'
description: Extended description of the problem with the request.
State:
type: string
description: Possible node statuses.
enum:
- STARTING
- STARTED
- STOPPING
UnitStatus:
required:
- id
- versionToStatus
type: object
properties:
id:
type: string
description: Unit identifier.
versionToStatus:
type: array
description: Map from unit version to unit deployment status.
items:
$ref: '#/components/schemas/UnitVersionStatus'
description: Unit status.
UnitVersionStatus:
required:
- status
- version
type: object
properties:
version:
type: string
description: Unit version.
status:
allOf:
- $ref: '#/components/schemas/DeploymentStatus'
- type: object
description: Unit status.
description: Unit version and status.
Void:
type: object
deployMode:
type: string
description: Initial set of nodes to deploy.
enum:
- MAJORITY
- ALL