Skip to main content
This walkthrough reads and maintains a member you’ve already created (Create a user).

1. Fetch the profile

200 OK:
The read is scoped to your organization: a user who exists on 4D but isn’t a member of your org is a 404, not a 403 - membership is what makes them visible to you. The profile is the redacted partner view: you get the derived age_band, never the raw dob.

2. Update profile fields

PATCH takes any subset of the profile fields:
200 OK returns the updated user. Validation matches creation: country must be an assigned ISO alpha-2 code, dob a real past date.

3. Set typed attributes

Beyond the fixed profile, your org’s enabled attribute registry holds custom typed fields (Members). Write values by key:
200 OK:
Values are validated against each key’s definition - a single_choice attribute rejects values outside its configured choice list, an attribute key your org hasn’t enabled is rejected outright. Every stored value carries provenance, so an API-written value is always distinguishable from one an admin, the member, or a bulk import wrote. To clear a value, send the key with "clear": true and no value. Set and clear entries can share one request; each key may appear only once:
200 OK. The cleared value is deleted, so the response lists only the values that were set:
A clear is never inferred from an empty string: "" is a value, and a choice attribute rejects it. An entry with both clear: true and a value, an entry with neither, or a key repeated in one request is rejected with 422 ATTRIBUTE_INVALID_VALUE.

4. Read stored attributes

200 OK:
Org keys and partner admin sessions read members in their organization. A platform admin session reads the tenant selected as its active organization. Member sessions cannot use this partner read. The list contains stored values for enabled, active attribute definitions. Each value keeps its JSON type and provenance; updated_at is the stored value’s last update as an ISO timestamp. Unset and cleared values are absent. A member with no stored values returns { "values": [] }. Unknown, removed and other-organization members return 404. Core profile fields, including raw date of birth, are absent because they have no attribute-value row. Read those through the profile endpoint, which redacts raw DOB for partner readers. This attribute read creates no audit, attribute or idempotency records and ignores Idempotency-Key.

Common errors