---
title: "Update user profile and status"
method: PATCH
path: "/public/v1/users/{userId}"
tags: ["Users"]
---

# Update user profile and status

`PATCH /public/v1/users/{userId}`

### Overview
Modify profile details, subscription levels, or account status for an existing user.

### Use Cases
- **Profile Correction**: Correct a user's name or contact details.
- **Plan Management**: Upgrade or downgrade a user's subscription (e.g., Enterprise vs. Basic).
- **Status Management**: Activate or deactivate user access.
- **Access Refinement**: Update team associations.

### Identification
The `{userId}` is a unique numerical identifier.

### Getting User ID
- To find users and their numerical IDs, use the Users Management API:
  - `GET /public/v1/users` - Retrieve all users with their `id` field.
- The `id` field in the user response is the `{userId}` used in this endpoint's path parameter.

### Partial Updates
This endpoint supports **partial updates**. Only the fields provided in the request body will be changed; omitted fields and fields set to null will retain their current values.

### Related Operations
- **Get Detail**: [GET /public/v1/users/{userId}](#operations-Users-getById)
- **Manage Roles**: [POST /public/v1/users/{userId}/roles](#operations-Users_-_Roles-add)

### Required Permission
`manage_public_users`

## Path parameters

- `userId` integer, required

## Request body

- PublicUpdateUserRequest
  - `firstname` string, nullable
  - `lastname` string, nullable
  - `planId` integer, nullable
  - `active` boolean, nullable

## Response `200`

User profile and status successfully updated.

- PublicUserResponse
  - `id` integer, required
  - `active` boolean, required
  - `confirmed` boolean, required
  - `firstname` string, nullable
  - `lastname` string, nullable
  - `email` string, nullable
  - `customer` PublicUserResponseCustomerDTO, required
    - `id` integer, required
    - `name` string, required
  - `organization` PublicUserResponseOrganizationDTO
    - `id` integer, required
    - `name` string, required
  - `plan` PublicUserResponsePlanDTO
    - `id` integer, required
    - `name` string, required
    - `validFrom` string, date-time, nullable
  - `teams` PublicUserResponseTeamDTO[], required
    - `id` integer, required
    - `name` string, required
  - `roles` PublicUserRoleDTO[], required
    - `id` integer, required
    - `name` string, required
    - `description` string, nullable

## Other responses

- `403` — 403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.
- `404` — Not Found - The specified user does not exist.
- `429` — 429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.
- `500` — 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.

---

[API](https://skmtc.net/prewave/apis/public-prewave-api.md) · [All operations](https://skmtc.net/prewave/apis/public-prewave-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/prewave/public-prewave-api/revisions/466169815b78/schema)
