The clusterUnregisterNode() GraphQL mutation may be used to unregister a node from a cluster.

Use the cluster() query to get details about a cluster. There is also the clusterManagementSettings() query for more details. To create and update remote cluster connections, use createRemoteClusterConnection() and updateRemoteClusterConnection(). To do the same for a local cluster connection, use createLocalClusterConnection() and updateLocalClusterConnection(). To remove temporarily and permanently a node, deleteClusterConnection().

Hide Query Example

Show Cluster Nodes Query

For information on clusters, see the Cluster Management documentation page. You may also want to look at the LogScale Logical Architecture page in the Training section.

API Stability Long-Term

Syntax

graphql
clusterUnregisterNode(
      nodeID: integer!,
      force: boolean!
   ): UnregisterNodeMutation!

The force is given with a value of true, along with nodeID and its unique identifier to force the removal of a node. Click on the Show Query link above.

For the results, a special datatype is used, which leads to a sub-datatype that allows you to get information on the cluster. See the Returned Datatype section farther down this page for a link to those sub-parameters.

Example

Raw
graphql
mutation {
  clusterUnregisterNode(
         nodeID: 2,
         force: false ) 
  { cluster { nodes { id, name } } }
}
Mac OS or Linux (curl)
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  clusterUnregisterNode(
         nodeID: 2,
         force: false ) 
  { cluster { nodes { id, name } } }
}"
}
EOF
Mac OS or Linux (curl) One-line
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d @- << EOF
{"query" : "mutation {
  clusterUnregisterNode(
         nodeID: 2,
         force: false ) 
  { cluster { nodes { id, name } } }
}"
}
EOF
Windows Cmd and curl
shell
curl -v -X POST $YOUR_LOGSCALE_URL/graphql ^
    -H "Authorization: Bearer $TOKEN" ^
    -H "Content-Type: application/json" ^
    -d @'{"query" : "mutation { ^
  clusterUnregisterNode( ^
         nodeID: 2, ^
         force: false )  ^
  { cluster { nodes { id, name } } } ^
}" ^
} '
Windows Powershell and curl
powershell
curl.exe -X POST 
    -H "Authorization: Bearer $TOKEN"
    -H "Content-Type: application/json"
    -d '{"query" : "mutation {
  clusterUnregisterNode(
         nodeID: 2,
         force: false ) 
  { cluster { nodes { id, name } } }
}"
}'
    "$YOUR_LOGSCALE_URL/graphql"
Perl
perl
#!/usr/bin/perl

use HTTP::Request;
use LWP;

my $TOKEN = "TOKEN";

my $uri = '$YOUR_LOGSCALE_URL/graphql';

my $query = "mutation {
  clusterUnregisterNode(
         nodeID: 2,
         force: false ) 
  { cluster { nodes { id, name } } }
}";
$query =~ s/\n/ /g;
my $json = sprintf('{"query" : "%s"}',$query);
my $req = HTTP::Request->new("POST", $uri );

$req->header("Authorization" => "Bearer $TOKEN");
$req->header("Content-Type" => "application/json");

$req->content( $json );

my $lwp = LWP::UserAgent->new;

my $result = $lwp->request( $req );

print $result->{"_content"},"\n";
Python
python
#! /usr/local/bin/python3

import requests

url = '$YOUR_LOGSCALE_URL/graphql'
mydata = r'''{"query" : "mutation {
  clusterUnregisterNode(
         nodeID: 2,
         force: false ) 
  { cluster { nodes { id, name } } }
}"
}'''

resp = requests.post(url,
                     data = mydata,
                     headers = {
   "Authorization" : "Bearer $TOKEN",
   "Content-Type" : "application/json"
}
)

print(resp.text)
Node.js
javascript
const https = require('https');

const data = JSON.stringify(
    {"query" : "mutation {
  clusterUnregisterNode(
         nodeID: 2,
         force: false ) 
  { cluster { nodes { id, name } } }
}"
}
);


const options = {
  hostname: '$YOUR_LOGSCALE_URL',
  path: 'graphql',
  port: 443,
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length,
    Authorization: 'BEARER ' + process.env.TOKEN,
    'User-Agent': 'Node',
  },
};

const req = https.request(options, (res) => {
  let data = '';
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    data += d;
  });
  res.on('end', () => {
    console.log(JSON.parse(data).data);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();
Example Responses
Success (HTTP Response Code 200 OK)
json
{
  "data": {
    "clusterUnregisterNode": {
      "cluster": {
        "nodes": [
          {
            "id": 1,
            "name": "humio-cluster-node1:8080"
          }
        ]
      }
    }
  }
}

Given Datatype

For the input, you'll have to provide the numeric identifier for the node. To see an example of how to find that, click on the Show Query link above the Syntax section above. You'll also have to indicate whether to force the node to unregister: give a value of true to do this.

Table: Input Using Standard Datatypes

Parameter Type Required Default Description
nodeID integer yes   The number of the cluster node.
force boolean yes   Whether to force the node to unregister.

Returned Datatype

With the returned datatype, by way of sub-parameters, you can get information on the cluster and on the individual nodes: the unique identifiers and names of all nodes in the cluster — which you can use with other query and mutation fields to learn more about a specific node, as well as make changes. To see all of your choices, click on the link for that sub-datatype in the table below:

Table: UnregisterNodeMutation

ParameterTypeRequiredDefaultStabilityDescription
Some arguments may be required, as indicated in the Required column. For return datatypes, this indicates that you must specify which fields you want returned in the results.
Table last updated: Oct 4, 2024
clusterClusteryes Long-TermThe node to unregister from the cluster. See Cluster.

The datatype above uses another datatype for getting cluster information. For your convenience, the table for that sub-datatype is included here:

Table: Cluster

ParameterTypeRequiredDefaultStabilityDescription
Some arguments may be required, as indicated in the Required column. For return datatypes, this indicates that you must specify which fields you want returned in the results.
Table last updated: Aug 19, 2025
clusterInfoAgeSecondsfloatyes Long-TermThe age of the cluster information in seconds.
clusterManagementSettingsClusterManagementSettingsyes Long-TermThe settings for the LogScale cluster (see See ClusterManagementSettings.
defaultCachePolicyCachePolicy  PreviewThe default cache policy. See CachePolicy. Cache policies are a limited preview feature and subject to change.
digestReplicationFactorinteger  Short-TermThe digest replication factor.
inBucketStorageSegmentSizefloatyes Long-TermThe in bucket storage segment size.
ingestPartitions[IngestPartition]yes Long-TermThe ingest partitions. See IngestPartition.
missingSegmentSizefloatyes Long-TermThe missing segment size.
nodes[ClusterNode]yes Long-TermThe nodes of the cluster. See ClusterNode.
overReplicatedSegmentSizefloatyes Long-TermThe over replicated segment size.
pendingBucketStorageRiskySegmentSizefloatyes Long-TermThe pending bucket storage risky segment size.
pendingBucketStorageSegmentSizefloatyes Long-TermThe pending bucket storage segment size.
properlyReplicatedSegmentSizefloatyes Long-TermThe properly replicated segment size.
statsClusterStatsyes Short-TermThe cluster statistics. See ClusterStats.
storageReplicationFactorinteger  Short-TermThe storage replication factor.
targetMissingSegmentSizefloatyes Long-TermThe target missing segment size.
targetOverReplicatedSegmentSizefloatyes Long-TermThe target over replicated segment size.
targetProperlyReplicatedSegmentSizefloatyes Long-TermThe target properly replicated segment size.
targetUnderReplicatedSegmentSizefloatyes Long-TermThe target under replicated segment size.
underReplicatedSegmentSizefloatyes Long-TermThe under replicated segment size.