# List summary

URL: https://docs.hanzo.ai/docs/openapi/o11y/get-o11y-summary

> Reports whether the platform is up.

`GET /v1/o11y/summary`

> [O11y →](https://docs.hanzo.ai/docs/openapi/o11y) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                        |
| ------------- | -------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/o11y/summary` |
| **Method**    | `GET`                                  |
| **Operation** | `get_o11y_summary`                     |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY` |

Reports whether the platform is up. It returns the public status
document: the incidents currently open against Hanzo's own services, derived
from the fleet health probes, plus the address of the human status page. No
authentication is required and no tenant data is involved — the answer is the
same for every caller.

A service that fails its health probe becomes one incident naming that service.
When the availability source itself cannot be read the endpoint answers 503
rather than an empty incident list, because "we cannot tell" and "everything is
fine" are different answers and only one of them is true.

## Request

`GET /v1/o11y/summary` takes no parameters and no body — the credential is the whole request.

## Response

| Status    | Body               | Meaning           |
| --------- | ------------------ | ----------------- |
| `200`     | o11y.StatusSummary | ok                |
| `202`     | Approval           | held for approval |
| `default` | problem-details    | refused           |

`200` body — 41 fields.

| Field                                                             | In   | Type                      | Always | Description                                                                                                                                                               |
| ----------------------------------------------------------------- | ---- | ------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `checked_at`                                                      | body | string                    | —      | CheckedAt is when the underlying availability read was taken, RFC3339 UTC.                                                                                                |
| `in_progress_maintenances`                                        | body | o11y.StatusMaintenance\[] | —      | InProgressMaintenances is always empty: this platform has no maintenance scheduling plane, so "nothing is running" is a true statement rather than a placeholder.         |
| `in_progress_maintenances[].affected_components`                  | body | o11y.StatusComponent\[]   | —      | AffectedComponents is what the window touches.                                                                                                                            |
| `in_progress_maintenances[].affected_components[].current_status` | body | string                    | —      | CurrentStatus is this component's own condition: "full\_outage" for a service that did not answer its health probe at all.                                                |
| `in_progress_maintenances[].affected_components[].id`             | body | string                    | —      | ID is the component's stable handle, which on this platform IS the service name — there is no separate component registry to allocate ids from.                           |
| `in_progress_maintenances[].affected_components[].name`           | body | string                    | —      | Name is the service as the fleet prober knows it (the `service` label on hanzo\_service\_up), so a reader can match a component to what is being probed.                  |
| `in_progress_maintenances[].ends_at`                              | body | string                    | —      | EndsAt is when it is expected to finish, RFC3339 UTC.                                                                                                                     |
| `in_progress_maintenances[].id`                                   | body | string                    | —      | ID is the window's handle.                                                                                                                                                |
| `in_progress_maintenances[].last_update_at`                       | body | string                    | —      | LastUpdateAt is when the window was last revised, RFC3339 UTC.                                                                                                            |
| `in_progress_maintenances[].last_update_message`                  | body | string                    | —      | LastUpdateMessage is the text of that revision.                                                                                                                           |
| `in_progress_maintenances[].name`                                 | body | string                    | —      | Name is its one-line headline.                                                                                                                                            |
| `in_progress_maintenances[].starts_at`                            | body | string                    | —      | StartsAt is when work begins, RFC3339 UTC.                                                                                                                                |
| `in_progress_maintenances[].status`                               | body | string                    | —      | Status is where the window is in its life, in the client's own vocabulary.                                                                                                |
| `in_progress_maintenances[].url`                                  | body | string                    | —      | URL points at the human status page, as every link in this document does.                                                                                                 |
| `ongoing_incidents`                                               | body | o11y.StatusIncident\[]    | —      | OngoingIncidents is one entry per service that failed its health probe, sorted by name.                                                                                   |
| `ongoing_incidents[].affected_components`                         | body | o11y.StatusComponent\[]   | —      | AffectedComponents is what this incident covers.                                                                                                                          |
| `ongoing_incidents[].affected_components[].current_status`        | body | string                    | —      | CurrentStatus is this component's own condition: "full\_outage" for a service that did not answer its health probe at all.                                                |
| `ongoing_incidents[].affected_components[].id`                    | body | string                    | —      | ID is the component's stable handle, which on this platform IS the service name — there is no separate component registry to allocate ids from.                           |
| `ongoing_incidents[].affected_components[].name`                  | body | string                    | —      | Name is the service as the fleet prober knows it (the `service` label on hanzo\_service\_up), so a reader can match a component to what is being probed.                  |
| `ongoing_incidents[].current_worst_impact`                        | body | string                    | —      | CurrentWorstImpact is the incident's impact on the PLATFORM, which is not the same question as the component's own condition above.                                       |
| `ongoing_incidents[].id`                                          | body | string                    | —      | ID is derived from the service, so the same outage keeps one id across reads rather than being reported as a new incident every 15 seconds.                               |
| `ongoing_incidents[].last_update_at`                              | body | string                    | —      | LastUpdateAt is when the failing measurement this incident reports was read, RFC3339 UTC.                                                                                 |
| `ongoing_incidents[].last_update_message`                         | body | string                    | —      | LastUpdateMessage says what was observed, not what is being done about it — there is no operator writing updates here, only the probe that failed.                        |
| `ongoing_incidents[].name`                                        | body | string                    | —      | Name is the one-line headline, built from the service that stopped answering.                                                                                             |
| `ongoing_incidents[].status`                                      | body | string                    | —      | Status is always "investigating" — the member of the client's closed set that means detected, cause not yet established, which is exactly what an automated prober knows. |
| `ongoing_incidents[].url`                                         | body | string                    | —      | URL points at the HUMAN status page, not back at this JSON.                                                                                                               |
| `page_title`                                                      | body | string                    | —      | PageTitle is the brand's own status-page title, resolved per request from the Host — a lux caller must never be shown Hanzo's.                                            |
| `page_url`                                                        | body | string                    | —      | PageURL is the HUMAN status page — an HTML page for people, distinct from this JSON endpoint.                                                                             |
| `scheduled_maintenances`                                          | body | o11y.StatusMaintenance\[] | —      | ScheduledMaintenances is always empty, for the same reason.                                                                                                               |
| `scheduled_maintenances[].affected_components`                    | body | o11y.StatusComponent\[]   | —      | AffectedComponents is what the window touches.                                                                                                                            |
| `scheduled_maintenances[].affected_components[].current_status`   | body | string                    | —      | CurrentStatus is this component's own condition: "full\_outage" for a service that did not answer its health probe at all.                                                |
| `scheduled_maintenances[].affected_components[].id`               | body | string                    | —      | ID is the component's stable handle, which on this platform IS the service name — there is no separate component registry to allocate ids from.                           |
| `scheduled_maintenances[].affected_components[].name`             | body | string                    | —      | Name is the service as the fleet prober knows it (the `service` label on hanzo\_service\_up), so a reader can match a component to what is being probed.                  |
| `scheduled_maintenances[].ends_at`                                | body | string                    | —      | EndsAt is when it is expected to finish, RFC3339 UTC.                                                                                                                     |
| `scheduled_maintenances[].id`                                     | body | string                    | —      | ID is the window's handle.                                                                                                                                                |
| `scheduled_maintenances[].last_update_at`                         | body | string                    | —      | LastUpdateAt is when the window was last revised, RFC3339 UTC.                                                                                                            |
| `scheduled_maintenances[].last_update_message`                    | body | string                    | —      | LastUpdateMessage is the text of that revision.                                                                                                                           |
| `scheduled_maintenances[].name`                                   | body | string                    | —      | Name is its one-line headline.                                                                                                                                            |
| `scheduled_maintenances[].starts_at`                              | body | string                    | —      | StartsAt is when work begins, RFC3339 UTC.                                                                                                                                |
| `scheduled_maintenances[].status`                                 | body | string                    | —      | Status is where the window is in its life, in the client's own vocabulary.                                                                                                |
| `scheduled_maintenances[].url`                                    | body | string                    | —      | URL points at the human status page, as every link in this document does.                                                                                                 |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo o11y summary
```

**SDK**

**.ts**

```ts
import { Configuration, O11yApi } from 'hanzoai';

const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getO11ySummary();
```

**.py**

```python
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_summary()
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.O11yAPI.GetO11ySummary(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::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_summary(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new O11yApi(client).getO11ySummary();
```

**HTTP**

```bash
curl https://api.hanzo.ai/v1/o11y/summary \
  -H "Authorization: Bearer $HANZO_API_KEY"
```

**MCP**

Tool `o11y`, op `get_o11y_summary` — POST the JSON-RPC envelope to `https://api.hanzo.ai/v1/mcp`.

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "o11y",
         "arguments": {
           "op": "get_o11y_summary",
           "input": {}
         }
       }
     }'
```

---

[O11y API](https://docs.hanzo.ai/docs/openapi/o11y) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
