---
title: "Update a user"
method: PUT
path: "/users/{id}"
tags: ["users"]
---

# Update a user

`PUT /users/{id}`

Update user details. For staff users, upline_id is automatically set to null. Role changes will end current roles and create new ones.

## Path parameters

- `id` number, required

## Request body

- UpdateUserDto
  - `name` string — User full name
  - `email` string — User email address
  - `password` string — User password (optional, min 6 characters)
  - `commission_plan_id` number — Commission plan ID (ignored for staff users)
  - `upline_id` number — Upline user ID (optional, ignored for staff users)
  - `takaful_status` 'active' | 'inactive' — Takaful status
  - `email_verified` boolean — Email verified status
  - `role_ids` number[] — Array of role IDs to assign to user

## Response `200`

User updated successfully

- UserResponseDto
  - `user_id` number, required
  - `name` string, required
  - `email` string, required
  - `email_verified` boolean, required
  - `email_verified_at` string, date-time, nullable
  - `upline_id` number, nullable
  - `registration_date` string, date-time, required
  - `takaful_status` 'active' | 'inactive', required
  - `commission_plan_id` number, required
  - `roles` UserRoleResponseDto[]
    - `user_role_id` number, required
    - `role_id` number, required
    - `role_name` string, required
    - `start_date` string, date-time, required
    - `end_date` string, date-time, nullable

## Other responses

- `400` — Bad Request
- `404` — User not found
- `409` — Email already exists

---

[API](https://skmtc.dev/tonewow/apis/tonewow-database-api.md) · [All operations](https://skmtc.dev/tonewow/apis/tonewow-database-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/tonewow/tonewow-database-api/revisions/f36472974ad4/schema)
