---
title: "Update a shared dashboard link"
method: PATCH
path: "/shared-dashboards/{share_uuid}"
tags: ["Shared Dashboards"]
---

# Update a shared dashboard link

`PATCH /shared-dashboards/{share_uuid}`

Reconfigure one share link in place — the uuid and `share_url` stay valid, so anyone already holding the link keeps working.

Rotate the viewer password with `password`, take the link offline without archiving it with `status: inactive`, move or clear the locked reporting window, and change which cards the viewer sees with `report_config`. Omitted fields are left alone, so a password rotation never wipes the metric selection. Clearing the locked window needs `clear_lock: true` — omitted dates mean 'unchanged', not 'unlock'.

Returns 404 if the link does not exist or belongs to a shop this key does not cover. Requires `read_write` scope.

## Path parameters

- `share_uuid` string, required — Share link UUID.

## Headers

- `Idempotency-Key` string, nullable

## Request body

- SharedDashboardUpdateBody — Partial update for one share link. Omitted fields are left alone.
  - `password` string, nullable — Rotate the viewer password.
  - `status` string, nullable — `active` or `inactive`. Use DELETE to archive.
  - `locked_start_date` string, date, nullable
  - `locked_end_date` string, date, nullable
  - `clear_lock` boolean — Remove the locked window entirely. Cannot be combined with a locked date range — omitted dates mean 'leave it alone', so this flag is how you say 'unlock'.
  - `report_config` ShareReportConfig — Which metric cards and modules a share link shows an external viewer. An omitted/empty config is meaningful: it marks a legacy link, which renders the original fixed six-card layout. That is why ``metrics`` and ``modules`` default to None rather than to empty collections — "no opinion" and "the owner turned everything off" must stay distinguishable.
    - `v` integer — Config schema version
    - `metrics` string[], nullable — Metric keys to show, in display order
    - `modules` object, nullable — Per-module visibility, keyed by SHARE_MODULE_KEYS

## Response `200`

Successful Response

- UpdateSharedDashboardResponse
  - `success` boolean, required
  - `message` string, required
  - `uuid` string, required
  - `status` string, required
  - `share_url` string
  - `created_at` string
  - `locked_start_date` string, date, nullable
  - `locked_end_date` string, date, nullable
  - `report_config` ShareReportConfig — Which metric cards and modules a share link shows an external viewer. An omitted/empty config is meaningful: it marks a legacy link, which renders the original fixed six-card layout. That is why ``metrics`` and ``modules`` default to None rather than to empty collections — "no opinion" and "the owner turned everything off" must stay distinguishable.
    - `v` integer — Config schema version
    - `metrics` string[], nullable — Metric keys to show, in display order
    - `modules` object, nullable — Per-module visibility, keyed by SHARE_MODULE_KEYS

## Other responses

- `400` — Validation error, or a missing/oversized Idempotency-Key.
- `403` — API key lacks `read_write` scope (`WRITE_NOT_PERMITTED`).
- `404` — Resource does not exist, or belongs to another shop.
- `409` — Idempotency conflict, or the resource already exists.
- `422` — Validation Error
- `429` — Write-tier rate limit (10/min, 50/hour, 100/day) exceeded.

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) · [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/reacherapp/reacher-data-api/revisions/5eefff009b5b/schema)
