blob: a2613aa54fff51d3f7560c6455aa482fbe439b94 [file] [log] [blame]
// 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.
= Ignite REST module
== Endpoints
[.ClusterConfiguration]
=== ClusterConfiguration
[.getClusterConfiguration]
==== getClusterConfiguration
`GET /management/v1/configuration/cluster`
===== Description
Gets the current configuration of the cluster.
// markup not found, no include::{specDir}management/v1/configuration/cluster/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
<<String>>
===== Content Type
* text/plain
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Get cluster configuration
| <<String>>
| 500
| Internal error.
| <<Problem>>
| 400
| Incorrect configuration.
| <<Problem>>
| 404
| Configuration not found. Most likely, the cluster is not initialized.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/configuration/cluster/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/configuration/cluster/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/configuration/cluster/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/configuration/cluster/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.getClusterConfigurationByPath]
==== getClusterConfigurationByPath
`GET /management/v1/configuration/cluster/{path}`
===== Description
Gets the configuration on the specific path. Configuration is in HOCON format
// markup not found, no include::{specDir}management/v1/configuration/cluster/\{path\}/GET/spec.adoc[opts=optional]
===== Parameters
====== Path Parameters
[cols="2,3,1,1,1"]
|===
|Name| Description| Required| Default| Pattern
| path
| Configuration tree address. For example: &#x60;element.subelement&#x60;.
| X
| null
|
|===
===== Return Type
<<String>>
===== Content Type
* text/plain
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Configuration of the cluster on the specified path.
| <<String>>
| 500
| Internal error.
| <<Problem>>
| 400
| Incorrect configuration.
| <<Problem>>
| 404
| Configuration not found. Most likely, the cluster is not initialized.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/configuration/cluster/\{path\}/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/configuration/cluster/\{path\}/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/configuration/cluster/{path}/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/configuration/cluster/\{path\}/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.updateClusterConfiguration]
==== updateClusterConfiguration
`PATCH /management/v1/configuration/cluster`
===== Description
Updates cluster configuration. New configuration should be provided in HOCON format.
// markup not found, no include::{specDir}management/v1/configuration/cluster/PATCH/spec.adoc[opts=optional]
===== Parameters
====== Body Parameter
[cols="2,3,1,1,1"]
|===
|Name| Description| Required| Default| Pattern
| body
| <<string>>
| X
|
|
|===
===== Return Type
<<Object>>
===== Content Type
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Configuration updated.
| <<Object>>
| 500
| Internal error.
| <<Problem>>
| 400
| Incorrect configuration.
| <<Problem>>
| 404
| Configuration not found. Most likely, the cluster is not initialized.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/configuration/cluster/PATCH/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/configuration/cluster/PATCH/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/configuration/cluster/PATCH/PATCH.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/configuration/cluster/PATCH/implementation.adoc[opts=optional]
endif::internal-generation[]
[.ClusterManagement]
=== ClusterManagement
[.clusterState]
==== clusterState
`GET /management/v1/cluster/state`
===== Description
Returns current cluster status.
// markup not found, no include::{specDir}management/v1/cluster/state/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
<<ClusterState>>
===== Content Type
* application/json
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Cluster status returned.
| <<ClusterState>>
| 404
| Cluster state not found. Most likely, the cluster is not initialized.
| <<Problem>>
| 500
| Internal error.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/cluster/state/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/cluster/state/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/cluster/state/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/cluster/state/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.init]
==== init
`POST /management/v1/cluster/init`
===== Description
Initializes a new cluster.
// markup not found, no include::{specDir}management/v1/cluster/init/POST/spec.adoc[opts=optional]
===== Parameters
====== Body Parameter
[cols="2,3,1,1,1"]
|===
|Name| Description| Required| Default| Pattern
| InitCommand
| <<InitCommand>>
| X
|
|
|===
===== Return Type
<<Object>>
===== Content Type
* application/json
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Cluster initialized.
| <<Object>>
| 500
| Internal error.
| <<Problem>>
| 400
| Incorrect configuration.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/cluster/init/POST/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/cluster/init/POST/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/cluster/init/POST/POST.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/cluster/init/POST/implementation.adoc[opts=optional]
endif::internal-generation[]
[.NodeConfiguration]
=== NodeConfiguration
[.getNodeConfiguration]
==== getNodeConfiguration
`GET /management/v1/configuration/node`
===== Description
Gets node configuration in HOCON format.
// markup not found, no include::{specDir}management/v1/configuration/node/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
<<String>>
===== Content Type
* text/plain
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Whole node configuration.
| <<String>>
| 500
| Internal error.
| <<Problem>>
| 400
| Incorrect configuration.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/configuration/node/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/configuration/node/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/configuration/node/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/configuration/node/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.getNodeConfigurationByPath]
==== getNodeConfigurationByPath
`GET /management/v1/configuration/node/{path}`
===== Description
Gets a configuration of a specific node, in HOCON format.
// markup not found, no include::{specDir}management/v1/configuration/node/\{path\}/GET/spec.adoc[opts=optional]
===== Parameters
====== Path Parameters
[cols="2,3,1,1,1"]
|===
|Name| Description| Required| Default| Pattern
| path
| Configuration tree address. For example: &#x60;element.subelement&#x60;.
| X
| null
|
|===
===== Return Type
<<String>>
===== Content Type
* text/plain
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Returned node configuration.
| <<String>>
| 500
| Internal error.
| <<Problem>>
| 400
| Incorrect configuration.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/configuration/node/\{path\}/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/configuration/node/\{path\}/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/configuration/node/{path}/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/configuration/node/\{path\}/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.updateNodeConfiguration]
==== updateNodeConfiguration
`PATCH /management/v1/configuration/node`
===== Description
Updates node configuration. New configuration should be provided in HOCON format.
// markup not found, no include::{specDir}management/v1/configuration/node/PATCH/spec.adoc[opts=optional]
===== Parameters
====== Body Parameter
[cols="2,3,1,1,1"]
|===
|Name| Description| Required| Default| Pattern
| body
| <<string>>
| X
|
|
|===
===== Return Type
<<Object>>
===== Content Type
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Configuration successfully updated.
| <<Object>>
| 500
| Internal error.
| <<Problem>>
| 400
| Incorrect configuration.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/configuration/node/PATCH/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/configuration/node/PATCH/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/configuration/node/PATCH/PATCH.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/configuration/node/PATCH/implementation.adoc[opts=optional]
endif::internal-generation[]
[.NodeManagement]
=== NodeManagement
[.nodeState]
==== nodeState
`GET /management/v1/node/state`
===== Description
Gets current network status.
// markup not found, no include::{specDir}management/v1/node/state/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
<<NodeState>>
===== Content Type
* application/json
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Current node status.
| <<NodeState>>
| 500
| Internal error.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/node/state/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/node/state/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/node/state/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/node/state/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.nodeVersion]
==== nodeVersion
`GET /management/v1/node/version`
===== Description
Gets the version of Apache Ignite the node uses.
// markup not found, no include::{specDir}management/v1/node/version/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
<<String>>
===== Content Type
* text/plain
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Node version.
| <<String>>
| 500
| Internal error
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/node/version/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/node/version/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/node/version/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/node/version/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.NodeMetric]
=== NodeMetric
[.disableNodeMetric]
==== disableNodeMetric
`POST /management/v1/metric/node/disable`
===== Description
Disables a specific metric source.
// markup not found, no include::{specDir}management/v1/metric/node/disable/POST/spec.adoc[opts=optional]
===== Parameters
====== Body Parameter
[cols="2,3,1,1,1"]
|===
|Name| Description| Required| Default| Pattern
| body
| <<string>>
| X
|
|
|===
===== Return Type
-
===== Content Type
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Metric source disabled.
| <<>>
| 500
| Internal error.
| <<Problem>>
| 404
| Metric source not found.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/metric/node/disable/POST/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/metric/node/disable/POST/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/metric/node/disable/POST/POST.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/metric/node/disable/POST/implementation.adoc[opts=optional]
endif::internal-generation[]
[.enableNodeMetric]
==== enableNodeMetric
`POST /management/v1/metric/node/enable`
===== Description
Enables a specific metric source.
// markup not found, no include::{specDir}management/v1/metric/node/enable/POST/spec.adoc[opts=optional]
===== Parameters
====== Body Parameter
[cols="2,3,1,1,1"]
|===
|Name| Description| Required| Default| Pattern
| body
| <<string>>
| X
|
|
|===
===== Return Type
-
===== Content Type
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Metric source enabled.
| <<>>
| 500
| Internal error.
| <<Problem>>
| 404
| Metric source not found.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/metric/node/enable/POST/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/metric/node/enable/POST/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/metric/node/enable/POST/POST.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/metric/node/enable/POST/implementation.adoc[opts=optional]
endif::internal-generation[]
[.listNodeMetrics]
==== listNodeMetrics
`GET /management/v1/metric/node`
===== Description
Provides a list of all available metric sources.
// markup not found, no include::{specDir}management/v1/metric/node/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
array[<<MetricSource>>]
===== Content Type
* application/json
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Returned a list of metric sources.
| List[<<MetricSource>>]
| 500
| Internal error.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/metric/node/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/metric/node/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/metric/node/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/metric/node/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.Topology]
=== Topology
[.logical]
==== logical
`GET /management/v1/cluster/topology/logical`
===== Description
Gets information about logical cluster topology.
// markup not found, no include::{specDir}management/v1/cluster/topology/logical/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
array[<<ClusterNode>>]
===== Content Type
* application/json
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Logical topology returned.
| List[<<ClusterNode>>]
| 404
| Logical topology not found. Most likely, the cluster is not initialized.
| <<Problem>>
| 500
| Internal error
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/cluster/topology/logical/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/cluster/topology/logical/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/cluster/topology/logical/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/cluster/topology/logical/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[.physical]
==== physical
`GET /management/v1/cluster/topology/physical`
===== Description
Gets information about physical cluster topology.
// markup not found, no include::{specDir}management/v1/cluster/topology/physical/GET/spec.adoc[opts=optional]
===== Parameters
===== Return Type
array[<<ClusterNode>>]
===== Content Type
* application/json
* application/problem+json
===== Responses
.http response codes
[cols="2,3,1"]
|===
| Code | Message | Datatype
| 200
| Physical topology returned.
| List[<<ClusterNode>>]
| 500
| Internal error.
| <<Problem>>
|===
===== Samples
// markup not found, no include::{snippetDir}management/v1/cluster/topology/physical/GET/http-request.adoc[opts=optional]
// markup not found, no include::{snippetDir}management/v1/cluster/topology/physical/GET/http-response.adoc[opts=optional]
// file not found, no * wiremock data link :management/v1/cluster/topology/physical/GET/GET.json[]
ifdef::internal-generation[]
===== Implementation
// markup not found, no include::{specDir}management/v1/cluster/topology/physical/GET/implementation.adoc[opts=optional]
endif::internal-generation[]
[#models]
== Models
[#ClusterNode]
=== _ClusterNode_
Information about the cluster node.
[.fields-ClusterNode]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| id
|
| String
| Node ID.
|
| name
|
| String
| Unique cluster name.
|
| address
|
| NetworkAddress
|
|
| metadata
|
| NodeMetadata
|
|
|===
[#ClusterState]
=== _ClusterState_
Information about current cluster state.
[.fields-ClusterState]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| cmgNodes
|
| List of <<string>>
| List of cluster management group nodes. These nodes are responsible for maintaining RAFT cluster topology.
|
| msNodes
|
| List of <<string>>
| List of metastorage nodes. These nodes are responsible for storing RAFT cluster metadata.
|
| igniteVersion
|
| String
| Version of Apache Ignite that the cluster was created on.
|
| clusterTag
|
| ClusterTag
|
|
|===
[#ClusterTag]
=== _ClusterTag_
Unique tag that identifies the cluster.
[.fields-ClusterTag]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| clusterId
|
| UUID
| Unique cluster UUID. Generated automatically.
| uuid
| clusterName
|
| String
| Unique cluster name.
|
|===
[#InitCommand]
=== _InitCommand_
[.fields-InitCommand]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| metaStorageNodes
|
| List of <<string>>
| A list of RAFT metastorage nodes.
|
| cmgNodes
|
| List of <<string>>
| A list of RAFT cluster management nodes.
|
| clusterName
|
| String
| The name of the cluster.
|
|===
[#InvalidParam]
=== _InvalidParam_
Information about invalid request parameter.
[.fields-InvalidParam]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| name
|
| String
| Parameter name.
|
| reason
|
| String
| The issue with the parameter.
|
|===
[#MetricSource]
=== _MetricSource_
Metric sources provided by modules.
[.fields-MetricSource]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| name
|
| String
| Metric source name.
|
| enabled
|
| Boolean
| If True, the metric is tracked. Otherwise, the metric is not tracked.
|
|===
[#NetworkAddress]
=== _NetworkAddress_
Node network address information.
[.fields-NetworkAddress]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| host
|
| String
| Name of the host node is on.
|
| port
|
| Integer
| Port the node runs on.
| int32
|===
[#NodeMetadata]
=== _NodeMetadata_
Node metadata information.
[.fields-NodeMetadata]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| restHost
|
| String
| The host exposed to REST API.
|
| httpPort
|
| Integer
| The HTTP port exposed to REST API.
| int32
| httpsPort
|
| Integer
| The HTTPS port exposed to REST API.
| int32
|===
[#NodeState]
=== _NodeState_
Node state.
[.fields-NodeState]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| name
|
| String
| Unique node name.
|
| state
|
| State
|
|
|===
[#Problem]
=== _Problem_
Extended description of the problem with the request.
[.fields-Problem]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
| title
|
| String
| Short summary of the issue.
|
| status
|
| Integer
| Returned HTTP status code.
| int32
| code
|
| String
| Ignite 3 error code.
|
| type
|
| String
| URI to documentation regarding the issue.
|
| detail
|
| String
| Extended explanation of the issue.
|
| node
|
| String
| Name of the node the issue happened on.
|
| traceId
|
| UUID
| Unique issue identifier. Thid identifier can be used to find logs related to the issue
| uuid
| invalidParams
|
| List of <<InvalidParam>>
| Parameters that did not pass validation.
|
|===
[#State]
=== _State_
Possible node statuses.
[.fields-State]
[cols="2,1,2,4,1"]
|===
| Field Name| Required| Type| Description| Format
|===