> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coperniq.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coperniq.io/_mcp/server.

## Deactivated users on `GET /users`

### Updated: `GET /users` can include deactivated users

Records can still point to people who have since been deactivated, as `owner`, `salesRep`, `projectManager`, `createdBy`, `assignee` and so on. Add `include_inactive=true` to `GET /users` to return deactivated members alongside active ones, so you can resolve those ids to a name and email.

* `include_inactive` is `false` by default, so existing calls return the same members as before.
* Every user now includes `isActive`. It's always `true` unless you pass `include_inactive=true`.
* Lookups by `id` or `email` honor `include_inactive`. A deactivated user is only found when you pass it.
* A value other than `true` or `false`, or a non-integer `id`, returns `400`. Empty values (`?id=`) are ignored.
* **Behavior change:** a lookup by `id` or `email` that matches no user now returns `404` instead of `200` with an empty body. If your integration treats a missing user as a successful response, update its status handling.
* **Behavior change:** a lookup by `id` or `email` now returns the same fields as the list: `id`, `firstName`, `lastName`, `email`, `phone`, `role` and `isActive`. The internal `companyUsersByUserId` field is no longer returned; use `role` instead.

```json
{ "id": 123, "firstName": "Jane", "lastName": "Doe", "email": "jane@example.com", "isActive": false }
```