> ## Documentation Index
> Fetch the complete documentation index at: https://developers.phrase.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update user

> 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.




## OpenAPI

````yaml /openapi/phrase-platform.json put /scim/Users/{userUid}
openapi: 3.0.0
info:
  title: Phrase Platform API
  description: |
    ### Phrase Platform related API.
  version: 1.0.0
  termsOfService: https://phrase.com/terms/
  contact:
    url: https://phrase.com
servers:
  - url: https://eu.phrase.com/idm/
    description: The API server for EU data center.
  - url: https://us.phrase.com/idm/
    description: The API server for US data center.
security: []
tags:
  - name: OAuth
    description: OAuth Protocol
  - name: SCIM
    description: >-
      System for Cross-domain Identity Management (RFC 7643, RFC 7644). Enables
      automated user provisioning and deprovisioning from an identity provider
      (IdP).
paths:
  /scim/Users/{userUid}:
    put:
      tags:
        - SCIM
      summary: Update user
      description: >
        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.
      operationId: updateScimUser
      parameters:
        - name: userUid
          in: path
          description: Phrase Platform identity UID of the user
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/scim+json:
            schema:
              $ref: '#/components/schemas/ScimUserRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/ScimUserRequest'
      responses:
        '200':
          description: User updated successfully
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimUser'
        '400':
          description: Bad request — validation error or malformed body
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimError'
        '401':
          description: Unauthorized — missing or invalid token
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimError'
        '404':
          description: User not found or does not belong to the authenticated organization
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimError'
        '409':
          description: Conflict — `userName` already in use by another identity
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimError'
        '422':
          description: >-
            Unprocessable entity — business rule violation (e.g. duplicate
            email, bot identity, external membership)
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimError'
        '500':
          description: Internal server error
          content:
            application/scim+json:
              schema:
                $ref: '#/components/schemas/ScimError'
      security:
        - scimToken: []
components:
  schemas:
    ScimUserRequest:
      description: SCIM User resource for create and update (PUT) operations
      type: object
      required:
        - userName
        - emails
      properties:
        schemas:
          description: SCIM schema URNs
          type: array
          items:
            type: string
          example:
            - urn:ietf:params:scim:schemas:core:2.0:User
        externalId:
          description: Identifier assigned by the provisioning client (IdP)
          type: string
        userName:
          description: >-
            Unique username within the Phrase Platform. Required for create;
            optional for replace if unchanged.
          type: string
        name:
          $ref: '#/components/schemas/ScimName'
        emails:
          description: >-
            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.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ScimEmail'
        active:
          description: >-
            Whether the user account should be enabled. **Ignored on create** —
            newly provisioned users are always active regardless of this value.
          type: boolean
        locale:
          description: >-
            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.
          type: string
        timezone:
          description: >-
            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.
          type: string
        roles:
          description: >-
            Roles to assign on create. Only processed when SCIM role management
            is enabled for the organization. **Ignored on PUT and PATCH** — role
            updates via SCIM are not supported.


            **Standard format** (Okta, JumpCloud): one entry per Phrase product
            with `type` starting with `phrase__` and `value` set to the role
            name. The `phrase__platform` entry is mandatory and cannot be set to
            `none`.


            **Azure AD format**: single entry with `type:
            "WindowsAzureActiveDirectoryRole"` and `value` set to a JSON-escaped
            array of standard role objects.


            Example (standard):

            ```json

            [
              { "type": "phrase__platform", "value": "MEMBER" },
              { "type": "phrase__tms", "value": "none" },
              { "type": "phrase__strings", "value": "Translator" }
            ]

            ```


            Example (Azure AD):

            ```json

            [
              {
                "type": "WindowsAzureActiveDirectoryRole",
                "value": "[{\"type\":\"phrase__platform\",\"value\":\"MEMBER\"},{\"type\":\"phrase__tms\",\"value\":\"none\"},{\"type\":\"phrase__strings\",\"value\":\"Translator\"}]"
              }
            ]

            ```
          type: array
          items:
            $ref: '#/components/schemas/ScimRole'
    ScimUser:
      description: SCIM User resource (`urn:ietf:params:scim:schemas:core:2.0:User`)
      type: object
      properties:
        schemas:
          description: SCIM schema URNs
          type: array
          items:
            type: string
          example:
            - urn:ietf:params:scim:schemas:core:2.0:User
        id:
          description: >-
            Unique Phrase Platform identity UID, assigned by the service
            provider
          type: string
          readOnly: true
        externalId:
          description: >-
            Identifier assigned by the provisioning client (IdP). Used to
            correlate the Phrase identity with the IdP record.
          type: string
        userName:
          description: Unique username within the Phrase Platform
          type: string
        name:
          $ref: '#/components/schemas/ScimName'
        emails:
          description: >-
            List of email addresses. The first entry marked `primary: true` is
            used as the user's primary email.
          type: array
          items:
            $ref: '#/components/schemas/ScimEmail'
        active:
          description: Whether the user account is enabled
          type: boolean
        locale:
          description: User locale in IETF BCP 47 format (e.g. `en-US`)
          type: string
        timezone:
          description: >-
            User time zone in IANA Time Zone Database format (e.g.
            `Europe/Berlin`)
          type: string
        roles:
          description: >-
            Roles to assign on create. Only processed when SCIM role management
            is enabled for the organization.
          type: array
          items:
            $ref: '#/components/schemas/ScimRole'
        meta:
          $ref: '#/components/schemas/ScimMeta'
    ScimError:
      description: SCIM error response (RFC 7644 Section 3.12)
      type: object
      properties:
        schemas:
          type: array
          items:
            type: string
          example:
            - urn:ietf:params:scim:api:messages:2.0:Error
        status:
          description: HTTP status code as a string
          type: string
        scimType:
          description: >-
            SCIM error keyword (RFC 7644 Section 3.12), e.g. `invalidFilter`,
            `invalidValue`, `uniqueness`
          type: string
        detail:
          description: Human-readable error description
          type: string
    ScimName:
      description: User's name components
      type: object
      properties:
        givenName:
          description: First name
          type: string
        familyName:
          description: Last name
          type: string
    ScimEmail:
      description: Email address entry
      type: object
      properties:
        value:
          description: Email address
          type: string
          format: email
        primary:
          description: Whether this is the user's primary email address
          type: boolean
    ScimRole:
      description: >-
        Role assigned to the user. Used in create requests when SCIM role
        management is enabled for the organization.


        Two formats are supported:


        **Standard format** (Okta, JumpCloud): one entry per Phrase product,
        each with a `phrase__`-prefixed `type` and a role `value`.


        **Azure AD format**: a single entry with `type:
        "WindowsAzureActiveDirectoryRole"` and a `value` containing a
        JSON-escaped array of standard role objects (e.g.
        `[{\"type\":\"phrase__platform\",\"value\":\"MEMBER\"}]`).
      type: object
      properties:
        type:
          description: >-
            Phrase product identifier. Must start with `phrase__` (e.g.
            `phrase__platform`, `phrase__tms`, `phrase__strings`). The
            `phrase__platform` role is mandatory when SCIM role management is
            enabled — it cannot be omitted or set to `none`.


            Alternatively, use `WindowsAzureActiveDirectoryRole` for the Azure
            AD format, in which case `value` must be a JSON-escaped array of
            standard role objects.
          type: string
          example: phrase__platform
        value:
          description: >-
            Role name for the target product. Use `default` to assign the system
            configured default role. Use `none` to exclude access to a product —
            **not applicable to `phrase__platform`**, which is mandatory and
            cannot be `none`.


            Valid values per product:


            | Product | Valid values |

            |---|---|

            | `phrase__platform` | `OWNER`, `ADMIN`, `MEMBER`, `default` |

            | `phrase__tms` | `ADMIN`, `PROJECT_MANAGER`, `LINGUIST`, `GUEST`,
            `SUBMITTER`, `PORTAL_MEMBER`, `default`, `none` |

            | `phrase__strings` | `Owner`, `Admin`, `ProjectManager`,
            `Developer`, `Designer`, `Translator`, `Guest`, `default`, `none` |


            Role names are case-sensitive. Other app-specific role names can be
            found in the SCIM configuration page in Phrase Platform.


            When `type` is `WindowsAzureActiveDirectoryRole`, this field must be
            a JSON-escaped array string:
            `"[{\"type\":\"phrase__platform\",\"value\":\"MEMBER\"}]"`. Items
            missing `type` or `value` keys are silently skipped.
          type: string
          example: MEMBER
    ScimMeta:
      description: Resource metadata set by the service provider
      type: object
      readOnly: true
      properties:
        resourceType:
          description: SCIM resource type
          type: string
          example: User
        created:
          description: Timestamp when the identity was created
          type: string
          format: date-time
        lastModified:
          description: Timestamp of the last update to the identity
          type: string
          format: date-time
        location:
          description: Canonical URI of this resource
          type: string
  securitySchemes:
    scimToken:
      type: http
      scheme: bearer
      description: >-
        SCIM access token issued via Phrase Platform organization settings. The
        Bearer token value must be configured in Phrase Platform SCIM section.

````