Semaphor

Update a dashboard

Updates dashboard metadata (title, description, visibility, tags) and optionally replaces the full template. All fields are optional — only provided fields are changed.

tags uses full replacement semantics: omit it to preserve the current set, send [] to clear all tags, or send a non-empty array to replace the full set. Tags are returned in ascending lexical order. Sending the same tag set by itself is a no-op and does not advance updatedAt.

When you update title or description without providing a template, those values are automatically synced into the stored template JSON. When you replace the full template, its title and description are authoritative and the dashboard metadata fields are derived from them. Explicit top-level title or description values in the same request are applied as metadata patches to the replacement template before the derived fields are persisted.

Version-control policy:

Project settingcommitMessageResult
DisabledOmittedSave without committing
DisabledProvidedSave and commit
EnabledOmittedReject before saving with COMMIT_MESSAGE_REQUIRED
EnabledProvidedSave and commit
EnabledGitHub unavailableReject before saving with VCS_NOT_CONFIGURED

Visibility-only and tag-only changes do not modify the versioned dashboard template and therefore do not require a commit message. A commitMessage supplied with a tag-only update is ignored.

PATCH
/api/management/v1/dashboards/{dashboardId}

Authorization

BearerAuth
AuthorizationBearer <token>

A project-scoped or dashboard-scoped access token. Generate one via the Token API using your project ID and project secret.

In: header

Path Parameters

dashboardId*string

Dashboard identifier.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X patch "https://semaphor.cloud/api/management/v1/dashboards/string" \  -H "Content-Type: application/json" \  -d '{}'
{
  "versionControl": {
    "status": "committed",
    "commitSha": "string",
    "commitUrl": "http://example.com"
  },
  "id": "string",
  "kind": "string",
  "tags": [
    "string"
  ],
  "title": "string",
  "description": "string",
  "projectId": "string",
  "tenantId": "string",
  "isPrivate": true,
  "isPublic": true,
  "version": "string",
  "permissions": {
    "canEdit": true,
    "canShare": true,
    "canDelete": true
  },
  "ownership": {}
}
{
  "error": "string",
  "code": "string",
  "errorCode": "string",
  "details": {},
  "success": true
}
{
  "error": "string",
  "code": "string",
  "errorCode": "string",
  "details": {},
  "success": true
}
{
  "error": "string",
  "code": "string",
  "errorCode": "string",
  "details": {},
  "success": true
}
{
  "error": "string",
  "code": "string",
  "errorCode": "string",
  "details": {},
  "success": true
}
{
  "error": "string",
  "code": "string",
  "errorCode": "string",
  "details": {},
  "success": true
}
{
  "error": "string",
  "errorCode": "COMMIT_FAILED",
  "dashboardSaved": true,
  "dashboard": {
    "id": "string",
    "kind": "string",
    "tags": [
      "string"
    ],
    "title": "string",
    "description": "string",
    "projectId": "string",
    "tenantId": "string",
    "isPrivate": true,
    "isPublic": true,
    "version": "string",
    "permissions": {
      "canEdit": true,
      "canShare": true,
      "canDelete": true
    },
    "ownership": {}
  },
  "versionControl": {
    "status": "committed",
    "commitSha": "string",
    "commitUrl": "http://example.com"
  }
}