GET /api/v1/projects/:id and GET /api/v1/opportunities/:id (plus opportunity update and convert responses) return members: who holds each project role on that record.
Shape
members is [{id, name, project_role}]: one row for each project role a member holds, ordered by role position then name. id is the member id. project_role is {id, name}, or null when the member has no role.
MCP get_project and get_opportunity return the same members list.
Deprecated assigned_users
Opportunities also keep assigned_users as [{id, name}]: one row for each row of members, without the role. Prefer members. assigned_users will be removed in a later release. Projects do not send assigned_users.
The project index endpoint does not include members.
Related
See Projects API, Opportunities API, and Drum webhooks.
