Every OpenRouter model id contains a slash (google/lyria-3-pro-preview),
and the frontend already encodeURIComponent()s it before building the
request URL -- but Starlette decodes %2F back into a literal '/' before
matching a plain `str` path parameter, so the request splits into extra
path segments and 404s. Declaring model_id as `:path` on all three
routes (GET detail, POST/DELETE availability) fixes it the standard way.
Confirmed live: every availability-override click on an OpenRouter
model has been silently failing since #39 shipped, because nobody had
exercised these routes against a slash-containing id until now.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VRQXz5SYZYVWscxS1QqF6U