Keyed on the registered gin route pattern rather than a per-route decorator, because a route registered without a decorator would be unguarded. An unmapped route reached by a token is a 403, and a boot-time check refuses to start when any /api route is missing, so the failure lands at deploy rather than as a customer's surprise 403.