Docs · Guides

Workspace

Workspace is organization-level administration. Open it from the header link Workspace (default: Members).

Workspace side rail

The left Workspace rail lists Members, Invitations, API tokens, Custom fields, and Activity. On desktop you can collapse it to an icon-only mini-rail; the organization avatar or initial stays visible in the header. Hover or focus an icon to read its label in a tooltip. Collapse state is saved per browser and is independent from project or user rails.

Members (/workspace/members)

The screen matches the Invitations visual system: a mono workspace / members breadcrumb, page title, role-explainer description, and an Invite members action that links to /workspace/invitations (no export control).

Owners and admins can:

  • Search members by name or email from the shared filter bar’s search slot (server-side, case-insensitive, debounced)
  • Add a Role filter from Add filter — a multi-select chip over Owner, Admin, Member, and Viewer. Selected roles are OR-ed (role=admin,owner); search and the role chip combine with AND logic server-side; a N of N count shows how many rows match. Filter state lives in the URL and any change resets to page 1
  • Review table columns: Member (profile photo when uploaded, otherwise initials avatar; display name from profile or email; full email; YOU badge on your row), Role (chip), In organization since (absolute date plus relative subline), Actions
  • Change a member’s role via the inline per-row control (PATCH /api/orgs/:orgUlid/members/:userUlid) — you cannot promote someone to owner from this screen
  • Remove a member via the trash icon (DELETE on the member) with a confirmation prompt

You cannot remove or demote yourself, and the sole owner cannot be removed or demoted (the API returns 409 last_owner if violated). Promoting a viewer to a paid role is refused with 409 seat_limit_exceeded once the organization is at its seat limit; a viewer never consumes a seat, and demoting a member frees one for the next invite or promotion.

Invitations (/workspace/invitations)

The screen matches the product mock: a mono workspace / invitations breadcrumb (no separate page title), a New invitation card with a mail icon in the email field, and an Invitation history section. The history’s shared filter bar offers a search input (invitee email, server-side and debounced) plus Status and Role chips from Add filter — each a multi-select writing comma-separated params (status=pending,expired). Values OR within a chip and AND across the search and both chips; any change resets to page 1. The history filters do not affect the invite form.

Owners and admins can:

  1. Enter an invitee email and role (admin, member, or viewer—not owner) and send the invite. The invitee receives an email with a link /invite/:token.
  2. Review history columns: Email · status (row mail icon, plain status text, role chip), Invited by (initials avatar, display name, and visible inviter email), Sent and Expires (absolute date plus relative subline where applicable).
  3. For pending rows, use icon actions to Resend (POST /api/orgs/:orgUlid/invitations/:invitationUlid/resend, rotates the one-time token and sends mail again) or Revoke (DELETE on the invitation).

Status labels are short (Pending, Expired, etc.). Inviter avatars use initials from email (profile photos are not loaded in v1).

Limits: one pending invite per email per org; up to 50 pending invitations per organization; invitations expire after seven days.

API tokens (/workspace/api-tokens)

The screen matches the Invitations and Members visual system: a mono workspace / api tokens breadcrumb (current segment in accent), page title, and description.

Owners and admins can:

  1. Create a token from the New token card: Name input (bg-input styling), Organization picker via the shared FormSelect (limited to your memberships), and an accent Create token button with a key icon.
  2. Copy the clear-text secret from the amber one-time reveal panel immediately after create (dismiss with Close); the secret is not shown again.
  3. Search tokens by name and narrow them with the Last used chip (Used / Never) from the shared filter bar. The list is paginated; filter state lives in the URL and any change resets to page 1. The request is always scoped to the active organization server-side.
  4. Review active tokens in a table with columns Name, Created (absolute date plus relative subline), Last used (dual-line date or Never when unused), and Actions.
  5. Revoke a token with the trash icon (DELETE /api/v1/me/api-tokens/:ulid) after a confirmation prompt.

There is no per-row organization column (the screen is scoped to the active organization). Distinct loading, empty, error, and empty-filtered states are shown for the token list.

Custom fields (/workspace/custom-fields)

Owners and admins define organization-wide metadata fields (system and custom) and which projects each field applies to. See the dedicated guide: Custom fields (Workspace).

Attachments (/workspace/attachments)

Every member can monitor storage usage and browse every file the organization has uploaded, across all attachment surfaces. Owners and admins can additionally select files and bulk-delete them. See the dedicated guide: Attachments (Workspace).

Activity (/workspace/activity)

Owners and admins can review an append-only feed of domain changes (projects, cases, members, invitations, API tokens, and more). See Workspace activity in the product docs site for details.