---
title: "Replace dashboard shares"
method: PUT
path: "/api/v1/ackdb/observe/dashboards/{id}/shares"
tags: ["ackDB"]
---

# Replace dashboard shares

`PUT /api/v1/ackdb/observe/dashboards/{id}/shares`

## Request

- Base URL: `http://localhost:3009`
- URL: `http://localhost:3009/api/v1/ackdb/observe/dashboards/{id}/shares`
- Auth: HTTP bearer

Atomic replace of the WHOLE grant set (the segment sharing contract verbatim). Owner only. Grants are roster-constrained to ACTIVE members; a duplicated memberId is deduped (last occurrence wins), not a 400.

## Path parameters

- `id` string, required

## Request body

- object
  - `shares` object[], required
    - `memberId` string, required
    - `role` 'view' | 'edit', required

## Response `200`

The stored grant set.

- object
  - `data` AckdbDashboardShare[], required
    - `memberId` string, required
    - `role` 'view' | 'edit', required
    - `name` string, nullable
    - `email` string, nullable
    - `createdAt` string, date-time

## Other responses

- `400`: Malformed body, or a memberId that is not an active member.
- `403`: Only the dashboard owner can change sharing.
- `404`: DASHBOARD_NOT_FOUND.

---

[API](https://skmtc.dev/floqer/apis/floqer-public-api.md) - [All operations](https://skmtc.dev/floqer/apis/floqer-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/floqer/apis/floqer-public-api/revisions/fce50dc07b20?raw)
