Every Session carries a tenantId that acts as the data isolation boundary. When piper processes a request, it uses the Session tenantId to filter all queries — ensuring a user only sees Sites, MonitoringWells, SamplingEvents, and AnalyticalResults belonging to that organization. A user with access to multiple tenants will have separate Session records, each carrying a different tenantId.
Technical section
Data model, API, and internals — visible to developers.
