# 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"}}}}}}}}}
```
