---
title: "Update User"
method: PATCH
path: "/api/v1/users/{id}"
tags: ["Users"]
---

# Update User

`PATCH /api/v1/users/{id}`

Update a User

## Path parameters

- `id` string, uuid, required

## Request body

- UserRequestUpdate
  - `email` string, email
  - `work_email` string, email
  - `first_name` string — Must not contain numbers or any of the following special characters !@#$%^&*()
  - `last_name` string — Must not contain numbers or any of the following special characters !@#$%^&*()
  - `middle_name` string — Must not contain numbers or any of the following special characters !@#$%^&*()
  - `start_date` string, YYYY-MM-DD
  - `employee_type` string — See reference values here for allowed employee type values.
  - `candidate_status` string — See reference values here for allowed candidate status values.
  - `legal_entity` string — See reference values here for existing legal entity values.
  - `cost_center_id` string — See reference values here for existing cost center values.
  - `relocation_type` string — Allowes the relocation type values.
  - `blocked` boolean — Disable or enable a user account in Xpand.
  - `reason_blocked` string — A brief description of why the user why the user account is being disabled in Xpand
  - `external_ids` object — This is the collection of unique id of the Applicant Tracking System (ATS) and employee id of the Human Resource Information Systems (HRIS)
    - `ats_id` string
    - `hris_id` string
  - `office_location_id` object — JSON where key is name of external service, e.g. {'HRIS_ID': 'NEWYORK'. There must be an office location in Xpand with a matching employee id. See reference values here for existing office location external ids
    - `workday` string
  - `recruiter_ids` object — JSON where key is name of external service, e.g. {:recruiter=>{'HRIS_SYS'=>'12345'}, recruiting_manager=>{'HRIS_SYS'=>'56789'}} (There must be a recruiter in Xpand or HRIS_SYS(Ex: workday) with a matching employee id)
    - `recruiter` object
      - `hris_id` string
    - `recruiting_coordinator` object
      - `hris_id` string
    - `recruiting_manager` object
      - `hris_id` string
  - `manager_ids` object — JSON where key is name of external service, e.g. {'HRIS_SYS': ['123456', '45678']} (There must be a manager in Xpand or HRIS with a matching employee id)
    - `hris_id` string[]
  - `documents` Document[]
    - `document_type` string
    - `document_number` string
    - `document_title` string
    - `document_description` string
    - `issuer` string
    - `issuer_city` string
    - `issuer_state` string
    - `issuer_country` string
    - `issued_date` string, YYYY-MM-DD
    - `expiry_date` string, YYYY-MM-DD
    - `attachments` Attachment[]
      - `file_name` string
      - `file_content_base64` string, Base64
      - `responses` object — Responses provided in PDF form fields (only present when attachment is a PDF with form fields)
        - `field_name_1` string
        - `field_name_2` string
  - `educations` Education[]
    - `school_name` string
    - `degree` string
    - `student_id` string
    - `time_type` string
    - `major` string
    - `minor` string
    - `gpa` number, float
    - `specialization` string
    - `graduation_date` string, YYYY-MM-DD
    - `grade` string
    - `name_while_attending` string
    - `start_date` string, YYYY-MM-DD
    - `end_date` string, YYYY-MM-DD
    - `address` Address
      - `line_1` string
      - `line_2` string
      - `line_3` string
      - `city` string, required
      - `state` string
      - `postal_code` string
      - `country` string, required
      - `current` boolean
      - `permanent` boolean
      - `start_date` string, YYYY-MM-DD
      - `end_date` string, YYYY-MM-DD
    - `attachments` Attachment[]
      - `file_name` string
      - `file_content_base64` string, Base64
      - `responses` object — Responses provided in PDF form fields (only present when attachment is a PDF with form fields)
        - `field_name_1` string
        - `field_name_2` string
  - `work_experiences` WorkExperience[]
    - `employer` string
    - `employee_id` string
    - `current` boolean
    - `job_title` string
    - `department` string
    - `employment_type` string
    - `reason_for_leaving` string
    - `salary` integer
    - `manager_name` string
    - `manager_phone` string
    - `manager_email` string, email
    - `hr_name` string
    - `hr_phone` string
    - `hr_email` string, email
    - `start_date` string, YYYY-MM-DD
    - `end_date` string, YYYY-MM-DD
    - `address` Address
      - `line_1` string
      - `line_2` string
      - `line_3` string
      - `city` string, required
      - `state` string
      - `postal_code` string
      - `country` string, required
      - `current` boolean
      - `permanent` boolean
      - `start_date` string, YYYY-MM-DD
      - `end_date` string, YYYY-MM-DD
    - `attachments` Attachment[]
      - `file_name` string
      - `file_content_base64` string, Base64
      - `responses` object — Responses provided in PDF form fields (only present when attachment is a PDF with form fields)
        - `field_name_1` string
        - `field_name_2` string
  - `addresses` Address[]
    - `line_1` string
    - `line_2` string
    - `line_3` string
    - `city` string, required
    - `state` string
    - `postal_code` string
    - `country` string, required
    - `current` boolean
    - `permanent` boolean
    - `start_date` string, YYYY-MM-DD
    - `end_date` string, YYYY-MM-DD
  - `phone_numbers` PhoneNumber[]
    - `number` string — E.164 Format
    - `type` 'mobile' | 'landline' | 'unknown'
    - `primary` boolean

## Response `200`

The request has succeeded.

- object
  - `data` UserResponseSimple, required
    - `id` string, uuid, required

## Changes

- **2026-03-09** `3f638e7bcdd4` — 22 breaking, 4 warning, 2 info
  - added `#/components/schemas/Date` to the `start_date` request property `allOf` list
  - added `#/components/schemas/Email` to the `email` request property `allOf` list
  - added `#/components/schemas/Email` to the `work_email` request property `allOf` list
  - the `addresses/items/end_date` request property type/format changed from `string`/`date` to `string`/`YYYY-MM-DD`
  - …24 more
- **2025-08-03** `9b6121411b60` — 10 info
  - the request property `candidate_status` became optional
  - the request property `cost_center_id` became optional
  - the request property `email` became optional
  - the request property `employee_type` became optional
  - …6 more
- **2025-07-31** `33c1d5958395` — 10 info
  - the request property `candidate_status` became optional
  - the request property `cost_center_id` became optional
  - the request property `email` became optional
  - the request property `employee_type` became optional
  - …6 more
- **2025-05-19** `bdef7e608c90` — 10 breaking
  - the request property `candidate_status` became required
  - the request property `cost_center_id` became required
  - the request property `email` became required
  - the request property `employee_type` became required
  - …6 more
- …earlier changes not shown

[Full history](https://skmtc.dev/xpand-io/apis/xpand-api/changes/api/v1/users/:id/patch.md)

---

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