@startuml package "PostgREST" { () HTTP as HTTPAPI HTTPAPI - [Auth] [Auth] -r.> [ApiRequest] [ApiRequest] -r.> [Plan] [Plan] -r.> [Query] [Query] - () "Connection Pool" : "\t" [Plan] -u-> [Schema Cache]:uses [Query] -u-> [Schema Cache]:uses [Schema Cache] <- () Listener : reloads () HTTP as HTTPADMIN [Admin] -r- () HTTPADMIN [Config] -l- () CLI HTTPADMIN -[hidden]r- CLI Listener -[hidden]r- [Schema Cache] [Schema Cache] <-l[hidden]- [Config] [Schema Cache] -l[hidden]- [Admin] [Config] <-l~ Listener } database "PostgreSQL" { node Authorization { rectangle "Roles, GRANT, RLS" } node API { rectangle "Functions, Views" } rectangle "Tables, extensions" as tbs API -d- tbs Authorization -d- tbs } :user: hexagon Proxy :user: .r-> Proxy HTTPAPI <.l- Proxy :operator: .d-> HTTPADMIN :operator: .d-> CLI PostgreSQL <.developer : "\t" Listener -r.> "PostgreSQL" "Connection Pool" -r.> "PostgreSQL" : "\t\t" note bottom of Auth Authenticates the user request end note note bottom of ApiRequest Parses the URL syntax end note note bottom of Query Generates the SQL end note note top of Listener LISTEN session end note @enduml