---
title: "Update workforce member"
method: PATCH
path: "/v1/people/{id}"
tags: ["People"]
---

# Update workforce member

`PATCH /v1/people/{id}`

Update a workforce member profile, role, department, or compliance metadata used for people-security controls.

## Path parameters

- `id` string, required

## Request body

- UpdatePeopleDto
  - `userId` string — User ID to associate with this member
  - `role` string — Role for the member (built-in role name or custom role ID)
  - `department` string — Member department. Built-in values: none, admin, gov, hr, it, itsm, qms. Custom department names are also accepted.
  - `isActive` boolean — Whether to deactivate this member (soft delete)
  - `fleetDmLabelId` number — FleetDM label ID for member devices
  - `jobTitle` string — Job title for the member
  - `name` string — Name of the associated user
  - `email` string — Email of the associated user
  - `createdAt` string — Member join date (createdAt override)
  - `backgroundCheckExempt` boolean — When true, this member is exempt from the org-level background check requirement and will count as complete in people scores.
  - `backgroundCheckExemptReason` string — Reason code for the exemption (e.g. "contractor_with_vendor_check", "other"). Persisted alongside backgroundCheckExempt and cleared when the member becomes non-exempt.
  - `backgroundCheckExemptJustification` string — Free-text justification for the exemption, attached to the audit log. Cleared when the member becomes non-exempt.
  - `onboardDate` object — Employee onboard date
  - `offboardDate` object — Employee offboard date

## Response `200`

Member updated successfully

- PeopleResponseDto
  - `id` string, required — Member ID
  - `organizationId` string, required — Organization ID this member belongs to
  - `userId` string, required — User ID associated with member
  - `role` string, required — Member role
  - `createdAt` string, date-time, required — When the member was created
  - `department` string, required — Member department. May be one of the built-in values (none, admin, gov, hr, it, itsm, qms) or a custom department name.
  - `jobTitle` object, nullable, required — Job title for the member
  - `isActive` boolean, required — Whether member is active
  - `deactivated` boolean, required — Whether member is deactivated
  - `fleetDmLabelId` object, nullable, required — FleetDM label ID for member devices
  - `user` UserResponseDto, required
    - `id` string, required — User ID
    - `name` string, required — User name
    - `email` string, required — User email
    - `emailVerified` boolean, required — Whether email is verified
    - `image` object, nullable, required — User profile image URL
    - `createdAt` string, date-time, required — When the user was created
    - `updatedAt` string, date-time, required — When the user was last updated
    - `lastLogin` object, nullable, required — Last login time
    - `role` object, nullable, required — Platform role of the user (managed by Better Auth admin plugin)
  - `backgroundCheckRequests` BackgroundCheckSummaryDto[] — Background check requests for this member
    - `id` string, required — Background check request ID
    - `status` 'invited' | 'in_progress' | 'in_review' | 'completed' | 'completed_with_flags' | 'failed' | 'cancelled', required — Background check status

## Other responses

- `400` — Bad Request - Invalid update data or user conflict
- `401` — Unauthorized - Invalid authentication or insufficient permissions
- `404` — Organization, member, or user not found
- `409` — Conflict - Login email already used by another account, or the member belongs to other organizations
- `500` — Internal server error

## Changes

> 56 revisions in range; 4 could not be searched.

- **2026-07-16** `88139a7e63f6` — 1 info
  - added the non-success response with the status `409`
- **2026-06-05** `33c685841b7a` — 7 breaking, 1 warning, 7 info
  - removed the enum value `admin` of the request property `department`
  - removed the enum value `gov` of the request property `department`
  - removed the enum value `hr` of the request property `department`
  - removed the enum value `it` of the request property `department`
  - …11 more
- **2026-06-05** `7ca7c363a732` — 1 breaking, 7 warning, 7 info
  - request property `department` was restricted to a list of enum values
  - added the new `admin` enum value to the `department` response property for the response status `200`
  - added the new `gov` enum value to the `department` response property for the response status `200`
  - added the new `hr` enum value to the `department` response property for the response status `200`
  - …11 more
- **2026-06-05** `d0f58f24175b` — 7 breaking, 1 warning, 7 info
  - removed the enum value `admin` of the request property `department`
  - removed the enum value `gov` of the request property `department`
  - removed the enum value `hr` of the request property `department`
  - removed the enum value `it` of the request property `department`
  - …11 more
- **2026-06-04** `d7d0199d846f` — 1 info
  - the endpoint scheme security `oauth2` was removed from the API

[Full history](https://skmtc.dev/trycompai/apis/comp-ai-api/changes/v1/people/:id/patch.md)

---

[API](https://skmtc.dev/trycompai/apis/comp-ai-api.md) · [All operations](https://skmtc.dev/trycompai/apis/comp-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/trycompai/comp-ai-api/revisions/726b9523fb22/schema)
