Connect a report to the calling spreadsheet
curl --request PUT \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalWorkbookId": "<string>",
"resultLocation": "<string>",
"endResultCell": "<string>"
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook"
payload = {
"externalWorkbookId": "<string>",
"resultLocation": "<string>",
"endResultCell": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalWorkbookId: '<string>',
resultLocation: '<string>',
endResultCell: '<string>'
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook', 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}/reports/{reportId}/connect-workbook",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'externalWorkbookId' => '<string>',
'resultLocation' => '<string>',
'endResultCell' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook"
payload := strings.NewReader("{\n \"externalWorkbookId\": \"<string>\",\n \"resultLocation\": \"<string>\",\n \"endResultCell\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"externalWorkbookId\": \"<string>\",\n \"resultLocation\": \"<string>\",\n \"endResultCell\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalWorkbookId\": \"<string>\",\n \"resultLocation\": \"<string>\",\n \"endResultCell\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-12-25",
"deploymentId": 123,
"id": 123,
"name": "<string>",
"publicId": "<string>",
"refreshedByUser": {
"email": "<string>",
"id": 123,
"firstName": "<string>",
"picture": "<string>"
},
"type": "FOLDER",
"updatedAt": "2023-12-25",
"user": {
"email": "<string>",
"id": 123,
"firstName": "<string>",
"picture": "<string>"
},
"userId": 123,
"canEdit": true,
"canManage": true,
"createdBy": 123,
"description": "<string>",
"endResultCell": "<string>",
"externalWorkbookId": "<string>",
"externalWorkbookPlacements": [
{
"resultLocation": "<string>",
"workbookId": "<string>",
"endResultCell": "<string>"
}
],
"folderId": 123,
"folderPath": [
{
"id": 123,
"name": "<string>"
}
],
"jsonQuery": "<string>",
"meta": {},
"pivotItems": {
"columns": [
"<string>"
],
"filters": [
"<string>"
],
"measures": [
"<string>"
],
"rows": [
"<string>"
]
},
"refreshedBy": 123,
"resultLocation": "<string>",
"rolesWithAccess": [
{
"actions": [
"All"
],
"id": 123,
"name": "<string>"
}
],
"source": "GOOGLE_SHEETS",
"sqlQuery": "<string>",
"title": "<string>",
"version": 123,
"workbookId": 123
}Reports
Connect a report to the calling spreadsheet
PUT
/
api
/
v1
/
deployments
/
{deploymentId}
/
reports
/
{reportId}
/
connect-workbook
Connect a report to the calling spreadsheet
curl --request PUT \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"externalWorkbookId": "<string>",
"resultLocation": "<string>",
"endResultCell": "<string>"
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook"
payload = {
"externalWorkbookId": "<string>",
"resultLocation": "<string>",
"endResultCell": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
externalWorkbookId: '<string>',
resultLocation: '<string>',
endResultCell: '<string>'
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook', 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}/reports/{reportId}/connect-workbook",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'externalWorkbookId' => '<string>',
'resultLocation' => '<string>',
'endResultCell' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook"
payload := strings.NewReader("{\n \"externalWorkbookId\": \"<string>\",\n \"resultLocation\": \"<string>\",\n \"endResultCell\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"externalWorkbookId\": \"<string>\",\n \"resultLocation\": \"<string>\",\n \"endResultCell\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/reports/{reportId}/connect-workbook")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalWorkbookId\": \"<string>\",\n \"resultLocation\": \"<string>\",\n \"endResultCell\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-12-25",
"deploymentId": 123,
"id": 123,
"name": "<string>",
"publicId": "<string>",
"refreshedByUser": {
"email": "<string>",
"id": 123,
"firstName": "<string>",
"picture": "<string>"
},
"type": "FOLDER",
"updatedAt": "2023-12-25",
"user": {
"email": "<string>",
"id": 123,
"firstName": "<string>",
"picture": "<string>"
},
"userId": 123,
"canEdit": true,
"canManage": true,
"createdBy": 123,
"description": "<string>",
"endResultCell": "<string>",
"externalWorkbookId": "<string>",
"externalWorkbookPlacements": [
{
"resultLocation": "<string>",
"workbookId": "<string>",
"endResultCell": "<string>"
}
],
"folderId": 123,
"folderPath": [
{
"id": 123,
"name": "<string>"
}
],
"jsonQuery": "<string>",
"meta": {},
"pivotItems": {
"columns": [
"<string>"
],
"filters": [
"<string>"
],
"measures": [
"<string>"
],
"rows": [
"<string>"
]
},
"refreshedBy": 123,
"resultLocation": "<string>",
"rolesWithAccess": [
{
"actions": [
"All"
],
"id": 123,
"name": "<string>"
}
],
"source": "GOOGLE_SHEETS",
"sqlQuery": "<string>",
"title": "<string>",
"version": 123,
"workbookId": 123
}Link a report to the caller’s own spreadsheet by recording its placement
(workbook id + result location) so the add-in can list and refresh it there.
This upserts only the placement for the given workbook and never changes the
report’s query, name, or other definition — so, like refresh, it requires only
read access to the report. A user who can view a report can place its data into
their own sheet without being its creator or having edit rights.
Authorizations
Token authentication. Send Authorization: Bearer <YOUR_TOKEN>.
Body
application/json
ConnectReportToWorkbookInput
Response
200 - application/json
Required string length:
12Pattern:
^[0-9A-Za-z]+$Show child attributes
Show child attributes
Available options:
FOLDER, WORKBOOK, REPORT Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Available options:
GOOGLE_SHEETS, EXCEL, PLAYGROUND, D3