---
title: "UpdateUser"
method: PATCH
path: "/api/users/{user_id}"
tags: ["User Accounts"]
---

# UpdateUser

`PATCH /api/users/{user_id}`

Update an existing user's information.

Returns:
    Updated user data.

## Path parameters

- `user_id` string, uuid, required — The user to update.

## Request body

- UserUpdate
  - `email` string, nullable
  - `isActive` boolean, nullable
  - `isSuperuser` boolean, nullable
  - `isVerified` boolean, nullable
  - `name` string, nullable
  - `password` string, nullable

## Response `200`

Request fulfilled, document follows

- User
  - `avatarUrl` string, nullable
  - `email` string, required
  - `hasPassword` boolean
  - `id` string, uuid, required
  - `isActive` boolean
  - `isSuperuser` boolean
  - `isTwoFactorEnabled` boolean
  - `isVerified` boolean
  - `name` string, nullable
  - `oauthAccounts` OauthAccount[]
    - `accountEmail` string, required
    - `accountId` string, required
    - `id` string, uuid, required
    - `oauthName` string, required
    - `scopes` string[], nullable
  - `roles` UserRole[]
    - `assignedAt` string, date-time, required
    - `roleId` string, uuid, required
    - `roleName` string, required
    - `roleSlug` string, required
  - `teams` UserTeam[]
    - `isOwner` boolean
    - `role` 'admin' | 'editor' | 'member' — Valid values for team roles. Roles follow Jetstream conventions: - ADMIN: Full permissions (create, read, update, delete) - EDITOR: Limited permissions (read, create, update) - MEMBER: Basic read-only access Note: Team ownership is tracked separately via is_owner on TeamMember.
    - `teamId` string, uuid, required
    - `teamName` string, required
    - `teamSlug` string, required

## Other responses

- `400` — Bad request syntax or unsupported method

## Changes

- **2025-12-26** `1df5362b73fc` — 1 breaking, 2 warning, 1 info
  - removed the required property `oauthAccounts/items/accessToken` from the response with the `200` status
  - removed the optional property `oauthAccounts/items/expiresAt` from the response with the `200` status
  - removed the optional property `oauthAccounts/items/refreshToken` from the response with the `200` status
  - added the optional property `oauthAccounts/items/scopes` to the response with the `200` status
- **2025-12-22** `6b2fad3e4bcc` — 1 warning, 3 info
  - removed the optional property `oauthAccounts/items/scopes` from the response with the `200` status
  - added the optional property `oauthAccounts/items/expiresAt` to the response with the `200` status
  - added the optional property `oauthAccounts/items/refreshToken` to the response with the `200` status
  - added the required property `oauthAccounts/items/accessToken` to the response with the `200` status

[Change history](https://skmtc.dev/litestar-org/apis/app/changes/api/users/:user_id/patch.md)

---

[API](https://skmtc.dev/litestar-org/apis/app.md) · [All operations](https://skmtc.dev/litestar-org/apis/app/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/litestar-org/app/revisions/461f3baecebb/schema)
