Scopes
How scope, search scopes, sharedWith, and visibility decide who can see your data.
Two questions decide who can see something in Epismo: where does it live (its scope) and who else is it shared with. Getting these right is how you keep drafts private, share work with a team, and avoid accidentally exposing data.
scope: where a private record lives, in your personal space or one or more workspace projects.sharedWith: specific people who get access on top of the scope.visibility(packs only): whether the pack is also discoverable publicly.
Where a record lives: scope
Use scope when creating or updating a private pack or track. Keep it to yourself with personal scope:
{ "scope": { "type": "personal" } }Or place it in one or more workspace projects so the project's members can see it:
{ "scope": { "type": "projects", "ids": ["project-id"] } }On update, omitting scope preserves the existing scope; you do not have to resend it just to change a title.
Searching across locations: scopes
A single record lives in one scope, but a search often needs to look in several places at once. That is why search uses scopes (plural):
{
"scopes": [{ "type": "personal" }, { "type": "projects", "ids": ["project-id"] }]
}This searches your personal space and the listed project together in one call.
Granting extra access: sharedWith
sharedWith adds specific people on top of the scope, useful when one teammate needs access but does not belong to the project.
{
"sharedWith": {
"userIds": ["user-id"],
"emails": ["teammate@example.com"]
}
}On update, omitting sharedWith preserves the existing value.
Putting it together
Imagine a context pack with scope: { "type": "projects", "ids": ["proj-1"] } and sharedWith: { "emails": ["lead@example.com"] }:
- Members of
proj-1can see it (from the scope). lead@example.comcan see it too, even if they are not inproj-1(fromsharedWith).- Nobody else can, unless the pack's
visibilityis set topublic, which makes it discoverable on the hub independently of scope. Tracks have no public visibility; they are always private.
When in doubt, start with personal scope to test privately, then widen access once the content is ready to share.