Reports
Update a widget
Update an existing widget’s type, data source, title, config, or grid position. Only fields provided in the request body are changed; omitted fields retain their current values. For bulk position updates across multiple widgets, prefer the PATCH /widgets/layout endpoint.
PATCH
/
v1
/
projects
/
{project_id}
/
reports
/
{report_id}
/
pages
/
{page_id}
/
widgets
/
{widget_id}
Update a widget
curl --request PATCH \
--url https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"widget_type": "<string>",
"data_source": "<string>",
"title": "<string>",
"config": {},
"position_x": 123,
"position_y": 123,
"width": 123,
"height": 123
}
'import requests
url = "https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}"
payload = {
"widget_type": "<string>",
"data_source": "<string>",
"title": "<string>",
"config": {},
"position_x": 123,
"position_y": 123,
"width": 123,
"height": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
widget_type: '<string>',
data_source: '<string>',
title: '<string>',
config: {},
position_x: 123,
position_y: 123,
width: 123,
height: 123
})
};
fetch('https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_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.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_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([
'widget_type' => '<string>',
'data_source' => '<string>',
'title' => '<string>',
'config' => [
],
'position_x' => 123,
'position_y' => 123,
'width' => 123,
'height' => 123
]),
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://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}"
payload := strings.NewReader("{\n \"widget_type\": \"<string>\",\n \"data_source\": \"<string>\",\n \"title\": \"<string>\",\n \"config\": {},\n \"position_x\": 123,\n \"position_y\": 123,\n \"width\": 123,\n \"height\": 123\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"widget_type\": \"<string>\",\n \"data_source\": \"<string>\",\n \"title\": \"<string>\",\n \"config\": {},\n \"position_x\": 123,\n \"position_y\": 123,\n \"width\": 123,\n \"height\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"widget_type\": \"<string>\",\n \"data_source\": \"<string>\",\n \"title\": \"<string>\",\n \"config\": {},\n \"position_x\": 123,\n \"position_y\": 123,\n \"width\": 123,\n \"height\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"widget_type": "<string>",
"title": "<string>",
"config": {},
"position_x": 123,
"position_y": 123,
"width": 123,
"height": 123,
"created_at": "2023-11-07T05:31:56Z",
"data_source": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Path Parameters
Body
application/json
Request body for updating an existing widget.
Updated widget type.
Updated data source identifier.
Updated display title.
Updated widget configuration (fully replaces existing config).
Updated horizontal grid position.
Updated vertical grid position.
Updated widget width in grid columns.
Updated widget height in grid rows.
⌘I
Update a widget
curl --request PATCH \
--url https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"widget_type": "<string>",
"data_source": "<string>",
"title": "<string>",
"config": {},
"position_x": 123,
"position_y": 123,
"width": 123,
"height": 123
}
'import requests
url = "https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}"
payload = {
"widget_type": "<string>",
"data_source": "<string>",
"title": "<string>",
"config": {},
"position_x": 123,
"position_y": 123,
"width": 123,
"height": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
widget_type: '<string>',
data_source: '<string>',
title: '<string>',
config: {},
position_x: 123,
position_y: 123,
width: 123,
height: 123
})
};
fetch('https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_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.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_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([
'widget_type' => '<string>',
'data_source' => '<string>',
'title' => '<string>',
'config' => [
],
'position_x' => 123,
'position_y' => 123,
'width' => 123,
'height' => 123
]),
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://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}"
payload := strings.NewReader("{\n \"widget_type\": \"<string>\",\n \"data_source\": \"<string>\",\n \"title\": \"<string>\",\n \"config\": {},\n \"position_x\": 123,\n \"position_y\": 123,\n \"width\": 123,\n \"height\": 123\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"widget_type\": \"<string>\",\n \"data_source\": \"<string>\",\n \"title\": \"<string>\",\n \"config\": {},\n \"position_x\": 123,\n \"position_y\": 123,\n \"width\": 123,\n \"height\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/projects/{project_id}/reports/{report_id}/pages/{page_id}/widgets/{widget_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"widget_type\": \"<string>\",\n \"data_source\": \"<string>\",\n \"title\": \"<string>\",\n \"config\": {},\n \"position_x\": 123,\n \"position_y\": 123,\n \"width\": 123,\n \"height\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"widget_type": "<string>",
"title": "<string>",
"config": {},
"position_x": 123,
"position_y": 123,
"width": 123,
"height": 123,
"created_at": "2023-11-07T05:31:56Z",
"data_source": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}