curl --request PUT \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"notifications": {
"email": true,
"inbox": true,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"ownerUserId": 123,
"reportId": 123,
"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/{id}"
payload = {
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"notifications": {
"email": True,
"inbox": True,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"ownerUserId": 123,
"reportId": 123,
"schedule": {
"cronExpressions": ["<string>"],
"timezone": "<string>"
},
"shape": { "columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": True
}
] }
}
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({
destination: {
spreadsheet: '<string>',
anchorCell: '<string>',
sheetId: 1,
sheetName: '<string>'
},
name: '<string>',
notifications: {
email: true,
inbox: true,
slackChannelId: '<string>',
slackChannelName: '<string>'
},
ownerUserId: 123,
reportId: 123,
schedule: {cronExpressions: ['<string>'], timezone: '<string>'},
shape: {columns: [{column: '<string>', header: '<string>', placeholder: true}]}
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries/{id}', 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/{id}",
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([
'destination' => [
'spreadsheet' => '<string>',
'anchorCell' => '<string>',
'sheetId' => 1,
'sheetName' => '<string>'
],
'name' => '<string>',
'notifications' => [
'email' => true,
'inbox' => true,
'slackChannelId' => '<string>',
'slackChannelName' => '<string>'
],
'ownerUserId' => 123,
'reportId' => 123,
'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/{id}"
payload := strings.NewReader("{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"ownerUserId\": 123,\n \"reportId\": 123,\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("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}/report-deliveries/{id}")
.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 \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"ownerUserId\": 123,\n \"reportId\": 123,\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/{id}")
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 \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"ownerUserId\": 123,\n \"reportId\": 123,\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>"
}Update a report delivery
curl --request PUT \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"notifications": {
"email": true,
"inbox": true,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"ownerUserId": 123,
"reportId": 123,
"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/{id}"
payload = {
"destination": {
"spreadsheet": "<string>",
"anchorCell": "<string>",
"sheetId": 1,
"sheetName": "<string>"
},
"name": "<string>",
"notifications": {
"email": True,
"inbox": True,
"slackChannelId": "<string>",
"slackChannelName": "<string>"
},
"ownerUserId": 123,
"reportId": 123,
"schedule": {
"cronExpressions": ["<string>"],
"timezone": "<string>"
},
"shape": { "columns": [
{
"column": "<string>",
"header": "<string>",
"placeholder": True
}
] }
}
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({
destination: {
spreadsheet: '<string>',
anchorCell: '<string>',
sheetId: 1,
sheetName: '<string>'
},
name: '<string>',
notifications: {
email: true,
inbox: true,
slackChannelId: '<string>',
slackChannelName: '<string>'
},
ownerUserId: 123,
reportId: 123,
schedule: {cronExpressions: ['<string>'], timezone: '<string>'},
shape: {columns: [{column: '<string>', header: '<string>', placeholder: true}]}
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/report-deliveries/{id}', 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/{id}",
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([
'destination' => [
'spreadsheet' => '<string>',
'anchorCell' => '<string>',
'sheetId' => 1,
'sheetName' => '<string>'
],
'name' => '<string>',
'notifications' => [
'email' => true,
'inbox' => true,
'slackChannelId' => '<string>',
'slackChannelName' => '<string>'
],
'ownerUserId' => 123,
'reportId' => 123,
'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/{id}"
payload := strings.NewReader("{\n \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"ownerUserId\": 123,\n \"reportId\": 123,\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("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}/report-deliveries/{id}")
.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 \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"ownerUserId\": 123,\n \"reportId\": 123,\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/{id}")
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 \"destination\": {\n \"spreadsheet\": \"<string>\",\n \"anchorCell\": \"<string>\",\n \"sheetId\": 1,\n \"sheetName\": \"<string>\"\n },\n \"name\": \"<string>\",\n \"notifications\": {\n \"email\": true,\n \"inbox\": true,\n \"slackChannelId\": \"<string>\",\n \"slackChannelName\": \"<string>\"\n },\n \"ownerUserId\": 123,\n \"reportId\": 123,\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 and schedule are replaced whole, and schedule: null removes it. A new reportId needs read access to that report; ownerUserId transfers the delivery.Authorizations
Token authentication. Send Authorization: Bearer <YOUR_TOKEN>.
Path Parameters
Numeric id of the deployment that owns the delivery.
Numeric id of the report delivery.
Body
UpdateReportDeliveryInput
Replaces the whole destination.
Show child attributes
Show child attributes
1 - 255Replaces the whole setting; null resets it to the inbox only. 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
Transfer the delivery to this active user, who must be able to read its report. They become owner and run-as user. Admins only.
Deliver another report. The caller must be able to read it.
Replaces the whole schedule. null removes it, so the delivery runs only on request.
Show child attributes
Show child attributes
Replaces the whole shape. null removes it, delivering every column.
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.