Skip to main content
A user can own several shops and belong to other shops’ teams. Every request containing {shopId} is checked against that exact shop; a resource identifier such as a product or server must belong to it as well.

Role presets

Legacy view, edit, and full roles map to viewer, manager, and admin. Individual customPermissions can extend a role.
A team member cannot receive the owner role or the global * wildcard. Someone with team:manage may delegate only a subset of their own effective permissions.

Add an existing user

The endpoint requires team:manage and accepts a Bearer session or a suitably scoped shop key.
Remove a member:
The dashboard also supports invite links with an expiry, use limit, and predefined scope. Joining creates a request that someone with sufficient scope approves or denies.

Access-control responses

  • invalid shopId format → 400;
  • missing or invalid authentication → 401;
  • valid identity but insufficient scope or a different shop → 403;
  • missing shop or resource inside that shop → 404.
Access results are cached briefly. Team and key changes invalidate the relevant cache entries so revoked access does not wait for natural expiry.