---
title: "Update user's team membership."
method: PUT
path: "/teams/{teamId}/memberships/{userId}"
tags: ["Teams"]
---

# Update user's team membership.

`PUT /teams/{teamId}/memberships/{userId}`

## Request

- Base URL: `https://connect.signl4.com/api`
- URL: `https://connect.signl4.com/api/teams/{teamId}/memberships/{userId}`
- Auth: none required
- TypeScript: <https://skmtc.dev/signl4/apis/signl4-api-v1/docs/teams/:teamId/memberships/:userId/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates the user's team membership. You can move the user to another team within the subscription
and/or change the user's role.

## Path parameters

- `teamId` string, required
- `userId` string, required

## Query parameters

- `requesterUserId` string
- `setUserOnDuty` boolean

## Request body

- UserMembership
  - `teamId` string, nullable
  - `roleId` string, nullable
  - `isValid` boolean

## Response `200`

User was successfully updated.

- V1UserInfoV1
  - `colorIndex` integer
  - `contactAddresses` union[], nullable
    - union
      - ContactAddressInfo
        - `address` string, nullable
        - `channel` 0 | 1 | 2 | 4 | 8 | 16
        - `created` string, date-time
        - `device` Device
          - `appVersion` string, nullable
          - `id` string, nullable
          - `name` string, nullable
          - `osVersion` string, nullable
          - `ringtone` string, nullable
          - `ringtoneDisabled` boolean
          - `type` 0 | 1 | 2
        - `id` string, nullable
        - `lastUpdated` string, date-time
        - `options` integer
        - `userId` string, nullable
      - PhoneContactAddressInfo
        - `address` string, nullable
        - `channel` 0 | 1 | 2 | 4 | 8 | 16
        - `created` string, date-time
        - `device` Device
          - `appVersion` string, nullable
          - `id` string, nullable
          - `name` string, nullable
          - `osVersion` string, nullable
          - `ringtone` string, nullable
          - `ringtoneDisabled` boolean
          - `type` 0 | 1 | 2
        - `id` string, nullable
        - `lastUpdated` string, date-time
        - `options` integer
        - `userId` string, nullable
        - `countryCode` string, nullable
        - `validationStatus` 0 | 1 | 2
  - `dutyInfos` V1UserDutyInfo
    - `lastChange` string, date-time, nullable
    - `onDuty` boolean
    - `onManagerDuty` boolean
    - `overdue` boolean
    - `teamId` string, nullable
    - `userId` string, nullable
  - `isDeactivated` boolean
  - `isEnabled` boolean
  - `subscriptionId` string, nullable
  - `userImageLastModified` string, date-time, nullable
  - `timeZone` string, nullable
  - `lastSeen` string, date-time, nullable
  - `isRemoteActionPinSet` boolean
  - `externalAuthProvider` string, nullable
  - `webLanguage` 0 | 1 | 2
  - `options` 0 | 1 | 2
  - `id` string, nullable
  - `name` string, nullable
  - `isInvite` boolean
  - `mail` string, nullable
  - `roleId` string, nullable

## Other responses

- `204`: Request was canceled.
- `400`: Required parameters or authentication info could not be found in the request/claims.
- `403`: You're not allowed to request the access all required entities.
- `404`: Required entities could not be found in the database.
- `500`: Internal Server Error

## Changes

- **2026-04-03** `9db0d09caf2a`: 6 info
  - added the optional property `isEnabled` to the response with the `200` status (media type: text/plain)
  - added the optional property `isEnabled` to the response with the `200` status (media type: application/json)
  - added the optional property `isEnabled` to the response with the `200` status (media type: text/json)
  - added the optional property `options` to the response with the `200` status (media type: text/plain)
  - …2 more
- **2025-05-16** `80a3a05166d4`: 9 breaking, 27 warning, 42 info
  - removed the media type `application/json` for the response with the status `204`
  - removed the media type `text/json` for the response with the status `204`
  - removed the media type `text/plain` for the response with the status `204`
  - added `#/components/schemas/ContactAddressInfo, #/components/schemas/PhoneContactAddressInfo` to the `contactAddresses/items/` response property `oneOf` list for the response status `200` (media type: text/plain)
  - …74 more

[Operation history](https://skmtc.dev/signl4/apis/signl4-api-v1/changes/teams/:teamId/memberships/:userId/put.md)

---

[API](https://skmtc.dev/signl4/apis/signl4-api-v1.md) - [All operations](https://skmtc.dev/signl4/apis/signl4-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/signl4/apis/signl4-api-v1/revisions/bf9d377a0764?raw)
