---
title: "Update user"
method: PUT
path: "/scim/Users/{userUid}"
tags: ["SCIM"]
---

# Update user

`PUT /scim/Users/{userUid}`

Updates a user's attributes. Only fields explicitly provided with a non-null, non-blank value are written — omitted, null, blank, or empty-list fields keep their current values.

Updatable fields: `userName`, `name.givenName`, `name.familyName`, `emails` (primary address), `externalId`, `locale`, `timezone`, `active`.

The `active` field is always applied from the request body regardless of its previous value.

Bot identities and users managed externally (EXTERNAL membership) cannot be updated.

Role assignments in the request body are ignored — role updates via SCIM are not supported.

## Path parameters

- `userUid` string, required

## Request body

- ScimUserRequest — SCIM User resource for create and update (PUT) operations
  - `schemas` string[] — SCIM schema URNs
  - `externalId` string — Identifier assigned by the provisioning client (IdP)
  - `userName` string, required — Unique username within the Phrase Platform. Required for create; optional for replace if unchanged.
  - `name` ScimName — User's name components
    - `givenName` string — First name
    - `familyName` string — Last name
  - `emails` ScimEmail[], required — List of email addresses. Must include at least one entry. The primary email is derived from the entry with `primary: true`, or the first entry if none is marked primary.
    - `value` string, email — Email address
    - `primary` boolean — Whether this is the user's primary email address
  - `active` boolean — Whether the user account should be enabled. **Ignored on create** — newly provisioned users are always active regardless of this value.
  - `locale` string — User locale in IETF BCP 47 format (e.g. `en-US`). Falls back to the organization default when not provided or when the value does not match a supported locale.
  - `timezone` string — User time zone in IANA Time Zone Database format (e.g. `Europe/Berlin`). Falls back to the organization default when not provided or when the value is not a recognized IANA timezone.
  - `roles` unknown

## Response `200`

User updated successfully

## Other responses

- `400` — Bad request — validation error or malformed body
- `401` — Unauthorized — missing or invalid token
- `404` — User not found or does not belong to the authenticated organization
- `409` — Conflict — `userName` already in use by another identity
- `422` — Unprocessable entity — business rule violation (e.g. duplicate email, bot identity, external membership)
- `500` — Internal server error

---

[API](https://skmtc.net/phrase/apis/control-hub-service.md) · [All operations](https://skmtc.net/phrase/apis/control-hub-service/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/phrase/control-hub-service/revisions/98ecac7ba2bf/schema)
