add beacons-xyz api endpoints

This commit is contained in:
Laura Klünder 2023-11-27 22:59:59 +01:00
parent a3057b817d
commit 7073c12cde

View file

@ -1,8 +1,12 @@
from typing import Annotated
from ninja import Field as APIField
from ninja import Router as APIRouter
from c3nav.api.newauth import auth_responses
from c3nav.mapdata.models import Source
from c3nav.mapdata.schemas.responses import BoundsSchema
from c3nav.routing.rangelocator import RangeLocator
positioning_api_router = APIRouter(tags=["positioning"])
@ -23,3 +27,22 @@ def locate_test(request):
return {
"bounds": Source.max_bounds(),
}
BeaconsXYZ = dict[
Annotated[str, APIField(pattern=r"^[a-z0-9]{2}(:[a-z0-9]{2}){5}$", title="BSSID")],
Annotated[
tuple[
Annotated[int, APIField(title="X (in cm)")],
Annotated[int, APIField(title="Y (in cm)")],
Annotated[int, APIField(title="Z (in cm)")],
],
APIField(title="global XYZ coordinates")
]
]
@positioning_api_router.get('/beacons-xyz/', summary="get calculated x y z for all beacons",
response={200: BeaconsXYZ, **auth_responses})
def beacons_xyz(request):
return RangeLocator.load().get_all_xyz()