Skip to main content

Overview

useFetchWorkspaceMembers returns a callable for the unified roster: one entry per distinct user, each with a reasons array. Always returned in full (never paginated). With countOnly, the shape is WorkspaceRosterCountsResponse instead.

Usage Example

Parameters

string
required
The workspace UUID.
string
Comma-separated add-on buckets: ancestorOwners, reachHolders, descendants.
boolean
Return per-reason counts + a distinct-user total instead of the array.

Returns

WorkspaceRosterResponse ({ data, total }), or WorkspaceRosterCountsResponse ({ counts, total, distinctUsers }) when countOnly is set. Each WorkspaceRosterEntry is { user, reasons }, where a reason is { type, ...detail }member carries rank / capabilities / permissions / title / metadata, ancestor-owner and reach-holder carry viaWorkspaceId (reach-holder also capabilities), and descendant-member carries workspaceId / rank / capabilities.
rank, capabilities and permissions are fenced on other users’ entries. They are omitted (absent — not null) unless the signed-in user holds one of the four people-operating capabilities on this workspace (invite, remove-member, edit-member-access, edit-member-profile) or is the owner / an ancestor-owner. The caller’s own entry always carries them, so anyone can discover their own access. Who is on the roster (user, reason types, title, metadata, viaWorkspaceId) stays visible to any relation — read the three fenced fields defensively (reason.capabilities ?? []).