List workbooks accessible to an embed tenant
curl --request GET \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks \
--header 'Authorization: Bearer <token>'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"calculatedFields": {},
"createdAt": "2023-12-25",
"deploymentId": 123,
"id": 123,
"meta": {},
"name": "<string>",
"type": "FOLDER",
"updatedAt": "2023-12-25",
"createdBy": 123,
"dashboardDraft": {
"app": {
"entry": "<string>",
"files": {},
"html": "<string>",
"manifest": {
"dependencies": {},
"version": 123
}
},
"description": "<string>",
"kind": "CLASSIC",
"layout": {
"breakpoints": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"cols": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"containerPadding": [
123
],
"margin": [
123
],
"rowHeight": 123
},
"settings": {},
"theme": {},
"title": "<string>",
"widgets": [
{
"id": "<string>",
"position": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"type": "CHART",
"config": {},
"responsiveLayouts": {
"lg": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"md": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"sm": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xxs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
}
},
"style": {}
}
]
},
"dashboardPublished": {
"app": {
"entry": "<string>",
"files": {},
"html": "<string>",
"manifest": {
"dependencies": {},
"version": 123
}
},
"description": "<string>",
"kind": "CLASSIC",
"layout": {
"breakpoints": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"cols": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"containerPadding": [
123
],
"margin": [
123
],
"rowHeight": 123
},
"settings": {},
"theme": {},
"title": "<string>",
"widgets": [
{
"id": "<string>",
"position": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"type": "CHART",
"config": {},
"responsiveLayouts": {
"lg": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"md": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"sm": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xxs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
}
},
"style": {}
}
]
},
"folderId": 123,
"folderPath": [
{
"id": 123,
"name": "<string>"
}
],
"isFavorite": true,
"publishedDashboard": {
"allowEmbed": true,
"config": {
"app": {
"entry": "<string>",
"files": {},
"html": "<string>",
"manifest": {
"dependencies": {},
"version": 123
}
},
"description": "<string>",
"kind": "CLASSIC",
"layout": {
"breakpoints": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"cols": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"containerPadding": [
123
],
"margin": [
123
],
"rowHeight": 123
},
"settings": {},
"theme": {},
"title": "<string>",
"widgets": [
{
"id": "<string>",
"position": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"type": "CHART",
"config": {},
"responsiveLayouts": {
"lg": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"md": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"sm": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xxs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
}
},
"style": {}
}
]
},
"deploymentId": 123,
"id": 123,
"publicId": "<string>",
"reportSnapshots": [
{
"id": 123,
"reportId": 123,
"versionNumber": 123,
"description": "<string>",
"fillMissingRows": {
"member": "<string>",
"excludedDimensions": [
"<string>"
]
},
"isSourceReport": true,
"kind": "vega",
"meta": {},
"name": "<string>",
"periodComparisons": [
{
"measure": "<string>",
"offset": {
"amount": 123,
"unit": "<string>"
},
"timeDimension": "<string>",
"outputs": [
"<string>"
]
}
],
"preferences": {
"columnFormats": {}
},
"pythonCode": "<string>",
"spec": "<string>",
"sqlQuery": "<string>",
"title": "<string>"
}
],
"status": "draft",
"versionId": 123,
"versionNumber": 123,
"workbookId": 123,
"createdBy": 123,
"description": "<string>",
"fromSharedWorkspace": true,
"restrictDataDownload": true,
"title": "<string>",
"useBoardDashboards": true
},
"slug": "<string>",
"user": {
"email": "<string>",
"id": 123,
"firstName": "<string>",
"picture": "<string>"
},
"userId": 123
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"endCursor": "<string>",
"startCursor": "<string>"
}
}Dashboard Embed Access
List workbooks accessible to an embed tenant
GET
/
api
/
v1
/
deployments
/
{deploymentId}
/
embed-tenants
/
{embedTenantName}
/
workbooks
List workbooks accessible to an embed tenant
curl --request GET \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks \
--header 'Authorization: Bearer <token>'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/embed-tenants/{embedTenantName}/workbooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"calculatedFields": {},
"createdAt": "2023-12-25",
"deploymentId": 123,
"id": 123,
"meta": {},
"name": "<string>",
"type": "FOLDER",
"updatedAt": "2023-12-25",
"createdBy": 123,
"dashboardDraft": {
"app": {
"entry": "<string>",
"files": {},
"html": "<string>",
"manifest": {
"dependencies": {},
"version": 123
}
},
"description": "<string>",
"kind": "CLASSIC",
"layout": {
"breakpoints": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"cols": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"containerPadding": [
123
],
"margin": [
123
],
"rowHeight": 123
},
"settings": {},
"theme": {},
"title": "<string>",
"widgets": [
{
"id": "<string>",
"position": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"type": "CHART",
"config": {},
"responsiveLayouts": {
"lg": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"md": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"sm": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xxs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
}
},
"style": {}
}
]
},
"dashboardPublished": {
"app": {
"entry": "<string>",
"files": {},
"html": "<string>",
"manifest": {
"dependencies": {},
"version": 123
}
},
"description": "<string>",
"kind": "CLASSIC",
"layout": {
"breakpoints": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"cols": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"containerPadding": [
123
],
"margin": [
123
],
"rowHeight": 123
},
"settings": {},
"theme": {},
"title": "<string>",
"widgets": [
{
"id": "<string>",
"position": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"type": "CHART",
"config": {},
"responsiveLayouts": {
"lg": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"md": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"sm": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xxs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
}
},
"style": {}
}
]
},
"folderId": 123,
"folderPath": [
{
"id": 123,
"name": "<string>"
}
],
"isFavorite": true,
"publishedDashboard": {
"allowEmbed": true,
"config": {
"app": {
"entry": "<string>",
"files": {},
"html": "<string>",
"manifest": {
"dependencies": {},
"version": 123
}
},
"description": "<string>",
"kind": "CLASSIC",
"layout": {
"breakpoints": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"cols": {
"lg": 123,
"md": 123,
"sm": 123,
"xs": 123,
"xxs": 123
},
"containerPadding": [
123
],
"margin": [
123
],
"rowHeight": 123
},
"settings": {},
"theme": {},
"title": "<string>",
"widgets": [
{
"id": "<string>",
"position": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"type": "CHART",
"config": {},
"responsiveLayouts": {
"lg": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"md": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"sm": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
},
"xxs": {
"h": 123,
"w": 123,
"x": 123,
"y": 123
}
},
"style": {}
}
]
},
"deploymentId": 123,
"id": 123,
"publicId": "<string>",
"reportSnapshots": [
{
"id": 123,
"reportId": 123,
"versionNumber": 123,
"description": "<string>",
"fillMissingRows": {
"member": "<string>",
"excludedDimensions": [
"<string>"
]
},
"isSourceReport": true,
"kind": "vega",
"meta": {},
"name": "<string>",
"periodComparisons": [
{
"measure": "<string>",
"offset": {
"amount": 123,
"unit": "<string>"
},
"timeDimension": "<string>",
"outputs": [
"<string>"
]
}
],
"preferences": {
"columnFormats": {}
},
"pythonCode": "<string>",
"spec": "<string>",
"sqlQuery": "<string>",
"title": "<string>"
}
],
"status": "draft",
"versionId": 123,
"versionNumber": 123,
"workbookId": 123,
"createdBy": 123,
"description": "<string>",
"fromSharedWorkspace": true,
"restrictDataDownload": true,
"title": "<string>",
"useBoardDashboards": true
},
"slug": "<string>",
"user": {
"email": "<string>",
"id": 123,
"firstName": "<string>",
"picture": "<string>"
},
"userId": 123
}
],
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": true,
"endCursor": "<string>",
"startCursor": "<string>"
}
}🔒 Admin only. Requires administrator privileges — the authenticated principal (API key, embed JWT, or any bearer token) must belong to a user with the admin role.
Return every workbook the named embed tenant can access in this deployment. Effective access includes workbooks shared directly with the tenant, workbooks shared with all embed users, and workbooks inherited from shared folders. Supports
first/after cursor pagination.
Filter workbooks by how access is granted:
tenant: the workbook itself is explicitly shared with the named embed tenant. Excludes workbooks available only through the all-embed-users group or a shared folder.allEmbedUsers: the workbook itself is explicitly shared with the built-in all-embed-users group, making it available to every embed tenant. Excludes tenant-specific direct shares and folder-inherited access.folder: access is inherited because the workbook is inside a shared folder or any of its descendant folders. The folder may be shared specifically with the named tenant or with all embed users.
Authorizations
Token authentication. Send Authorization: Bearer <YOUR_TOKEN>.
Query Parameters
Available options:
tenant, allEmbedUsers, folder Required range:
x >= 1