Cube Planning Dashboard API
Access the underlying Dashboards of Cube
Access the underlying Dashboards of Cube
openapi: 3.0.3
info:
title: Cube Agents Dashboard API
version: 1.0.0 (1.0)
description: "#### General Description\nAn API to access underlying Cube functionality. These endpoints are the same endpoints\nthat support Cube's universal add-ons and a plethora of integrations meaning you'll be able to interact with your\nCube data in many powerful ways. Visit the API section of Cube's [Help Center](https://help.cubesoftware.com/hc/en-us/sections/18205290556180-Custom-Integrations)\nfor more usage guides on how you can use this API to integrate with Cube to accomplish various tasks!\n\n#### Versioning\nAll requests to the API require a version to be configured via an `Accept` Header. The value of this Header should look like this:\n```\nAccept: application/json; version=1.0\n```\nNote that the version number may differ depending on which version of the endpoint is needed.\n\n#### Response Structure\nThe general response structure of Cube's API endpoints will contain a `\"data\"` and `\"metadata\"` root level key:\n```json\n{\n \"data\": { ... object data or list of objects ... },\n \"metadata\": {\n \"status\": 200,\n \"message\": \"Potential message with additional context\",\n \"error\": false,\n \"code\": \"\"\n }\n}\n```\n\n#### Rate Limiting\nAll endpoints have a rate limit configured, most of them default to 5/s.\nWhen the rate limit is encountered, a 429 HTTP code will be returned.\n\n#### Error Handling\nIn the event an error occurs, the response will typically look like this:\n```json\n{\n \"data\": {},\n \"metadata\": {\n \"status\": 400,\n \"message\": \"Some error message\",\n \"error\": true,\n \"code\": \"SOME_ERROR_CODE\"\n }\n}\n```\n"
termsOfService: https://www.cubesoftware.com/terms-of-service
servers:
- url: https://api.cubesoftware.com
description: Cube API Production URL
tags:
- name: Dashboard
description: Access the underlying Dashboards of Cube
paths:
/dashboard:
get:
operationId: dashboard_list
description: List all dashboards
summary: List all dashboards
parameters:
- in: header
name: X-Company-ID
schema:
type: string
description: Associates request with company
required: true
tags:
- Dashboard
security:
- OAuth2: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Dashboard'
description: ''
post:
operationId: dashboard_create
description: Create a dashboard
summary: Create a dashboard
parameters:
- in: header
name: X-Company-ID
schema:
type: string
description: Associates request with company
required: true
tags:
- Dashboard
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDashboard'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateDashboard'
multipart/form-data:
schema:
$ref: '#/components/schemas/CreateDashboard'
required: true
security:
- OAuth2: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDashboard'
description: ''
/dashboard/{dashboard_id}/embed:
get:
operationId: dashboard_embed_retrieve
description: Retrieve the embed URL for Cube Dashboards by Dashboard ID
summary: Retrieve Embedded URL for the requested Cube Dashboard
parameters:
- in: header
name: X-Company-ID
schema:
type: string
description: Associates request with company
required: true
- in: path
name: dashboard_id
schema:
type: string
format: uuid
description: The dashboard UUID
required: true
tags:
- Dashboard
security:
- OAuth2: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/data'
description: The embed URL with the required token is generated.
/dashboard/{id}:
get:
operationId: dashboard_retrieve
description: Retrieve a dashboard by ID
summary: Retrieve a dashboard by ID
parameters:
- in: header
name: X-Company-ID
schema:
type: string
description: Associates request with company
required: true
- in: path
name: id
schema:
type: string
required: true
tags:
- Dashboard
security:
- OAuth2: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Dashboard'
description: ''
patch:
operationId: dashboard_partial_update
description: Update writable dashboard fields
summary: Update a dashboard by ID
parameters:
- in: header
name: X-Company-ID
schema:
type: string
description: Associates request with company
required: true
- in: path
name: id
schema:
type: string
required: true
tags:
- Dashboard
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedDashboard'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedDashboard'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedDashboard'
security:
- OAuth2: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Dashboard'
description: ''
delete:
operationId: dashboard_destroy
parameters:
- in: header
name: X-Company-ID
schema:
type: string
description: Associates request with company
required: true
- in: path
name: id
schema:
type: string
required: true
tags:
- Dashboard
security:
- OAuth2: []
responses:
'204':
description: No response body
/dashboard/{id}/default:
patch:
operationId: dashboard_default_partial_update
description: DEPRECATED. Use the more general PATCH method instead.
summary: Set the default dashboard
parameters:
- in: header
name: X-Company-ID
schema:
type: string
description: Associates request with company
required: true
- in: path
name: id
schema:
type: string
required: true
tags:
- Dashboard
security:
- OAuth2: []
deprecated: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Dashboard'
description: ''
components:
schemas:
CreateDashboard:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
type: string
maxLength: 255
description:
type: string
writeOnly: true
nullable: true
created_at:
type: string
format: date-time
readOnly: true
external_id:
type: string
readOnly: true
nullable: true
source:
allOf:
- $ref: '#/components/schemas/Source402Enum'
readOnly: true
edit_url:
type: string
nullable: true
description: "Returns a url in the third party system for editing the dashboard.\n\nReturns:\n str url in the external system where one can edit the dashboard."
readOnly: true
external:
type: object
additionalProperties: {}
nullable: true
description: "Returns an up to date representation of the dashboard provided by the external system.\n\nReturns:\n A dictionary representation of the dashboard in the external system or None if this dashboard is\n not a metabase dashboard.\n\nRaises:\n MBNotFoundError: raised if the dashboard is not found in the external system."
readOnly: true
default:
type: boolean
readOnly: true
publish_status:
allOf:
- $ref: '#/components/schemas/PublishStatusEnum'
readOnly: true
sharing_scheme:
allOf:
- $ref: '#/components/schemas/SharingSchemeF41Enum'
readOnly: true
sharing_users:
readOnly: true
required:
- created_at
- default
- edit_url
- external
- external_id
- id
- name
- publish_status
- sharing_scheme
- sharing_users
- source
PublishStatusEnum:
enum:
- DRAFT
- PUBLISHED
type: string
description: '* `DRAFT` - Draft
* `PUBLISHED` - Published'
data:
type: object
properties:
data:
type: object
additionalProperties: {}
metadata:
type: object
additionalProperties: {}
required:
- data
- metadata
PatchedDashboard:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
external_id:
type: string
readOnly: true
nullable: true
source:
allOf:
- $ref: '#/components/schemas/Source402Enum'
readOnly: true
edit_url:
type: string
nullable: true
description: "Returns a url in the third party system for editing the dashboard.\n\nReturns:\n str url in the external system where one can edit the dashboard."
readOnly: true
external:
type: object
additionalProperties: {}
nullable: true
description: "Returns an up to date representation of the dashboard provided by the external system.\n\nReturns:\n A dictionary representation of the dashboard in the external system or None if this dashboard is\n not a metabase dashboard.\n\nRaises:\n MBNotFoundError: raised if the dashboard is not found in the external system."
readOnly: true
default:
type: boolean
publish_status:
$ref: '#/components/schemas/PublishStatusEnum'
sharing_scheme:
$ref: '#/components/schemas/SharingSchemeF41Enum'
sharing_users: {}
Source402Enum:
enum:
- METABASE
type: string
description: '* `METABASE` - Metabase'
SharingSchemeF41Enum:
enum:
- ALL
- ADMINS
- SPECIFIC
type: string
description: '* `ALL` - All Team Members
* `ADMINS` - Only Admins
* `SPECIFIC` - Specific Team Members'
Dashboard:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
name:
type: string
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
external_id:
type: string
readOnly: true
nullable: true
source:
allOf:
- $ref: '#/components/schemas/Source402Enum'
readOnly: true
edit_url:
type: string
nullable: true
description: "Returns a url in the third party system for editing the dashboard.\n\nReturns:\n str url in the external system where one can edit the dashboard."
readOnly: true
external:
type: object
additionalProperties: {}
nullable: true
description: "Returns an up to date representation of the dashboard provided by the external system.\n\nReturns:\n A dictionary representation of the dashboard in the external system or None if this dashboard is\n not a metabase dashboard.\n\nRaises:\n MBNotFoundError: raised if the dashboard is not found in the external system."
readOnly: true
default:
type: boolean
publish_status:
$ref: '#/components/schemas/PublishStatusEnum'
sharing_scheme:
$ref: '#/components/schemas/SharingSchemeF41Enum'
sharing_users: {}
required:
- created_at
- edit_url
- external
- external_id
- id
- name
- sharing_users
- source
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://portal.cubesoftware.com/o/authorize/
tokenUrl: https://api.cubesoftware.com/o/token/
scopes: {}
description: Standard Cube OAuth 2.0 flow