openapi: 3.1.0 info: # To avoid the introduction page we set the title to empty string # https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/4e771d309f6defe395449b26cc3c65814d72cbcc/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts#L92-L129 title: "" version: 0.1.0 servers: - url: https://demo.frigate.video/api - url: http://localhost:5001/api paths: /auth: get: tags: - Auth summary: Auth operationId: auth_auth_get responses: "200": description: Successful Response content: application/json: schema: {} /profile: get: tags: - Auth summary: Profile operationId: profile_profile_get responses: "200": description: Successful Response content: application/json: schema: {} /logout: get: tags: - Auth summary: Logout operationId: logout_logout_get responses: "200": description: Successful Response content: application/json: schema: {} /login: post: tags: - Auth summary: Login operationId: login_login_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AppPostLoginBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /users: get: tags: - Auth summary: Get Users operationId: get_users_users_get responses: "200": description: Successful Response content: application/json: schema: {} post: tags: - Auth summary: Create User operationId: create_user_users_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AppPostUsersBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /users/{username}: delete: tags: - Auth summary: Delete User operationId: delete_user_users__username__delete parameters: - name: username in: path required: true schema: type: string title: Username responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /users/{username}/password: put: tags: - Auth summary: Update Password operationId: update_password_users__username__password_put parameters: - name: username in: path required: true schema: type: string title: Username requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AppPutPasswordBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /users/{username}/role: put: tags: - Auth summary: Update Role operationId: update_role_users__username__role_put parameters: - name: username in: path required: true schema: type: string title: Username requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AppPutRoleBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /faces: get: tags: - Classification summary: Get all registered faces description: |- Returns a dictionary mapping face names to lists of image filenames. Each key represents a registered face name, and the value is a list of image files associated with that face. Supported image formats include .webp, .png, .jpg, and .jpeg. operationId: get_faces_faces_get responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/FacesResponse" /faces/reprocess: post: tags: - Classification summary: Reprocess a face training image description: |- Reprocesses a face training image to update the prediction. Requires face recognition to be enabled in the configuration. The training file must exist in the faces/train directory. Returns a success response or an error message if face recognition is not enabled or the training file is invalid. operationId: reclassify_face_faces_reprocess_post requestBody: content: application/json: schema: type: object title: Body responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /faces/train/{name}/classify: post: tags: - Classification summary: Classify and save a face training image description: |- Adds a training image to a specific face name for face recognition. Accepts either a training file from the train directory or an event_id to extract the face from. The image is saved to the face's directory and the face classifier is cleared to incorporate the new training data. Returns a success message with the new filename or an error if face recognition is not enabled, the file/event is invalid, or the face cannot be extracted. operationId: train_face_faces_train__name__classify_post parameters: - name: name in: path required: true schema: type: string title: Name requestBody: content: application/json: schema: type: object title: Body responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /faces/{name}/create: post: tags: - Classification summary: Create a new face name description: |- Creates a new folder for a face name in the faces directory. This is used to organize face training images. The face name is sanitized and spaces are replaced with underscores. Returns a success message or an error if face recognition is not enabled. operationId: create_face_faces__name__create_post parameters: - name: name in: path required: true schema: type: string title: Name responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /faces/{name}/register: post: tags: - Classification summary: Register a face image description: >- Registers a face image for a specific face name by uploading an image file. The uploaded image is processed and added to the face recognition system. Returns a success response with details about the registration, or an error if face recognition is not enabled or the image cannot be processed. operationId: register_face_faces__name__register_post parameters: - name: name in: path required: true schema: type: string title: Name requestBody: required: true content: multipart/form-data: schema: $ref: >- #/components/schemas/Body_register_face_faces__name__register_post responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /faces/recognize: post: tags: - Classification summary: Recognize a face from an uploaded image description: |- Recognizes a face from an uploaded image file by comparing it against registered faces in the system. Returns the recognized face name and confidence score, or an error if face recognition is not enabled or the image cannot be processed. operationId: recognize_face_faces_recognize_post requestBody: required: true content: multipart/form-data: schema: $ref: "#/components/schemas/Body_recognize_face_faces_recognize_post" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/FaceRecognitionResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /faces/{name}/delete: post: tags: - Classification summary: Delete face images description: >- Deletes specific face images for a given face name. The image IDs must belong to the specified face folder. To delete an entire face folder, all image IDs in that folder must be sent. Returns a success message or an error if face recognition is not enabled. operationId: deregister_faces_faces__name__delete_post parameters: - name: name in: path required: true schema: type: string title: Name requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/DeleteFaceImagesBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /faces/{old_name}/rename: put: tags: - Classification summary: Rename a face name description: |- Renames a face name in the system. The old name must exist and the new name must be valid. Returns a success message or an error if face recognition is not enabled. operationId: rename_face_faces__old_name__rename_put parameters: - name: old_name in: path required: true schema: type: string title: Old Name requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RenameFaceBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /lpr/reprocess: put: tags: - Classification summary: Reprocess a license plate description: |- Reprocesses a license plate image to update the plate. Requires license plate recognition to be enabled in the configuration. The event_id must exist in the database. Returns a success message or an error if license plate recognition is not enabled or the event_id is invalid. operationId: reprocess_license_plate_lpr_reprocess_put parameters: - name: event_id in: query required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /reindex: put: tags: - Classification summary: Reindex embeddings description: |- Reindexes the embeddings for all tracked objects. Requires semantic search to be enabled in the configuration. Returns a success message or an error if semantic search is not enabled. operationId: reindex_embeddings_reindex_put responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" /audio/transcribe: put: tags: - Classification summary: Transcribe audio description: |- Transcribes audio from a specific event. Requires audio transcription to be enabled in the configuration. The event_id must exist in the database. Returns a success message or an error if audio transcription is not enabled or the event_id is invalid. operationId: transcribe_audio_audio_transcribe_put requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AudioTranscriptionBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /classification/{name}/dataset: get: tags: - Classification summary: Get classification dataset description: |- Gets the dataset for a specific classification model. The name must exist in the classification models. Returns a success message or an error if the name is invalid. operationId: get_classification_dataset_classification__name__dataset_get parameters: - name: name in: path required: true schema: type: string title: Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /classification/{name}/train: get: tags: - Classification summary: Get classification train images description: |- Gets the train images for a specific classification model. The name must exist in the classification models. Returns a success message or an error if the name is invalid. operationId: get_classification_images_classification__name__train_get parameters: - name: name in: path required: true schema: type: string title: Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" post: tags: - Classification summary: Train a classification model description: |- Trains a specific classification model. The name must exist in the classification models. Returns a success message or an error if the name is invalid. operationId: train_configured_model_classification__name__train_post parameters: - name: name in: path required: true schema: type: string title: Name responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /classification/{name}/dataset/{category}/delete: post: tags: - Classification summary: Delete classification dataset images description: >- Deletes specific dataset images for a given classification model and category. The image IDs must belong to the specified category. Returns a success message or an error if the name or category is invalid. operationId: >- delete_classification_dataset_images_classification__name__dataset__category__delete_post parameters: - name: name in: path required: true schema: type: string title: Name - name: category in: path required: true schema: type: string title: Category requestBody: content: application/json: schema: type: object title: Body responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /classification/{name}/dataset/categorize: post: tags: - Classification summary: Categorize a classification image description: >- Categorizes a specific classification image for a given classification model and category. The image must exist in the specified category. Returns a success message or an error if the name or category is invalid. operationId: >- categorize_classification_image_classification__name__dataset_categorize_post parameters: - name: name in: path required: true schema: type: string title: Name requestBody: content: application/json: schema: type: object title: Body responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /classification/{name}/train/delete: post: tags: - Classification summary: Delete classification train images description: |- Deletes specific train images for a given classification model. The image IDs must belong to the specified train folder. Returns a success message or an error if the name is invalid. operationId: >- delete_classification_train_images_classification__name__train_delete_post parameters: - name: name in: path required: true schema: type: string title: Name requestBody: content: application/json: schema: type: object title: Body responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review: get: tags: - Review summary: Review operationId: review_review_get parameters: - name: cameras in: query required: false schema: type: string default: all title: Cameras - name: labels in: query required: false schema: type: string default: all title: Labels - name: zones in: query required: false schema: type: string default: all title: Zones - name: reviewed in: query required: false schema: type: integer default: 0 title: Reviewed - name: limit in: query required: false schema: type: integer title: Limit - name: severity in: query required: false schema: $ref: "#/components/schemas/SeverityEnum" - name: before in: query required: false schema: type: number title: Before - name: after in: query required: false schema: type: number title: After responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/ReviewSegmentResponse" title: Response Review Review Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review_ids: get: tags: - Review summary: Review Ids operationId: review_ids_review_ids_get parameters: - name: ids in: query required: true schema: type: string title: Ids responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/ReviewSegmentResponse" title: Response Review Ids Review Ids Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review/summary: get: tags: - Review summary: Review Summary operationId: review_summary_review_summary_get parameters: - name: cameras in: query required: false schema: type: string default: all title: Cameras - name: labels in: query required: false schema: type: string default: all title: Labels - name: zones in: query required: false schema: type: string default: all title: Zones - name: timezone in: query required: false schema: type: string default: utc title: Timezone responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/ReviewSummaryResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /reviews/viewed: post: tags: - Review summary: Set Multiple Reviewed operationId: set_multiple_reviewed_reviews_viewed_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ReviewModifyMultipleBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /reviews/delete: post: tags: - Review summary: Delete Reviews operationId: delete_reviews_reviews_delete_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ReviewModifyMultipleBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review/activity/motion: get: tags: - Review summary: Motion Activity description: Get motion and audio activity. operationId: motion_activity_review_activity_motion_get parameters: - name: cameras in: query required: false schema: type: string default: all title: Cameras - name: before in: query required: false schema: type: number title: Before - name: after in: query required: false schema: type: number title: After - name: scale in: query required: false schema: type: integer default: 30 title: Scale responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/ReviewActivityMotionResponse" title: Response Motion Activity Review Activity Motion Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review/event/{event_id}: get: tags: - Review summary: Get Review From Event operationId: get_review_from_event_review_event__event_id__get parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/ReviewSegmentResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review/{review_id}: get: tags: - Review summary: Get Review operationId: get_review_review__review_id__get parameters: - name: review_id in: path required: true schema: type: string title: Review Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/ReviewSegmentResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review/{review_id}/viewed: delete: tags: - Review summary: Set Not Reviewed operationId: set_not_reviewed_review__review_id__viewed_delete parameters: - name: review_id in: path required: true schema: type: string title: Review Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review/summarize/start/{start_ts}/end/{end_ts}: post: tags: - Review summary: Generate Review Summary description: Use GenAI to summarize review items over a period of time. operationId: >- generate_review_summary_review_summarize_start__start_ts__end__end_ts__post parameters: - name: start_ts in: path required: true schema: type: number title: Start Ts - name: end_ts in: path required: true schema: type: number title: End Ts responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /: get: tags: - App summary: Is Healthy operationId: is_healthy__get responses: "200": description: Successful Response content: text/plain: schema: type: string /config/schema.json: get: tags: - App summary: Config Schema operationId: config_schema_config_schema_json_get responses: "200": description: Successful Response content: application/json: schema: {} /go2rtc/streams: get: tags: - App summary: Go2Rtc Streams operationId: go2rtc_streams_go2rtc_streams_get responses: "200": description: Successful Response content: application/json: schema: {} /go2rtc/streams/{camera_name}: get: tags: - App summary: Go2Rtc Camera Stream operationId: go2rtc_camera_stream_go2rtc_streams__camera_name__get parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /version: get: tags: - App summary: Version operationId: version_version_get responses: "200": description: Successful Response content: text/plain: schema: type: string /stats: get: tags: - App summary: Stats operationId: stats_stats_get responses: "200": description: Successful Response content: application/json: schema: {} /stats/history: get: tags: - App summary: Stats History operationId: stats_history_stats_history_get parameters: - name: keys in: query required: false schema: type: string title: Keys responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /metrics: get: tags: - App summary: Metrics description: Expose Prometheus metrics endpoint and update metrics with latest stats operationId: metrics_metrics_get responses: "200": description: Successful Response content: application/json: schema: {} /config: get: tags: - App summary: Config operationId: config_config_get responses: "200": description: Successful Response content: application/json: schema: {} /config/raw: get: tags: - App summary: Config Raw operationId: config_raw_config_raw_get responses: "200": description: Successful Response content: application/json: schema: {} /config/save: post: tags: - App summary: Config Save operationId: config_save_config_save_post parameters: - name: save_option in: query required: true schema: type: string title: Save Option requestBody: required: true content: text/plain: schema: title: Body responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /config/set: put: tags: - App summary: Config Set operationId: config_set_config_set_put requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AppConfigSetBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /ffprobe: get: tags: - App summary: Ffprobe operationId: ffprobe_ffprobe_get parameters: - name: paths in: query required: false schema: type: string default: "" title: Paths responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /vainfo: get: tags: - App summary: Vainfo operationId: vainfo_vainfo_get responses: "200": description: Successful Response content: application/json: schema: {} /nvinfo: get: tags: - App summary: Nvinfo operationId: nvinfo_nvinfo_get responses: "200": description: Successful Response content: application/json: schema: {} /logs/{service}: get: tags: - App - Logs summary: Logs description: Get logs for the requested service (frigate/nginx/go2rtc) operationId: logs_logs__service__get parameters: - name: service in: path required: true schema: type: string enum: - frigate - nginx - go2rtc title: Service - name: download in: query required: false schema: anyOf: - type: string - type: "null" title: Download - name: stream in: query required: false schema: anyOf: - type: boolean - type: "null" default: false title: Stream - name: start in: query required: false schema: anyOf: - type: integer - type: "null" default: 0 title: Start - name: end in: query required: false schema: anyOf: - type: integer - type: "null" title: End responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /restart: post: tags: - App summary: Restart operationId: restart_restart_post responses: "200": description: Successful Response content: application/json: schema: {} /labels: get: tags: - App summary: Get Labels operationId: get_labels_labels_get parameters: - name: camera in: query required: false schema: type: string default: "" title: Camera responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /sub_labels: get: tags: - App summary: Get Sub Labels operationId: get_sub_labels_sub_labels_get parameters: - name: split_joined in: query required: false schema: anyOf: - type: integer - type: "null" title: Split Joined responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /plus/models: get: tags: - App summary: Plusmodels operationId: plusModels_plus_models_get parameters: - name: filterByCurrentModelDetector in: query required: false schema: type: boolean default: false title: Filterbycurrentmodeldetector responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /recognized_license_plates: get: tags: - App summary: Get Recognized License Plates operationId: get_recognized_license_plates_recognized_license_plates_get parameters: - name: split_joined in: query required: false schema: anyOf: - type: integer - type: "null" title: Split Joined responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /timeline: get: tags: - App summary: Timeline operationId: timeline_timeline_get parameters: - name: camera in: query required: false schema: type: string default: all title: Camera - name: limit in: query required: false schema: type: integer default: 100 title: Limit - name: source_id in: query required: false schema: anyOf: - type: string - type: "null" title: Source Id responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /timeline/hourly: get: tags: - App summary: Hourly Timeline description: Get hourly summary for timeline. operationId: hourly_timeline_timeline_hourly_get parameters: - name: cameras in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Cameras - name: labels in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Labels - name: after in: query required: false schema: anyOf: - type: number - type: "null" title: After - name: before in: query required: false schema: anyOf: - type: number - type: "null" title: Before - name: limit in: query required: false schema: anyOf: - type: integer - type: "null" default: 200 title: Limit - name: timezone in: query required: false schema: anyOf: - type: string - type: "null" default: utc title: Timezone responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /preview/{camera_name}/start/{start_ts}/end/{end_ts}: get: tags: - Preview summary: Get preview clips for time range description: |- Gets all preview clips for a specified camera and time range. Returns a list of preview video clips that overlap with the requested time period, ordered by start time. Use camera_name='all' to get previews from all cameras. Returns an error if no previews are found. operationId: preview_ts_preview__camera_name__start__start_ts__end__end_ts__get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: start_ts in: path required: true schema: type: number title: Start Ts - name: end_ts in: path required: true schema: type: number title: End Ts responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/PreviewModel" title: >- Response Preview Ts Preview Camera Name Start Start Ts End End Ts Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}: get: tags: - Preview summary: Get preview clips for specific hour description: |- Gets all preview clips for a specific hour in a given timezone. Converts the provided date/time from the specified timezone to UTC and retrieves all preview clips for that hour. Use camera_name='all' to get previews from all cameras. The tz_name should be a timezone like 'America/New_York' (use commas instead of slashes). operationId: >- preview_hour_preview__year_month___day___hour___camera_name___tz_name__get parameters: - name: year_month in: path required: true schema: type: string title: Year Month - name: day in: path required: true schema: type: integer title: Day - name: hour in: path required: true schema: type: integer title: Hour - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: tz_name in: path required: true schema: type: string title: Tz Name responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/PreviewModel" title: >- Response Preview Hour Preview Year Month Day Hour Camera Name Tz Name Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames: get: tags: - Preview summary: Get cached preview frame filenames description: >- Gets a list of cached preview frame filenames for a specific camera and time range. Returns an array of filenames for preview frames that fall within the specified time period, sorted in chronological order. These are individual frame images cached for quick preview display. operationId: >- get_preview_frames_from_cache_preview__camera_name__start__start_ts__end__end_ts__frames_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: start_ts in: path required: true schema: type: number title: Start Ts - name: end_ts in: path required: true schema: type: number title: End Ts responses: "200": description: Successful Response content: application/json: schema: type: array items: type: string title: >- Response Get Preview Frames From Cache Preview Camera Name Start Start Ts End End Ts Frames Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /notifications/pubkey: get: tags: - Notifications summary: Get VAPID public key description: |- Gets the VAPID public key for the notifications. Returns the public key or an error if notifications are not enabled. operationId: get_vapid_pub_key_notifications_pubkey_get responses: "200": description: Successful Response content: application/json: schema: {} /notifications/register: post: tags: - Notifications summary: Register notifications description: |- Registers a notifications subscription. Returns a success message or an error if the subscription is not provided. operationId: register_notifications_notifications_register_post requestBody: content: application/json: schema: type: object title: Body responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /exports: get: tags: - Export summary: Get exports description: |- Gets all exports from the database for cameras the user has access to. Returns a list of exports ordered by date (most recent first). operationId: get_exports_exports_get responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/ExportModel" title: Response Get Exports Exports Get /export/{camera_name}/start/{start_time}/end/{end_time}: post: tags: - Export summary: Start recording export description: |- Starts an export of a recording for the specified time range. The export can be from recordings or preview footage. Returns the export ID if successful, or an error message if the camera is invalid or no recordings/previews are found for the time range. operationId: >- export_recording_export__camera_name__start__start_time__end__end_time__post parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: start_time in: path required: true schema: type: number title: Start Time - name: end_time in: path required: true schema: type: number title: End Time requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ExportRecordingsBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/StartExportResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /export/{event_id}/rename: patch: tags: - Export summary: Rename export description: |- Renames an export. NOTE: This changes the friendly name of the export, not the filename. operationId: export_rename_export__event_id__rename_patch parameters: - name: event_id in: path required: true schema: type: string title: Event Id requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ExportRenameBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /export/{event_id}: delete: tags: - Export summary: Delete export operationId: export_delete_export__event_id__delete parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /exports/{export_id}: get: tags: - Export summary: Get a single export description: |- Gets a specific export by ID. The user must have access to the camera associated with the export. operationId: get_export_exports__export_id__get parameters: - name: export_id in: path required: true schema: type: string title: Export Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/ExportModel" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events: get: tags: - Events summary: Get events description: Returns a list of events. operationId: events_events_get parameters: - name: camera in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Camera - name: cameras in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Cameras - name: label in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Label - name: labels in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Labels - name: sub_label in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Sub Label - name: sub_labels in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Sub Labels - name: zone in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Zone - name: zones in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Zones - name: limit in: query required: false schema: anyOf: - type: integer - type: "null" default: 100 title: Limit - name: after in: query required: false schema: anyOf: - type: number - type: "null" title: After - name: before in: query required: false schema: anyOf: - type: number - type: "null" title: Before - name: time_range in: query required: false schema: anyOf: - type: string - type: "null" default: 00:00,24:00 title: Time Range - name: has_clip in: query required: false schema: anyOf: - type: integer - type: "null" title: Has Clip - name: has_snapshot in: query required: false schema: anyOf: - type: integer - type: "null" title: Has Snapshot - name: in_progress in: query required: false schema: anyOf: - type: integer - type: "null" title: In Progress - name: include_thumbnails in: query required: false schema: anyOf: - type: integer - type: "null" default: 1 title: Include Thumbnails - name: favorites in: query required: false schema: anyOf: - type: integer - type: "null" title: Favorites - name: min_score in: query required: false schema: anyOf: - type: number - type: "null" title: Min Score - name: max_score in: query required: false schema: anyOf: - type: number - type: "null" title: Max Score - name: min_speed in: query required: false schema: anyOf: - type: number - type: "null" title: Min Speed - name: max_speed in: query required: false schema: anyOf: - type: number - type: "null" title: Max Speed - name: recognized_license_plate in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Recognized License Plate - name: is_submitted in: query required: false schema: anyOf: - type: integer - type: "null" title: Is Submitted - name: min_length in: query required: false schema: anyOf: - type: number - type: "null" title: Min Length - name: max_length in: query required: false schema: anyOf: - type: number - type: "null" title: Max Length - name: event_id in: query required: false schema: anyOf: - type: string - type: "null" title: Event Id - name: sort in: query required: false schema: anyOf: - type: string - type: "null" title: Sort - name: timezone in: query required: false schema: anyOf: - type: string - type: "null" default: utc title: Timezone responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/EventResponse" title: Response Events Events Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/explore: get: tags: - Events summary: Get summary of objects description: |- Gets a summary of objects from the database. Returns a list of objects with a max of `limit` objects for each label. operationId: events_explore_events_explore_get parameters: - name: limit in: query required: false schema: type: integer default: 10 title: Limit responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/EventResponse" title: Response Events Explore Events Explore Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /event_ids: get: tags: - Events summary: Get events by ids description: |- Gets events by a list of ids. Returns a list of events. operationId: event_ids_event_ids_get parameters: - name: ids in: query required: true schema: type: string title: Ids responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/EventResponse" title: Response Event Ids Event Ids Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/search: get: tags: - Events summary: Search events description: |- Searches for events in the database. Returns a list of events. operationId: events_search_events_search_get parameters: - name: query in: query required: false schema: anyOf: - type: string - type: "null" title: Query - name: event_id in: query required: false schema: anyOf: - type: string - type: "null" title: Event Id - name: search_type in: query required: false schema: anyOf: - type: string - type: "null" default: thumbnail title: Search Type - name: include_thumbnails in: query required: false schema: anyOf: - type: integer - type: "null" default: 1 title: Include Thumbnails - name: limit in: query required: false schema: anyOf: - type: integer - type: "null" default: 50 title: Limit - name: cameras in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Cameras - name: labels in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Labels - name: zones in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Zones - name: after in: query required: false schema: anyOf: - type: number - type: "null" title: After - name: before in: query required: false schema: anyOf: - type: number - type: "null" title: Before - name: time_range in: query required: false schema: anyOf: - type: string - type: "null" default: 00:00,24:00 title: Time Range - name: has_clip in: query required: false schema: anyOf: - type: boolean - type: "null" title: Has Clip - name: has_snapshot in: query required: false schema: anyOf: - type: boolean - type: "null" title: Has Snapshot - name: is_submitted in: query required: false schema: anyOf: - type: boolean - type: "null" title: Is Submitted - name: timezone in: query required: false schema: anyOf: - type: string - type: "null" default: utc title: Timezone - name: min_score in: query required: false schema: anyOf: - type: number - type: "null" title: Min Score - name: max_score in: query required: false schema: anyOf: - type: number - type: "null" title: Max Score - name: min_speed in: query required: false schema: anyOf: - type: number - type: "null" title: Min Speed - name: max_speed in: query required: false schema: anyOf: - type: number - type: "null" title: Max Speed - name: recognized_license_plate in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Recognized License Plate - name: sort in: query required: false schema: anyOf: - type: string - type: "null" title: Sort responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/summary: get: tags: - Events summary: Events Summary operationId: events_summary_events_summary_get parameters: - name: timezone in: query required: false schema: anyOf: - type: string - type: "null" default: utc title: Timezone - name: has_clip in: query required: false schema: anyOf: - type: integer - type: "null" title: Has Clip - name: has_snapshot in: query required: false schema: anyOf: - type: integer - type: "null" title: Has Snapshot responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}: get: tags: - Events summary: Get event by id description: Gets an event by its id. operationId: event_events__event_id__get parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/EventResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" delete: tags: - Events summary: Delete event description: |- Deletes an event from the database. Returns a success message or an error if the event is not found. operationId: delete_event_events__event_id__delete parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/retain: post: tags: - Events summary: Set event retain indefinitely description: |- Sets an event to retain indefinitely. Returns a success message or an error if the event is not found. NOTE: This is a legacy endpoint and is not supported in the frontend. operationId: set_retain_events__event_id__retain_post parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" delete: tags: - Events summary: Stop event from being retained indefinitely description: |- Stops an event from being retained indefinitely. Returns a success message or an error if the event is not found. NOTE: This is a legacy endpoint and is not supported in the frontend. operationId: delete_retain_events__event_id__retain_delete parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/plus: post: tags: - Events summary: Send event to Frigate+ description: |- Sends an event to Frigate+. Returns a success message or an error if the event is not found. operationId: send_to_plus_events__event_id__plus_post parameters: - name: event_id in: path required: true schema: type: string title: Event Id requestBody: content: application/json: schema: $ref: "#/components/schemas/SubmitPlusBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/EventUploadPlusResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/false_positive: put: tags: - Events summary: Submit false positive to Frigate+ description: |- Submit an event as a false positive to Frigate+. This endpoint is the same as the standard Frigate+ submission endpoint, but is specifically for marking an event as a false positive. operationId: false_positive_events__event_id__false_positive_put parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/EventUploadPlusResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/sub_label: post: tags: - Events summary: Set event sub label description: |- Sets an event's sub label. Returns a success message or an error if the event is not found. operationId: set_sub_label_events__event_id__sub_label_post parameters: - name: event_id in: path required: true schema: type: string title: Event Id requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventsSubLabelBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/recognized_license_plate: post: tags: - Events summary: Set event license plate description: |- Sets an event's license plate. Returns a success message or an error if the event is not found. operationId: set_plate_events__event_id__recognized_license_plate_post parameters: - name: event_id in: path required: true schema: type: string title: Event Id requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventsLPRBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/description: post: tags: - Events summary: Set event description description: |- Sets an event's description. Returns a success message or an error if the event is not found. operationId: set_description_events__event_id__description_post parameters: - name: event_id in: path required: true schema: type: string title: Event Id requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventsDescriptionBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/description/regenerate: put: tags: - Events summary: Regenerate event description description: |- Regenerates an event's description. Returns a success message or an error if the event is not found. operationId: regenerate_description_events__event_id__description_regenerate_put parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: source in: query required: false schema: anyOf: - $ref: "#/components/schemas/RegenerateDescriptionEnum" - type: "null" default: thumbnails title: Source - name: force in: query required: false schema: anyOf: - type: boolean - type: "null" default: false title: Force responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /description/generate: post: tags: - Events summary: Generate description embedding description: |- Generates an embedding for an event's description. Returns a success message or an error if the event is not found. operationId: generate_description_embedding_description_generate_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventsDescriptionBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/: delete: tags: - Events summary: Delete events description: |- Deletes a list of events from the database. Returns a success message or an error if the events are not found. operationId: delete_events_events__delete requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventsDeleteBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/EventMultiDeleteResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{camera_name}/{label}/create: post: tags: - Events summary: Create manual event description: |- Creates a manual event in the database. Returns a success message or an error if the event is not found. NOTES: - Creating a manual event does not trigger an update to /events MQTT topic. - If a duration is set to null, the event will need to be ended manually by calling /events/{event_id}/end. operationId: create_event_events__camera_name___label__create_post parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name - name: label in: path required: true schema: type: string title: Label requestBody: content: application/json: schema: $ref: "#/components/schemas/EventsCreateBody" default: score: 0 duration: 30 include_recording: true draw: {} responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/EventCreateResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/end: put: tags: - Events summary: End manual event description: |- Ends a manual event. Returns a success message or an error if the event is not found. NOTE: This should only be used for manual events. operationId: end_event_events__event_id__end_put parameters: - name: event_id in: path required: true schema: type: string title: Event Id requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventsEndBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /trigger/embedding: post: tags: - Events summary: Create trigger embedding description: |- Creates a trigger embedding for a specific trigger. Returns a success message or an error if the trigger is not found. operationId: create_trigger_embedding_trigger_embedding_post parameters: - name: camera_name in: query required: true schema: type: string title: Camera Name - name: name in: query required: true schema: type: string title: Name requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/TriggerEmbeddingBody" responses: "200": description: Successful Response content: application/json: schema: type: object title: Response Create Trigger Embedding Trigger Embedding Post "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /trigger/embedding/{camera_name}/{name}: put: tags: - Events summary: Update trigger embedding description: |- Updates a trigger embedding for a specific trigger. Returns a success message or an error if the trigger is not found. operationId: update_trigger_embedding_trigger_embedding__camera_name___name__put parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name - name: name in: path required: true schema: type: string title: Name requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/TriggerEmbeddingBody" responses: "200": description: Successful Response content: application/json: schema: type: object title: >- Response Update Trigger Embedding Trigger Embedding Camera Name Name Put "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" delete: tags: - Events summary: Delete trigger embedding description: |- Deletes a trigger embedding for a specific trigger. Returns a success message or an error if the trigger is not found. operationId: delete_trigger_embedding_trigger_embedding__camera_name___name__delete parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name - name: name in: path required: true schema: type: string title: Name responses: "200": description: Successful Response content: application/json: schema: type: object title: >- Response Delete Trigger Embedding Trigger Embedding Camera Name Name Delete "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /triggers/status/{camera_name}: get: tags: - Events summary: Get triggers status description: |- Gets the status of all triggers for a specific camera. Returns a success message or an error if the camera is not found. operationId: get_triggers_status_triggers_status__camera_name__get parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name responses: "200": description: Successful Response content: application/json: schema: type: object title: Response Get Triggers Status Triggers Status Camera Name Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}: get: tags: - Media summary: Mjpeg Feed operationId: mjpeg_feed__camera_name__get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: fps in: query required: false schema: type: integer default: 3 title: Fps - name: height in: query required: false schema: type: integer default: 360 title: Height - name: bbox in: query required: false schema: anyOf: - type: integer - type: "null" title: Bbox - name: timestamp in: query required: false schema: anyOf: - type: integer - type: "null" title: Timestamp - name: zones in: query required: false schema: anyOf: - type: integer - type: "null" title: Zones - name: mask in: query required: false schema: anyOf: - type: integer - type: "null" title: Mask - name: motion in: query required: false schema: anyOf: - type: integer - type: "null" title: Motion - name: regions in: query required: false schema: anyOf: - type: integer - type: "null" title: Regions responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/ptz/info: get: tags: - Media summary: Camera Ptz Info operationId: camera_ptz_info__camera_name__ptz_info_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/latest.{extension}: get: tags: - Media summary: Latest Frame operationId: latest_frame__camera_name__latest__extension__get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: extension in: path required: true schema: $ref: "#/components/schemas/Extension" - name: bbox in: query required: false schema: anyOf: - type: integer - type: "null" title: Bbox - name: timestamp in: query required: false schema: anyOf: - type: integer - type: "null" title: Timestamp - name: zones in: query required: false schema: anyOf: - type: integer - type: "null" title: Zones - name: mask in: query required: false schema: anyOf: - type: integer - type: "null" title: Mask - name: motion in: query required: false schema: anyOf: - type: integer - type: "null" title: Motion - name: paths in: query required: false schema: anyOf: - type: integer - type: "null" title: Paths - name: regions in: query required: false schema: anyOf: - type: integer - type: "null" title: Regions - name: quality in: query required: false schema: anyOf: - type: integer - type: "null" default: 70 title: Quality - name: height in: query required: false schema: anyOf: - type: integer - type: "null" title: Height - name: store in: query required: false schema: anyOf: - type: integer - type: "null" title: Store responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/recordings/{frame_time}/snapshot.{format}: get: tags: - Media summary: Get Snapshot From Recording operationId: >- get_snapshot_from_recording__camera_name__recordings__frame_time__snapshot__format__get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: frame_time in: path required: true schema: type: number title: Frame Time - name: format in: path required: true schema: type: string enum: - png - jpg title: Format - name: height in: query required: false schema: type: integer title: Height responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/plus/{frame_time}: post: tags: - Media summary: Submit Recording Snapshot To Plus operationId: submit_recording_snapshot_to_plus__camera_name__plus__frame_time__post parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: frame_time in: path required: true schema: type: string title: Frame Time responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /recordings/storage: get: tags: - Media summary: Get Recordings Storage Usage operationId: get_recordings_storage_usage_recordings_storage_get responses: "200": description: Successful Response content: application/json: schema: {} /recordings/summary: get: tags: - Media summary: All Recordings Summary description: Returns true/false by day indicating if recordings exist operationId: all_recordings_summary_recordings_summary_get parameters: - name: timezone in: query required: false schema: type: string default: utc title: Timezone - name: cameras in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Cameras responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/recordings/summary: get: tags: - Media summary: Recordings Summary description: Returns hourly summary for recordings of given camera operationId: recordings_summary__camera_name__recordings_summary_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: timezone in: query required: false schema: type: string default: utc title: Timezone responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/recordings: get: tags: - Media summary: Recordings description: >- Return specific camera recordings between the given 'after'/'end' times. If not provided the last hour will be used operationId: recordings__camera_name__recordings_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: after in: query required: false schema: type: number default: 1759932070.40171 title: After - name: before in: query required: false schema: type: number default: 1759935670.40172 title: Before responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /recordings/unavailable: get: tags: - Media summary: No Recordings description: Get time ranges with no recordings. operationId: no_recordings_recordings_unavailable_get parameters: - name: cameras in: query required: false schema: type: string default: all title: Cameras - name: before in: query required: false schema: type: number title: Before - name: after in: query required: false schema: type: number title: After - name: scale in: query required: false schema: type: integer default: 30 title: Scale responses: "200": description: Successful Response content: application/json: schema: type: array items: type: object title: Response No Recordings Recordings Unavailable Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/start/{start_ts}/end/{end_ts}/clip.mp4: get: tags: - Media summary: Recording Clip description: >- For iOS devices, use the master.m3u8 HLS link instead of clip.mp4. Safari does not reliably process progressive mp4 files. operationId: recording_clip__camera_name__start__start_ts__end__end_ts__clip_mp4_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: start_ts in: path required: true schema: type: number title: Start Ts - name: end_ts in: path required: true schema: type: number title: End Ts responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /vod/{camera_name}/start/{start_ts}/end/{end_ts}: get: tags: - Media summary: Vod Ts description: >- Returns an HLS playlist for the specified timestamp-range on the specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback. operationId: vod_ts_vod__camera_name__start__start_ts__end__end_ts__get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: start_ts in: path required: true schema: type: number title: Start Ts - name: end_ts in: path required: true schema: type: number title: End Ts responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /vod/{year_month}/{day}/{hour}/{camera_name}: get: tags: - Media summary: Vod Hour No Timezone description: >- Returns an HLS playlist for the specified date-time on the specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback. operationId: vod_hour_no_timezone_vod__year_month___day___hour___camera_name__get parameters: - name: year_month in: path required: true schema: type: string title: Year Month - name: day in: path required: true schema: type: integer title: Day - name: hour in: path required: true schema: type: integer title: Hour - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}: get: tags: - Media summary: Vod Hour description: >- Returns an HLS playlist for the specified date-time (with timezone) on the specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback. operationId: vod_hour_vod__year_month___day___hour___camera_name___tz_name__get parameters: - name: year_month in: path required: true schema: type: string title: Year Month - name: day in: path required: true schema: type: integer title: Day - name: hour in: path required: true schema: type: integer title: Hour - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: tz_name in: path required: true schema: type: string title: Tz Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /vod/event/{event_id}: get: tags: - Media summary: Vod Event description: >- Returns an HLS playlist for the specified object. Append /master.m3u8 or /index.m3u8 for HLS playback. operationId: vod_event_vod_event__event_id__get parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: padding in: query required: false schema: type: integer description: Padding to apply to the vod. default: 0 title: Padding description: Padding to apply to the vod. responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/snapshot.jpg: get: tags: - Media summary: Event Snapshot description: >- Returns a snapshot image for the specified object id. NOTE: The query params only take affect while the event is in-progress. Once the event has ended the snapshot configuration is used. operationId: event_snapshot_events__event_id__snapshot_jpg_get parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: download in: query required: false schema: anyOf: - type: boolean - type: "null" default: false title: Download - name: timestamp in: query required: false schema: anyOf: - type: integer - type: "null" title: Timestamp - name: bbox in: query required: false schema: anyOf: - type: integer - type: "null" title: Bbox - name: crop in: query required: false schema: anyOf: - type: integer - type: "null" title: Crop - name: height in: query required: false schema: anyOf: - type: integer - type: "null" title: Height - name: quality in: query required: false schema: anyOf: - type: integer - type: "null" default: 70 title: Quality responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/thumbnail.{extension}: get: tags: - Media summary: Event Thumbnail operationId: event_thumbnail_events__event_id__thumbnail__extension__get parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: extension in: path required: true schema: $ref: "#/components/schemas/Extension" - name: max_cache_age in: query required: false schema: type: integer description: Max cache age in seconds. Default 30 days in seconds. default: 2592000 title: Max Cache Age description: Max cache age in seconds. Default 30 days in seconds. - name: format in: query required: false schema: type: string enum: - ios - android default: ios title: Format responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/grid.jpg: get: tags: - Media summary: Grid Snapshot operationId: grid_snapshot__camera_name__grid_jpg_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: color in: query required: false schema: type: string default: green title: Color - name: font_scale in: query required: false schema: type: number default: 0.5 title: Font Scale responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/snapshot-clean.webp: get: tags: - Media summary: Event Snapshot Clean operationId: event_snapshot_clean_events__event_id__snapshot_clean_png_get parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: download in: query required: false schema: type: boolean default: false title: Download responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/clip.mp4: get: tags: - Media summary: Event Clip operationId: event_clip_events__event_id__clip_mp4_get parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: padding in: query required: false schema: type: integer description: Padding to apply to clip. default: 0 title: Padding description: Padding to apply to clip. responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /events/{event_id}/preview.gif: get: tags: - Media summary: Event Preview operationId: event_preview_events__event_id__preview_gif_get parameters: - name: event_id in: path required: true schema: type: string title: Event Id responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/start/{start_ts}/end/{end_ts}/preview.gif: get: tags: - Media summary: Preview Gif operationId: preview_gif__camera_name__start__start_ts__end__end_ts__preview_gif_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: start_ts in: path required: true schema: type: number title: Start Ts - name: end_ts in: path required: true schema: type: number title: End Ts - name: max_cache_age in: query required: false schema: type: integer description: Max cache age in seconds. Default 30 days in seconds. default: 2592000 title: Max Cache Age description: Max cache age in seconds. Default 30 days in seconds. responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/start/{start_ts}/end/{end_ts}/preview.mp4: get: tags: - Media summary: Preview Mp4 operationId: preview_mp4__camera_name__start__start_ts__end__end_ts__preview_mp4_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: start_ts in: path required: true schema: type: number title: Start Ts - name: end_ts in: path required: true schema: type: number title: End Ts - name: max_cache_age in: query required: false schema: type: integer description: Max cache age in seconds. Default 7 days in seconds. default: 604800 title: Max Cache Age description: Max cache age in seconds. Default 7 days in seconds. responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /review/{event_id}/preview: get: tags: - Media summary: Review Preview operationId: review_preview_review__event_id__preview_get parameters: - name: event_id in: path required: true schema: type: string title: Event Id - name: format in: query required: false schema: type: string enum: - gif - mp4 default: gif title: Format responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /preview/{file_name}/thumbnail.webp: get: tags: - Media summary: Preview Thumbnail description: Get a thumbnail from the cached preview frames. operationId: preview_thumbnail_preview__file_name__thumbnail_webp_get parameters: - name: file_name in: path required: true schema: type: string title: File Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /preview/{file_name}/thumbnail.jpg: get: tags: - Media summary: Preview Thumbnail description: Get a thumbnail from the cached preview frames. operationId: preview_thumbnail_preview__file_name__thumbnail_jpg_get parameters: - name: file_name in: path required: true schema: type: string title: File Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/{label}/thumbnail.jpg: get: tags: - Media summary: Label Thumbnail operationId: label_thumbnail__camera_name___label__thumbnail_jpg_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: label in: path required: true schema: type: string title: Label responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/{label}/best.jpg: get: tags: - Media summary: Label Thumbnail operationId: label_thumbnail__camera_name___label__best_jpg_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: label in: path required: true schema: type: string title: Label responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/{label}/clip.mp4: get: tags: - Media summary: Label Clip operationId: label_clip__camera_name___label__clip_mp4_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: label in: path required: true schema: type: string title: Label responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /{camera_name}/{label}/snapshot.jpg: get: tags: - Media summary: Label Snapshot description: >- Returns the snapshot image from the latest event for the given camera and label combo operationId: label_snapshot__camera_name___label__snapshot_jpg_get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: label in: path required: true schema: type: string title: Label responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" components: schemas: AppConfigSetBody: properties: requires_restart: type: integer title: Requires Restart default: 1 update_topic: anyOf: - type: string - type: "null" title: Update Topic config_data: anyOf: - type: object - type: "null" title: Config Data type: object title: AppConfigSetBody AppPostLoginBody: properties: user: type: string title: User password: type: string title: Password type: object required: - user - password title: AppPostLoginBody AppPostUsersBody: properties: username: type: string title: Username password: type: string title: Password role: anyOf: - type: string - type: "null" title: Role default: viewer type: object required: - username - password title: AppPostUsersBody AppPutPasswordBody: properties: password: type: string title: Password type: object required: - password title: AppPutPasswordBody AppPutRoleBody: properties: role: type: string title: Role type: object required: - role title: AppPutRoleBody AudioTranscriptionBody: properties: event_id: type: string title: Event Id type: object required: - event_id title: AudioTranscriptionBody Body_recognize_face_faces_recognize_post: properties: file: type: string format: binary title: File type: object required: - file title: Body_recognize_face_faces_recognize_post Body_register_face_faces__name__register_post: properties: file: type: string format: binary title: File type: object required: - file title: Body_register_face_faces__name__register_post DayReview: properties: day: type: string format: date-time title: Day reviewed_alert: type: integer title: Reviewed Alert reviewed_detection: type: integer title: Reviewed Detection total_alert: type: integer title: Total Alert total_detection: type: integer title: Total Detection type: object required: - day - reviewed_alert - reviewed_detection - total_alert - total_detection title: DayReview DeleteFaceImagesBody: properties: ids: items: type: string type: array title: Ids description: List of image filenames to delete from the face folder type: object required: - ids title: DeleteFaceImagesBody EventCreateResponse: properties: success: type: boolean title: Success message: type: string title: Message event_id: type: string title: Event Id type: object required: - success - message - event_id title: EventCreateResponse EventMultiDeleteResponse: properties: success: type: boolean title: Success deleted_events: items: type: string type: array title: Deleted Events not_found_events: items: type: string type: array title: Not Found Events type: object required: - success - deleted_events - not_found_events title: EventMultiDeleteResponse EventResponse: properties: id: type: string title: Id label: type: string title: Label sub_label: anyOf: - type: string - type: "null" title: Sub Label camera: type: string title: Camera start_time: type: number title: Start Time end_time: anyOf: - type: number - type: "null" title: End Time false_positive: anyOf: - type: boolean - type: "null" title: False Positive zones: items: type: string type: array title: Zones thumbnail: anyOf: - type: string - type: "null" title: Thumbnail has_clip: type: boolean title: Has Clip has_snapshot: type: boolean title: Has Snapshot retain_indefinitely: type: boolean title: Retain Indefinitely plus_id: anyOf: - type: string - type: "null" title: Plus Id model_hash: anyOf: - type: string - type: "null" title: Model Hash detector_type: anyOf: - type: string - type: "null" title: Detector Type model_type: anyOf: - type: string - type: "null" title: Model Type data: type: object title: Data type: object required: - id - label - sub_label - camera - start_time - end_time - false_positive - zones - thumbnail - has_clip - has_snapshot - retain_indefinitely - plus_id - model_hash - detector_type - model_type - data title: EventResponse EventUploadPlusResponse: properties: success: type: boolean title: Success plus_id: type: string title: Plus Id type: object required: - success - plus_id title: EventUploadPlusResponse EventsCreateBody: properties: sub_label: anyOf: - type: string - type: "null" title: Sub Label score: anyOf: - type: number - type: "null" title: Score default: 0 duration: anyOf: - type: integer - type: "null" title: Duration default: 30 include_recording: anyOf: - type: boolean - type: "null" title: Include Recording default: true draw: anyOf: - type: object - type: "null" title: Draw default: {} type: object title: EventsCreateBody EventsDeleteBody: properties: event_ids: items: type: string type: array title: The event IDs to delete type: object required: - event_ids title: EventsDeleteBody EventsDescriptionBody: properties: description: anyOf: - type: string - type: "null" title: The description of the event type: object required: - description title: EventsDescriptionBody EventsEndBody: properties: end_time: anyOf: - type: number - type: "null" title: End Time type: object title: EventsEndBody EventsLPRBody: properties: recognizedLicensePlate: type: string maxLength: 100 title: Recognized License Plate recognizedLicensePlateScore: anyOf: - type: number maximum: 1 exclusiveMinimum: 0 - type: "null" title: Score for recognized license plate type: object required: - recognizedLicensePlate title: EventsLPRBody EventsSubLabelBody: properties: subLabel: type: string maxLength: 100 title: Sub label subLabelScore: anyOf: - type: number maximum: 1 exclusiveMinimum: 0 - type: "null" title: Score for sub label camera: anyOf: - type: string - type: "null" title: Camera this object is detected on. type: object required: - subLabel title: EventsSubLabelBody ExportModel: properties: id: type: string title: Id description: Unique identifier for the export camera: type: string title: Camera description: Camera name associated with this export name: type: string title: Name description: Friendly name of the export date: type: number title: Date description: Unix timestamp when the export was created video_path: type: string title: Video Path description: File path to the exported video thumb_path: type: string title: Thumb Path description: File path to the export thumbnail in_progress: type: boolean title: In Progress description: Whether the export is currently being processed type: object required: - id - camera - name - date - video_path - thumb_path - in_progress title: ExportModel description: Model representing a single export. ExportRecordingsBody: properties: playback: $ref: "#/components/schemas/PlaybackFactorEnum" title: Playback factor default: realtime source: $ref: "#/components/schemas/PlaybackSourceEnum" title: Playback source default: recordings name: type: string maxLength: 256 title: Friendly name image_path: type: string title: Image Path type: object title: ExportRecordingsBody ExportRenameBody: properties: name: type: string maxLength: 256 title: Friendly name type: object required: - name title: ExportRenameBody Extension: type: string enum: - webp - png - jpg - jpeg title: Extension FaceRecognitionResponse: properties: success: type: boolean title: Success description: Whether the face recognition was successful score: anyOf: - type: number - type: "null" title: Score description: Confidence score of the recognition (0-1) face_name: anyOf: - type: string - type: "null" title: Face Name description: The recognized face name if successful type: object required: - success title: FaceRecognitionResponse description: >- Response model for face recognition endpoint. Returns the result of attempting to recognize a face from an uploaded image. FacesResponse: additionalProperties: items: type: string type: array type: object title: FacesResponse description: |- Response model for the get_faces endpoint. Returns a mapping of face names to lists of image filenames. Each face name corresponds to a directory in the faces folder, and the list contains the names of image files for that face. Example: { "john_doe": ["face1.webp", "face2.jpg"], "jane_smith": ["face3.png"] } GenericResponse: properties: success: type: boolean title: Success message: type: string title: Message type: object required: - success - message title: GenericResponse HTTPValidationError: properties: detail: items: $ref: "#/components/schemas/ValidationError" type: array title: Detail type: object title: HTTPValidationError Last24HoursReview: properties: reviewed_alert: type: integer title: Reviewed Alert reviewed_detection: type: integer title: Reviewed Detection total_alert: type: integer title: Total Alert total_detection: type: integer title: Total Detection type: object required: - reviewed_alert - reviewed_detection - total_alert - total_detection title: Last24HoursReview PlaybackFactorEnum: type: string enum: - realtime - timelapse_25x title: PlaybackFactorEnum PlaybackSourceEnum: type: string enum: - recordings - preview title: PlaybackSourceEnum PreviewModel: properties: camera: type: string title: Camera description: Camera name for this preview src: type: string title: Src description: Path to the preview video file type: type: string title: Type description: MIME type of the preview video (video/mp4) start: type: number title: Start description: Unix timestamp when the preview starts end: type: number title: End description: Unix timestamp when the preview ends type: object required: - camera - src - type - start - end title: PreviewModel description: Model representing a single preview clip. RegenerateDescriptionEnum: type: string enum: - thumbnails - snapshot title: RegenerateDescriptionEnum RenameFaceBody: properties: new_name: type: string title: New Name type: object required: - new_name title: RenameFaceBody ReviewActivityMotionResponse: properties: start_time: type: integer title: Start Time motion: type: number title: Motion camera: type: string title: Camera type: object required: - start_time - motion - camera title: ReviewActivityMotionResponse ReviewModifyMultipleBody: properties: ids: items: type: string minLength: 1 type: array minItems: 1 title: Ids type: object required: - ids title: ReviewModifyMultipleBody ReviewSegmentResponse: properties: id: type: string title: Id camera: type: string title: Camera start_time: type: string format: date-time title: Start Time end_time: type: string format: date-time title: End Time has_been_reviewed: type: boolean title: Has Been Reviewed severity: $ref: "#/components/schemas/SeverityEnum" thumb_path: type: string title: Thumb Path data: title: Data type: object required: - id - camera - start_time - end_time - has_been_reviewed - severity - thumb_path - data title: ReviewSegmentResponse ReviewSummaryResponse: properties: last24Hours: $ref: "#/components/schemas/Last24HoursReview" root: additionalProperties: $ref: "#/components/schemas/DayReview" type: object title: Root type: object required: - last24Hours - root title: ReviewSummaryResponse SeverityEnum: type: string enum: - alert - detection title: SeverityEnum StartExportResponse: properties: success: type: boolean title: Success description: Whether the export was started successfully message: type: string title: Message description: Status or error message export_id: anyOf: - type: string - type: "null" title: Export Id description: The export ID if successfully started type: object required: - success - message title: StartExportResponse description: Response model for starting an export. SubmitPlusBody: properties: include_annotation: type: integer title: Include Annotation default: 1 type: object title: SubmitPlusBody TriggerEmbeddingBody: properties: type: $ref: "#/components/schemas/TriggerType" data: type: string title: Data threshold: type: number maximum: 1 minimum: 0 title: Threshold default: 0.5 type: object required: - type - data title: TriggerEmbeddingBody TriggerType: type: string enum: - thumbnail - description title: TriggerType ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError