List workspace members
Returns every member of the workspace with their role and profile summary. Requires `members:read`, which every built-in role including viewer holds.
apiKeyAuthorizationBearer <snoze_sk_…>Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
workspaceId*stringSuccess
application/json- response
data*array<>curl -X GET 'https://api.snoze.dev/v1/workspaces/string/members'{ "data": [ { "id": "string", "workspaceId": "string", "userId": "string", "effectiveRoleId": "string", "clerkUserId": "string", "role": "owner", "primaryEmail": "string", "displayName": "string", "avatarUrl": "string", "createdAt": "string", "updatedAt": "string" } ]}Export the workspace audit log as CSV
Runs one bounded read (at most 5,000 rows) over the same filters as the list endpoint and returns the CSV inline with `truncated` set when more rows matched. Every export is itself recorded in the ledger as `audit_log.exported` with its filter scope. Requires `audit_log:read` and the audit log plan feature; send an `Idempotency-Key` to make retries safe.
Change a member's workspace role
Sets the built-in role on one membership and then re-syncs the billable seat count to the billing provider. Requires `members:manage`, and only owners may promote to or demote from the owner role. Fails when the member is unknown, when it would demote the last owner, and when promoting a free viewer into an editor role would exceed the plan's editor seats.