DocslothTeam
checking session

Team

Team displays real server state with a next action, not placeholder statistics.

Surface contract

Primary object: the membership list and the pending invitations for this workspace, each with its role and state.

Actions

  • InviteCreates the invitation through POST /v1/invitations with the chosen role and optional software scope; an email is sent only when this deployment has SMTP configured, otherwise the acceptance link is shown.
  • Change roleSends POST /v1/memberships/{id}/actions with action=role (owner/admin only); the server refuses demoting the last owner and the page shows that refusal.
  • RevokeSends DELETE /v1/invitations/{id} for a pending invitation (owner/admin only); members themselves are suspended or removed through their own membership action, each confirmed in a dialog.
Required states and how this surface reaches them
loading
the session probe and each list show Loading… until the control plane answers.
ready
the server’s own records render as returned; the primary object is named before its details.
empty
no membership row for a new organization is unexpected; the server seeds the owner. No invitations yet means the list is empty and the direct action is the invite form.
error
the control plane’s status and detail are shown; no placeholder row replaces them.
offline
no control plane is reachable; nothing is rendered rather than invented.
permission_denied
a viewer/editor sees the member list read-only with the reason stated; the server refuses a role change, suspension or removal that the role cannot perform.
not_configured
when email delivery is not configured the invitation still exists and its acceptance link is shown; no email is claimed to have been sent.
budget_paused
a 402 (quota_exceeded / upgrade_required) pauses spending; the budget row shows the cap and consumption that caused it.
requires_approval
mutations the server reserves for an explicit human owner/admin are refused with its own detail and never auto-approved here.

Scope: workspace membership. The server decides who may manage members (owner/admin); the page disables what the role cannot do and shows the reason, and every refusal keeps the control plane’s own detail.

Members

Memberships come from the control plane; role changes, suspensions and removals are its decisions.

Loading…

Pending invitations

Invitations created through the control plane. Resend and revoke apply to pending invitations only.

Loading…

Invite a member

The invitation is created by the control plane; whether an email can be sent depends on this deployment's email configuration.

Loading…

Remove member

Revoke invitation