Read Identifiers & Scopes first. This page assumes
you know what
customer_id and user_id do.What a level is
A scope is a position on a ladder. Your account is the top rung, and each rung below it narrows who a memory belongs to. The default ladder has three:Which direction a read travels
This is the rule worth reading twice, because it is easy to hold backwards. A request sees its own rung and every rung above it. It never sees a rung below, and never a neighbour. So on the default ladder:
A memory filed at the user level is not visible to a request that identifies
only the customer. One person’s private context does not surface for their
colleague, and it does not surface for a customer-wide question.
Ranking: closer material wins
Filtering decides what a request is allowed to read. Ranking decides what it sees first. Among the memories a request may read, the ones filed closer to the person asking rank above the ones filed further up. A person’s own preference outranks a fact that is true of their whole organization, when both match the question equally well. This is a ranking adjustment only: it never makes a memory readable that was not, and it never hides one that was.A level’s name can change, its key cannot
Every level has two parts.- The label is what people read: “Customer”, “Practice”, “Region”. Change it whenever you like. Nothing stored depends on it.
- The key is what stored memories resolve through:
customer,user. It never changes, because every memory already filed under it would stop resolving.
Sending a scope path
Requests normally identify a scope withcustomer_id and user_id, and Synap
maps those onto the default three rungs. That is what almost every integration
does, and it needs no change.
To address a level beyond those three, send an explicit scope map on a context
fetch, naming each rung by its key:
- Every rung must be named. A path that skips a level is refused, and the error names the level you left out. Synap never infers a missing id, because a wrong guess at or above the organization level would cross a tenant boundary.
- The feature must be enabled for your instance. If it is not, sending a
scopemap is an error rather than being ignored. Ignoring it would widen the request to the whole organization when you asked to narrow it to one team.
What you can reach today
Being precise about this matters more than making the feature sound finished.
The honest summary: Synap’s scoping is correct and safe on the shape accounts
already use. It does not yet let you drive a different shape from an SDK.