curl --request POST \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"reportId": 123,
"notifications": {
"email": true,
"inbox": true,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"schedule": {
"cronExpressions": [
"<string>"
],
"timezone": "<string>"
},
"shape": {
"columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": true
}
]
}
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries"
payload = {
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"reportId": 123,
"notifications": {
"email": True,
"inbox": True,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"schedule": {
"cronExpressions": ["<string>"],
"timezone": "<string>"
},
"shape": { "columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": True
}
] }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
destination: {
spreadsheet: '<string>',
anchorCell: '<string>',
sheetId: 1,
sheetName: '<string>'
},
name: '<string>',
reportId: 123,
notifications: {
email: true,
inbox: true,
slackChannelId: '<string>',
slackChannelName: '<string>'
},
schedule: {cronExpressions: ['<string>'], timezone: '<string>'},
shape: {columns: [{column: '<string>', header: '<string>', placeholder: true}]}
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries', 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}/report-deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'destination' => [
'spreadsheet' => '<string>',
'anchorCell' => '<string>',
'sheetId' => 1,
'sheetName' => '<string>'
],
'name' => '<string>',
'reportId' => 123,
'notifications' => [
'email' => true,
'inbox' => true,
'slackChannelId' => '<string>',
'slackChannelName' => '<string>'
],
'schedule' => [
'cronExpressions' => [
'<string>'
],
'timezone' => '<string>'
],
'shape' => [
'columns' => [
[
'column' => '<string>',
'header' => '<string>',
'placeholder' => true
]
]
]
]),
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}/report-deliveries"
payload := strings.NewReader("{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"reportId\": 123,\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"schedule\": {\n \"cronExpressions\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\"\n },\n \"shape\": {\n \"columns\": [\n {\n \"column\": \"<string>\",\n \"header\": \"<string>\",\n \"placeholder\": true\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"reportId\": 123,\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"schedule\": {\n \"cronExpressions\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\"\n },\n \"shape\": {\n \"columns\": [\n {\n \"column\": \"<string>\",\n \"header\": \"<string>\",\n \"placeholder\": true\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"reportId\": 123,\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"schedule\": {\n \"cronExpressions\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\"\n },\n \"shape\": {\n \"columns\": [\n {\n \"column\": \"<string>\",\n \"header\": \"<string>\",\n \"placeholder\": true\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"deploymentId": 123,
"destination": {
"anchorCell": "<string>",
"spreadsheetId": "<string>",
"sheetId": 123,
"sheetName": "<string>"
},
"id": 123,
"name": "<string>",
"notifications": {
"email": true,
"inbox": true,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"status": "active",
"writeMode": "overwrite",
"lastRunAt": "2023-11-07T05:31:56Z",
"lastSuccessAt": "2023-11-07T05:31:56Z",
"nextRunAt": "<unknown>",
"ownerUserId": 123,
"pausedAt": "<unknown>",
"reportId": 123,
"reportName": "<string>",
"reportPublicId": "<string>",
"reportWorkbookId": 123,
"runAsUserId": 123,
"runningSince": "2023-11-07T05:31:56Z",
"schedule": {
"cronExpressions": [
"<string>"
],
"timezone": "<string>"
},
"shape": {
"columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": true
}
]
},
"sheetTitle": "<string>",
"spreadsheetTitle": "<string>"
}Create a report delivery
curl --request POST \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"reportId": 123,
"notifications": {
"email": true,
"inbox": true,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"schedule": {
"cronExpressions": [
"<string>"
],
"timezone": "<string>"
},
"shape": {
"columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": true
}
]
}
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries"
payload = {
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"reportId": 123,
"notifications": {
"email": True,
"inbox": True,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"schedule": {
"cronExpressions": ["<string>"],
"timezone": "<string>"
},
"shape": { "columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": True
}
] }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
destination: {
spreadsheet: '<string>',
anchorCell: '<string>',
sheetId: 1,
sheetName: '<string>'
},
name: '<string>',
reportId: 123,
notifications: {
email: true,
inbox: true,
slackChannelId: '<string>',
slackChannelName: '<string>'
},
schedule: {cronExpressions: ['<string>'], timezone: '<string>'},
shape: {columns: [{column: '<string>', header: '<string>', placeholder: true}]}
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries', 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}/report-deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'destination' => [
'spreadsheet' => '<string>',
'anchorCell' => '<string>',
'sheetId' => 1,
'sheetName' => '<string>'
],
'name' => '<string>',
'reportId' => 123,
'notifications' => [
'email' => true,
'inbox' => true,
'slackChannelId' => '<string>',
'slackChannelName' => '<string>'
],
'schedule' => [
'cronExpressions' => [
'<string>'
],
'timezone' => '<string>'
],
'shape' => [
'columns' => [
[
'column' => '<string>',
'header' => '<string>',
'placeholder' => true
]
]
]
]),
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}/report-deliveries"
payload := strings.NewReader("{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"reportId\": 123,\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"schedule\": {\n \"cronExpressions\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\"\n },\n \"shape\": {\n \"columns\": [\n {\n \"column\": \"<string>\",\n \"header\": \"<string>\",\n \"placeholder\": true\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"reportId\": 123,\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"schedule\": {\n \"cronExpressions\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\"\n },\n \"shape\": {\n \"columns\": [\n {\n \"column\": \"<string>\",\n \"header\": \"<string>\",\n \"placeholder\": true\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"reportId\": 123,\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"schedule\": {\n \"cronExpressions\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\"\n },\n \"shape\": {\n \"columns\": [\n {\n \"column\": \"<string>\",\n \"header\": \"<string>\",\n \"placeholder\": true\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"deploymentId": 123,
"destination": {
"anchorCell": "<string>",
"spreadsheetId": "<string>",
"sheetId": 123,
"sheetName": "<string>"
},
"id": 123,
"name": "<string>",
"notifications": {
"email": true,
"inbox": true,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"status": "active",
"writeMode": "overwrite",
"lastRunAt": "2023-11-07T05:31:56Z",
"lastSuccessAt": "2023-11-07T05:31:56Z",
"nextRunAt": "<unknown>",
"ownerUserId": 123,
"pausedAt": "<unknown>",
"reportId": 123,
"reportName": "<string>",
"reportPublicId": "<string>",
"reportWorkbookId": 123,
"runAsUserId": 123,
"runningSince": "2023-11-07T05:31:56Z",
"schedule": {
"cronExpressions": [
"<string>"
],
"timezone": "<string>"
},
"shape": {
"columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": true
}
]
},
"sheetTitle": "<string>",
"spreadsheetTitle": "<string>"
}destination.anchorCell. The caller owns it: their Google account writes, with their data access. Needs read access to the report.Authorizations
Token authentication. Send Authorization: Bearer <YOUR_TOKEN>.
Path Parameters
Numeric id of the deployment that owns the delivery.
Body
CreateReportDeliveryInput
Show child attributes
Show child attributes
1 - 255Id of the report whose results are delivered. It must belong to this deployment, and the caller must be able to read it.
How the owner hears that the delivery failed or recovered. A delivery that runs more than once a day reports only changes in its status; a daily or rarer one reports every failed run. Omit it for the inbox only.
Show child attributes
Show child attributes
When the delivery runs. Omit it for a delivery that runs only on request.
Show child attributes
Show child attributes
Which columns land in the sheet, in what order, under which headers. Omit it to deliver every column the query returns, in its order, headed by its name.
Show child attributes
Show child attributes
overwrite, append, new_sheet Response
Show child attributes
Show child attributes
How the owner hears that the delivery failed or recovered. A delivery that runs more than once a day reports only changes in its status; a daily or rarer one reports every failed run.
Show child attributes
Show child attributes
active, failing, needs_reconnect, orphaned overwrite, append, new_sheet When the last run finished. null before the first.
When the last successful run finished. null if none has succeeded.
When the schedule next fires. null when there is no schedule or it is paused.
The accountable user, whose Google account writes the sheet. null once that user has been deleted.
When the delivery was paused. null if it is not.
The delivered report. null once that report has been deleted.
Name of the delivered report. null once that report has been deleted.
Public id of the delivered report. null once that report has been deleted.
Workbook holding the delivered report. null once that report has been deleted.
The user whose data access the query runs with. null once that user has been deleted.
When the run still in progress started. null while no run is going.
null for a delivery that runs only on request.
Show child attributes
Show child attributes
null when every column is delivered as is.
Show child attributes
Show child attributes
Current title of the destination tab, read from Google at most every few minutes. null for a new_sheet delivery, or before its title has been read.
Title of the destination spreadsheet, read from Google at most every few minutes and by each run. null before then.