---
title: "List Snowflake role shares on a dashboard."
method: GET
path: "/v1/dashboards/{id}/role-shares"
tags: ["dashboards"]
---

# List Snowflake role shares on a dashboard.

`GET /v1/dashboards/{id}/role-shares`

## Request

- Base URL: `http://localhost:8080`
- URL: `http://localhost:8080/v1/dashboards/{id}/role-shares`
- Auth: one of:
  - API key in cookie `dvt_session`
  - HTTP bearer

Snowflake-mode only (DVT-1670/DVT-1723): returns every Snowflake role the
dashboard is shared to. Any live holder of one of these roles (per the
engine's CURRENT_AVAILABLE_ROLES()) gains read access to the dashboard.
Requires share:manage on the dashboard — the owner or a live dvt_admin may
call this, except that an owner whose LIVE tier is viewer is refused with
403 (DVT-4721: the owner needs dvt_editor or dvt_admin). Outside snowflake
mode this endpoint does not exist (404).

## Response `200`

The dashboard's Snowflake role shares.

- object
  - `data` DashboardRoleShare[], required
    - `snowflakeRole` string, required: The Snowflake role name, folded to upper-case.
    - `warning` string: DVT-2260, POST responses only: a non-blocking warning — set when the sharer's own live Snowflake role set resolved successfully and does NOT contain this role. The share is created regardless (warn, don't block): the role may not exist in this account (a typo, which would silently grant nobody access) or may simply belong to someone else, the ordinary case. Omitted when the role was found live-held, or when the resolve was skipped or failed (fail-open — never blocks the create).
  - `meta` Meta, required: Response metadata.
    - `requestId` string, required: Correlates with the X-Request-Id header.
    - `total` integer: Item count, present on collection responses.
    - `nextCursor` string, nullable: Opaque keyset-pagination cursor, present on paginated responses (e.g. GET /v1/dashboards) when more rows exist beyond this page. Pass it back as the `cursor` query param to fetch the next page; absent or null on the last page.
    - `roleResolveDegraded` boolean: Snowflake mode only (DVT-2260), on GET /v1/dashboards: present and true when the caller's live Snowflake role resolution failed or was unavailable — role-shared dashboards may be missing from this page. Omitted (not merely false) whenever resolution succeeded or the role-share arm does not apply (off snowflake mode, an org admin/owner, or off the ingress listener).

## Other responses

- `401`: Missing, invalid, or expired session.
- `403`: The caller's role does not permit this action.
- `404`: Resource does not exist.

---

[API](https://skmtc.dev/dvt/apis/dvt-rest-api.md) · [All operations](https://skmtc.dev/dvt/apis/dvt-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dvt/apis/dvt-rest-api/revisions/00016f504165?raw)
