curl --request POST \
--url http://10.2.4.166:8080/composer/api/v2/visuals \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/vnd.composer.v3+json' \
--data '
{
"sourceId": "<string>",
"visualTypeId": "<string>",
"visualName": "<string>",
"description": "<string>",
"tags": [
"<string>"
],
"metrics": [
{}
],
"dimensions": [
{}
],
"timeFilter": {},
"filters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>"
}
],
"sortAndLimit": [
{
"groupByFieldName": "status",
"sortByFieldName": "total_price",
"sortDirection": "desc",
"aggregation": "sum",
"limit": 10
}
],
"conditionalFormatting": [
{
"condition": {
"type": "row",
"filter": {
"path": "customer_country",
"operation": "IN",
"value": [
"France",
"Germany"
]
}
},
"applyTo": {
"type": "fullRow"
},
"format": {
"type": "single",
"format": {
"style": {
"backgroundColor": "#bd10e0"
}
}
}
}
],
"folderId": 1111
}
'import requests
url = "http://10.2.4.166:8080/composer/api/v2/visuals"
payload = {
"sourceId": "<string>",
"visualTypeId": "<string>",
"visualName": "<string>",
"description": "<string>",
"tags": ["<string>"],
"metrics": [{}],
"dimensions": [{}],
"timeFilter": {},
"filters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>"
}
],
"sortAndLimit": [
{
"groupByFieldName": "status",
"sortByFieldName": "total_price",
"sortDirection": "desc",
"aggregation": "sum",
"limit": 10
}
],
"conditionalFormatting": [
{
"condition": {
"type": "row",
"filter": {
"path": "customer_country",
"operation": "IN",
"value": ["France", "Germany"]
}
},
"applyTo": { "type": "fullRow" },
"format": {
"type": "single",
"format": { "style": { "backgroundColor": "#bd10e0" } }
}
}
],
"folderId": 1111
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/vnd.composer.v3+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/vnd.composer.v3+json'
},
body: JSON.stringify({
sourceId: '<string>',
visualTypeId: '<string>',
visualName: '<string>',
description: '<string>',
tags: ['<string>'],
metrics: [{}],
dimensions: [{}],
timeFilter: {},
filters: [{value: '<unknown>', custom: {}, label: '<string>', path: '<string>'}],
aggregateFilters: [{value: '<unknown>', custom: {}, label: '<string>', name: '<string>'}],
sortAndLimit: [
{
groupByFieldName: 'status',
sortByFieldName: 'total_price',
sortDirection: 'desc',
aggregation: 'sum',
limit: 10
}
],
conditionalFormatting: [
{
condition: {
type: 'row',
filter: {path: 'customer_country', operation: 'IN', value: ['France', 'Germany']}
},
applyTo: {type: 'fullRow'},
format: {type: 'single', format: {style: {backgroundColor: '#bd10e0'}}}
}
],
folderId: 1111
})
};
fetch('http://10.2.4.166:8080/composer/api/v2/visuals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://10.2.4.166:8080/composer/api/v2/visuals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sourceId' => '<string>',
'visualTypeId' => '<string>',
'visualName' => '<string>',
'description' => '<string>',
'tags' => [
'<string>'
],
'metrics' => [
[
]
],
'dimensions' => [
[
]
],
'timeFilter' => [
],
'filters' => [
[
'value' => '<unknown>',
'custom' => [
],
'label' => '<string>',
'path' => '<string>'
]
],
'aggregateFilters' => [
[
'value' => '<unknown>',
'custom' => [
],
'label' => '<string>',
'name' => '<string>'
]
],
'sortAndLimit' => [
[
'groupByFieldName' => 'status',
'sortByFieldName' => 'total_price',
'sortDirection' => 'desc',
'aggregation' => 'sum',
'limit' => 10
]
],
'conditionalFormatting' => [
[
'condition' => [
'type' => 'row',
'filter' => [
'path' => 'customer_country',
'operation' => 'IN',
'value' => [
'France',
'Germany'
]
]
],
'applyTo' => [
'type' => 'fullRow'
],
'format' => [
'type' => 'single',
'format' => [
'style' => [
'backgroundColor' => '#bd10e0'
]
]
]
]
],
'folderId' => 1111
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/vnd.composer.v3+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 := "http://10.2.4.166:8080/composer/api/v2/visuals"
payload := strings.NewReader("{\n \"sourceId\": \"<string>\",\n \"visualTypeId\": \"<string>\",\n \"visualName\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"metrics\": [\n {}\n ],\n \"dimensions\": [\n {}\n ],\n \"timeFilter\": {},\n \"filters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"path\": \"<string>\"\n }\n ],\n \"aggregateFilters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"sortAndLimit\": [\n {\n \"groupByFieldName\": \"status\",\n \"sortByFieldName\": \"total_price\",\n \"sortDirection\": \"desc\",\n \"aggregation\": \"sum\",\n \"limit\": 10\n }\n ],\n \"conditionalFormatting\": [\n {\n \"condition\": {\n \"type\": \"row\",\n \"filter\": {\n \"path\": \"customer_country\",\n \"operation\": \"IN\",\n \"value\": [\n \"France\",\n \"Germany\"\n ]\n }\n },\n \"applyTo\": {\n \"type\": \"fullRow\"\n },\n \"format\": {\n \"type\": \"single\",\n \"format\": {\n \"style\": {\n \"backgroundColor\": \"#bd10e0\"\n }\n }\n }\n }\n ],\n \"folderId\": 1111\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/vnd.composer.v3+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://10.2.4.166:8080/composer/api/v2/visuals")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/vnd.composer.v3+json")
.body("{\n \"sourceId\": \"<string>\",\n \"visualTypeId\": \"<string>\",\n \"visualName\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"metrics\": [\n {}\n ],\n \"dimensions\": [\n {}\n ],\n \"timeFilter\": {},\n \"filters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"path\": \"<string>\"\n }\n ],\n \"aggregateFilters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"sortAndLimit\": [\n {\n \"groupByFieldName\": \"status\",\n \"sortByFieldName\": \"total_price\",\n \"sortDirection\": \"desc\",\n \"aggregation\": \"sum\",\n \"limit\": 10\n }\n ],\n \"conditionalFormatting\": [\n {\n \"condition\": {\n \"type\": \"row\",\n \"filter\": {\n \"path\": \"customer_country\",\n \"operation\": \"IN\",\n \"value\": [\n \"France\",\n \"Germany\"\n ]\n }\n },\n \"applyTo\": {\n \"type\": \"fullRow\"\n },\n \"format\": {\n \"type\": \"single\",\n \"format\": {\n \"style\": {\n \"backgroundColor\": \"#bd10e0\"\n }\n }\n }\n }\n ],\n \"folderId\": 1111\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://10.2.4.166:8080/composer/api/v2/visuals")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/vnd.composer.v3+json'
request.body = "{\n \"sourceId\": \"<string>\",\n \"visualTypeId\": \"<string>\",\n \"visualName\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"metrics\": [\n {}\n ],\n \"dimensions\": [\n {}\n ],\n \"timeFilter\": {},\n \"filters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"path\": \"<string>\"\n }\n ],\n \"aggregateFilters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"sortAndLimit\": [\n {\n \"groupByFieldName\": \"status\",\n \"sortByFieldName\": \"total_price\",\n \"sortDirection\": \"desc\",\n \"aggregation\": \"sum\",\n \"limit\": 10\n }\n ],\n \"conditionalFormatting\": [\n {\n \"condition\": {\n \"type\": \"row\",\n \"filter\": {\n \"path\": \"customer_country\",\n \"operation\": \"IN\",\n \"value\": [\n \"France\",\n \"Germany\"\n ]\n }\n },\n \"applyTo\": {\n \"type\": \"fullRow\"\n },\n \"format\": {\n \"type\": \"single\",\n \"format\": {\n \"style\": {\n \"backgroundColor\": \"#bd10e0\"\n }\n }\n }\n }\n ],\n \"folderId\": 1111\n}"
response = http.request(request)
puts response.read_body{
"visualName": "<string>",
"source": {
"filters": [
{
"operation": "EQUALS",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"operation": "LT",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>",
"function": "avg"
}
],
"sourceId": "<string>",
"variables": {},
"accountId": "<string>",
"sourceName": "<string>",
"playbackMode": true,
"live": true,
"textSearchEnabled": true
},
"id": "<string>",
"visId": "<string>",
"visualTypeId": "<string>",
"accountId": "<string>",
"description": "<string>",
"type": "<string>",
"controlsCfg": {
"id": "<string>",
"timeControlCfg": {
"from": "<string>",
"to": "<string>",
"timeField": "<string>",
"calendarId": "<string>"
},
"playerControlCfg": {
"timeWindowScale": "PINNED",
"pauseAfterRead": true,
"stopTime": "<string>",
"speed": 123
},
"sharpeningCfg": {
"prefer": true,
"maxQueries": 123
}
},
"interactivityProfile": {},
"tags": [
"<string>"
],
"creatingUserName": "<string>",
"level": "TOP",
"createdByUserID": "<string>",
"lastModifiedByUserID": "<string>",
"createdDate": "2023-11-07T05:31:56Z",
"lastModifiedDate": "2023-11-07T05:31:56Z",
"originId": "<string>",
"projectId": 2222,
"folderId": 1111
}{
"visualName": "<string>",
"source": {
"filters": [
{
"operation": "EQUALS",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"operation": "LT",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>",
"function": "avg"
}
],
"sourceId": "<string>",
"variables": {},
"accountId": "<string>",
"sourceName": "<string>",
"playbackMode": true,
"live": true,
"textSearchEnabled": true
},
"id": "<string>",
"visId": "<string>",
"visualTypeId": "<string>",
"accountId": "<string>",
"description": "<string>",
"type": "<string>",
"controlsCfg": {
"id": "<string>",
"timeControlCfg": {
"from": "<string>",
"to": "<string>",
"timeField": "<string>",
"calendarId": "<string>"
},
"playerControlCfg": {
"timeWindowScale": "PINNED",
"pauseAfterRead": true,
"stopTime": "<string>",
"speed": 123
},
"sharpeningCfg": {
"prefer": true,
"maxQueries": 123
}
},
"interactivityProfile": {},
"tags": [
"<string>"
],
"creatingUserName": "<string>",
"level": "TOP",
"createdByUserID": "<string>",
"lastModifiedByUserID": "<string>",
"createdDate": "2023-11-07T05:31:56Z",
"lastModifiedDate": "2023-11-07T05:31:56Z",
"originId": "<string>",
"projectId": 2222,
"folderId": 1111
}{
"error": "<string>",
"details": "<string>",
"message": "<string>",
"path": "<string>",
"status": "<string>",
"code": "<string>",
"errorCode": "<string>",
"timestamp": "<string>",
"problems": [
{
"name": "<string>",
"message": "<string>",
"level": "ERROR",
"dependencies": {}
}
]
}Create Custom Visual
Requires DATA_ACCESS or READ permission on the source to create a visual. The visual will be created with the initial values based on the provided chart dimensions. The save parameter controls whether the visual is persisted to the gallery.
curl --request POST \
--url http://10.2.4.166:8080/composer/api/v2/visuals \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/vnd.composer.v3+json' \
--data '
{
"sourceId": "<string>",
"visualTypeId": "<string>",
"visualName": "<string>",
"description": "<string>",
"tags": [
"<string>"
],
"metrics": [
{}
],
"dimensions": [
{}
],
"timeFilter": {},
"filters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>"
}
],
"sortAndLimit": [
{
"groupByFieldName": "status",
"sortByFieldName": "total_price",
"sortDirection": "desc",
"aggregation": "sum",
"limit": 10
}
],
"conditionalFormatting": [
{
"condition": {
"type": "row",
"filter": {
"path": "customer_country",
"operation": "IN",
"value": [
"France",
"Germany"
]
}
},
"applyTo": {
"type": "fullRow"
},
"format": {
"type": "single",
"format": {
"style": {
"backgroundColor": "#bd10e0"
}
}
}
}
],
"folderId": 1111
}
'import requests
url = "http://10.2.4.166:8080/composer/api/v2/visuals"
payload = {
"sourceId": "<string>",
"visualTypeId": "<string>",
"visualName": "<string>",
"description": "<string>",
"tags": ["<string>"],
"metrics": [{}],
"dimensions": [{}],
"timeFilter": {},
"filters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>"
}
],
"sortAndLimit": [
{
"groupByFieldName": "status",
"sortByFieldName": "total_price",
"sortDirection": "desc",
"aggregation": "sum",
"limit": 10
}
],
"conditionalFormatting": [
{
"condition": {
"type": "row",
"filter": {
"path": "customer_country",
"operation": "IN",
"value": ["France", "Germany"]
}
},
"applyTo": { "type": "fullRow" },
"format": {
"type": "single",
"format": { "style": { "backgroundColor": "#bd10e0" } }
}
}
],
"folderId": 1111
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/vnd.composer.v3+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/vnd.composer.v3+json'
},
body: JSON.stringify({
sourceId: '<string>',
visualTypeId: '<string>',
visualName: '<string>',
description: '<string>',
tags: ['<string>'],
metrics: [{}],
dimensions: [{}],
timeFilter: {},
filters: [{value: '<unknown>', custom: {}, label: '<string>', path: '<string>'}],
aggregateFilters: [{value: '<unknown>', custom: {}, label: '<string>', name: '<string>'}],
sortAndLimit: [
{
groupByFieldName: 'status',
sortByFieldName: 'total_price',
sortDirection: 'desc',
aggregation: 'sum',
limit: 10
}
],
conditionalFormatting: [
{
condition: {
type: 'row',
filter: {path: 'customer_country', operation: 'IN', value: ['France', 'Germany']}
},
applyTo: {type: 'fullRow'},
format: {type: 'single', format: {style: {backgroundColor: '#bd10e0'}}}
}
],
folderId: 1111
})
};
fetch('http://10.2.4.166:8080/composer/api/v2/visuals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://10.2.4.166:8080/composer/api/v2/visuals",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'sourceId' => '<string>',
'visualTypeId' => '<string>',
'visualName' => '<string>',
'description' => '<string>',
'tags' => [
'<string>'
],
'metrics' => [
[
]
],
'dimensions' => [
[
]
],
'timeFilter' => [
],
'filters' => [
[
'value' => '<unknown>',
'custom' => [
],
'label' => '<string>',
'path' => '<string>'
]
],
'aggregateFilters' => [
[
'value' => '<unknown>',
'custom' => [
],
'label' => '<string>',
'name' => '<string>'
]
],
'sortAndLimit' => [
[
'groupByFieldName' => 'status',
'sortByFieldName' => 'total_price',
'sortDirection' => 'desc',
'aggregation' => 'sum',
'limit' => 10
]
],
'conditionalFormatting' => [
[
'condition' => [
'type' => 'row',
'filter' => [
'path' => 'customer_country',
'operation' => 'IN',
'value' => [
'France',
'Germany'
]
]
],
'applyTo' => [
'type' => 'fullRow'
],
'format' => [
'type' => 'single',
'format' => [
'style' => [
'backgroundColor' => '#bd10e0'
]
]
]
]
],
'folderId' => 1111
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/vnd.composer.v3+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 := "http://10.2.4.166:8080/composer/api/v2/visuals"
payload := strings.NewReader("{\n \"sourceId\": \"<string>\",\n \"visualTypeId\": \"<string>\",\n \"visualName\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"metrics\": [\n {}\n ],\n \"dimensions\": [\n {}\n ],\n \"timeFilter\": {},\n \"filters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"path\": \"<string>\"\n }\n ],\n \"aggregateFilters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"sortAndLimit\": [\n {\n \"groupByFieldName\": \"status\",\n \"sortByFieldName\": \"total_price\",\n \"sortDirection\": \"desc\",\n \"aggregation\": \"sum\",\n \"limit\": 10\n }\n ],\n \"conditionalFormatting\": [\n {\n \"condition\": {\n \"type\": \"row\",\n \"filter\": {\n \"path\": \"customer_country\",\n \"operation\": \"IN\",\n \"value\": [\n \"France\",\n \"Germany\"\n ]\n }\n },\n \"applyTo\": {\n \"type\": \"fullRow\"\n },\n \"format\": {\n \"type\": \"single\",\n \"format\": {\n \"style\": {\n \"backgroundColor\": \"#bd10e0\"\n }\n }\n }\n }\n ],\n \"folderId\": 1111\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/vnd.composer.v3+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://10.2.4.166:8080/composer/api/v2/visuals")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/vnd.composer.v3+json")
.body("{\n \"sourceId\": \"<string>\",\n \"visualTypeId\": \"<string>\",\n \"visualName\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"metrics\": [\n {}\n ],\n \"dimensions\": [\n {}\n ],\n \"timeFilter\": {},\n \"filters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"path\": \"<string>\"\n }\n ],\n \"aggregateFilters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"sortAndLimit\": [\n {\n \"groupByFieldName\": \"status\",\n \"sortByFieldName\": \"total_price\",\n \"sortDirection\": \"desc\",\n \"aggregation\": \"sum\",\n \"limit\": 10\n }\n ],\n \"conditionalFormatting\": [\n {\n \"condition\": {\n \"type\": \"row\",\n \"filter\": {\n \"path\": \"customer_country\",\n \"operation\": \"IN\",\n \"value\": [\n \"France\",\n \"Germany\"\n ]\n }\n },\n \"applyTo\": {\n \"type\": \"fullRow\"\n },\n \"format\": {\n \"type\": \"single\",\n \"format\": {\n \"style\": {\n \"backgroundColor\": \"#bd10e0\"\n }\n }\n }\n }\n ],\n \"folderId\": 1111\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://10.2.4.166:8080/composer/api/v2/visuals")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/vnd.composer.v3+json'
request.body = "{\n \"sourceId\": \"<string>\",\n \"visualTypeId\": \"<string>\",\n \"visualName\": \"<string>\",\n \"description\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"metrics\": [\n {}\n ],\n \"dimensions\": [\n {}\n ],\n \"timeFilter\": {},\n \"filters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"path\": \"<string>\"\n }\n ],\n \"aggregateFilters\": [\n {\n \"value\": \"<unknown>\",\n \"custom\": {},\n \"label\": \"<string>\",\n \"name\": \"<string>\"\n }\n ],\n \"sortAndLimit\": [\n {\n \"groupByFieldName\": \"status\",\n \"sortByFieldName\": \"total_price\",\n \"sortDirection\": \"desc\",\n \"aggregation\": \"sum\",\n \"limit\": 10\n }\n ],\n \"conditionalFormatting\": [\n {\n \"condition\": {\n \"type\": \"row\",\n \"filter\": {\n \"path\": \"customer_country\",\n \"operation\": \"IN\",\n \"value\": [\n \"France\",\n \"Germany\"\n ]\n }\n },\n \"applyTo\": {\n \"type\": \"fullRow\"\n },\n \"format\": {\n \"type\": \"single\",\n \"format\": {\n \"style\": {\n \"backgroundColor\": \"#bd10e0\"\n }\n }\n }\n }\n ],\n \"folderId\": 1111\n}"
response = http.request(request)
puts response.read_body{
"visualName": "<string>",
"source": {
"filters": [
{
"operation": "EQUALS",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"operation": "LT",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>",
"function": "avg"
}
],
"sourceId": "<string>",
"variables": {},
"accountId": "<string>",
"sourceName": "<string>",
"playbackMode": true,
"live": true,
"textSearchEnabled": true
},
"id": "<string>",
"visId": "<string>",
"visualTypeId": "<string>",
"accountId": "<string>",
"description": "<string>",
"type": "<string>",
"controlsCfg": {
"id": "<string>",
"timeControlCfg": {
"from": "<string>",
"to": "<string>",
"timeField": "<string>",
"calendarId": "<string>"
},
"playerControlCfg": {
"timeWindowScale": "PINNED",
"pauseAfterRead": true,
"stopTime": "<string>",
"speed": 123
},
"sharpeningCfg": {
"prefer": true,
"maxQueries": 123
}
},
"interactivityProfile": {},
"tags": [
"<string>"
],
"creatingUserName": "<string>",
"level": "TOP",
"createdByUserID": "<string>",
"lastModifiedByUserID": "<string>",
"createdDate": "2023-11-07T05:31:56Z",
"lastModifiedDate": "2023-11-07T05:31:56Z",
"originId": "<string>",
"projectId": 2222,
"folderId": 1111
}{
"visualName": "<string>",
"source": {
"filters": [
{
"operation": "EQUALS",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"path": "<string>"
}
],
"aggregateFilters": [
{
"operation": "LT",
"value": "<unknown>",
"custom": {},
"label": "<string>",
"name": "<string>",
"function": "avg"
}
],
"sourceId": "<string>",
"variables": {},
"accountId": "<string>",
"sourceName": "<string>",
"playbackMode": true,
"live": true,
"textSearchEnabled": true
},
"id": "<string>",
"visId": "<string>",
"visualTypeId": "<string>",
"accountId": "<string>",
"description": "<string>",
"type": "<string>",
"controlsCfg": {
"id": "<string>",
"timeControlCfg": {
"from": "<string>",
"to": "<string>",
"timeField": "<string>",
"calendarId": "<string>"
},
"playerControlCfg": {
"timeWindowScale": "PINNED",
"pauseAfterRead": true,
"stopTime": "<string>",
"speed": 123
},
"sharpeningCfg": {
"prefer": true,
"maxQueries": 123
}
},
"interactivityProfile": {},
"tags": [
"<string>"
],
"creatingUserName": "<string>",
"level": "TOP",
"createdByUserID": "<string>",
"lastModifiedByUserID": "<string>",
"createdDate": "2023-11-07T05:31:56Z",
"lastModifiedDate": "2023-11-07T05:31:56Z",
"originId": "<string>",
"projectId": 2222,
"folderId": 1111
}{
"error": "<string>",
"details": "<string>",
"message": "<string>",
"path": "<string>",
"status": "<string>",
"code": "<string>",
"errorCode": "<string>",
"timestamp": "<string>",
"problems": [
{
"name": "<string>",
"message": "<string>",
"level": "ERROR",
"dependencies": {}
}
]
}Authorizations
HTTP Basic authentication using global administrator credentials (username and password).
Query Parameters
Whether to persist the visual to the gallery. Defaults to false.
Body
Defines a Custom Chart Dimensions
Source Id
1Visual Type Id
1Visual Name. 'visualNamePrefix' is a deprecated alias, will be removed in 26.3
1Visual Description
tags
Defines an metrics
Show child attributes
Show child attributes
Defines a group by
Show child attributes
Show child attributes
Defines time filter
Show child attributes
Show child attributes
Defines filter
Show child attributes
Show child attributes
Defines Aggregation Filters
Show child attributes
Show child attributes
Defines sort order and result limit for each dimension group.
Show child attributes
Show child attributes
[
{
"groupByFieldName": "status",
"sortByFieldName": "total_price",
"sortDirection": "desc",
"aggregation": "sum",
"limit": 10
}
]
Defines conditional formatting rules applied to rows or pivot cells.
Show child attributes
Show child attributes
[
{
"condition": {
"type": "row",
"filter": {
"path": "customer_country",
"operation": "IN",
"value": ["France", "Germany"]
}
},
"applyTo": { "type": "fullRow" },
"format": {
"type": "single",
"format": { "style": { "backgroundColor": "#bd10e0" } }
}
}
]
Optional folder ID for organizing the visual within a project.
1111
Response
The visual was created successfully
Defines a visual payload
Defines a visual name
1 - 255Defines source details
Show child attributes
Show child attributes
Defines a visual identifier
(deprecated since 7.10, to be removed in 8.x. Use 'visualTypeId' instead) Defines a visual type identifier
Defines a visual type identifier
Defines an account identifier
Defines a description
750Defines a visual type
Defines a controls configuration
Show child attributes
Show child attributes
Defines an interactivity profile setting
Show child attributes
Show child attributes
Defines tags
Defines a creator of the visual
Defines a type of visual usage level
TOP, IN_DASHBOARD Defines a visual creator's identifier
Defines an identifier of the user who has modified the visual last
Defines a date of creation of the visual
Defines a date of the last modification of the visual
Id of the exported visual
Project ID where this visual is organized. This field is read-only and only.
2222
Optional folder ID for organizing the visual within a project.
1111
Was this page helpful?