Skip to content

Places & Sites Schema

The places schema owns physical real estate: properties, buildings, zones, and site access permissions.

It provides physical anchors for device placement, maintenance walkthroughs, and contractor access.


Ownership Split

  • places.sites — Physical properties. Sites have an owner_user_id (primary owner) and an optional company_id (operating company).
  • places.zones — Physical rooms, sub-areas, or equipment spaces within a site.
  • places.site_members — Direct user-to-site access with explicit roles (owner, manager, member, viewer, resident).
  • places.site_company_access — Grants an entire company (e.g. maintenance contractor, service partner) access to a site without creating redundant user records.

Row-Level Security & Helpers

Permissions are evaluated through access.* functions:

  • access.can_read_site(site_id, user_id) — Authorizes site owners, direct site members, owning company members, and linked service companies.
  • access.can_manage_site(site_id, user_id) — Restricts site configuration to site owners, site managers, and company administrators.
  • access.can_manage_zone(zone_id, user_id) — Delegates zone write permissions to the owning site's management policy.

Exposed API Contract

  • Views: api.sites, api.zones, api.site_members, api.site_company_access.
  • RPCs: api.create_site(...), api.create_zone(...), api.update_zone(...), api.archive_zone(...).