curl --request PATCH \
--url https://api.ctrl-hub.com/v3/reports/{report_id} \
--header 'Content-Type: application/vnd.api+json' \
--header 'X-Session-Token: <api-key>' \
--data '
{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"schedule": {
"time": "09:00",
"day_of_week": 4,
"day_of_month": 16,
"anchor_date": "2023-12-25"
},
"recipients": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"options": {
"skip_empty": false
}
}
}
}
'import requests
url = "https://api.ctrl-hub.com/v3/reports/{report_id}"
payload = { "data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"schedule": {
"time": "09:00",
"day_of_week": 4,
"day_of_month": 16,
"anchor_date": "2023-12-25"
},
"recipients": [{ "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }],
"options": { "skip_empty": False }
}
} }
headers = {
"X-Session-Token": "<api-key>",
"Content-Type": "application/vnd.api+json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Session-Token': '<api-key>', 'Content-Type': 'application/vnd.api+json'},
body: JSON.stringify({
data: {
id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
type: '<string>',
attributes: {
name: '<string>',
schedule: {time: '09:00', day_of_week: 4, day_of_month: 16, anchor_date: '2023-12-25'},
recipients: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
options: {skip_empty: false}
}
}
})
};
fetch('https://api.ctrl-hub.com/v3/reports/{report_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://api.ctrl-hub.com/v3/reports/{report_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'type' => '<string>',
'attributes' => [
'name' => '<string>',
'schedule' => [
'time' => '09:00',
'day_of_week' => 4,
'day_of_month' => 16,
'anchor_date' => '2023-12-25'
],
'recipients' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'options' => [
'skip_empty' => false
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/vnd.api+json",
"X-Session-Token: <api-key>"
],
]);
$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://api.ctrl-hub.com/v3/reports/{report_id}"
payload := strings.NewReader("{\n \"data\": {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"<string>\",\n \"attributes\": {\n \"name\": \"<string>\",\n \"schedule\": {\n \"time\": \"09:00\",\n \"day_of_week\": 4,\n \"day_of_month\": 16,\n \"anchor_date\": \"2023-12-25\"\n },\n \"recipients\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"options\": {\n \"skip_empty\": false\n }\n }\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Session-Token", "<api-key>")
req.Header.Add("Content-Type", "application/vnd.api+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.ctrl-hub.com/v3/reports/{report_id}")
.header("X-Session-Token", "<api-key>")
.header("Content-Type", "application/vnd.api+json")
.body("{\n \"data\": {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"<string>\",\n \"attributes\": {\n \"name\": \"<string>\",\n \"schedule\": {\n \"time\": \"09:00\",\n \"day_of_week\": 4,\n \"day_of_month\": 16,\n \"anchor_date\": \"2023-12-25\"\n },\n \"recipients\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"options\": {\n \"skip_empty\": false\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/reports/{report_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Session-Token"] = '<api-key>'
request["Content-Type"] = 'application/vnd.api+json'
request.body = "{\n \"data\": {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"<string>\",\n \"attributes\": {\n \"name\": \"<string>\",\n \"schedule\": {\n \"time\": \"09:00\",\n \"day_of_week\": 4,\n \"day_of_month\": 16,\n \"anchor_date\": \"2023-12-25\"\n },\n \"recipients\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"options\": {\n \"skip_empty\": false\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"schedule": {
"time": "09:00",
"day_of_week": 4,
"day_of_month": 16,
"anchor_date": "2023-12-25"
},
"recipients": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"options": {
"skip_empty": false
},
"paused_reason": "<string>"
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"next_run_at": "2023-11-07T05:31:56Z",
"last_run_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
},
"query": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
},
"owner": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
}
}
},
"jsonapi": {
"version": "<string>"
},
"included": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"slug": "<string>",
"sandbox": true,
"description": "<string>",
"settings": {
"teams": {
"customer_representatives": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
}
},
"meta": {
"v3": true,
"status": "active",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"features": [
{
"name": "<string>",
"enabled": true,
"limit": 123
}
]
},
"relationships": {
"users": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"service_accounts": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"groups": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"teams": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"nomenclature": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
}
}
}
]
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"id": "7b4c8f12-3e9a-4d5b-8c6f-1a2b3c4d5e6f",
"status": "404",
"title": "Resource not found",
"detail": "The requested resource could not be found or does not exist.",
"code": "NOT_FOUND.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}Update a report
Save a report’s configuration, and pause or resume it.
The supplied attributes replace the stored ones wholesale, as a report is edited as one configuration object. The organisation, the query and the owner are preserved: repointing a report at a different query would silently change what its existing run history was a history of.
curl --request PATCH \
--url https://api.ctrl-hub.com/v3/reports/{report_id} \
--header 'Content-Type: application/vnd.api+json' \
--header 'X-Session-Token: <api-key>' \
--data '
{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"schedule": {
"time": "09:00",
"day_of_week": 4,
"day_of_month": 16,
"anchor_date": "2023-12-25"
},
"recipients": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"options": {
"skip_empty": false
}
}
}
}
'import requests
url = "https://api.ctrl-hub.com/v3/reports/{report_id}"
payload = { "data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"schedule": {
"time": "09:00",
"day_of_week": 4,
"day_of_month": 16,
"anchor_date": "2023-12-25"
},
"recipients": [{ "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }],
"options": { "skip_empty": False }
}
} }
headers = {
"X-Session-Token": "<api-key>",
"Content-Type": "application/vnd.api+json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Session-Token': '<api-key>', 'Content-Type': 'application/vnd.api+json'},
body: JSON.stringify({
data: {
id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
type: '<string>',
attributes: {
name: '<string>',
schedule: {time: '09:00', day_of_week: 4, day_of_month: 16, anchor_date: '2023-12-25'},
recipients: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
options: {skip_empty: false}
}
}
})
};
fetch('https://api.ctrl-hub.com/v3/reports/{report_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://api.ctrl-hub.com/v3/reports/{report_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'data' => [
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'type' => '<string>',
'attributes' => [
'name' => '<string>',
'schedule' => [
'time' => '09:00',
'day_of_week' => 4,
'day_of_month' => 16,
'anchor_date' => '2023-12-25'
],
'recipients' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'options' => [
'skip_empty' => false
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/vnd.api+json",
"X-Session-Token: <api-key>"
],
]);
$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://api.ctrl-hub.com/v3/reports/{report_id}"
payload := strings.NewReader("{\n \"data\": {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"<string>\",\n \"attributes\": {\n \"name\": \"<string>\",\n \"schedule\": {\n \"time\": \"09:00\",\n \"day_of_week\": 4,\n \"day_of_month\": 16,\n \"anchor_date\": \"2023-12-25\"\n },\n \"recipients\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"options\": {\n \"skip_empty\": false\n }\n }\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Session-Token", "<api-key>")
req.Header.Add("Content-Type", "application/vnd.api+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.ctrl-hub.com/v3/reports/{report_id}")
.header("X-Session-Token", "<api-key>")
.header("Content-Type", "application/vnd.api+json")
.body("{\n \"data\": {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"<string>\",\n \"attributes\": {\n \"name\": \"<string>\",\n \"schedule\": {\n \"time\": \"09:00\",\n \"day_of_week\": 4,\n \"day_of_month\": 16,\n \"anchor_date\": \"2023-12-25\"\n },\n \"recipients\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"options\": {\n \"skip_empty\": false\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/reports/{report_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Session-Token"] = '<api-key>'
request["Content-Type"] = 'application/vnd.api+json'
request.body = "{\n \"data\": {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"type\": \"<string>\",\n \"attributes\": {\n \"name\": \"<string>\",\n \"schedule\": {\n \"time\": \"09:00\",\n \"day_of_week\": 4,\n \"day_of_month\": 16,\n \"anchor_date\": \"2023-12-25\"\n },\n \"recipients\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"options\": {\n \"skip_empty\": false\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"schedule": {
"time": "09:00",
"day_of_week": 4,
"day_of_month": 16,
"anchor_date": "2023-12-25"
},
"recipients": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"options": {
"skip_empty": false
},
"paused_reason": "<string>"
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"next_run_at": "2023-11-07T05:31:56Z",
"last_run_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
},
"query": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
},
"owner": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
}
}
},
"jsonapi": {
"version": "<string>"
},
"included": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"attributes": {
"name": "<string>",
"slug": "<string>",
"sandbox": true,
"description": "<string>",
"settings": {
"teams": {
"customer_representatives": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
}
},
"meta": {
"v3": true,
"status": "active",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"features": [
{
"name": "<string>",
"enabled": true,
"limit": 123
}
]
},
"relationships": {
"users": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"service_accounts": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"groups": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"teams": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
]
},
"nomenclature": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>"
}
}
}
}
]
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"id": "7b4c8f12-3e9a-4d5b-8c6f-1a2b3c4d5e6f",
"status": "404",
"title": "Resource not found",
"detail": "The requested resource could not be found or does not exist.",
"code": "NOT_FOUND.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}Authorizations
Session token for authentication.
Path Parameters
The unique identifier for the report.
Body
The report configuration to save.
A report is edited as one configuration object, so the supplied attributes replace the stored ones wholesale. Identity and provenance (organisation, query, owner, created_at) are preserved and cannot be changed: repointing a report at a different query would silently change what its existing run history was a history of.
Setting state is how a report is paused and resumed. Resuming recalculates the next run
from the schedule rather than firing the runs that were missed while it was paused.
Show child attributes
Show child attributes
Response
An individual report.