curl --request POST \
--url https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values \
--header 'Content-Type: application/json' \
--header 'authorization: <api-key>' \
--data '
{
"apiKey": "<string>",
"organizationId": "<string>",
"connectionId": "<string>",
"filterId": "<string>",
"field": "<string>",
"fieldKeys": [
"<string>"
],
"itemIds": [
"<string>"
],
"excludeFilterId": "<string>",
"tz": 123,
"forProjectUserId": "<string>",
"dataModelVersion": 123
}
'import requests
url = "https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values"
payload = {
"apiKey": "<string>",
"organizationId": "<string>",
"connectionId": "<string>",
"filterId": "<string>",
"field": "<string>",
"fieldKeys": ["<string>"],
"itemIds": ["<string>"],
"excludeFilterId": "<string>",
"tz": 123,
"forProjectUserId": "<string>",
"dataModelVersion": 123
}
headers = {
"authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
apiKey: '<string>',
organizationId: '<string>',
connectionId: '<string>',
filterId: '<string>',
field: '<string>',
fieldKeys: ['<string>'],
itemIds: ['<string>'],
excludeFilterId: '<string>',
tz: 123,
forProjectUserId: '<string>',
dataModelVersion: 123
})
};
fetch('https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values', 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.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values",
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([
'apiKey' => '<string>',
'organizationId' => '<string>',
'connectionId' => '<string>',
'filterId' => '<string>',
'field' => '<string>',
'fieldKeys' => [
'<string>'
],
'itemIds' => [
'<string>'
],
'excludeFilterId' => '<string>',
'tz' => 123,
'forProjectUserId' => '<string>',
'dataModelVersion' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"authorization: <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.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values"
payload := strings.NewReader("{\n \"apiKey\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"connectionId\": \"<string>\",\n \"filterId\": \"<string>\",\n \"field\": \"<string>\",\n \"fieldKeys\": [\n \"<string>\"\n ],\n \"itemIds\": [\n \"<string>\"\n ],\n \"excludeFilterId\": \"<string>\",\n \"tz\": 123,\n \"forProjectUserId\": \"<string>\",\n \"dataModelVersion\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<api-key>")
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.post("https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values")
.header("authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"apiKey\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"connectionId\": \"<string>\",\n \"filterId\": \"<string>\",\n \"field\": \"<string>\",\n \"fieldKeys\": [\n \"<string>\"\n ],\n \"itemIds\": [\n \"<string>\"\n ],\n \"excludeFilterId\": \"<string>\",\n \"tz\": 123,\n \"forProjectUserId\": \"<string>\",\n \"dataModelVersion\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"apiKey\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"connectionId\": \"<string>\",\n \"filterId\": \"<string>\",\n \"field\": \"<string>\",\n \"fieldKeys\": [\n \"<string>\"\n ],\n \"itemIds\": [\n \"<string>\"\n ],\n \"excludeFilterId\": \"<string>\",\n \"tz\": 123,\n \"forProjectUserId\": \"<string>\",\n \"dataModelVersion\": 123\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"values": [
"<string>"
],
"error": "<string>"
}
}{
"status": "error",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}List Canvas Filter Values
Read the distinct values of a canvas filter’s field (or of a catalog field) from its own source
curl --request POST \
--url https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values \
--header 'Content-Type: application/json' \
--header 'authorization: <api-key>' \
--data '
{
"apiKey": "<string>",
"organizationId": "<string>",
"connectionId": "<string>",
"filterId": "<string>",
"field": "<string>",
"fieldKeys": [
"<string>"
],
"itemIds": [
"<string>"
],
"excludeFilterId": "<string>",
"tz": 123,
"forProjectUserId": "<string>",
"dataModelVersion": 123
}
'import requests
url = "https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values"
payload = {
"apiKey": "<string>",
"organizationId": "<string>",
"connectionId": "<string>",
"filterId": "<string>",
"field": "<string>",
"fieldKeys": ["<string>"],
"itemIds": ["<string>"],
"excludeFilterId": "<string>",
"tz": 123,
"forProjectUserId": "<string>",
"dataModelVersion": 123
}
headers = {
"authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
apiKey: '<string>',
organizationId: '<string>',
connectionId: '<string>',
filterId: '<string>',
field: '<string>',
fieldKeys: ['<string>'],
itemIds: ['<string>'],
excludeFilterId: '<string>',
tz: 123,
forProjectUserId: '<string>',
dataModelVersion: 123
})
};
fetch('https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values', 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.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values",
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([
'apiKey' => '<string>',
'organizationId' => '<string>',
'connectionId' => '<string>',
'filterId' => '<string>',
'field' => '<string>',
'fieldKeys' => [
'<string>'
],
'itemIds' => [
'<string>'
],
'excludeFilterId' => '<string>',
'tz' => 123,
'forProjectUserId' => '<string>',
'dataModelVersion' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"authorization: <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.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values"
payload := strings.NewReader("{\n \"apiKey\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"connectionId\": \"<string>\",\n \"filterId\": \"<string>\",\n \"field\": \"<string>\",\n \"fieldKeys\": [\n \"<string>\"\n ],\n \"itemIds\": [\n \"<string>\"\n ],\n \"excludeFilterId\": \"<string>\",\n \"tz\": 123,\n \"forProjectUserId\": \"<string>\",\n \"dataModelVersion\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("authorization", "<api-key>")
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.post("https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values")
.header("authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"apiKey\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"connectionId\": \"<string>\",\n \"filterId\": \"<string>\",\n \"field\": \"<string>\",\n \"fieldKeys\": [\n \"<string>\"\n ],\n \"itemIds\": [\n \"<string>\"\n ],\n \"excludeFilterId\": \"<string>\",\n \"tz\": 123,\n \"forProjectUserId\": \"<string>\",\n \"dataModelVersion\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.upsolve.ai/v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/filters/values")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"apiKey\": \"<string>\",\n \"organizationId\": \"<string>\",\n \"connectionId\": \"<string>\",\n \"filterId\": \"<string>\",\n \"field\": \"<string>\",\n \"fieldKeys\": [\n \"<string>\"\n ],\n \"itemIds\": [\n \"<string>\"\n ],\n \"excludeFilterId\": \"<string>\",\n \"tz\": 123,\n \"forProjectUserId\": \"<string>\",\n \"dataModelVersion\": 123\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"values": [
"<string>"
],
"error": "<string>"
}
}{
"status": "error",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}Authorizations
Path Parameters
The project in the URL. The caller's project user is read from it.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/filters/values Parameter
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/filters/values Parameter
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$Body
POST /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/filters/values Request body
Upsolve API key, generated under Account → Developer settings in the Upsolve Hub. Keys are user-scoped: pass organizationId alongside the key to select which org to act on.
1The ID of the organization. Required when using Supabase JWT authentication.
The ID of the connection a guest has access to
Return values for this filter's field. Pass this or field.
Return values for this catalog field (a fieldKey from filterable-fields). Pass this or filterId.
Tables picked under one column name (raw: keys from a field's tableChoices), as a filter with fieldKeys names them: values across all of them. field must be the first.
1For an output field, read values from these tiles only.
Leave this filter out of the narrowing (so a dropdown lists every value, not only the one selected).
The viewer's UTC offset in hours. Used only when the canvas follows each viewer's own time zone; otherwise the canvas's time zone decides.
Project user to run the query as; their properties drive the data model's row-level security. Required with an admin credential, ignored for a project-user token.
Published data model version to resolve fields and run queries against. Defaults to the published version.
x <= 9007199254740991Was this page helpful?