diff --git a/frigate/api/app.py b/frigate/api/app.py index 83783e6a7..53855efca 100644 --- a/frigate/api/app.py +++ b/frigate/api/app.py @@ -17,7 +17,7 @@ from fastapi.responses import JSONResponse, PlainTextResponse from markupsafe import escape from peewee import operator -from frigate.api.defs.app_query_parameters import AppTimelineHourlyQueryParameters +from frigate.api.defs.query.app_query_parameters import AppTimelineHourlyQueryParameters from frigate.api.defs.request.app_body import AppConfigSetBody from frigate.api.defs.tags import Tags from frigate.config import FrigateConfig diff --git a/frigate/api/defs/response/event_response.py b/frigate/api/defs/response/event_response.py index 314728712..b892dce23 100644 --- a/frigate/api/defs/response/event_response.py +++ b/frigate/api/defs/response/event_response.py @@ -1,4 +1,26 @@ -from pydantic import BaseModel +from typing import Optional + +from pydantic import BaseModel, Json + + +class EventResponse(BaseModel): + id: str + label: str + sub_label: Optional[str] + camera: str + start_time: float + end_time: Optional[float] + false_positive: bool + zones: list[str] + thumbnail: str + has_clip: bool + has_snapshot: bool + retain_indefinitely: bool + plus_id: Optional[str] + model_hash: Optional[str] + detector_type: Optional[str] + model_type: Optional[str] + data: Json class EventCreateResponse(BaseModel): diff --git a/frigate/api/event.py b/frigate/api/event.py index 87ed15e21..710c1377b 100644 --- a/frigate/api/event.py +++ b/frigate/api/event.py @@ -34,6 +34,7 @@ from frigate.api.defs.request.events_body import ( from frigate.api.defs.response.event_response import ( EventCreateResponse, EventMultiDeleteResponse, + EventResponse, EventUploadPlusResponse, ) from frigate.api.defs.response.generic_response import GenericResponse @@ -50,7 +51,7 @@ logger = logging.getLogger(__name__) router = APIRouter(tags=[Tags.events]) -@router.get("/events", response_model=list[Event]) +@router.get("/events", response_model=list[EventResponse]) def events(params: EventsQueryParams = Depends()): camera = params.camera cameras = params.cameras @@ -267,7 +268,7 @@ def events(params: EventsQueryParams = Depends()): return JSONResponse(content=list(events)) -@router.get("/events/explore", response_model=list[Event]) +@router.get("/events/explore", response_model=list[EventResponse]) def events_explore(limit: int = 10): # get distinct labels for all events distinct_labels = Event.select(Event.label).distinct().order_by(Event.label) @@ -329,7 +330,7 @@ def events_explore(limit: int = 10): return JSONResponse(content=processed_events) -@router.get("/event_ids", response_model=list[Event]) +@router.get("/event_ids", response_model=list[EventResponse]) def event_ids(ids: str): ids = ids.split(",") @@ -652,7 +653,7 @@ def events_summary(params: EventsSummaryQueryParams = Depends()): return JSONResponse(content=[e for e in groups.dicts()]) -@router.get("/events/{event_id}", response_model=Event) +@router.get("/events/{event_id}", response_model=EventResponse) def event(event_id: str): try: return model_to_dict(Event.get(Event.id == event_id)) diff --git a/frigate/api/export.py b/frigate/api/export.py index e37fd4d3d..ba0f8be28 100644 --- a/frigate/api/export.py +++ b/frigate/api/export.py @@ -210,7 +210,7 @@ def export_delete(event_id: str): ) -@router.get("/exports/{export_id}", response_model=Export) +@router.get("/exports/{export_id}") def get_export(export_id: str): try: return JSONResponse(content=model_to_dict(Export.get(Export.id == export_id))) diff --git a/frigate/api/media.py b/frigate/api/media.py index a90766899..e19fe547f 100644 --- a/frigate/api/media.py +++ b/frigate/api/media.py @@ -20,7 +20,7 @@ from pathvalidate import sanitize_filename from peewee import DoesNotExist, fn from tzlocal import get_localzone_name -from frigate.api.defs.media_query_parameters import ( +from frigate.api.defs.query.media_query_parameters import ( Extension, MediaEventsSnapshotQueryParams, MediaLatestFrameQueryParams,