# Update dashboard digital signs

Replace all digital signs on a dashboard.

Source: https://statusdashboard.com/docs/api/status-dashboards/dashboards/digital-signs/update

`PUT /app/dashboards/{id}/digital-signs`

Full replacement of the dashboard's `digitalSigns` array. Send the complete list on every save.

For per-sign logos, use [upload-url](/docs/api/status-dashboards/dashboards/digital-signs/upload-url) to upload the image first, then include both `logoKey` and `logoUrl` from that response on the sign in this request.

***

## Path parameters
| Parameter | Description                |
| --------- | -------------------------- |
| `id`      | The UUID of the dashboard. |

***

## Request
See [API Basics](/docs/api) for required headers.

### Request body
Full replacement of the `signs` array. Each sign object uses the same fields as [Get dashboard digital signs](/docs/api/status-dashboards/dashboards/digital-signs/get#response-fields) under `signs[]`.

| Field   | Type  | Required | Description                                       |
| ------- | ----- | -------- | ------------------------------------------------- |
| `signs` | array | Yes      | Complete list of digital signs for the dashboard. |

### Validation
* `path` — lowercase URL segment (1–48 chars); unique per dashboard; reserved paths rejected.
* `darkMode` — required boolean; controls light vs dark sign display (default `false` for new signs).
* `components` — only component IDs wired on this dashboard.
* `signs.length` — must not exceed `signsPerDashboard` plan limit.

***

## Sample request
```bash
curl -X PUT https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/digital-signs \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "signs": [
      {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "path": "noc-lobby",
        "enabled": true,
        "title": "NOC Overview",
        "message": "",
        "compact": false,
        "darkMode": false,
        "groups": {
          "enabled": true,
          "items": [{ "id": "660e8400-e29b-41d4-a716-446655440001", "name": "Edge", "order": 1 }]
        },
        "components": {
          "770e8400-e29b-41d4-a716-446655440002": { "displayOrder": 1, "groupId": "660e8400-e29b-41d4-a716-446655440001" }
        }
      }
    ]
  }'
```

## Sample response
**Status: `200 OK`**

```json
{
  "signs": [ /* updated array */ ]
}
```

***

## Error responses
| Status | When                                                                           |
| ------ | ------------------------------------------------------------------------------ |
| `400`  | Validation failure, unknown component, or logo fields without custom branding. |
| `403`  | Feature disabled or over plan quota.                                           |
| `404`  | Dashboard not found.                                                           |
