Duplicate a dashboard digest
curl --request POST \
--url https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate \
--header 'Authorization: Bearer <token>' \
--header 'x-tenant-id: <x-tenant-id>'import requests
url = "https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate"
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-tenant-id': '<x-tenant-id>', Authorization: 'Bearer <token>'}
};
fetch('https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate', 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://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"x-tenant-id: <x-tenant-id>"
],
]);
$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://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
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.post("https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"dashboard_id": "<string>",
"name": "<string>",
"schedule": {
"frequency": "daily"
},
"delivery_format": "pdf",
"destination_ids": [
"<string>"
],
"destinations": [
{
"id": "<string>",
"type": "slack",
"label": "<string>"
}
],
"created_by": "<string>",
"create_time": "<string>",
"update_time": "<string>",
"etag": "<string>",
"custom_message": "<string>",
"state": "active",
"filters": [
{
"field": "warehouse_name",
"operator": "in",
"values": [
"TRANSFORMING"
]
},
{
"field": "user_name",
"operator": "is not"
},
{
"filters": [
{
"field": "database_name",
"operator": "in",
"values": [
"ANALYTICS"
]
},
{
"field": "database_name",
"operator": "in",
"values": [
"RAW"
]
}
],
"operator": "or"
}
],
"latest_run": {
"id": "<string>",
"status": "running",
"start_time": "<string>",
"scheduled_date": "<string>",
"end_time": "<string>"
}
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}dashboards
Duplicate a dashboard digest
Creates a copy of a digest on the same dashboard, named "<original name> (Copy)". Run history is not copied.
POST
/
dashboards
/
{dashboard_id}
/
digests
/
{digest_id}
/
actions
/
duplicate
Duplicate a dashboard digest
curl --request POST \
--url https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate \
--header 'Authorization: Bearer <token>' \
--header 'x-tenant-id: <x-tenant-id>'import requests
url = "https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate"
headers = {
"x-tenant-id": "<x-tenant-id>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-tenant-id': '<x-tenant-id>', Authorization: 'Bearer <token>'}
};
fetch('https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate', 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://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"x-tenant-id: <x-tenant-id>"
],
]);
$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://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("x-tenant-id", "<x-tenant-id>")
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.post("https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate")
.header("x-tenant-id", "<x-tenant-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.select.dev/v2/dashboards/{dashboard_id}/digests/{digest_id}/actions/duplicate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-tenant-id"] = '<x-tenant-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"dashboard_id": "<string>",
"name": "<string>",
"schedule": {
"frequency": "daily"
},
"delivery_format": "pdf",
"destination_ids": [
"<string>"
],
"destinations": [
{
"id": "<string>",
"type": "slack",
"label": "<string>"
}
],
"created_by": "<string>",
"create_time": "<string>",
"update_time": "<string>",
"etag": "<string>",
"custom_message": "<string>",
"state": "active",
"filters": [
{
"field": "warehouse_name",
"operator": "in",
"values": [
"TRANSFORMING"
]
},
{
"field": "user_name",
"operator": "is not"
},
{
"filters": [
{
"field": "database_name",
"operator": "in",
"values": [
"ANALYTICS"
]
},
{
"field": "database_name",
"operator": "in",
"values": [
"RAW"
]
}
],
"operator": "or"
}
],
"latest_run": {
"id": "<string>",
"status": "running",
"start_time": "<string>",
"scheduled_date": "<string>",
"end_time": "<string>"
}
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "validation_failed",
"retryable": true,
"type": "about:blank",
"details": [
{}
]
}Response
Successful Response
A schedule that captures a dashboard and delivers it to destinations.
Filters applied to the dashboard when it is captured, in place of the dashboard's own saved filters. Omit this field or set it to null to capture the dashboard with its saved filters; set it to an empty array to capture the dashboard with no filters at all. Each entry names a field, an operator, and the value or values to compare against, and entries are combined with AND; an entry may instead be an and/or group containing its own entries in the same form. The operators available are the ones the dashboard's filter controls offer. A filter naming a field that none of the dashboard's blocks expose has no effect on the capture.
Example:
[
{
"field": "warehouse_name",
"operator": "in",
"values": ["TRANSFORMING"]
},
{
"field": "user_name",
"operator": "is not"
},
{
"filters": [
{
"field": "database_name",
"operator": "in",
"values": ["ANALYTICS"]
},
{
"field": "database_name",
"operator": "in",
"values": ["RAW"]
}
],
"operator": "or"
}
]

