applyNoteOperation
curl --request POST \
--url https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"args": {
"meetingId": "meeting_123example",
"operation": {
"type": "insert",
"position": 42,
"content": "Action items:\n- Follow up on Q4 goals\n"
},
"clientSequence": 15,
"expectedVersion": 8
}
}
'import requests
url = "https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation"
payload = { "args": {
"meetingId": "meeting_123example",
"operation": {
"type": "insert",
"position": 42,
"content": "Action items:
- Follow up on Q4 goals
"
},
"clientSequence": 15,
"expectedVersion": 8
} }
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({
args: {
meetingId: 'meeting_123example',
operation: {
type: 'insert',
position: 42,
content: 'Action items:\n- Follow up on Q4 goals\n'
},
clientSequence: 15,
expectedVersion: 8
}
})
};
fetch('https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation', 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://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation",
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([
'args' => [
'meetingId' => 'meeting_123example',
'operation' => [
'type' => 'insert',
'position' => 42,
'content' => 'Action items:
- Follow up on Q4 goals
'
],
'clientSequence' => 15,
'expectedVersion' => 8
]
]),
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://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation"
payload := strings.NewReader("{\n \"args\": {\n \"meetingId\": \"meeting_123example\",\n \"operation\": {\n \"type\": \"insert\",\n \"position\": 42,\n \"content\": \"Action items:\\n- Follow up on Q4 goals\\n\"\n },\n \"clientSequence\": 15,\n \"expectedVersion\": 8\n }\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://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"args\": {\n \"meetingId\": \"meeting_123example\",\n \"operation\": {\n \"type\": \"insert\",\n \"position\": 42,\n \"content\": \"Action items:\\n- Follow up on Q4 goals\\n\"\n },\n \"clientSequence\": 15,\n \"expectedVersion\": 8\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation")
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 \"args\": {\n \"meetingId\": \"meeting_123example\",\n \"operation\": {\n \"type\": \"insert\",\n \"position\": 42,\n \"content\": \"Action items:\\n- Follow up on Q4 goals\\n\"\n },\n \"clientSequence\": 15,\n \"expectedVersion\": 8\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"errorMessage": "",
"errorData": {},
"value": {
"success": true,
"serverSequence": 16,
"transformedOperation": {
"type": "insert",
"position": 45,
"content": "Action items:\n- Follow up on Q4 goals\n"
},
"newVersion": 9,
"conflicts": []
}
}{}{}Notes
applyNoteOperation
to resolve conflicts with concurrent edits. The operation is transformed against any concurrent operations that occurred after the client’s last known state, ensuring convergence across all clients. Tracks conflicts and returns the transformed operation along with the new document version.
POST
/
api
/
run
/
notes
/
mutations
/
applyNoteOperation
applyNoteOperation
curl --request POST \
--url https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"args": {
"meetingId": "meeting_123example",
"operation": {
"type": "insert",
"position": 42,
"content": "Action items:\n- Follow up on Q4 goals\n"
},
"clientSequence": 15,
"expectedVersion": 8
}
}
'import requests
url = "https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation"
payload = { "args": {
"meetingId": "meeting_123example",
"operation": {
"type": "insert",
"position": 42,
"content": "Action items:
- Follow up on Q4 goals
"
},
"clientSequence": 15,
"expectedVersion": 8
} }
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({
args: {
meetingId: 'meeting_123example',
operation: {
type: 'insert',
position: 42,
content: 'Action items:\n- Follow up on Q4 goals\n'
},
clientSequence: 15,
expectedVersion: 8
}
})
};
fetch('https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation', 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://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation",
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([
'args' => [
'meetingId' => 'meeting_123example',
'operation' => [
'type' => 'insert',
'position' => 42,
'content' => 'Action items:
- Follow up on Q4 goals
'
],
'clientSequence' => 15,
'expectedVersion' => 8
]
]),
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://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation"
payload := strings.NewReader("{\n \"args\": {\n \"meetingId\": \"meeting_123example\",\n \"operation\": {\n \"type\": \"insert\",\n \"position\": 42,\n \"content\": \"Action items:\\n- Follow up on Q4 goals\\n\"\n },\n \"clientSequence\": 15,\n \"expectedVersion\": 8\n }\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://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"args\": {\n \"meetingId\": \"meeting_123example\",\n \"operation\": {\n \"type\": \"insert\",\n \"position\": 42,\n \"content\": \"Action items:\\n- Follow up on Q4 goals\\n\"\n },\n \"clientSequence\": 15,\n \"expectedVersion\": 8\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://connvo-dev.convex.cloud/api/run/notes/mutations/applyNoteOperation")
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 \"args\": {\n \"meetingId\": \"meeting_123example\",\n \"operation\": {\n \"type\": \"insert\",\n \"position\": 42,\n \"content\": \"Action items:\\n- Follow up on Q4 goals\\n\"\n },\n \"clientSequence\": 15,\n \"expectedVersion\": 8\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"errorMessage": "",
"errorData": {},
"value": {
"success": true,
"serverSequence": 16,
"transformedOperation": {
"type": "insert",
"position": 45,
"content": "Action items:\n- Follow up on Q4 goals\n"
},
"newVersion": 9,
"conflicts": []
}
}{}{}Authorizations
Standard user authentication token issued via WorkOS. Provide as Authorization: Bearer <user-token>.
Body
application/json
Show child attributes
Show child attributes
⌘I