---
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

- UserRequest
  - `email` string, email, required
  - `work_email` string, email
  - `first_name` string, required — Must not contain numbers or any of the following special characters !@#$%^&*()
  - `last_name` string, required — 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, date, required — Format: YYYY-MM-DD. Can be present, or future dates only.
  - `employee_type` string, required — See reference values here for allowed employee type values.
  - `candidate_status` string, required — 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, required — 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, required — 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, required — 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, required — 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, date
    - `expiry_date` string, date
    - `attachments` Attachment[]
      - `file_name` string
      - `file_content_base64` string
      - `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, date
    - `grade` string
    - `name_while_attending` string
    - `start_date` string, date
    - `end_date` string, date
    - `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, date
      - `end_date` string, date
    - `attachments` Attachment[]
      - `file_name` string
      - `file_content_base64` string
      - `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, date
    - `end_date` string, date
    - `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, date
      - `end_date` string, date
    - `attachments` Attachment[]
      - `file_name` string
      - `file_content_base64` string
      - `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, date
    - `end_date` string, date
  - `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

- **2025-05-19** `805744a185fa` — 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
- **2024-06-11** `6cde27481f55` — 1 breaking, 1 warning, 23 info
  - the `data/id` response's property type/format changed from `string`/`uuid` to ``/`` for status `200`
  - removed the request property `data`
  - added the new optional request property `addresses`
  - added the new optional request property `blocked`
  - …21 more

[Change 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/805744a185fa/schema)
