Resolve or re-open a comment thread
curl --request POST \
--url https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resolved": true
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve"
payload = { "resolved": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({resolved: true})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve', 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://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve",
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([
'resolved' => true
]),
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://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve"
payload := strings.NewReader("{\n \"resolved\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resolved\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resolved\": true\n}"
response = http.request(request)
puts response.read_body{
"replies": [
{
"body": "<string>",
"createdAt": "2023-12-25",
"dashboardId": "<string>",
"id": 123,
"isOwn": true,
"editedAt": "2023-12-25",
"removedAt": "2023-12-25",
"userId": 123
}
],
"root": {
"body": "<string>",
"createdAt": "2023-12-25",
"dashboardId": "<string>",
"id": 123,
"isOwn": true,
"editedAt": "2023-12-25",
"removedAt": "2023-12-25",
"userId": 123
},
"resolvedAt": "2023-12-25",
"resolvedBy": 123
}Embed
Resolve or re-open a comment thread
POST
/
api
/
v1
/
embed
/
dashboard
/
{publicId}
/
comments
/
{commentId}
/
resolve
Resolve or re-open a comment thread
curl --request POST \
--url https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"resolved": true
}
'import requests
url = "https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve"
payload = { "resolved": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({resolved: true})
};
fetch('https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve', 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://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve",
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([
'resolved' => true
]),
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://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve"
payload := strings.NewReader("{\n \"resolved\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"resolved\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.cubecloud.dev/api/v1/embed/dashboard/{publicId}/comments/{commentId}/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"resolved\": true\n}"
response = http.request(request)
puts response.read_body{
"replies": [
{
"body": "<string>",
"createdAt": "2023-12-25",
"dashboardId": "<string>",
"id": 123,
"isOwn": true,
"editedAt": "2023-12-25",
"removedAt": "2023-12-25",
"userId": 123
}
],
"root": {
"body": "<string>",
"createdAt": "2023-12-25",
"dashboardId": "<string>",
"id": 123,
"isOwn": true,
"editedAt": "2023-12-25",
"removedAt": "2023-12-25",
"userId": 123
},
"resolvedAt": "2023-12-25",
"resolvedBy": 123
}Marks a thread resolved, or re-opens it. Author only — the embed user who started the thread.
The console surface is wider: there, a workbook editor may also resolve someone else’s thread. That branch has no analogue here, because an embed viewer holds no workbook rights at all, so authorship is the whole rule.
Threads only — a reply has no resolve state of its own, and one carrying it would put two answers on the same thread, so
400 is returned for a reply’s id. A thread whose root was deleted while replies survive is still resolvable, or it would sit in the unresolved list forever.Authorizations
Token authentication. Send Authorization: Bearer <YOUR_TOKEN>.
Body
application/json
SetEmbedDashboardCommentResolvedBody