Lists the caller's org's grouped error issues, optionally narrowed to one…
Lists the caller's org's grouped error issues, optionally narrowed to one project and one time window, and filtered by status, level, environment,…
GET /v1/o11y/sentinel/issues
| Address | https://api.hanzo.ai/v1/o11y/sentinel/issues |
| Method | GET |
| Operation | get_o11y_sentinel_issues |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Lists the caller's org's grouped error issues, optionally narrowed to one project and one time window, and filtered by status, level, environment, service, a free-text query and a sort.
Callers need the viewer role; the runtime's own gate enforces it.
Request
10 fields.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
status | query | string | — | Status narrows to one lifecycle state: unresolved, resolved or ignored. |
level | query | string | — | Level narrows to one severity, e.g. |
environment | query | string | — | Environment narrows to one deployment environment. |
serviceName | query | string | — | ServiceName narrows to one reporting service. |
query | query | string | — | Query narrows to issues whose text contains it. |
sort | query | string | — | Sort orders the page, e.g. |
offset | query | integer | — | Offset is how many issues to skip. |
limit | query | integer | — | Limit caps how many issues come back. |
project | query | string | — | Project narrows the org's issues to one project, by its id. |
period | query | string | — | Period is the window to read, relative to now — 1h, 24h, 7d, 14d, 30d. |
Response
| Status | Body | Meaning |
|---|---|---|
200 | o11y.O11yErrorIssuesOut | ok |
200 body — 25 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
data | body | o11y.O11yErrorIssues | — | |
data.items | body | o11y.O11yErrorIssue[] | — | Items are the issues. |
data.items[].assignee | body | string | — | Assignee is who the issue is assigned to. |
data.items[].count | body | integer | — | Count is how many occurrences have landed on the issue. |
data.items[].createdAt | body | string (date-time) | — | CreatedAt is when the issue was first recorded. |
data.items[].culprit | body | string | — | Culprit is where it came from — the function or route blamed for it. |
data.items[].environment | body | string | — | Environment is the deployment the issue was seen in. |
data.items[].fingerprint | body | string | — | Fingerprint is the grouping key that puts like errors in one issue. |
data.items[].firstSeen | body | string (date-time) | — | FirstSeen is when the earliest occurrence was recorded. |
data.items[].id | body | string | — | ID is the issue id. |
data.items[].lastSeen | body | string (date-time) | — | LastSeen is when the latest was. |
data.items[].level | body | string | — | Level is the issue's severity, e.g. |
data.items[].platform | body | string | — | Platform is the reporting runtime, e.g. |
data.items[].regressed | body | boolean | — | Regressed marks an issue that reopened after being resolved. |
data.items[].release | body | string | — | Release is the version that produced it. |
data.items[].resolvedAt | body | string (date-time) | — | ResolvedAt is when the issue was resolved, if it is. |
data.items[].serviceName | body | string | — | ServiceName is the service that reported it. |
data.items[].status | body | string | — | Status is the lifecycle state: unresolved, resolved or ignored. |
data.items[].type | body | string | — | Type is the exception type. |
data.items[].updatedAt | body | string (date-time) | — | UpdatedAt is when the issue last changed. |
data.items[].value | body | string | — | Value is the exception value. |
data.limit | body | integer | — | Limit is the page cap that was applied. |
data.offset | body | integer | — | Offset is how many were skipped. |
data.total | body | integer | — | Total is how many matched the filter. |
status | body | string | — | Status is "success". |
Failure carries the platform error shape — see Errors.
Examples
hanzo has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.
import { Configuration, O11yApi } from 'hanzoai';
const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getO11ySentinelIssues();from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import O11yApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = O11yApi(client).get_o11y_sentinel_issues()cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.O11yAPI.GetO11ySentinelIssues(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, o11y_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = o11y_api::get_o11y_sentinel_issues(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new O11yApi(client).getO11ySentinelIssues();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl https://api.hanzo.ai/v1/o11y/sentinel/issues \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches o11y through the o11y tool, which names its 340 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "get_o11y_alert_last"
}
}
}'How is this guide?