---
title: "PATCH /users/{user_id}"
method: PATCH
path: "/users/{user_id}"
tags: ["users"]
---

# PATCH /users/{user_id}

`PATCH /users/{user_id}`

## Request

- Base URL: `https://api.opal.dev/v1`
- URL: `https://api.opal.dev/v1/users/{user_id}`
- Auth: HTTP bearer

Updates a user's position or manager.

## Path parameters

- `user_id` string, uuid, required

## Request body

- UpdateUserInfo: The user fields to update.
  - `manager_id` string, uuid, nullable: The user's manager ID. Set to null to remove the manager.
  - `position` string: The user's position.

## Response `200`

The updated user.

- User: # User Object ### Description The `User` object is used to represent a user. ### Usage Example Fetch from the `LIST Sessions` endpoint.
  - `user_id` string, uuid, required: The ID of the user.
  - `email` string, required: The email of the user.
  - `full_name` string, required: The full name of the user.
  - `first_name` string, required: The first name of the user.
  - `last_name` string, required: The last name of the user.
  - `position` string, required: The user's position.
  - `manager_id` string, uuid, nullable: The ID of the user's manager. Null if the user has no manager.
  - `hr_idp_status` 'ACTIVE' | 'SUSPENDED' | 'DEPROVISIONED' | 'DELETED' | 'NOT_FOUND': User status pulled from an HR/IDP provider.

## Other responses

- `400`: The update input is invalid.
- `403`: The caller is not authorized to update the user.
- `404`: The user was not found.
- `409`: The user is managed by an identity provider or is immutable.

## Changes

- **2026-09-19** `3e78facda4c5`: 1 info
  - added the optional property `manager_id` to the response with the `200` status
- **2026-09-09** `1f15df5de3bc`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/opal/apis/opal-api/changes/users/:user_id/patch.md)

---

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