Update My Profile
Update your own profile. There is no id in the path — this always edits the authenticated caller (it mirrors GET /v1/user). All fields are optional; only the fields you include in the body are updated, the rest are left as-is.
This edits user properties only. Plan and limits are an account property — change them via the account, not here (see /account/plan). Editing another user is a staff-only admin operation.
Request body
. ' - _ ( ) ! ? : , + & only. An empty string clears it.pending_email and a verification link is sent to the new address; email changes when you open that link. Needs current_password. Accounts that sign in only through SSO can't change it here (their IdP manages it).email.Any other field (plan, limits, role, status) is an admin-only change and is refused with 403 (code: "admin_field_on_self_route", the refused names in fields); nothing is written.
Response (200 OK)
Returns your updated profile — same shape as GET /v1/user (identity only, including your uuid; no plan/billing fields). A requested email change shows up as pending_email on your next GET /v1/user.
Errors
email without current_password, a full_name with characters that aren't allowed, or no field to update.current_password.current_password attempts; try again later.