Update User
Update an existing user.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Governed profile fields (first/last name, avatar, locale, timezone) carry per-field provenance: a user-token edit pins the field so automation cannot overwrite it, and a directory-synced value locks it against everyone but the directory. Writes from API-key or worker tokens to a pinned or locked field are skipped — the rest of the update still applies, and the skipped fields are reported in the response — unless the field is listed in pin_fields, which makes the write a deliberate edit that replaces the pin (directory locks still win). A pinned field whose requested value already matches the pinned one succeeds as a clean no-op (not reported as skipped); a directory-locked field is always reported as skipped, even when the requested value matches. User-token writes replace pins but are rejected on directory-locked fields (change those in the IdP).
The address the user logs in with, unique per organization and compared case-insensitively. Two rejections to expect: an email your directory supplies is only changeable in the identity provider, and an address another user in the organization already holds is refused — including a deactivated user's, because deactivating does not release it. The error names the user holding the address so you can move them off it first. Change email in a request by itself. Because login identity is global, an organization-scoped caller cannot rename a user who belongs to multiple organizations.
USER_ROLE_UNSPECIFIED, USER_ROLE_ORG_MEMBER, USER_ROLE_ORG_ADMIN, USER_ROLE_ORG_GUEST Specifies the authentication method for a user. If unset, the org default applies. Set to MAGIC_LINK to allow the user to bypass SSO (e.g. guest or break-glass accounts).
USER_AUTH_METHOD_UNSPECIFIED, USER_AUTH_METHOD_MAGIC_LINK BCP 47 language tag
Profile fields to hand back to automation (user ingestion). A pinned field keeps its current value but loses that protection, so the next ingestion sync may update it again. A field cannot be both set and released in the same request.
The governed user profile fields, which carry per-field provenance and edit protection.
USER_PROFILE_FIELD_UNSPECIFIED, USER_PROFILE_FIELD_FIRST_NAME, USER_PROFILE_FIELD_LAST_NAME, USER_PROFILE_FIELD_AVATAR_URL, USER_PROFILE_FIELD_TIMEZONE, USER_PROFILE_FIELD_LOCALE, USER_PROFILE_FIELD_MANAGER, USER_PROFILE_FIELD_DEPARTMENT, USER_PROFILE_FIELD_JOB_TITLE IANA timezone, e.g., "America/New_York"
Profile fields to pin against automation (user ingestion) overwrites. Edits made with a user token pin by default; API-key edits stay unpinned unless listed here. A pinned field must be set in the same request, and stays pinned until released (release_fields) or replaced by a later deliberate edit. avatar_url cannot be pinned; manager is pinned through the relationship endpoints' pin flag.
The governed user profile fields, which carry per-field provenance and edit protection.
USER_PROFILE_FIELD_UNSPECIFIED, USER_PROFILE_FIELD_FIRST_NAME, USER_PROFILE_FIELD_LAST_NAME, USER_PROFILE_FIELD_AVATAR_URL, USER_PROFILE_FIELD_TIMEZONE, USER_PROFILE_FIELD_LOCALE, USER_PROFILE_FIELD_MANAGER, USER_PROFILE_FIELD_DEPARTMENT, USER_PROFILE_FIELD_JOB_TITLE Department; empty string clears. Any saved value joins the org's department options automatically, adopting the casing of an existing case-insensitive match.
Free-text job title; empty string clears.
Response
Success
Requested profile fields this update did NOT apply because a manual (user-token) edit owns them. Only ever populated for API-key/worker callers — automation may not overwrite a deliberate human edit, so those fields keep their current value while the rest of the update applies. Empty when everything applied, including when the requested value already matched the pinned one.
The governed user profile fields, which carry per-field provenance and edit protection.
USER_PROFILE_FIELD_UNSPECIFIED, USER_PROFILE_FIELD_FIRST_NAME, USER_PROFILE_FIELD_LAST_NAME, USER_PROFILE_FIELD_AVATAR_URL, USER_PROFILE_FIELD_TIMEZONE, USER_PROFILE_FIELD_LOCALE, USER_PROFILE_FIELD_MANAGER, USER_PROFILE_FIELD_DEPARTMENT, USER_PROFILE_FIELD_JOB_TITLE Requested profile fields this update did NOT apply because the org's directory (IdP sync) supplies them. Populated for API-key/worker callers; user-token writes to directory-locked fields fail the request instead. Unlike pins, a directory-locked field is reported here even when the requested value matches the locked one — the lock gates before any value comparison.
The governed user profile fields, which carry per-field provenance and edit protection.
USER_PROFILE_FIELD_UNSPECIFIED, USER_PROFILE_FIELD_FIRST_NAME, USER_PROFILE_FIELD_LAST_NAME, USER_PROFILE_FIELD_AVATAR_URL, USER_PROFILE_FIELD_TIMEZONE, USER_PROFILE_FIELD_LOCALE, USER_PROFILE_FIELD_MANAGER, USER_PROFILE_FIELD_DEPARTMENT, USER_PROFILE_FIELD_JOB_TITLE 
