Collections stop being personal the moment a second person tests the same API. The usual workarounds — exporting JSON files into chat, screenshots of headers, "can you send me your environment?" — all rot within a week. Workspaces make the shared setup a first-class thing with an owner, members and permissions.
Personal vs shared workspaces
Every account starts with a personal workspace — private, synced across your own machines, invisible to anyone else. A shared workspace is the same structure with members: its collections and schemas are visible to everyone in it, scoped by role.
The workspace switcher in the top bar shows which one you are in. Requests, collections and schemas belong to the workspace where you created them, so work-in-progress experiments can stay personal while the team's canonical collection lives in the shared space.
Roles
| Role | What it can do | | --- | --- | | Owner | Everything, including deleting the workspace | | Admin | Manage members and invites, edit content | | Editor | Create and edit collections and schemas | | Viewer | Read and run — no edits |
Give new joiners Viewer first: they can send every request in the collection without being able to break it. Promote to Editor when they need to contribute.
Invites are links, not emails
Inviting someone means creating an invite link and pasting it wherever your team already talks. Whoever opens it and signs in joins with the role attached to the link. This is deliberate: no SMTP configuration, no corporate spam filter eating the invitation, and the link works in Slack, a PR description or a ticket equally well.
Treat an active invite link like a low-grade credential — share it in team channels, not public ones, and revoke it once the team is assembled.
Conflict-safe sync
Shared state invites the classic failure: two people edit, the slower save wins, and a teammate's change vanishes without anyone noticing. SchemaClient's sync refuses that save instead — if your edit was built on a stale version of the workspace, the save is rejected, you pull the latest state, reapply, and save. Losing thirty seconds to a refresh beats silently losing a colleague's afternoon.
A workflow that holds up
- Create a shared workspace per product or API surface — not per sprint.
- Keep the canonical collection and its schemas there; experiment in your personal workspace and move things over when they are worth sharing.
- Store environment values for shared targets (staging base URLs) in the shared collection; keep personal tokens personal.
- When the API has a spec, import the OpenAPI document into the shared workspace so the whole team tests against the same contract.