Update dashboards

Applies an RFC 6902 JSON Patch to a v2-shape dashboard.

PATCH /v1/o11y/dashboards/{id}

Addresshttps://api.hanzo.ai/v1/o11y/dashboards/{id}
MethodPATCH
OperationPatchDashboardV2
AuthAuthorization: Bearer $HANZO_API_KEY

Applies an RFC 6902 JSON Patch to a v2-shape dashboard. The patch is applied against the postable view (metadata, spec, tags), so individual panels, queries, variables, layouts or tags can be updated without re-sending the rest. Apply is lenient — remove on a missing path is a no-op and add creates any missing parent objects — and the result is still validated. Locked dashboards are rejected. The request body is the bare JSON Patch operations array.

Callers need the editor role; the runtime's own gate enforces it.

Request

7 fields, body application/json (required).

FieldInTypeRequiredDescription
idpathstringyesID is the dashboard id from the path.
idbodystring—ID is the dashboard id from the path.
opsbodyo11y.O11yDashboardPatchOp[]—Ops are the JSON Patch operations, applied in order.
ops[].frombodystring—From is the source JSON Pointer for move and copy; ignored otherwise.
ops[].opbodystring—Op is the verb: add, remove, replace, move, copy or test.
ops[].pathbodystring—Path is a JSON Pointer into the postable dashboard, e.g. /spec/display/name, /spec/panels/<id>, /tags/-.
ops[].valuebodyany—Value is the value to add/replace/test; its type depends on Path.

Response

StatusBodyMeaning
200o11y.O11yDashboardOutok
202Approvalheld for approval
defaultproblem-detailsrefused

200 body — 17 fields.

FieldInTypeAlwaysDescription
databodyo11y.O11yDashboard—
data.createdAtbodystring (date-time)—CreatedAt is when the dashboard was created.
data.createdBybodystring—CreatedBy is who created it.
data.idbodystring—ID is the dashboard's id.
data.imagebodystring—Image is an optional cover image reference.
data.lockedbodyboolean—Locked reports whether the dashboard is locked against edits.
data.namebodystring—Name is the dashboard's unique internal name.
data.orgIdbodystring—OrgID is the org the dashboard belongs to.
data.schemaVersionbodystring—SchemaVersion is the dashboard schema version.
data.sourcebodystring—Source is where the dashboard came from: user, system or integration.
data.specbodyany—Spec is the Perses dashboard spec, carried verbatim as open JSON.
data.tagsbodyo11y.O11yDashboardTag[]—Tags are the dashboard's tags.
data.tags[].keybodystring—Key is the tag key.
data.tags[].valuebodystring—Value is the tag value.
data.updatedAtbodystring (date-time)—UpdatedAt is when it last changed.
data.updatedBybodystring—UpdatedBy is who last changed it.
statusbodystring—Status is "success".

Failure carries the platform error shape — see Errors.

Examples

hanzo o11y dashboards update <id>
import { Configuration, O11yApi } from 'hanzoai';

const api = new O11yApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.patchDashboardV2({ id: 'id', id: "<id>", ops: [{"from":"<from>","op":"<op>","path":"<path>","value":"<value>"}] });
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import O11yApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = O11yApi(client).patch_dashboard_v2(id='id', id="<id>", ops=[{"from":"<from>","op":"<op>","path":"<path>","value":"<value>"}])
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.O11yAPI.PatchDashboardV2(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, o11y_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = o11y_api::patch_dashboard_v2(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.O11yApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new O11yApi(client).patchDashboardV2();
curl -X PATCH https://api.hanzo.ai/v1/o11y/dashboards/<id> \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "id": "<id>",
       "ops": [
         {
           "from": "<from>",
           "op": "<op>",
           "path": "<path>",
           "value": "<value>"
         }
       ]
     }'

Tool o11y, op PatchDashboardV2 — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "o11y",
         "arguments": {
           "op": "PatchDashboardV2",
           "input": {
             "id": "<id>",
             "ops": [
               {
                 "from": "<from>",
                 "op": "<op>",
                 "path": "<path>",
                 "value": "<value>"
               }
             ]
           }
         }
       }
     }'

O11y API · All Hanzo APIs · Interactive reference

Was this page useful?