From a445df453e29d8fd99bd16da5a9e6e356df55efd Mon Sep 17 00:00:00 2001 From: Ryan Malloy Date: Mon, 2 Mar 2026 04:30:53 -0700 Subject: [PATCH] Fix FastAPI response model for geolocate endpoint Union return type GeolocateOut | Response is not a valid Pydantic field type. Use explicit response_model decorator parameter instead. --- search/src/orrery_search/routers/observer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/search/src/orrery_search/routers/observer.py b/search/src/orrery_search/routers/observer.py index 44d6ae1..5660748 100644 --- a/search/src/orrery_search/routers/observer.py +++ b/search/src/orrery_search/routers/observer.py @@ -31,8 +31,8 @@ def _client_ip(request: Request) -> str | None: return request.client.host if request.client else None -@router.get("/geolocate") -def geolocate(request: Request) -> GeolocateOut | Response: +@router.get("/geolocate", response_model=GeolocateOut, responses={204: {}}) +def geolocate(request: Request): """Return approximate location from client IP, or 204 if unavailable. Synchronous endpoint: geoip2 Reader.city() does mmap I/O which would