# Members API

The Members API lists and reads Eos members for assignment, reporting, and subject-aware operations. It is read-only for API Clients.

An Eos member ID is the member's normalized email address. API v1 does not create a separate opaque member identifier.

## Roles

| Operation | Member | Manager | Finance | HR |
|---|---:|---:|---:|---:|
| List basic directory fields | Yes | Yes | Yes | Yes |
| Read work-profile fields | Yes | Yes | Limited | Yes |
| Read HR-restricted fields | No | No | No | Yes |
| Create, invite, disable, or change Roles | No | No | No | No |

Field-level metadata may further restrict the response.

## List members

`GET /v1/members`

Operation ID: `listMembers`

Query parameters:

| Parameter | Type | Description |
|---|---|---|
| `status` | enum | `active` or `inactive`; default `active` |
| `search` | string | Name or exact email search |
| `role` | string | Filter by an Eos Role visible to the caller |
| `limit` | integer | 1–200 |
| `after` | cursor | Continue a previous list |

```json
{
  "object": "list",
  "data": [
    {
      "object": "member",
      "id": "alice@example.com",
      "display_name": "Alice Smith",
      "email": "alice@example.com",
      "status": "active",
      "eos_roles": ["manager"],
      "job_title": "Delivery Manager",
      "timezone": "America/Chicago"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```

## Get a member

`GET /v1/members/{member_id}`

Operation ID: `getMember`

`member_id` is a URL-encoded email, for example `alice%40example.com`. Matching is case-insensitive after Eos email normalization and is limited to the API Client's organization. The response returns only fields allowed by the API Client's Roles and field policy.

## Not supported

API Clients cannot invite, create, disable, license, assign Roles to, or impersonate members. They cannot retrieve password, authentication, personal provider-token, or private security information.

Next: [Projects API](projects.html).
