AuralisDocs
OperationsIdentity

List the workspaces the caller belongs to

Every workspace the acting user belongs to, and the role held in each.

/v1/me/workspacesSigned in
Operation id
list_my_workspaces
Access
Any signed in caller. No workspace role is required.
GET/v1/me/workspaces

Every workspace the acting user belongs to, and the role held in each.

This is how a client learns which workspaces to offer. It is the one operation that answers before a workspace has been chosen, which is what makes it usable for building a workspace switcher.

selection_required is the server's answer to "must the user pick one". It is true above a single membership. Read it rather than counting the list, so the rule has one home.

role is read live from the membership record on this request. It is a statement about right now and about nothing else: it is not carried in a token, not cached, and a client that stores it will be showing a role that an owner may have changed a second later (§13.2, AC-70).

status is the workspace's own status, and it is informational. Workspace status is deliberately not a selection predicate. It is not one today, and quietly making it one here would change which workspaces existing callers can reach, which is a behaviour change §13 does not ask for.

A caller with no memberships gets an empty list and selection_required false, and that is the correct answer rather than a refusal: the route reports what the membership record says, and at zero memberships it says nothing. It is the routes that need a workspace that refuse such a caller, with no_workspace_membership, so "linked, no workspace" and "not linked at all" stay distinguishable (FR-50), which they would not be if this route refused too. The query is scoped by the acting user in the WHERE clause, so a workspace the caller is not a member of cannot appear in it at any count.

A caller whose own status is not active is refused here as everywhere else (FR-51), on the status this request read rather than on a remembered one.

Access: Authorization: Bearer carrying a realm access token. An API key is refused here with api_key_identity_only: this operation answers for a person, and a key acts in one workspace.

Authorization

keycloakBearer
AuthorizationBearer <token>

A realm-issued access token, presented as Authorization: Bearer <token>. It acts as the person who signed in, and every operation resolves their workspace role live from the membership record.

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/me/workspaces"
{  "workspaces": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "slug": "string",      "name": "string",      "status": "string",      "role": "string",      "joined_at": "string"    }  ],  "selection_required": true}