Authentication ran on every request. Authorization (subscription tier or admin role) was never checked. Any user could call any endpoint by calling the API directly.
A GraphQL resolver for user enumeration had no authentication or authorization requirement. Any caller could retrieve usernames, emails, and user IDs for every account on the instance.
Admin endpoints were at predictable paths. No role check ran on them. A regular user found the paths in the app bundle and called them directly.
Authorization checked whether the user could access the URL. It didn’t check whether the user’s role permitted the DELETE method on that URL.