Update Person
curl --request PATCH \
--url https://api.opennous.cloud/v2/people/{id}import requests
url = "https://api.opennous.cloud/v2/people/{id}"
response = requests.patch(url)
print(response.text)const options = {method: 'PATCH'};
fetch('https://api.opennous.cloud/v2/people/{id}', 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.opennous.cloud/v2/people/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.opennous.cloud/v2/people/{id}"
req, _ := http.NewRequest("PATCH", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.opennous.cloud/v2/people/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opennous.cloud/v2/people/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
response = http.request(request)
puts response.read_bodyPeople
Update Person
Assert claim values directly on a person. Asserted claims are sticky — the derivation engine will not overwrite them from later observations.
PATCH
/
v2
/
people
/
{id}
Update Person
curl --request PATCH \
--url https://api.opennous.cloud/v2/people/{id}import requests
url = "https://api.opennous.cloud/v2/people/{id}"
response = requests.patch(url)
print(response.text)const options = {method: 'PATCH'};
fetch('https://api.opennous.cloud/v2/people/{id}', 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.opennous.cloud/v2/people/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.opennous.cloud/v2/people/{id}"
req, _ := http.NewRequest("PATCH", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.opennous.cloud/v2/people/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.opennous.cloud/v2/people/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
response = http.request(request)
puts response.read_body:id may be an entity UUID, email, domain, or LinkedIn URL. Identifier fields on the body attach to the entity. Every other field is asserted as a claim.
curl -X PATCH https://api.opennous.cloud/v2/people/sarah@acme.com \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"job_title": "Chief Revenue Officer",
"phone": "+1-415-555-0100"
}'
Body
Any subset of identifier fields (email, linkedin_url, linkedin_member_id, hubspot_id, pipedrive_id, apollo_id, attio_id) plus any claim fields (first_name, last_name, job_title, company, seniority, department, city, country, phone, pipeline_stage, etc.).
To clear a claim, pass null for its value. The claim is invalidated rather than deleted, so prior values remain auditable.
Response
{
"person": {
"id": "a1b2c3d4-...",
"entity_id": "a1b2c3d4-...",
"job_title": "Chief Revenue Officer",
"phone": "+1-415-555-0100",
"...": "..."
},
"claims_written": 2
}
id and entity_id are returned and always carry the same value (the entity UUID). GET /v2/people returns only id.
The write model in one line
Observations record what happened. Assertions throughPOST and PATCH declare what is true now. Both land in the same context graph, both show up in /v2/accounts/:id, and asserted facts stick until you change them.