> ## Documentation Index
> Fetch the complete documentation index at: https://api.buildingswell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Users (Organization Members)

> Members of the organization.

<Note>
  The BuildingSwell UI calls this resource **Users**; the API calls it `organization-member`. This page uses `organization member` throughout to match the API.
</Note>

Members of the organization. Standard CRUD applies with a custom create — see below.

**Search columns:** `appUser.name`, `appUser.email`

<Info>
  Requires admin access or the `User.Read` / `User.Update` permission.
</Info>

## Fields

| Field            | Type         | Notes                         |
| ---------------- | ------------ | ----------------------------- |
| `id`             | UUID         | Auto-generated                |
| `organizationId` | UUID         | From API key                  |
| `appUserId`      | UUID         | Associated user account       |
| `roleId`         | UUID \| null | Assigned role                 |
| `roleType`       | string       | `"admin"` \| `"custom"`       |
| `status`         | string       | `"active"` \| `"deactivated"` |
| `appUser.email`  | string       | Joined from user account      |
| `appUser.name`   | string       | Joined from user account      |
| `appUser.status` | string       | `"pending"` \| `"verified"`   |
| `createdAt`      | date         | Auto-generated                |
| `updatedAt`      | date         | Auto-generated                |

## Invite a member

Replaces standard `POST /`:

```http theme={null}
POST /organization-member

{
  "email": "user@example.com",
  "roleId": "<uuid>",
  "roleType": "custom"
}
```

Creates a new user account if the email doesn't exist yet and sends an invitation email.

**Update a member** (`PATCH /:id`) — updatable fields: `roleId`, `roleType`, `workerId` (pass `null` to unlink worker).

## Deactivate / reactivate

```http theme={null}
PATCH /organization-member/:id/deactivate
PATCH /organization-member/:id/reactivate
```

Both respond with `204 No Content`.

## Resend invite

```http theme={null}
POST /organization-member/:id/invite/resend
```

Response: `204 No Content`
