Tenant Model
Every resource in AmDital belongs to a workspace. The workspace is resolved from your authenticated session or API key — never from a URL parameter or request body — so a request can only ever act on the workspace its credential actually belongs to.Data Isolation
AmDital enforces tenant isolation at three layers:- Postgres Row-Level Security per
workspace_id - Every query carries a
workspace_idpredicate at the application data-access layer, even for trusted-origin reads - Application-layer workspace membership verification
Membership & Roles
Workspace members have roles (owner, admin, manager, employee, client, consultant) stored inworkspace_members. The JWT carries the workspace role claim for server-side enforcement.