Skip to content
Roboto
Esc
↑↓navigate↵open⌘Jpreview
On this page

roboto.domain.dashboards

Saved metrics dashboards for visualizing an organization’s data on the Roboto platform.

A dashboard is a named JSON document describing the sections, cards, and time parameters the web UI renders, stored on the platform so it can be reopened and shared. The platform stores that document verbatim and never interprets it: the definition is self-describing, carrying its own schema version for whichever client understands the schema. Ownership (owner_principal_id) is the sole source of truth for visibility: a dashboard owned by the org principal is shared with every member of the owning organization, while one owned by a user principal is personal (visible only to that user). Create and update requests express the choice via the accessibility knob, which the server folds into ownership. Dashboard names must be unambiguous for each viewer within their organization.

Submodules

Package Contents

CreateDashboardRequest

class roboto.domain.dashboards.CreateDashboardRequest(/, **data)#View Source

Bases: pydantic.BaseModel

Request body for POST /v1/metrics/dashboards/create.

Parameters

data Any

Attributes

CreateDashboardRequest.accessibility

Whether the dashboard is org-wide or personal. The server derives owner_principal_id from this — the org principal for organization, the creator’s user principal for user — and ownership is the stored source of truth; this field is not persisted separately.

CreateDashboardRequest.dashboard_definition

dashboard_definition dict[str, Any] #

The dashboard definition as a JSON object. Stored verbatim and never interpreted by the platform; it carries its own schema version for the clients that read it.

CreateDashboardRequest.name

name str = None #

The name of the dashboard.

DashboardAccessibility

class roboto.domain.dashboards.DashboardAccessibility#View Source

Bases: roboto.compat.StrEnum

Controls who can view a dashboard.

On create/update requests this is a knob that the server folds into DashboardRecord.owner_principal_id. On DashboardRecord it is a derived computed field — always in sync with the owner principal so API consumers never need to parse the principal string themselves.

Attributes

DashboardAccessibility.Organization

Organization = 'organization' #

All members of the organization owning the dashboard can view it.

DashboardAccessibility.User

User = 'user' #

Just the user who created the dashboard can view it.

DashboardRecord

class roboto.domain.dashboards.DashboardRecord(/, **data)#View Source

Bases: pydantic.BaseModel

A wire-transmissible representation of a dashboard

Parameters

data Any

Properties

DashboardRecord.accessibility

Derived from owner_principal_id: organization when owned by the org principal, user otherwise.

Attributes

DashboardRecord.created

created datetime.datetime #

Timestamp when the dashboard was created.

DashboardRecord.created_by

created_by str #

User ID of the dashboard’s creator. Audit metadata only; ownership is carried by owner_principal_id.

DashboardRecord.dashboard_definition

dashboard_definition dict[str, Any] #

The dashboard definition as a JSON object.

Opaque to the platform, which stores and returns it verbatim. The definition is self-describing: it carries its own schema version, and the client that understands the schema is the one that reads it.

DashboardRecord.dashboard_id

dashboard_id str #

Unique identifier for the dashboard.

DashboardRecord.modified

modified datetime.datetime #

Timestamp when the dashboard was last modified.

DashboardRecord.modified_by

modified_by str #

User ID of the last user to modify the dashboard.

DashboardRecord.name

name str #

Human-readable name for the dashboard. Unique per owner within an organization; dashboards with different owners may share a name, so by-name lookups can match more than one dashboard.

DashboardRecord.org_id

org_id str #

Organization ID that owns the dashboard.

DashboardRecord.owner_principal_id

owner_principal_id str #

Principal that owns the dashboard, serialized in the RobotoPrincipal ptype:id format.

org:<org_id> for organization-wide dashboards, user:<user_id> for personal dashboards. This is the sole source of truth for org-wide vs personal — a dashboard is org-wide exactly when its owner is the org principal. Ownership anchors authorization — a personal dashboard is editable by its owner or an org admin, an org-wide dashboard by any org member — and scopes name uniqueness: dashboard names are unique per owner within an organization.

DashboardRecord.revision

revision int = 0 #

How many times the dashboard definition has been written, starting at 0.

A definition-generation counter, not a row version: it advances only when dashboard_definition is replaced, and is deliberately untouched by a rename or an accessibility change. Clients never set it — the server owns it — but they must echo the value they loaded back as base_revision when writing a new definition, so a write built on a stale copy can be rejected rather than silently erasing someone else’s edit.

UpdateDashboardRequest

class roboto.domain.dashboards.UpdateDashboardRequest(/, **data)#View Source

Bases: pydantic.BaseModel

Request body for PUT /v1/metrics/dashboards/id/<dashboard_id>.

Parameters

data Any

Attributes

UpdateDashboardRequest.accessibility

Whether the dashboard should become org-wide or personal. The server re-derives owner_principal_id from this — to the org principal for organization, back to the creator’s user principal for user; ownership is the stored source of truth.

UpdateDashboardRequest.base_revision

base_revision int | roboto.sentinels.NotSetType = None #

The revision you loaded — not the revision you want.

Required when dashboard_definition is present, and rejected otherwise. The server compares it against the stored revision and rejects the write if the definition has been replaced in the meantime, so a save built on a stale copy cannot silently erase someone else’s edit. A rename or accessibility change carries no base revision: neither touches the definition, so neither can clobber it.

UpdateDashboardRequest.dashboard_definition

dashboard_definition dict[str, Any] | roboto.sentinels.NotSetType #

The dashboard definition as a JSON object. Replaces the stored definition wholesale; it carries its own schema version, so no separate version field accompanies it.

UpdateDashboardRequest.model_config

model_config #

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

UpdateDashboardRequest.name

name str | roboto.sentinels.NotSetType = None #

The name of the dashboard.

UpdateDashboardRequest.validate_base_revision_with_definition()

validate_base_revision_with_definition()#View Source

Require a base revision for definition writes, and only for definition writes.

The presence checks use NotSetType rather than truthiness: base_revision=0 is the commonest real value — a dashboard whose definition has never been rewritten — and a falsy test would reject exactly that.

Was this page helpful?