/clients/{clientId}Update a clientUpdates the provided fields; omitted fields are left unchanged. Cross- tenant updates return 404 not_found (no existence leak).
Parameters
clientIdstring · uuidpathrequiredClient UUID.
Request body
requiredapplication/json
PATCH-style update — only the fields present in the body are touched. Any unknown fields are ignored.
accountManagerIdsarray of string · uuidFull-replacement set of account-manager user IDs. Omit to leave the existing assignments untouched. Pass an empty array to clear all assignments. Pass a populated array to replace the entire assignment set. Each ID is validated for org membership; cross-tenant assignment returns `400 invalid_argument` with the offending ID in the message.
Show child attributes
clientTypestringOptional new lifecycle stage. Omit to leave the stored value untouched (no silent default on update). Invalid values return `400 invalid_argument` naming the offending value.
domainstringNew email domain. Passing an empty string clears the domain.
namestringNew display name.
{
"accountManagerIds": [
"00000000-0000-0000-0000-000000000000"
],
"clientType": "churned",
"domain": "string",
"name": "string"
}Responses
Headers
X-RateLimit-LimitThe request cap for the tighter of the per-organization / per-endpoint windows that applied to this request.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetUnix timestamp (seconds) when the current window resets.
allOf · 2 options
datavaluerequiredThe response payload — shape depends on the endpoint.
metaobjectrequiredPagination metadata — populated on list endpoints, empty on single-resource endpoints.
Show child attributes
cursornull | stringOpaque cursor to pass to the next request.
hasMoreboolean | nullTrue when further pages of results are available.
dataobjectA client record (partner's CRM account / customer). The fields `email`, `phone`, `company`, and `notes` from the v1.0 spec document are not yet populated — tracked as a follow-up.
Show child attributes
accountManagersarray of objectrequiredUsers assigned as account managers for this client. Peers — no primary/secondary distinction. Always present; an empty array signals no managers are assigned.
Show child attributes
Show array items
Minimal user identity surfaced on client records.
emailstring · emailrequiredfirstNamestringrequiredlastNamestringrequireduserIdstring · uuidrequiredStable UUID for this user.
clientTypestringrequiredLifecycle stage of the client (status, not legal entity type). `prospect` → `active` → `churned` is the canonical progression. Use this to answer pipeline/status questions ("who are my prospects?", "who has churned?"). Defaults to `active` on creation when the caller omits the field.
createdAtstring · date-timerequiredUTC timestamp when the client was created.
domainnull | stringPrimary email domain used to auto-assign communications (e.g. `acme.com`).
idstring · uuidrequiredStable UUID for this client.
namestringrequiredDisplay name of the client.
updatedAtstring · date-timerequiredUTC timestamp of the most recent update.
{
"data": {
"accountManagers": [
{
"email": "user@example.com",
"firstName": "string",
"lastName": "string",
"userId": "00000000-0000-0000-0000-000000000000"
}
],
"clientType": "active",
"createdAt": "2026-06-09T00:00:00Z",
"domain": "acme.com",
"id": "8b2d1c4e-3f5a-4e2b-9c8f-1e2d3c4b5a6f",
"name": "Acme Corp",
"updatedAt": "2026-06-09T00:00:00Z"
},
"meta": {
"cursor": "string",
"hasMore": true
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "invalid_argument",
"message": "limit must be an integer between 1 and 100"
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "not_found",
"message": "client not found"
}
}Headers
Retry-AfterSeconds the client should wait before retrying.
errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "rate_limited",
"details": {
"retry_after_seconds": 30
},
"message": "Rate limit exceeded"
}
}