# List dashboards — GET /v1/o11y/users/me/dashboards

URL: https://docs.hanzo.ai/docs/openapi/o11y/listdashboardsforuserv2

> Dashboard list V2 personalized for the calling user: each dashboard carries the caller's pinned state, and pinned dashboards float to the top of the requested ordering.

`GET /v1/o11y/users/me/dashboards`

> [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/users/me/dashboards` |
| **Method**    | `GET`                                              |
| **Operation** | `ListDashboardsForUserV2`                          |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`             |

Dashboard list V2 personalized for the calling user:
each dashboard carries the caller's pinned state, and pinned dashboards float to
the top of the requested ordering. Supports the same filter DSL, sort, order and
pagination.

Callers need the viewer role; the runtime's own gate enforces it.

## Request

5 fields.

| Field    | In    | Type    | Required | Description                                                                           |
| -------- | ----- | ------- | -------- | ------------------------------------------------------------------------------------- |
| `query`  | query | string  | —        | Query is the filter DSL over dashboard columns and tags, e.g. `name:cpu source:user`. |
| `sort`   | query | string  | —        | Sort is the sort field: updated\_at, created\_at or name.                             |
| `order`  | query | string  | —        | Order is the sort direction: asc or desc.                                             |
| `limit`  | query | integer | —        | Limit caps how many dashboards come back.                                             |
| `offset` | query | integer | —        | Offset is how many dashboards to skip for pagination.                                 |

## Response

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

`200` body — 26 fields.

| Field                                        | In   | Type                                 | Always | Description                                                              |
| -------------------------------------------- | ---- | ------------------------------------ | ------ | ------------------------------------------------------------------------ |
| `data`                                       | body | o11y.O11yDashboardListForUser        | —      |                                                                          |
| `data.dashboards`                            | body | o11y.O11yDashboardListItemForUser\[] | —      | Dashboards are the rows for this page, each with the caller's pin state. |
| `data.dashboards[].createdAt`                | body | string (date-time)                   | —      |                                                                          |
| `data.dashboards[].createdBy`                | body | string                               | —      |                                                                          |
| `data.dashboards[].id`                       | body | string                               | —      |                                                                          |
| `data.dashboards[].image`                    | body | string                               | —      |                                                                          |
| `data.dashboards[].locked`                   | body | boolean                              | —      |                                                                          |
| `data.dashboards[].name`                     | body | string                               | —      |                                                                          |
| `data.dashboards[].orgId`                    | body | string                               | —      |                                                                          |
| `data.dashboards[].pinned`                   | body | boolean                              | —      | Pinned reports whether the calling user has pinned this dashboard.       |
| `data.dashboards[].schemaVersion`            | body | string                               | —      |                                                                          |
| `data.dashboards[].source`                   | body | string                               | —      |                                                                          |
| `data.dashboards[].spec`                     | body | o11y.O11yDashboardListSpec           | —      |                                                                          |
| `data.dashboards[].spec.display`             | body | o11y.O11yDashboardDisplay            | —      |                                                                          |
| `data.dashboards[].spec.display.description` | body | string                               | —      | Description says what the dashboard is for.                              |
| `data.dashboards[].spec.display.name`        | body | string                               | —      | Name is the human-facing dashboard name.                                 |
| `data.dashboards[].tags`                     | body | o11y.O11yDashboardTag\[]             | —      |                                                                          |
| `data.dashboards[].tags[].key`               | body | string                               | —      | Key is the tag key.                                                      |
| `data.dashboards[].tags[].value`             | body | string                               | —      | Value is the tag value.                                                  |
| `data.dashboards[].updatedAt`                | body | string (date-time)                   | —      |                                                                          |
| `data.dashboards[].updatedBy`                | body | string                               | —      |                                                                          |
| `data.tags`                                  | body | o11y.O11yDashboardTag\[]             | —      | Tags are all tags in use across the org's dashboards.                    |
| `data.tags[].key`                            | body | string                               | —      | Key is the tag key.                                                      |
| `data.tags[].value`                          | body | string                               | —      | Value is the tag value.                                                  |
| `data.total`                                 | body | integer (int64)                      | —      | Total is the count across all pages.                                     |
| `status`                                     | body | string                               | —      | Status is "success".                                                     |

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

## Examples

**CLI**

```bash
hanzo o11y users me dashboards list
```

**SDK**

**.ts**

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

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

**.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).list_dashboards_for_user_v2()
```

**.go**

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

resp, _, err := client.O11yAPI.ListDashboardsForUserV2(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::list_dashboards_for_user_v2(&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).listDashboardsForUserV2();
```

**HTTP**

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

**MCP**

Tool `o11y`, op `ListDashboardsForUserV2` — 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": "ListDashboardsForUserV2",
           "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)
