curl --request PATCH \
--url https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"addresses": {},
"contact": {
"mobilePhone": "+1555555555",
"otherPhone": "+1555555555",
"primaryEmail": "john.doe@example.com",
"secondaryEmail": "john.doe@example.com"
},
"externalId": "G4K7N8M",
"legalPerson": {
"activity": "Electronic devices development",
"foundingDate": "2025-01-01",
"representative": {
"document": "12345678900",
"email": "john.doe@example.com",
"name": "John Doe",
"role": "CFO"
},
"size": "Medium",
"status": "Active",
"tradeName": "Lerian Studio",
"type": "Limited Liability"
},
"metadata": {},
"name": "Jonathan Doe",
"naturalPerson": {
"birthDate": "1990-01-01",
"civilStatus": "Single",
"fatherName": "John Doe",
"favoriteName": "John",
"gender": "Male",
"motherName": "Jane Doe",
"nationality": "Brazilian",
"socialName": "John Doe",
"status": "Active"
}
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id}"
payload := strings.NewReader("{\n \"addresses\": {},\n \"contact\": {\n \"mobilePhone\": \"+1555555555\",\n \"otherPhone\": \"+1555555555\",\n \"primaryEmail\": \"john.doe@example.com\",\n \"secondaryEmail\": \"john.doe@example.com\"\n },\n \"externalId\": \"G4K7N8M\",\n \"legalPerson\": {\n \"activity\": \"Electronic devices development\",\n \"foundingDate\": \"2025-01-01\",\n \"representative\": {\n \"document\": \"12345678900\",\n \"email\": \"john.doe@example.com\",\n \"name\": \"John Doe\",\n \"role\": \"CFO\"\n },\n \"size\": \"Medium\",\n \"status\": \"Active\",\n \"tradeName\": \"Lerian Studio\",\n \"type\": \"Limited Liability\"\n },\n \"metadata\": {},\n \"name\": \"Jonathan Doe\",\n \"naturalPerson\": {\n \"birthDate\": \"1990-01-01\",\n \"civilStatus\": \"Single\",\n \"fatherName\": \"John Doe\",\n \"favoriteName\": \"John\",\n \"gender\": \"Male\",\n \"motherName\": \"Jane Doe\",\n \"nationality\": \"Brazilian\",\n \"socialName\": \"John Doe\",\n \"status\": \"Active\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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))
}const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
addresses: {},
contact: {
mobilePhone: '+1555555555',
otherPhone: '+1555555555',
primaryEmail: 'john.doe@example.com',
secondaryEmail: 'john.doe@example.com'
},
externalId: 'G4K7N8M',
legalPerson: {
activity: 'Electronic devices development',
foundingDate: '2025-01-01',
representative: {
document: '12345678900',
email: 'john.doe@example.com',
name: 'John Doe',
role: 'CFO'
},
size: 'Medium',
status: 'Active',
tradeName: 'Lerian Studio',
type: 'Limited Liability'
},
metadata: {},
name: 'Jonathan Doe',
naturalPerson: {
birthDate: '1990-01-01',
civilStatus: 'Single',
fatherName: 'John Doe',
favoriteName: 'John',
gender: 'Male',
motherName: 'Jane Doe',
nationality: 'Brazilian',
socialName: 'John Doe',
status: 'Active'
}
})
};
fetch('https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id}"
payload = {
"addresses": {},
"contact": {
"mobilePhone": "+1555555555",
"otherPhone": "+1555555555",
"primaryEmail": "john.doe@example.com",
"secondaryEmail": "john.doe@example.com"
},
"externalId": "G4K7N8M",
"legalPerson": {
"activity": "Electronic devices development",
"foundingDate": "2025-01-01",
"representative": {
"document": "12345678900",
"email": "john.doe@example.com",
"name": "John Doe",
"role": "CFO"
},
"size": "Medium",
"status": "Active",
"tradeName": "Lerian Studio",
"type": "Limited Liability"
},
"metadata": {},
"name": "Jonathan Doe",
"naturalPerson": {
"birthDate": "1990-01-01",
"civilStatus": "Single",
"fatherName": "John Doe",
"favoriteName": "John",
"gender": "Male",
"motherName": "Jane Doe",
"nationality": "Brazilian",
"socialName": "John Doe",
"status": "Active"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"createdAt": "2025-01-01T00:00:00Z",
"deletedAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-01T00:00:00Z",
"addresses": {
"additional1": {
"city": "New York",
"country": "US",
"line1": "123 Financial Avenue",
"line2": "Suite 1500",
"state": "NY",
"zipCode": "10001",
"description": "Home"
},
"additional2": {
"city": "New York",
"country": "US",
"line1": "123 Financial Avenue",
"line2": "Suite 1500",
"state": "NY",
"zipCode": "10001",
"description": "Home"
},
"primary": {
"city": "New York",
"country": "US",
"line1": "123 Financial Avenue",
"line2": "Suite 1500",
"state": "NY",
"zipCode": "10001",
"description": "Home"
}
},
"contact": {
"mobilePhone": "+1555555555",
"otherPhone": "+1555555555",
"primaryEmail": "john.doe@example.com",
"secondaryEmail": "john.doe@example.com"
},
"document": "12345678900",
"externalId": "G4K7N8M2",
"id": "00000000-0000-0000-0000-000000000000",
"legalPerson": {
"activity": "Electronic devices development",
"annualGrossRevenue": {
"currency": "BRL",
"referenceDate": "2026-06-30",
"value": "12500.50"
},
"foundingDate": "2025-01-01",
"representative": {
"document": "12345678900",
"email": "john.doe@example.com",
"name": "John Doe",
"role": "CFO"
},
"size": "Medium",
"status": "Active",
"totalAssets": {
"currency": "BRL",
"referenceDate": "2026-06-30",
"value": "12500.50"
},
"tradeName": "Lerian Studio",
"type": "Limited Liability"
},
"metadata": {},
"name": "John Doe",
"naturalPerson": {
"birthDate": "1990-01-01",
"civilStatus": "Single",
"fatherName": "John Doe",
"favoriteName": "John",
"gender": "Male",
"monthlyGrossIncome": {
"currency": "BRL",
"referenceDate": "2026-06-30",
"value": "12500.50"
},
"motherName": "Jane Doe",
"nationality": "Brazilian",
"socialName": "John Doe",
"status": "Active"
},
"type": "NATURAL_PERSON"
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}Update a Holder
Metadata is applied as an RFC 7396 merge patch: a body without metadata, or with an empty metadata object, leaves the stored metadata as it is; a key sent as null is deleted; any other key is added or replaced; metadata sent as null also leaves the stored metadata as it is, so keys are deleted one at a time.
curl --request PATCH \
--url https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"addresses": {},
"contact": {
"mobilePhone": "+1555555555",
"otherPhone": "+1555555555",
"primaryEmail": "john.doe@example.com",
"secondaryEmail": "john.doe@example.com"
},
"externalId": "G4K7N8M",
"legalPerson": {
"activity": "Electronic devices development",
"foundingDate": "2025-01-01",
"representative": {
"document": "12345678900",
"email": "john.doe@example.com",
"name": "John Doe",
"role": "CFO"
},
"size": "Medium",
"status": "Active",
"tradeName": "Lerian Studio",
"type": "Limited Liability"
},
"metadata": {},
"name": "Jonathan Doe",
"naturalPerson": {
"birthDate": "1990-01-01",
"civilStatus": "Single",
"fatherName": "John Doe",
"favoriteName": "John",
"gender": "Male",
"motherName": "Jane Doe",
"nationality": "Brazilian",
"socialName": "John Doe",
"status": "Active"
}
}
'package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id}"
payload := strings.NewReader("{\n \"addresses\": {},\n \"contact\": {\n \"mobilePhone\": \"+1555555555\",\n \"otherPhone\": \"+1555555555\",\n \"primaryEmail\": \"john.doe@example.com\",\n \"secondaryEmail\": \"john.doe@example.com\"\n },\n \"externalId\": \"G4K7N8M\",\n \"legalPerson\": {\n \"activity\": \"Electronic devices development\",\n \"foundingDate\": \"2025-01-01\",\n \"representative\": {\n \"document\": \"12345678900\",\n \"email\": \"john.doe@example.com\",\n \"name\": \"John Doe\",\n \"role\": \"CFO\"\n },\n \"size\": \"Medium\",\n \"status\": \"Active\",\n \"tradeName\": \"Lerian Studio\",\n \"type\": \"Limited Liability\"\n },\n \"metadata\": {},\n \"name\": \"Jonathan Doe\",\n \"naturalPerson\": {\n \"birthDate\": \"1990-01-01\",\n \"civilStatus\": \"Single\",\n \"fatherName\": \"John Doe\",\n \"favoriteName\": \"John\",\n \"gender\": \"Male\",\n \"motherName\": \"Jane Doe\",\n \"nationality\": \"Brazilian\",\n \"socialName\": \"John Doe\",\n \"status\": \"Active\"\n }\n}")
req, _ := http.NewRequest("PATCH", 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))
}const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
addresses: {},
contact: {
mobilePhone: '+1555555555',
otherPhone: '+1555555555',
primaryEmail: 'john.doe@example.com',
secondaryEmail: 'john.doe@example.com'
},
externalId: 'G4K7N8M',
legalPerson: {
activity: 'Electronic devices development',
foundingDate: '2025-01-01',
representative: {
document: '12345678900',
email: 'john.doe@example.com',
name: 'John Doe',
role: 'CFO'
},
size: 'Medium',
status: 'Active',
tradeName: 'Lerian Studio',
type: 'Limited Liability'
},
metadata: {},
name: 'Jonathan Doe',
naturalPerson: {
birthDate: '1990-01-01',
civilStatus: 'Single',
fatherName: 'John Doe',
favoriteName: 'John',
gender: 'Male',
motherName: 'Jane Doe',
nationality: 'Brazilian',
socialName: 'John Doe',
status: 'Active'
}
})
};
fetch('https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://ledger.sandbox.lerian.net/v2/organizations/{organization_id}/holders/{holder_id}"
payload = {
"addresses": {},
"contact": {
"mobilePhone": "+1555555555",
"otherPhone": "+1555555555",
"primaryEmail": "john.doe@example.com",
"secondaryEmail": "john.doe@example.com"
},
"externalId": "G4K7N8M",
"legalPerson": {
"activity": "Electronic devices development",
"foundingDate": "2025-01-01",
"representative": {
"document": "12345678900",
"email": "john.doe@example.com",
"name": "John Doe",
"role": "CFO"
},
"size": "Medium",
"status": "Active",
"tradeName": "Lerian Studio",
"type": "Limited Liability"
},
"metadata": {},
"name": "Jonathan Doe",
"naturalPerson": {
"birthDate": "1990-01-01",
"civilStatus": "Single",
"fatherName": "John Doe",
"favoriteName": "John",
"gender": "Male",
"motherName": "Jane Doe",
"nationality": "Brazilian",
"socialName": "John Doe",
"status": "Active"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"createdAt": "2025-01-01T00:00:00Z",
"deletedAt": "2025-01-01T00:00:00Z",
"updatedAt": "2025-01-01T00:00:00Z",
"addresses": {
"additional1": {
"city": "New York",
"country": "US",
"line1": "123 Financial Avenue",
"line2": "Suite 1500",
"state": "NY",
"zipCode": "10001",
"description": "Home"
},
"additional2": {
"city": "New York",
"country": "US",
"line1": "123 Financial Avenue",
"line2": "Suite 1500",
"state": "NY",
"zipCode": "10001",
"description": "Home"
},
"primary": {
"city": "New York",
"country": "US",
"line1": "123 Financial Avenue",
"line2": "Suite 1500",
"state": "NY",
"zipCode": "10001",
"description": "Home"
}
},
"contact": {
"mobilePhone": "+1555555555",
"otherPhone": "+1555555555",
"primaryEmail": "john.doe@example.com",
"secondaryEmail": "john.doe@example.com"
},
"document": "12345678900",
"externalId": "G4K7N8M2",
"id": "00000000-0000-0000-0000-000000000000",
"legalPerson": {
"activity": "Electronic devices development",
"annualGrossRevenue": {
"currency": "BRL",
"referenceDate": "2026-06-30",
"value": "12500.50"
},
"foundingDate": "2025-01-01",
"representative": {
"document": "12345678900",
"email": "john.doe@example.com",
"name": "John Doe",
"role": "CFO"
},
"size": "Medium",
"status": "Active",
"totalAssets": {
"currency": "BRL",
"referenceDate": "2026-06-30",
"value": "12500.50"
},
"tradeName": "Lerian Studio",
"type": "Limited Liability"
},
"metadata": {},
"name": "John Doe",
"naturalPerson": {
"birthDate": "1990-01-01",
"civilStatus": "Single",
"fatherName": "John Doe",
"favoriteName": "John",
"gender": "Male",
"monthlyGrossIncome": {
"currency": "BRL",
"referenceDate": "2026-06-30",
"value": "12500.50"
},
"motherName": "Jane Doe",
"nationality": "Brazilian",
"socialName": "John Doe",
"status": "Active"
},
"type": "NATURAL_PERSON"
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}{
"code": "<string>",
"detail": "Property foo is required but is missing.",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
],
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "https://example.com/errors/example",
"upstream": {
"code": "E4001",
"message": "account not found at provider"
}
}Authorizations
JWT bearer token issued by the identity provider.
Path Parameters
Organization ID (UUID)
Holder ID (UUID)
Body
Show child attributes
Show child attributes
Show child attributes
Show child attributes
256"G4K7N8M"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
256"Jonathan Doe"
Show child attributes
Show child attributes
Response
OK
"2025-01-01T00:00:00Z"
"2025-01-01T00:00:00Z"
"2025-01-01T00:00:00Z"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
100"12345678900"
256"G4K7N8M2"
"00000000-0000-0000-0000-000000000000"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
256"John Doe"
Show child attributes
Show child attributes
100"NATURAL_PERSON"
Was this page helpful?

