Updates an existing contact (partial update using PATCH semantics).
Usage Examples
Update email address with concurrency control:
PATCH /api/v1/network/contacts/789
If-Match: W/"AAAAAAAAK0Q="
Content-Type: application/json
{
"email": "newemail@example.com"
}
Update multiple fields:
{
"firstName": "Jane",
"tags": ["vip", "enterprise", "decision-maker"]
}
Clear a field (set to null):
{
"phone": null,
"primaryLanguage": null
}
Concurrency Control with ETags
The If-Match header enables optimistic concurrency control:
- Fetch the contact:
GET /contacts/789(receives ETag in response) - Modify the data locally
- Send update with
If-Match: {etag}header - If another client modified the contact in the meantime, you'll receive
412 Precondition Failed - Re-fetch the contact, merge changes, and retry
Best practice: Always include the If-Match header when updating from external CRM systems
to prevent overwriting concurrent changes from users.
Partial Update Semantics
This endpoint implements true HTTP PATCH semantics:
- Only fields present in the request body are updated
- Omitted fields retain their current values
- To clear a field, explicitly set it to
null - If no fields actually change, returns
200 OKwith unchanged data
Validation Rules
Same validation rules as POST /contacts apply to updated fields.
- Type: stringidrequired
The unique identifier of the contact to update
- Type: stringIf
- Match ETag value from a previous GET or PATCH response for optimistic concurrency control
ETag value from a previous GET or PATCH response. Enables optimistic concurrency control to prevent lost updates.
Request body for updating an existing contact. Only include fields you want to change. Omitted fields are left unchanged; fields set to null are cleared.
- Type: null | booleanblocked
- Type: array object[] ·connections
List of company connections (employments).
A link between a contact and a company, used when creating or updating contacts.
- Type: null | stringemail
Email address.
- Type: array object[] ·external
Refs External references to this contact in other systems (e.g. CRM IDs).
Represents an external system reference (e.g., Salesforce, HubSpot, Pipedrive). Supports multiple CRM systems simultaneously.
- Type: null | stringfirst
Name First name.
- Type: null | stringlast
Name Last name.
- Type: null | stringlinked
In Url LinkedIn profile URL in the format https://www.linkedin.com/in/{slug}.
- Type: null | stringphone
Phone number.
- Type: null | stringprimary
Language ISO 639-1 language code (e.g. 'en', 'sv').
- Type: null | integerFormat: int32profile
Picture Id - Type: null | stringstrategy
Investment strategy or description.
- Type: array string[]
List of tags or labels.
- application/json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
curl 'https://app.propstreet.com/api/v1/network/contacts/{id}' \
--request PATCH \
--header 'If-Match: ' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"externalRefs": [
{
"namespace": "",
"id": ""
}
],
"firstName": null,
"lastName": null,
"email": null,
"phone": null,
"linkedInUrl": null,
"primaryLanguage": null,
"tags": [
""
],
"strategy": null,
"connections": [
{
"company": {
"kind": "existing",
"id": ""
},
"jobTitle": null,
"primary": true
}
],
"blocked": null,
"profilePictureId": null
}'
{
"id": "string",
"uri": null,
"externalRefs": [
{
"namespace": "string",
"id": "string"
}
],
"firstName": null,
"lastName": null,
"email": null,
"phone": null,
"linkedInUrl": null,
"emails": [
{
"address": "string",
"type": null,
"isPrimary": true
}
],
"phones": [
{
"number": "string",
"type": null,
"isPrimary": true
}
],
"primaryLanguage": null,
"tags": [
"string"
],
"strategy": null,
"primaryCompanyId": null,
"companies": [
{
"id": "string",
"uri": null,
"name": "string",
"jobTitle": null,
"isPrimary": true
}
],
"profilePictureUrl": null,
"createdUtc": "2026-05-18T20:22:36.959Z",
"updatedUtc": "2026-05-18T20:22:36.959Z",
"deletedUtc": null,
"etag": "string",
"changeType": null,
"changeOrigin": null
}