curl --request PUT \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customCron": "<string>",
"dayOfMonth": 123,
"dayOfWeek": 123,
"filters": [
{
"member": "<string>",
"caseSensitive": "<unknown>",
"endInclusive": "<unknown>",
"startInclusive": "<unknown>",
"value": "<string>"
}
],
"hour": 123,
"isEnabled": true,
"minute": 123,
"notificationAiSummary": true,
"notificationEnabled": true,
"timeGrains": [
{
"grain": "<string>",
"member": "<string>"
}
],
"timezone": "<string>"
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{id}"
payload = {
"customCron": "<string>",
"dayOfMonth": 123,
"dayOfWeek": 123,
"filters": [
{
"member": "<string>",
"caseSensitive": "<unknown>",
"endInclusive": "<unknown>",
"startInclusive": "<unknown>",
"value": "<string>"
}
],
"hour": 123,
"isEnabled": True,
"minute": 123,
"notificationAiSummary": True,
"notificationEnabled": True,
"timeGrains": [
{
"grain": "<string>",
"member": "<string>"
}
],
"timezone": "<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({
customCron: '<string>',
dayOfMonth: 123,
dayOfWeek: 123,
filters: [
{
member: '<string>',
caseSensitive: '<unknown>',
endInclusive: '<unknown>',
startInclusive: '<unknown>',
value: '<string>'
}
],
hour: 123,
isEnabled: true,
minute: 123,
notificationAiSummary: true,
notificationEnabled: true,
timeGrains: [{grain: '<string>', member: '<string>'}],
timezone: '<string>'
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{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}/notifications/{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([
'customCron' => '<string>',
'dayOfMonth' => 123,
'dayOfWeek' => 123,
'filters' => [
[
'member' => '<string>',
'caseSensitive' => '<unknown>',
'endInclusive' => '<unknown>',
'startInclusive' => '<unknown>',
'value' => '<string>'
]
],
'hour' => 123,
'isEnabled' => true,
'minute' => 123,
'notificationAiSummary' => true,
'notificationEnabled' => true,
'timeGrains' => [
[
'grain' => '<string>',
'member' => '<string>'
]
],
'timezone' => '<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}/notifications/{id}"
payload := strings.NewReader("{\n \"customCron\": \"<string>\",\n \"dayOfMonth\": 123,\n \"dayOfWeek\": 123,\n \"filters\": [\n {\n \"member\": \"<string>\",\n \"caseSensitive\": \"<unknown>\",\n \"endInclusive\": \"<unknown>\",\n \"startInclusive\": \"<unknown>\",\n \"value\": \"<string>\"\n }\n ],\n \"hour\": 123,\n \"isEnabled\": true,\n \"minute\": 123,\n \"notificationAiSummary\": true,\n \"notificationEnabled\": true,\n \"timeGrains\": [\n {\n \"grain\": \"<string>\",\n \"member\": \"<string>\"\n }\n ],\n \"timezone\": \"<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}/notifications/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customCron\": \"<string>\",\n \"dayOfMonth\": 123,\n \"dayOfWeek\": 123,\n \"filters\": [\n {\n \"member\": \"<string>\",\n \"caseSensitive\": \"<unknown>\",\n \"endInclusive\": \"<unknown>\",\n \"startInclusive\": \"<unknown>\",\n \"value\": \"<string>\"\n }\n ],\n \"hour\": 123,\n \"isEnabled\": true,\n \"minute\": 123,\n \"notificationAiSummary\": true,\n \"notificationEnabled\": true,\n \"timeGrains\": [\n {\n \"grain\": \"<string>\",\n \"member\": \"<string>\"\n }\n ],\n \"timezone\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{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 \"customCron\": \"<string>\",\n \"dayOfMonth\": 123,\n \"dayOfWeek\": 123,\n \"filters\": [\n {\n \"member\": \"<string>\",\n \"caseSensitive\": \"<unknown>\",\n \"endInclusive\": \"<unknown>\",\n \"startInclusive\": \"<unknown>\",\n \"value\": \"<string>\"\n }\n ],\n \"hour\": 123,\n \"isEnabled\": true,\n \"minute\": 123,\n \"notificationAiSummary\": true,\n \"notificationEnabled\": true,\n \"timeGrains\": [\n {\n \"grain\": \"<string>\",\n \"member\": \"<string>\"\n }\n ],\n \"timezone\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cronExpression": "<string>",
"dashboardId": 123,
"deploymentId": 123,
"humanReadableSchedule": "<string>",
"id": 123,
"isEnabled": true,
"notificationAiSummary": true,
"notificationEnabled": true,
"notificationFormat": "<string>",
"timezone": "<string>",
"filters": [
{
"member": "<string>",
"caseSensitive": null,
"endInclusive": null,
"operator": "equals",
"startInclusive": null,
"value": "<string>"
}
],
"timeGrains": [
{
"grain": "<string>",
"member": "<string>"
}
]
}Update a scheduled notification
curl --request PUT \
--url https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customCron": "<string>",
"dayOfMonth": 123,
"dayOfWeek": 123,
"filters": [
{
"member": "<string>",
"caseSensitive": "<unknown>",
"endInclusive": "<unknown>",
"startInclusive": "<unknown>",
"value": "<string>"
}
],
"hour": 123,
"isEnabled": true,
"minute": 123,
"notificationAiSummary": true,
"notificationEnabled": true,
"timeGrains": [
{
"grain": "<string>",
"member": "<string>"
}
],
"timezone": "<string>"
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{id}"
payload = {
"customCron": "<string>",
"dayOfMonth": 123,
"dayOfWeek": 123,
"filters": [
{
"member": "<string>",
"caseSensitive": "<unknown>",
"endInclusive": "<unknown>",
"startInclusive": "<unknown>",
"value": "<string>"
}
],
"hour": 123,
"isEnabled": True,
"minute": 123,
"notificationAiSummary": True,
"notificationEnabled": True,
"timeGrains": [
{
"grain": "<string>",
"member": "<string>"
}
],
"timezone": "<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({
customCron: '<string>',
dayOfMonth: 123,
dayOfWeek: 123,
filters: [
{
member: '<string>',
caseSensitive: '<unknown>',
endInclusive: '<unknown>',
startInclusive: '<unknown>',
value: '<string>'
}
],
hour: 123,
isEnabled: true,
minute: 123,
notificationAiSummary: true,
notificationEnabled: true,
timeGrains: [{grain: '<string>', member: '<string>'}],
timezone: '<string>'
})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{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}/notifications/{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([
'customCron' => '<string>',
'dayOfMonth' => 123,
'dayOfWeek' => 123,
'filters' => [
[
'member' => '<string>',
'caseSensitive' => '<unknown>',
'endInclusive' => '<unknown>',
'startInclusive' => '<unknown>',
'value' => '<string>'
]
],
'hour' => 123,
'isEnabled' => true,
'minute' => 123,
'notificationAiSummary' => true,
'notificationEnabled' => true,
'timeGrains' => [
[
'grain' => '<string>',
'member' => '<string>'
]
],
'timezone' => '<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}/notifications/{id}"
payload := strings.NewReader("{\n \"customCron\": \"<string>\",\n \"dayOfMonth\": 123,\n \"dayOfWeek\": 123,\n \"filters\": [\n {\n \"member\": \"<string>\",\n \"caseSensitive\": \"<unknown>\",\n \"endInclusive\": \"<unknown>\",\n \"startInclusive\": \"<unknown>\",\n \"value\": \"<string>\"\n }\n ],\n \"hour\": 123,\n \"isEnabled\": true,\n \"minute\": 123,\n \"notificationAiSummary\": true,\n \"notificationEnabled\": true,\n \"timeGrains\": [\n {\n \"grain\": \"<string>\",\n \"member\": \"<string>\"\n }\n ],\n \"timezone\": \"<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}/notifications/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customCron\": \"<string>\",\n \"dayOfMonth\": 123,\n \"dayOfWeek\": 123,\n \"filters\": [\n {\n \"member\": \"<string>\",\n \"caseSensitive\": \"<unknown>\",\n \"endInclusive\": \"<unknown>\",\n \"startInclusive\": \"<unknown>\",\n \"value\": \"<string>\"\n }\n ],\n \"hour\": 123,\n \"isEnabled\": true,\n \"minute\": 123,\n \"notificationAiSummary\": true,\n \"notificationEnabled\": true,\n \"timeGrains\": [\n {\n \"grain\": \"<string>\",\n \"member\": \"<string>\"\n }\n ],\n \"timezone\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/deployments/{deploymentId}/notifications/{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 \"customCron\": \"<string>\",\n \"dayOfMonth\": 123,\n \"dayOfWeek\": 123,\n \"filters\": [\n {\n \"member\": \"<string>\",\n \"caseSensitive\": \"<unknown>\",\n \"endInclusive\": \"<unknown>\",\n \"startInclusive\": \"<unknown>\",\n \"value\": \"<string>\"\n }\n ],\n \"hour\": 123,\n \"isEnabled\": true,\n \"minute\": 123,\n \"notificationAiSummary\": true,\n \"notificationEnabled\": true,\n \"timeGrains\": [\n {\n \"grain\": \"<string>\",\n \"member\": \"<string>\"\n }\n ],\n \"timezone\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cronExpression": "<string>",
"dashboardId": 123,
"deploymentId": 123,
"humanReadableSchedule": "<string>",
"id": 123,
"isEnabled": true,
"notificationAiSummary": true,
"notificationEnabled": true,
"notificationFormat": "<string>",
"timezone": "<string>",
"filters": [
{
"member": "<string>",
"caseSensitive": null,
"endInclusive": null,
"operator": "equals",
"startInclusive": null,
"value": "<string>"
}
],
"timeGrains": [
{
"grain": "<string>",
"member": "<string>"
}
]
}scheduleType + time fields or customCron, timezone), along with isEnabled, notificationEnabled, and notificationFormat. Omitted fields are left unchanged. This endpoint never modifies recipients — manage those through the /recipients sub-resource. Returns 404 if the notification is not part of this deployment.Authorizations
Token authentication. Send Authorization: Bearer <YOUR_TOKEN>.
Path Parameters
Numeric id of the deployment that owns the notification.
Numeric id of the notification (scheduled run).
Body
UpdateNotificationInput
Dimension filters applied to the dashboard when the notification is rendered. Replaces the existing set when provided.
Show child attributes
Show child attributes
Enable or disable the schedule
Include an AI-generated "what changed" summary in the notification body. Off by default.
png, pdf HOURLY, DAILY, WEEKLY, MONTHLY, CUSTOM Time-grain overrides applied to the dashboard when the notification is rendered. Replaces the existing set when provided.
Show child attributes
Show child attributes
Response
Human-readable description of the cron schedule
Whether this notification carries an AI-generated "what changed" summary in its body.
Dimension filters applied when the notification is rendered.
Show child attributes
Show child attributes
Time-grain overrides applied when the notification is rendered.
Show child attributes
Show child attributes