REST API
HTTP API reference
Table of Contents
| HTTP Request | Description |
|---|---|
| PUT /config | Change configuration settings at runtime. |
| GET /domains | Get the list of correlation domains. |
| GET /domain/{domain}/classes | Get the list of classes for a domain. |
| POST /graphs/goals | Create a correlation graph from start objects to goal queries. |
| POST /graphs/neighbors | Create a neighborhood graph around a start object to a given depth. |
| POST /graphs/neighbours | Create a neighborhood graph around a start object to a given depth. |
| POST /lists/goals | Create a list of goal nodes related to a starting point. |
| GET /objects | Execute a query, returns a list of JSON objects. |
| PUT /console | Make console state available to an agent. |
| GET /console/events | SSE event stream of console display updates from an agent. |
configure
PUT /config
Modify selected configuration settings (e.g. log verbosity) on a running service.
Query Parameters
verbose(integer) Verbose level for logging.
Responses
200 Response
OK
{}
Field Definitions
console
PUT /console
Store console state so an agent can read it via MCP tool get_console. The MCP client must have the same session (Authorization header) as the REST client.
Request
{
"search": {
"goals": {
"goals": [
"k8s:Pod",
"metric:metric"
],
"start": {
"class": {},
"constraint": {
"end": "2017-07-21T17:32:28.1341231Z",
"limit": 1,
"start": "2024-01-15T10:30:00Z"
},
"objects": [],
"queries": [
"k8s:Pod:{\"namespace\":\"default\",\"name\":\"my-pod\"}"
]
}
},
"neighbors": {
"depth": 95,
"start": {
"class": {},
"constraint": {
"end": "2017-07-21T17:32:28.1341231Z",
"limit": 88,
"start": "2024-01-15T10:30:00Z"
},
"objects": [],
"queries": [
"k8s:Pod:{\"namespace\":\"default\",\"name\":\"my-pod\"}"
]
}
}
},
"view": {}
}
Field Definitions
viewThe main console view displays the results of this query.searchThe troubleshooting panel displays the results of this correlation search.
Responses
200 Response
Console display updated successfully
{}
Field Definitions
400 Response
invalid parameters
{
"error": "An error occurred"
}
GET /console/events
Updates are triggered by update requests from MCP tool show_in_console. The MCP client must have the same session (Authorization header) as the REST client.
Responses
200 Response
SSE stream where each event’s data field contains a JSON-encoded Console object.
correlate
POST /graphs/goals
Specify a set of start objects, as queries or serialized objects, and a goal class. Returns a graph containing all paths leading from a start object to a goal object.
Query Parameters
options(object) Options controlling the form of the returned graph.
Request
{
"goals": [
"k8s:Pod",
"metric:metric"
],
"start": {
"class": {},
"constraint": {
"end": "2017-07-21T17:32:28.1341231Z",
"limit": 12,
"start": "2024-01-15T10:30:00Z"
},
"objects": [
{}
],
"queries": [
"k8s:Pod:{\"namespace\":\"default\",\"name\":\"my-pod\"}"
]
}
}
Field Definitions
-
goals(array of Class, required) Goal classes in DOMAIN:CLASS format, e.g. log:application, alert:alert -
startStarting point for the search.
Responses
200 Response
OK
{
"edges": [
{
"goal": {},
"rules": [
{
"name": "iFD4MY7O3g",
"queries": []
}
],
"start": {}
}
],
"nodes": [
{
"class": "Dk8Bg7W9LL",
"count": 47,
"queries": [
{
"count": 60,
"query": {},
"statuses": []
}
],
"result": [
{}
]
}
]
}
Field Definitions
edges(array of Edge) List of graph edges.nodes(array of Node) List of graph nodes.
Edge
start: Class name of the start node.goal: Class name of the goal node.rules(array of Rule): Set of rules followed along this edge.
Rule
name(string, required): Name is an optional descriptive name.queries(array of QueryCount): Queries generated while following this rule.
QueryCount
count(integer): Number of results, omitted if the query was not executed.query: Query for correlation data.statuses(array of StatusCount): Statuses found on data objects for this query.
StatusCount
status(string, required): Status for correlation data.count(integer): Number of instances found, omitted if none.
Node
class(string, required): Full class name.queries(array of QueryCount): Queries yielding results for this class.count(integer): Number of results for this class, after de-duplication.result(array of Object): Serialized result contents, may be large.
QueryCount
count(integer): Number of results, omitted if the query was not executed.query: Query for correlation data.statuses(array of StatusCount): Statuses found on data objects for this query.
StatusCount
status(string, required): Status for correlation data.count(integer): Number of instances found, omitted if none.
400 Response
invalid parameters
{
"error": "An error occurred"
}
404 Response
result not found
{
"error": "An error occurred"
}
POST /graphs/neighbors
Specify a set of start objects, as queries or serialized objects, and a depth for the neighborhood search. Returns a graph of all paths with depth or less edges leading from start objects.
Query Parameters
options(object) Options controlling the form of the returned graph.
Request
{
"depth": 55,
"start": {
"class": {},
"constraint": {
"end": "2017-07-21T17:32:28.1341231Z",
"limit": 36,
"start": "2024-01-15T10:30:00Z"
},
"objects": [
{}
],
"queries": [
"k8s:Pod:{\"namespace\":\"default\",\"name\":\"my-pod\"}"
]
}
}
Field Definitions
-
depth(integer, required) Maximum number of correlation steps to follow from the start. Depth 1 returns direct correlations only. -
startStarting point for the search.
Responses
200 Response
OK
{
"edges": [
{
"goal": {},
"rules": [
{
"name": "iFD4MY7O3g",
"queries": []
}
],
"start": {}
}
],
"nodes": [
{
"class": "Dk8Bg7W9LL",
"count": 47,
"queries": [
{
"count": 60,
"query": {},
"statuses": []
}
],
"result": [
{}
]
}
]
}
Field Definitions
edges(array of Edge) List of graph edges.nodes(array of Node) List of graph nodes.
Edge
start: Class name of the start node.goal: Class name of the goal node.rules(array of Rule): Set of rules followed along this edge.
Rule
name(string, required): Name is an optional descriptive name.queries(array of QueryCount): Queries generated while following this rule.
QueryCount
count(integer): Number of results, omitted if the query was not executed.query: Query for correlation data.statuses(array of StatusCount): Statuses found on data objects for this query.
StatusCount
status(string, required): Status for correlation data.count(integer): Number of instances found, omitted if none.
Node
class(string, required): Full class name.queries(array of QueryCount): Queries yielding results for this class.count(integer): Number of results for this class, after de-duplication.result(array of Object): Serialized result contents, may be large.
QueryCount
count(integer): Number of results, omitted if the query was not executed.query: Query for correlation data.statuses(array of StatusCount): Statuses found on data objects for this query.
StatusCount
status(string, required): Status for correlation data.count(integer): Number of instances found, omitted if none.
400 Response
invalid parameters
{
"error": "An error occurred"
}
404 Response
result not found
{
"error": "An error occurred"
}
POST /graphs/neighbours
Specify a set of start objects, as queries or serialized objects, and a depth for the neighborhood search. Returns a graph of all paths with depth or less edges leading from start objects.
Query Parameters
options(object) Options controlling the form of the returned graph.
Request
{
"depth": 55,
"start": {
"class": {},
"constraint": {
"end": "2017-07-21T17:32:28.1341231Z",
"limit": 36,
"start": "2024-01-15T10:30:00Z"
},
"objects": [
{}
],
"queries": [
"k8s:Pod:{\"namespace\":\"default\",\"name\":\"my-pod\"}"
]
}
}
Field Definitions
-
depth(integer, required) Maximum number of correlation steps to follow from the start. Depth 1 returns direct correlations only. -
startStarting point for the search.
Responses
200 Response
OK
{
"edges": [
{
"goal": {},
"rules": [
{
"name": "iFD4MY7O3g",
"queries": []
}
],
"start": {}
}
],
"nodes": [
{
"class": "Dk8Bg7W9LL",
"count": 47,
"queries": [
{
"count": 60,
"query": {},
"statuses": []
}
],
"result": [
{}
]
}
]
}
Field Definitions
edges(array of Edge) List of graph edges.nodes(array of Node) List of graph nodes.
Edge
start: Class name of the start node.goal: Class name of the goal node.rules(array of Rule): Set of rules followed along this edge.
Rule
name(string, required): Name is an optional descriptive name.queries(array of QueryCount): Queries generated while following this rule.
QueryCount
count(integer): Number of results, omitted if the query was not executed.query: Query for correlation data.statuses(array of StatusCount): Statuses found on data objects for this query.
StatusCount
status(string, required): Status for correlation data.count(integer): Number of instances found, omitted if none.
Node
class(string, required): Full class name.queries(array of QueryCount): Queries yielding results for this class.count(integer): Number of results for this class, after de-duplication.result(array of Object): Serialized result contents, may be large.
QueryCount
count(integer): Number of results, omitted if the query was not executed.query: Query for correlation data.statuses(array of StatusCount): Statuses found on data objects for this query.
StatusCount
status(string, required): Status for correlation data.count(integer): Number of instances found, omitted if none.
400 Response
invalid parameters
{
"error": "An error occurred"
}
404 Response
result not found
{
"error": "An error occurred"
}
POST /lists/goals
Specify a set of start objects, as queries or serialized objects, and a goal class. Returns a list of all objects of the goal class that can be reached from a start object.
Request
{
"goals": [
"k8s:Pod",
"metric:metric"
],
"start": {
"class": {},
"constraint": {
"end": "2017-07-21T17:32:28.1341231Z",
"limit": 12,
"start": "2024-01-15T10:30:00Z"
},
"objects": [
{}
],
"queries": [
"k8s:Pod:{\"namespace\":\"default\",\"name\":\"my-pod\"}"
]
}
}
Field Definitions
-
goals(array of Class, required) Goal classes in DOMAIN:CLASS format, e.g. log:application, alert:alert -
startStarting point for the search.
Responses
200 Response
OK
[
{
"class": "GNO6q1Xh3S",
"count": 81,
"queries": [
{
"count": 76,
"query": {},
"statuses": []
}
],
"result": [
{}
]
}
]
Field Definitions
400 Response
invalid parameters
{
"error": "An error occurred"
}
404 Response
result not found
{
"error": "An error occurred"
}
query
GET /domains
Returns a list of Korrel8r domains and the stores configured for each domain.
Responses
200 Response
OK
[
{
"description": "yAVmNkB33i",
"name": "5zQu9MxNmG",
"stores": [
{}
]
}
]
Field Definitions
400 Response
invalid parameters
{
"error": "An error occurred"
}
404 Response
result not found
{
"error": "An error occurred"
}
GET /domain/{domain}/classes
Returns a list of class names for the specified domain.
Path Parameters
domain(string, required) Name of the domain to list classes for
Responses
200 Response
OK
[
"Pod",
"Service",
"Deployment"
]
Field Definitions
400 Response
invalid parameters
{
"error": "An error occurred"
}
404 Response
domain not found
{
"error": "An error occurred"
}
GET /objects
Execute a single Korrel8r ‘query’ and return the list of serialized objects found. Does not perform any correlation actions.
Query Parameters
-
query(string, required) Query string. -
constraint(object) Constrains the objects that will be included in results.
Responses
200 Response
OK
[
{}
]
Field Definitions
400 Response
invalid parameters
{
"error": "An error occurred"
}
404 Response
result not found
{
"error": "An error occurred"
}