Update Comment Annotations
curl --request POST \
--url https://api.velt.dev/v2/commentannotations/update \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"organizationId": "<string>",
"documentId": "<string>",
"locationIds": [
"<string>"
],
"userIds": [
"<string>"
],
"annotationIds": [
"<string>"
],
"updatedData": [
{
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": true
},
"from": {},
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"statusUpdatedByUserId": {},
"resolvedByUserId": {},
"assignedTo": {},
"context": {},
"priority": {
"id": "<string>",
"name": "<string>",
"color": "<string>",
"lightColor": "<string>"
},
"suggestion": {
"status": "<string>",
"targetId": "<string>",
"targetType": "<string>",
"oldValue": "<any>",
"newValue": "<any>",
"summary": {},
"driftDetected": true
}
}
],
"updateUsers": [
{
"oldUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
},
"newUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
}
'import requests
url = "https://api.velt.dev/v2/commentannotations/update"
payload = { "data": {
"organizationId": "<string>",
"documentId": "<string>",
"locationIds": ["<string>"],
"userIds": ["<string>"],
"annotationIds": ["<string>"],
"updatedData": [
{
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": True
},
"from": {},
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"statusUpdatedByUserId": {},
"resolvedByUserId": {},
"assignedTo": {},
"context": {},
"priority": {
"id": "<string>",
"name": "<string>",
"color": "<string>",
"lightColor": "<string>"
},
"suggestion": {
"status": "<string>",
"targetId": "<string>",
"targetType": "<string>",
"oldValue": "<any>",
"newValue": "<any>",
"summary": {},
"driftDetected": True
}
}
],
"updateUsers": [
{
"oldUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
},
"newUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
organizationId: '<string>',
documentId: '<string>',
locationIds: ['<string>'],
userIds: ['<string>'],
annotationIds: ['<string>'],
updatedData: [
{
location: {id: '<string>', locationName: '<string>'},
targetElement: {
elementId: '<string>',
targetText: '<string>',
occurrence: 123,
selectAllContent: true
},
from: {},
status: {
id: '<string>',
name: '<string>',
type: '<string>',
color: '<string>',
lightColor: '<string>',
svg: '<string>',
iconUrl: '<string>'
},
statusUpdatedByUserId: {},
resolvedByUserId: {},
assignedTo: {},
context: {},
priority: {id: '<string>', name: '<string>', color: '<string>', lightColor: '<string>'},
suggestion: {
status: '<string>',
targetId: '<string>',
targetType: '<string>',
oldValue: '<any>',
newValue: '<any>',
summary: {},
driftDetected: true
}
}
],
updateUsers: [
{
oldUser: {userId: '<string>', name: '<string>', email: '<string>'},
newUser: {userId: '<string>', name: '<string>', email: '<string>'}
}
]
}
})
};
fetch('https://api.velt.dev/v2/commentannotations/update', 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.velt.dev/v2/commentannotations/update",
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([
'data' => [
'organizationId' => '<string>',
'documentId' => '<string>',
'locationIds' => [
'<string>'
],
'userIds' => [
'<string>'
],
'annotationIds' => [
'<string>'
],
'updatedData' => [
[
'location' => [
'id' => '<string>',
'locationName' => '<string>'
],
'targetElement' => [
'elementId' => '<string>',
'targetText' => '<string>',
'occurrence' => 123,
'selectAllContent' => true
],
'from' => [
],
'status' => [
'id' => '<string>',
'name' => '<string>',
'type' => '<string>',
'color' => '<string>',
'lightColor' => '<string>',
'svg' => '<string>',
'iconUrl' => '<string>'
],
'statusUpdatedByUserId' => [
],
'resolvedByUserId' => [
],
'assignedTo' => [
],
'context' => [
],
'priority' => [
'id' => '<string>',
'name' => '<string>',
'color' => '<string>',
'lightColor' => '<string>'
],
'suggestion' => [
'status' => '<string>',
'targetId' => '<string>',
'targetType' => '<string>',
'oldValue' => '<any>',
'newValue' => '<any>',
'summary' => [
],
'driftDetected' => true
]
]
],
'updateUsers' => [
[
'oldUser' => [
'userId' => '<string>',
'name' => '<string>',
'email' => '<string>'
],
'newUser' => [
'userId' => '<string>',
'name' => '<string>',
'email' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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.velt.dev/v2/commentannotations/update"
payload := strings.NewReader("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ],\n \"userIds\": [\n \"<string>\"\n ],\n \"annotationIds\": [\n \"<string>\"\n ],\n \"updatedData\": [\n {\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"from\": {},\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"statusUpdatedByUserId\": {},\n \"resolvedByUserId\": {},\n \"assignedTo\": {},\n \"context\": {},\n \"priority\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\"\n },\n \"suggestion\": {\n \"status\": \"<string>\",\n \"targetId\": \"<string>\",\n \"targetType\": \"<string>\",\n \"oldValue\": \"<any>\",\n \"newValue\": \"<any>\",\n \"summary\": {},\n \"driftDetected\": true\n }\n }\n ],\n \"updateUsers\": [\n {\n \"oldUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"newUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-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://api.velt.dev/v2/commentannotations/update")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ],\n \"userIds\": [\n \"<string>\"\n ],\n \"annotationIds\": [\n \"<string>\"\n ],\n \"updatedData\": [\n {\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"from\": {},\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"statusUpdatedByUserId\": {},\n \"resolvedByUserId\": {},\n \"assignedTo\": {},\n \"context\": {},\n \"priority\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\"\n },\n \"suggestion\": {\n \"status\": \"<string>\",\n \"targetId\": \"<string>\",\n \"targetType\": \"<string>\",\n \"oldValue\": \"<any>\",\n \"newValue\": \"<any>\",\n \"summary\": {},\n \"driftDetected\": true\n }\n }\n ],\n \"updateUsers\": [\n {\n \"oldUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"newUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/commentannotations/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ],\n \"userIds\": [\n \"<string>\"\n ],\n \"annotationIds\": [\n \"<string>\"\n ],\n \"updatedData\": [\n {\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"from\": {},\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"statusUpdatedByUserId\": {},\n \"resolvedByUserId\": {},\n \"assignedTo\": {},\n \"context\": {},\n \"priority\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\"\n },\n \"suggestion\": {\n \"status\": \"<string>\",\n \"targetId\": \"<string>\",\n \"targetType\": \"<string>\",\n \"oldValue\": \"<any>\",\n \"newValue\": \"<any>\",\n \"summary\": {},\n \"driftDetected\": true\n }\n }\n ],\n \"updateUsers\": [\n {\n \"oldUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"newUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Annotations updated successfully.",
"data": {
"yourAnnotationId1": {
"success": true,
"id": "yourAnnotationId1",
"message": "Annotations updated successfully"
}
}
}
}
Comments Annotations
Update Comment Annotations
Update V2 comment annotations via REST: patch status, priority, assignee, context, or suggestion payload by annotation, location, or user ID.
POST
/
v2
/
commentannotations
/
update
Update Comment Annotations
curl --request POST \
--url https://api.velt.dev/v2/commentannotations/update \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"organizationId": "<string>",
"documentId": "<string>",
"locationIds": [
"<string>"
],
"userIds": [
"<string>"
],
"annotationIds": [
"<string>"
],
"updatedData": [
{
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": true
},
"from": {},
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"statusUpdatedByUserId": {},
"resolvedByUserId": {},
"assignedTo": {},
"context": {},
"priority": {
"id": "<string>",
"name": "<string>",
"color": "<string>",
"lightColor": "<string>"
},
"suggestion": {
"status": "<string>",
"targetId": "<string>",
"targetType": "<string>",
"oldValue": "<any>",
"newValue": "<any>",
"summary": {},
"driftDetected": true
}
}
],
"updateUsers": [
{
"oldUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
},
"newUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
}
}
'import requests
url = "https://api.velt.dev/v2/commentannotations/update"
payload = { "data": {
"organizationId": "<string>",
"documentId": "<string>",
"locationIds": ["<string>"],
"userIds": ["<string>"],
"annotationIds": ["<string>"],
"updatedData": [
{
"location": {
"id": "<string>",
"locationName": "<string>"
},
"targetElement": {
"elementId": "<string>",
"targetText": "<string>",
"occurrence": 123,
"selectAllContent": True
},
"from": {},
"status": {
"id": "<string>",
"name": "<string>",
"type": "<string>",
"color": "<string>",
"lightColor": "<string>",
"svg": "<string>",
"iconUrl": "<string>"
},
"statusUpdatedByUserId": {},
"resolvedByUserId": {},
"assignedTo": {},
"context": {},
"priority": {
"id": "<string>",
"name": "<string>",
"color": "<string>",
"lightColor": "<string>"
},
"suggestion": {
"status": "<string>",
"targetId": "<string>",
"targetType": "<string>",
"oldValue": "<any>",
"newValue": "<any>",
"summary": {},
"driftDetected": True
}
}
],
"updateUsers": [
{
"oldUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
},
"newUser": {
"userId": "<string>",
"name": "<string>",
"email": "<string>"
}
}
]
} }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
organizationId: '<string>',
documentId: '<string>',
locationIds: ['<string>'],
userIds: ['<string>'],
annotationIds: ['<string>'],
updatedData: [
{
location: {id: '<string>', locationName: '<string>'},
targetElement: {
elementId: '<string>',
targetText: '<string>',
occurrence: 123,
selectAllContent: true
},
from: {},
status: {
id: '<string>',
name: '<string>',
type: '<string>',
color: '<string>',
lightColor: '<string>',
svg: '<string>',
iconUrl: '<string>'
},
statusUpdatedByUserId: {},
resolvedByUserId: {},
assignedTo: {},
context: {},
priority: {id: '<string>', name: '<string>', color: '<string>', lightColor: '<string>'},
suggestion: {
status: '<string>',
targetId: '<string>',
targetType: '<string>',
oldValue: '<any>',
newValue: '<any>',
summary: {},
driftDetected: true
}
}
],
updateUsers: [
{
oldUser: {userId: '<string>', name: '<string>', email: '<string>'},
newUser: {userId: '<string>', name: '<string>', email: '<string>'}
}
]
}
})
};
fetch('https://api.velt.dev/v2/commentannotations/update', 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.velt.dev/v2/commentannotations/update",
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([
'data' => [
'organizationId' => '<string>',
'documentId' => '<string>',
'locationIds' => [
'<string>'
],
'userIds' => [
'<string>'
],
'annotationIds' => [
'<string>'
],
'updatedData' => [
[
'location' => [
'id' => '<string>',
'locationName' => '<string>'
],
'targetElement' => [
'elementId' => '<string>',
'targetText' => '<string>',
'occurrence' => 123,
'selectAllContent' => true
],
'from' => [
],
'status' => [
'id' => '<string>',
'name' => '<string>',
'type' => '<string>',
'color' => '<string>',
'lightColor' => '<string>',
'svg' => '<string>',
'iconUrl' => '<string>'
],
'statusUpdatedByUserId' => [
],
'resolvedByUserId' => [
],
'assignedTo' => [
],
'context' => [
],
'priority' => [
'id' => '<string>',
'name' => '<string>',
'color' => '<string>',
'lightColor' => '<string>'
],
'suggestion' => [
'status' => '<string>',
'targetId' => '<string>',
'targetType' => '<string>',
'oldValue' => '<any>',
'newValue' => '<any>',
'summary' => [
],
'driftDetected' => true
]
]
],
'updateUsers' => [
[
'oldUser' => [
'userId' => '<string>',
'name' => '<string>',
'email' => '<string>'
],
'newUser' => [
'userId' => '<string>',
'name' => '<string>',
'email' => '<string>'
]
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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.velt.dev/v2/commentannotations/update"
payload := strings.NewReader("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ],\n \"userIds\": [\n \"<string>\"\n ],\n \"annotationIds\": [\n \"<string>\"\n ],\n \"updatedData\": [\n {\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"from\": {},\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"statusUpdatedByUserId\": {},\n \"resolvedByUserId\": {},\n \"assignedTo\": {},\n \"context\": {},\n \"priority\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\"\n },\n \"suggestion\": {\n \"status\": \"<string>\",\n \"targetId\": \"<string>\",\n \"targetType\": \"<string>\",\n \"oldValue\": \"<any>\",\n \"newValue\": \"<any>\",\n \"summary\": {},\n \"driftDetected\": true\n }\n }\n ],\n \"updateUsers\": [\n {\n \"oldUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"newUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-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://api.velt.dev/v2/commentannotations/update")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ],\n \"userIds\": [\n \"<string>\"\n ],\n \"annotationIds\": [\n \"<string>\"\n ],\n \"updatedData\": [\n {\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"from\": {},\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"statusUpdatedByUserId\": {},\n \"resolvedByUserId\": {},\n \"assignedTo\": {},\n \"context\": {},\n \"priority\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\"\n },\n \"suggestion\": {\n \"status\": \"<string>\",\n \"targetId\": \"<string>\",\n \"targetType\": \"<string>\",\n \"oldValue\": \"<any>\",\n \"newValue\": \"<any>\",\n \"summary\": {},\n \"driftDetected\": true\n }\n }\n ],\n \"updateUsers\": [\n {\n \"oldUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"newUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/commentannotations/update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"organizationId\": \"<string>\",\n \"documentId\": \"<string>\",\n \"locationIds\": [\n \"<string>\"\n ],\n \"userIds\": [\n \"<string>\"\n ],\n \"annotationIds\": [\n \"<string>\"\n ],\n \"updatedData\": [\n {\n \"location\": {\n \"id\": \"<string>\",\n \"locationName\": \"<string>\"\n },\n \"targetElement\": {\n \"elementId\": \"<string>\",\n \"targetText\": \"<string>\",\n \"occurrence\": 123,\n \"selectAllContent\": true\n },\n \"from\": {},\n \"status\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\",\n \"svg\": \"<string>\",\n \"iconUrl\": \"<string>\"\n },\n \"statusUpdatedByUserId\": {},\n \"resolvedByUserId\": {},\n \"assignedTo\": {},\n \"context\": {},\n \"priority\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"color\": \"<string>\",\n \"lightColor\": \"<string>\"\n },\n \"suggestion\": {\n \"status\": \"<string>\",\n \"targetId\": \"<string>\",\n \"targetType\": \"<string>\",\n \"oldValue\": \"<any>\",\n \"newValue\": \"<any>\",\n \"summary\": {},\n \"driftDetected\": true\n }\n }\n ],\n \"updateUsers\": [\n {\n \"oldUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"newUser\": {\n \"userId\": \"<string>\",\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"status": "success",
"message": "Annotations updated successfully.",
"data": {
"yourAnnotationId1": {
"success": true,
"id": "yourAnnotationId1",
"message": "Annotations updated successfully"
}
}
}
}
Use this API to update comment annotations in a document within an organization.
Additional filters can be applied using location IDs, annotation IDs, or user IDs.
Endpoint
POST https://api.velt.dev/v2/commentannotations/update
Headers
string
required
Your API key.
string
required
Your Auth Token.
Body
Params
object
required
Show properties
Show properties
string
required
Organization ID
string
required
Document ID
string[]
Array of Location IDs
string[]
Array of User IDs. These are the users who created the comment annotation.
string[]
Array of Annotation IDs
object[]
Show properties
Show properties
object
Target Element
Show properties
Show properties
string
Element DOM Id
string
Target Text. Provide this if you want to add comment annotation on the provided text content.
number
Occurrence. Provide this if you want to add comment annotation on a text content.
boolean
Select All Content. Provide this if you want to select and add comment annotation on the entire text content of the target elementId.
User
User object from whom the Comment Annotation is added
Status
string | null
User ID of whoever made this status change.Pass
null to clear it. Omit the field to leave the stored value unchanged.string | null
User ID of whoever resolved the comment annotation. This is what
resolvedBy
filtering on Get Comment Annotations matches against.Pass null to clear it. Omit the field to leave the stored value unchanged.Setting a
status whose type is not terminal clears this field and
resolvedByUser automatically, even if you pass a value here. A comment annotation
that is no longer resolved cannot keep a resolver. statusUpdatedByUserId is not
cleared, so you still have a record of who reopened it.User
User object to whom the comment is assigned
object
Custom key/value metadata object
object
object
Proposed-change payload for
type: "suggestion" annotations. Any fields you send replace the persisted suggestion object. Include the existing fields when you only want to change one value (for example, status); otherwise omitted fields are cleared.The schema is open: additional custom fields are stored as-is. Unlike create, status is honored here and can be set to pending, accepted, or rejected.Show properties
Show properties
string
Suggestion lifecycle status. One of:
pending, accepted, or rejected.string
Stable ID of the thing being changed.
string
Kind of target the suggestion applies to.
any
The value at the time the suggestion was created.
any
The proposed new value.
string | null
Optional human-readable summary of the change.
boolean
Set to
true when the live target value differs from oldValue.Example Requests
1. Update all comment annotations by organizationId and documentId
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"annotationIds": [
"yourAnnotationId1",
"yourAnnotationId2"
],
"updatedData" : {
"status": {
"id": "inprogress",
"name": "In Progress",
"type": "ongoing"
}
}
}
}
2. Update comment annotations by organizationId, documentId and locationIds
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"locationIds": [
"locationx"
],
"annotationIds": [
"yourAnnotationId1",
"yourAnnotationId2"
],
"updatedData" : {
"status": {
"id": "inprogress",
"name": "In Progress",
"type": "ongoing"
}
}
}
}
3. Update annotations by organizationId, documentId, locationIds and userIds
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"locationIds": [
"locationx"
],
"userIds": [
"yourUserId"
],
"annotationIds": [
"yourAnnotationId1",
"yourAnnotationId2"
],
"updatedData" : {
"status": {
"id": "inprogress",
"name": "In Progress",
"type": "ongoing"
}
}
}
}
4. Update comment annotations by organizationId, documentId and userIds
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"userIds": [
"yourUserId"
],
"annotationIds": [
"yourAnnotationId1",
"yourAnnotationId2"
],
"updatedData" : {
"status": {
"id": "inprogress",
"name": "In Progress",
"type": "ongoing"
}
}
}
}
5. Update comment annotations by organizationId, documentId and annotationIds
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"annotationIds": [
"yourAnnotationId1",
"yourAnnotationId2"
],
"updatedData" : {
"status": {
"id": "inprogress",
"name": "In Progress",
"type": "ongoing"
}
}
}
}
6. Update comment annotations by organizationId, documentId, locationIds and annotationIds
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"locationIds": [
"locationx"
],
"annotationIds": [
"yourAnnotationId1",
"yourAnnotationId2"
],
"updatedData" : {
"status": {
"id": "inprogress",
"name": "In Progress",
"type": "ongoing"
}
}
}
}
7. Update Users in existing comment annotations
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"annotationIds": [
"yourAnnotationId1",
"yourAnnotationId2"
],
"updateUsers" : [
{
"oldUser": {
"userId": "oldUserId",
},
"newUser": {
"userId": "newUserId",
"name": "newUserName",
"email": "newUserEmail"
}
}
]
}
}
8. Update comment annotations with access context
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"annotationIds": [
"yourAnnotationId1"
],
"updatedData": {
"context": {
"access": {
"entityId": "numberOfAccounts",
"dashboardId": "salesDashboard"
}
}
}
}
}
9. Resolve a comment annotation and record who resolved it
Recording the resolver is what makes the annotation match aresolvedBy filter later.
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"annotationIds": [
"yourAnnotationId1"
],
"updatedData": {
"status": {
"id": "RESOLVED",
"name": "Resolved",
"type": "terminal"
},
"resolvedByUserId": "yourUserId",
"statusUpdatedByUserId": "yourUserId"
}
}
}
10. Reopen a comment annotation
Moving to a non-terminal status clears resolvedByUserId and resolvedByUser for you, so
there is no need to null them yourself. Send statusUpdatedByUserId to record who reopened it.
{
"data": {
"organizationId": "yourOrganizationId",
"documentId": "yourDocumentId",
"annotationIds": [
"yourAnnotationId1"
],
"updatedData": {
"status": {
"id": "OPEN",
"name": "Open",
"type": "default"
},
"statusUpdatedByUserId": "yourUserId"
}
}
}
Response
Success Response
{
"result": {
"status": "success",
"message": "Annotations updated successfully.",
"data": {
"yourAnnotationId1": {
"success": true,
"id": "yourAnnotationId1",
"message": "Annotations updated successfully"
}
}
}
}
Failure Response
{
"error": {
"message": "ERROR_MESSAGE",
"status": "INVALID_ARGUMENT"
}
}
{
"result": {
"status": "success",
"message": "Annotations updated successfully.",
"data": {
"yourAnnotationId1": {
"success": true,
"id": "yourAnnotationId1",
"message": "Annotations updated successfully"
}
}
}
}
Was this page helpful?

