# Dashboards

## List all dashboards

> Retrieves a list of all dashboards accessible by the authenticated user

```json
{"openapi":"3.0.0","info":{"title":"Qubitro Public API","version":"2.0"},"servers":[{"url":"https://api.qubitro.com"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"description":"Enter your API key with the Bearer prefix, e.g. \"Bearer QB_your_api_key_here\"","type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"dashboard.getAllResponseBody":{"type":"object","properties":{"dashboards":{"type":"array","items":{"$ref":"#/components/schemas/dashboard.Dashboard"}}}},"dashboard.Dashboard":{"type":"object","properties":{"created":{"type":"string"},"id":{"type":"string"},"is_public":{"type":"boolean"},"last_modified":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"name":{"type":"string"},"refresh_period":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"widgets":{"type":"array","items":{"type":"string"}}}}}},"paths":{"/v2/dashboards":{"get":{"description":"Retrieves a list of all dashboards accessible by the authenticated user","tags":["Dashboards"],"summary":"List all dashboards","responses":{"200":{"description":"Dashboards retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dashboard.getAllResponseBody"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"}}}}}}
```

## Get dashboard details

> Retrieves complete dashboard information including all widgets and their configurations. Returns widget types (chart, stat, gauge, table, etc.) with their data sources and metadata.

```json
{"openapi":"3.0.0","info":{"title":"Qubitro Public API","version":"2.0"},"servers":[{"url":"https://api.qubitro.com"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"description":"Enter your API key with the Bearer prefix, e.g. \"Bearer QB_your_api_key_here\"","type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"dashboard.getDashboardResponseBody":{"type":"object","properties":{"id":{"type":"string"},"is_public":{"type":"boolean"},"metadata":{"type":"object","additionalProperties":{}},"name":{"type":"string"},"refresh_period":{"type":"integer"},"tags":{"type":"array","items":{"type":"string"}},"widgets":{"type":"array","items":{"$ref":"#/components/schemas/dashboard.widgetItem"}}}},"dashboard.widgetItem":{"type":"object","properties":{"data_metadata":{"type":"array","items":{"type":"object","additionalProperties":{}}},"description":{"type":"string"},"id":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"subtitle":{"type":"string"},"title":{"type":"string"},"widget_type":{"type":"string"}}}}},"paths":{"/v2/dashboards/{dashboard_id}":{"get":{"description":"Retrieves complete dashboard information including all widgets and their configurations. Returns widget types (chart, stat, gauge, table, etc.) with their data sources and metadata.","tags":["Dashboards"],"summary":"Get dashboard details","parameters":[{"description":"Dashboard ID (UUID format)","name":"dashboard_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Dashboard retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dashboard.getDashboardResponseBody"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"},"404":{"description":"Dashboard not found"}}}}}}
```

## Get devices from dashboard

> Extracts unique device IDs from all widgets in the dashboard. Returns device\_id, device\_name, project\_id, and project\_name for each device. Use this information to query device data via the data endpoints. Note: Table widgets (fleet views) may not contain device\_ids as they display all devices in a project.

```json
{"openapi":"3.0.0","info":{"title":"Qubitro Public API","version":"2.0"},"servers":[{"url":"https://api.qubitro.com"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"description":"Enter your API key with the Bearer prefix, e.g. \"Bearer QB_your_api_key_here\"","type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"dashboard.getDevicesResponseBody":{"type":"object","properties":{"devices":{"type":"array","items":{"$ref":"#/components/schemas/dashboard.deviceInfo"}}}},"dashboard.deviceInfo":{"type":"object","properties":{"device_id":{"type":"string"},"device_name":{"type":"string"},"project_id":{"type":"string"},"project_name":{"type":"string"}}}}},"paths":{"/v2/dashboards/{dashboard_id}/devices":{"get":{"description":"Extracts unique device IDs from all widgets in the dashboard. Returns device_id, device_name, project_id, and project_name for each device. Use this information to query device data via the data endpoints. Note: Table widgets (fleet views) may not contain device_ids as they display all devices in a project.","tags":["Dashboards"],"summary":"Get devices from dashboard","parameters":[{"description":"Dashboard ID (UUID format)","name":"dashboard_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Devices retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/dashboard.getDevicesResponseBody"}}}},"401":{"description":"Unauthorized - Invalid or missing API key"},"404":{"description":"Dashboard not found"}}}}}}
```

## Invite users/groups to dashboard

> Share dashboard access with users or groups in your organization. Invited members will receive email notifications and gain dashboard access based on their assigned role.\
> \
> \*\*Dashboard Roles:\*\*\
> \
> \| Role | Permissions |\
> \|------|-------------|\
> \| \`owner\` | Full control: read, write, delete, access management, widget management, tag updates |\
> \| \`admin\` | Full control: same as owner (read, write, delete, access management, widget/tag management) |\
> \| \`readwrite\` | Read and modify: read, write, update widgets and tags (cannot delete dashboard or manage access) |\
> \| \`readonly\` | View only: read dashboard and widgets (no modifications) |\
> \
> \*\*Custom Roles:\*\*\
> Organizations can create custom roles with specific permission combinations.\
> \
> \*\*Prerequisites:\*\*\
> \- Must have \`access-management\` permission on the dashboard\
> \- Organization plan required for group invitations\
> \- Users must exist in your organization\
> \- Role must be a valid dashboard role ID

```json
{"openapi":"3.0.0","info":{"title":"Qubitro Public API","version":"2.0"},"servers":[{"url":"https://api.qubitro.com"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"description":"Enter your API key with the Bearer prefix, e.g. \"Bearer QB_your_api_key_here\"","type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"dashboard.inviteBody":{"type":"object","properties":{"groups":{"description":"List of groups to invite with dashboard roles","type":"array","items":{"$ref":"#/components/schemas/dashboard.Group"}},"users":{"description":"List of users to invite with dashboard roles","type":"array","items":{"$ref":"#/components/schemas/dashboard.User"}}}},"dashboard.Group":{"type":"object","properties":{"id":{"description":"Group ID","type":"string"},"role":{"description":"Dashboard role: \"owner\", \"admin\", \"readwrite\", or \"readonly\"","type":"string"}}},"dashboard.User":{"type":"object","properties":{"email":{"description":"User email address","type":"string"},"role":{"description":"Dashboard role: \"owner\", \"admin\", \"readwrite\", or \"readonly\"","type":"string"}}},"main.SuccessResponse":{"type":"object","properties":{"action":{"description":"Action that was performed","type":"string"},"message":{"description":"Human-readable success message","type":"string"},"success":{"description":"Operation completed successfully","type":"boolean"}}},"main.ErrorResponse":{"type":"object","properties":{"action":{"description":"Action that was attempted","type":"string"},"code":{"description":"Optional error code","type":"string"},"details":{"description":"Optional additional details","type":"string"},"message":{"description":"Human-readable error message","type":"string"},"success":{"description":"Operation failed","type":"boolean"}}}}},"paths":{"/v2/dashboards/{dashboard_id}/invite":{"post":{"description":"Share dashboard access with users or groups in your organization. Invited members will receive email notifications and gain dashboard access based on their assigned role.\n\n**Dashboard Roles:**\n\n| Role | Permissions |\n|------|-------------|\n| `owner` | Full control: read, write, delete, access management, widget management, tag updates |\n| `admin` | Full control: same as owner (read, write, delete, access management, widget/tag management) |\n| `readwrite` | Read and modify: read, write, update widgets and tags (cannot delete dashboard or manage access) |\n| `readonly` | View only: read dashboard and widgets (no modifications) |\n\n**Custom Roles:**\nOrganizations can create custom roles with specific permission combinations.\n\n**Prerequisites:**\n- Must have `access-management` permission on the dashboard\n- Organization plan required for group invitations\n- Users must exist in your organization\n- Role must be a valid dashboard role ID","tags":["Dashboards"],"summary":"Invite users/groups to dashboard","parameters":[{"description":"Dashboard ID (UUID format)","name":"dashboard_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dashboard.inviteBody"}}},"description":"Users and groups to invite with their dashboard roles","required":true},"responses":{"200":{"description":"Invitation sent successfully - Users will receive email notifications","content":{"application/json":{"schema":{"$ref":"#/components/schemas/main.SuccessResponse"}}}},"400":{"description":"Invalid request body - Check email format and role values (must be: owner, admin, readwrite, readonly, or custom role ID)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/main.ErrorResponse"}}}},"401":{"description":"Unauthorized - Invalid or missing API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/main.ErrorResponse"}}}},"404":{"description":"Dashboard not found or access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/main.ErrorResponse"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.qubitro.com/developers/dashboards.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
