diff --git a/frigate/api/defs/events_query_parameters.py b/frigate/api/defs/events_query_parameters.py index f4c98809c..470aff765 100644 --- a/frigate/api/defs/events_query_parameters.py +++ b/frigate/api/defs/events_query_parameters.py @@ -44,6 +44,8 @@ class EventsSearchQueryParams(BaseModel): after: Optional[float] = None before: Optional[float] = None time_range: Optional[str] = DEFAULT_TIME_RANGE + has_clip: Optional[int] = None + has_snapshot: Optional[int] = None timezone: Optional[str] = "utc" min_score: Optional[float] = None max_score: Optional[float] = None diff --git a/frigate/api/event.py b/frigate/api/event.py index 892624e53..d15fe326c 100644 --- a/frigate/api/event.py +++ b/frigate/api/event.py @@ -359,6 +359,8 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends()) min_score = params.min_score max_score = params.max_score time_range = params.time_range + has_clip = params.has_clip + has_snapshot = params.has_snapshot # for similarity search event_id = params.event_id @@ -433,6 +435,12 @@ def events_search(request: Request, params: EventsSearchQueryParams = Depends()) if before: event_filters.append((Event.start_time < before)) + if has_clip is not None: + event_filters.append((Event.has_clip == has_clip)) + + if has_snapshot is not None: + event_filters.append((Event.has_snapshot == has_snapshot)) + if min_score is not None and max_score is not None: event_filters.append((Event.data["score"].between(min_score, max_score))) else: