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/first_time_login: get: tags: - Auth summary: First Time Login description: |- Return whether the admin first-time login help flag is set in config. This endpoint is intentionally unauthenticated so the login page can query it before a user is authenticated. operationId: first_time_login_auth_first_time_login_get responses: "200": description: Successful Response content: application/json: schema: {} /auth: get: tags: - Auth summary: Authenticate request description: >- Authenticates the current request based on proxy headers or JWT token. This endpoint verifies authentication credentials and manages JWT token refresh. On success, no JSON body is returned; authentication state is communicated via response headers and cookies. operationId: auth_auth_get responses: "202": description: Authentication Accepted (no response body) content: application/json: schema: {} headers: remote-user: description: Authenticated username or "viewer" in proxy-only mode schema: type: string remote-role: description: "Resolved role (e.g., admin, viewer, or custom)" schema: type: string Set-Cookie: description: May include refreshed JWT cookie when applicable schema: type: string "401": description: Authentication Failed /profile: get: tags: - Auth summary: Get user profile description: >- Returns the current authenticated user's profile including username, role, and allowed cameras. This endpoint requires authentication and returns information about the user's permissions. operationId: profile_profile_get responses: "200": description: Successful Response content: application/json: schema: {} /logout: get: tags: - Auth summary: Logout user description: >- Logs out the current user by clearing the session cookie. After logout, subsequent requests will require re-authentication. operationId: logout_logout_get responses: "200": description: Successful Response content: application/json: schema: {} /login: post: tags: - Auth summary: Login with credentials description: >- Authenticates a user with username and password. Returns a JWT token as a secure HTTP-only cookie that can be used for subsequent API requests. The JWT token can also be retrieved from the response and used as a Bearer token in the Authorization header. Example using Bearer token: ``` curl -H "Authorization: Bearer " https://frigate_ip:8971/api/profile ``` 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 all users description: >- Returns a list of all users with their usernames and roles. Requires admin role. Each user object contains the username and assigned role. operationId: get_users_users_get responses: "200": description: Successful Response content: application/json: schema: {} post: tags: - Auth summary: Create new user description: >- Creates a new user with the specified username, password, and role. Requires admin role. Password must be at least 12 characters long. 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 description: >- Deletes a user by username. The built-in admin user cannot be deleted. Requires admin role. Returns success message or error if user not found. 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 user password description: >- Updates a user's password. Users can only change their own password unless they have admin role. Requires the current password to verify identity for non-admin users. Password must be at least 12 characters long. If user changes their own password, a new JWT cookie is automatically issued. 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 user role description: >- Updates a user's role. The built-in admin user's role cannot be modified. Requires admin role. Valid roles are defined in the configuration. 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" /go2rtc/streams: get: tags: - Camera summary: Go2Rtc Streams operationId: go2rtc_streams_go2rtc_streams_get responses: "200": description: Successful Response content: application/json: schema: {} "/go2rtc/streams/{camera_name}": get: tags: - Camera summary: Go2Rtc Camera Stream operationId: go2rtc_camera_stream_go2rtc_streams__camera_name__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" "/go2rtc/streams/{stream_name}": put: tags: - Camera summary: Go2Rtc Add Stream description: Add or update a go2rtc stream configuration. operationId: go2rtc_add_stream_go2rtc_streams__stream_name__put parameters: - name: stream_name in: path required: true schema: type: string title: Stream Name - name: src in: query required: false schema: type: string default: "" title: Src responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" delete: tags: - Camera summary: Go2Rtc Delete Stream description: Delete a go2rtc stream. operationId: go2rtc_delete_stream_go2rtc_streams__stream_name__delete parameters: - name: stream_name in: path required: true schema: type: string title: Stream Name responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /ffprobe: get: tags: - Camera summary: Ffprobe operationId: ffprobe_ffprobe_get parameters: - name: paths in: query required: false schema: type: string default: "" title: Paths - name: detailed in: query required: false schema: type: boolean default: false title: Detailed responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /ffprobe/snapshot: get: tags: - Camera summary: Ffprobe Snapshot description: Get a snapshot from a stream URL using ffmpeg. operationId: ffprobe_snapshot_ffprobe_snapshot_get parameters: - name: url in: query required: false schema: type: string default: "" title: Url - name: timeout in: query required: false schema: type: integer default: 10 title: Timeout responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /reolink/detect: get: tags: - Camera summary: Reolink Detect description: >- Detect Reolink camera capabilities and recommend optimal protocol. Queries the Reolink camera API to determine the camera's resolution and recommends either http-flv (for 5MP and below) or rtsp (for higher resolutions). operationId: reolink_detect_reolink_detect_get parameters: - name: host in: query required: false schema: type: string default: "" title: Host - name: username in: query required: false schema: type: string default: "" title: Username - name: password in: query required: false schema: type: string default: "" title: Password responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /onvif/probe: get: tags: - Camera summary: Probe ONVIF device description: >- Probe an ONVIF device to determine capabilities and optionally test available stream URIs. Query params: host (required), port (default 80), username, password, test (boolean), auth_type (basic or digest, default basic). operationId: onvif_probe_onvif_probe_get parameters: - name: host in: query required: false schema: type: string title: Host - name: port in: query required: false schema: type: integer default: 80 title: Port - name: username in: query required: false schema: type: string default: "" title: Username - name: password in: query required: false schema: type: string default: "" title: Password - name: test in: query required: false schema: type: boolean default: false title: Test - name: auth_type in: query required: false schema: type: string default: basic title: Auth Type responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" "/cameras/{camera_name}": delete: tags: - Camera summary: Delete Camera description: |- Delete a camera and all its associated data. Removes the camera from config, stops processes, and cleans up all database entries and media files. Args: camera_name: Name of the camera to delete delete_exports: Whether to also delete exports for this camera operationId: delete_camera_cameras__camera_name__delete parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name - name: delete_exports in: query required: false schema: type: boolean default: false title: Delete Exports responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" "/camera/{camera_name}/set/{feature}/{sub_command}": put: tags: - Camera summary: Camera Set description: Set a camera feature state. Use camera_name='*' to target all cameras. operationId: camera_set_camera__camera_name__set__feature___sub_command__put parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name - name: feature in: path required: true schema: type: string title: Feature - name: sub_command in: path required: true schema: anyOf: - type: string - type: "null" title: Sub Command requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CameraSetBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" "/camera/{camera_name}/set/{feature}": put: tags: - Camera summary: Camera Set description: Set a camera feature state. Use camera_name='*' to target all cameras. operationId: camera_set_camera__camera_name__set__feature__put parameters: - name: camera_name in: path required: true schema: type: string title: Camera Name - name: feature in: path required: true schema: type: string title: Feature - name: sub_command in: query required: false schema: anyOf: - type: string - type: "null" title: Sub Command requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CameraSetBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /chat/tools: get: tags: - Chat summary: Get available tools description: Returns OpenAI-compatible tool definitions for function calling. operationId: get_tools_chat_tools_get responses: "200": description: Successful Response content: application/json: schema: {} /chat/execute: post: tags: - Chat summary: Execute a tool description: Execute a tool function call from an LLM. operationId: execute_tool_chat_execute_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ToolExecuteRequest" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /chat/completion: post: tags: - Chat summary: Chat completion with tool calling description: >- Send a chat message to the configured GenAI provider with tool calling support. The LLM can call Frigate tools to answer questions about your cameras and events. operationId: chat_completion_chat_completion_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ChatCompletionRequest" 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/attributes: get: tags: - Classification summary: Get custom classification attributes description: |- Returns custom classification attributes for a given object type. Only includes models with classification_type set to 'attribute'. By default returns a flat sorted list of all attribute labels. If group_by_model is true, returns attributes grouped by model name. operationId: get_custom_attributes_classification_attributes_get parameters: - name: object_type in: query required: false schema: type: string title: Object Type - name: group_by_model in: query required: false schema: type: boolean default: false title: Group By Model 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/{old_category}/rename": put: tags: - Classification summary: Rename a classification category description: |- Renames a classification category for a given classification model. The old category must exist and the new name must be valid. Returns a success message or an error if the name is invalid. operationId: >- rename_classification_category_classification__name__dataset__old_category__rename_put parameters: - name: name in: path required: true schema: type: string title: Name - name: old_category in: path required: true schema: type: string title: Old 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}/dataset/{category}/create": post: tags: - Classification summary: Create an empty classification category folder description: |- Creates an empty folder for a classification category. This is used to create folders for categories that don't have images yet. Returns a success message or an error if the name is invalid. operationId: >- create_classification_category_classification__name__dataset__category__create_post parameters: - name: name in: path required: true schema: type: string title: Name - name: category in: path required: true schema: type: string title: Category 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" /classification/generate_examples/state: post: tags: - Classification summary: Generate state classification examples description: Generate examples for state classification. operationId: generate_state_examples_classification_generate_examples_state_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/GenerateStateExamplesBody" 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/generate_examples/object: post: tags: - Classification summary: Generate object classification examples description: Generate examples for object classification. operationId: generate_object_examples_classification_generate_examples_object_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/GenerateObjectExamplesBody" 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}": delete: tags: - Classification summary: Delete a classification model description: |- Deletes a specific classification model and all its associated data. Works even if the model is not in the config (e.g., partially created during wizard). Returns a success message. operationId: delete_classification_model_classification__name__delete 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" /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 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: {} /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: {} /profiles: get: tags: - App summary: Get Profiles description: List all available profiles and the currently active profile. operationId: get_profiles_profiles_get responses: "200": description: Successful Response content: application/json: schema: {} /profile/active: get: tags: - App summary: Get Active Profile description: Get the currently active profile. operationId: get_active_profile_profile_active_get responses: "200": description: Successful Response content: application/json: schema: {} /ffmpeg/presets: get: tags: - App summary: Ffmpeg Presets description: Return available ffmpeg preset keys for config UI usage. operationId: ffmpeg_presets_ffmpeg_presets_get responses: "200": description: Successful Response content: application/json: schema: {} /config/raw_paths: get: tags: - App summary: Config Raw Paths description: >- Admin-only endpoint that returns camera paths and go2rtc streams without credential masking. operationId: config_raw_paths_config_raw_paths_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" /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: {} /media/sync: post: tags: - App summary: Start media sync job description: >- Start an asynchronous media sync job to find and (optionally) remove orphaned media files. Returns 202 with job details when queued, or 409 if a job is already running. operationId: sync_media_media_sync_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/MediaSyncBody" responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /media/sync/current: get: tags: - App summary: Get current media sync job description: >- Retrieve the current running media sync job, if any. Returns the job details or null when no job is active. operationId: get_media_sync_current_media_sync_current_get responses: "200": description: Successful Response content: application/json: schema: {} "/media/sync/status/{job_id}": get: tags: - App summary: Get media sync job status description: >- Get status and results for the specified media sync job id. Returns 200 with job details including results, or 404 if the job is not found. operationId: get_media_sync_status_media_sync_status__job_id__get parameters: - name: job_id in: path required: true schema: type: string title: Job Id responses: "200": description: Successful Response content: application/json: schema: {} "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /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" /audio_labels: get: tags: - App summary: Get Audio Labels operationId: get_audio_labels_audio_labels_get responses: "200": description: Successful Response content: application/json: schema: {} /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: type: string 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: type: string 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 parameters: - name: export_case_id in: query required: false schema: anyOf: - type: string - type: "null" title: Export Case Id - name: cameras in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Cameras - name: start_date in: query required: false schema: anyOf: - type: number - type: "null" title: Start Date - name: end_date in: query required: false schema: anyOf: - type: number - type: "null" title: End Date responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/ExportModel" title: Response Get Exports Exports Get "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /cases: get: tags: - Export summary: Get export cases description: Gets all export cases from the database. operationId: get_export_cases_cases_get responses: "200": description: Successful Response content: application/json: schema: type: array items: $ref: "#/components/schemas/ExportCaseModel" title: Response Get Export Cases Cases Get post: tags: - Export summary: Create export case description: Creates a new export case. operationId: create_export_case_cases_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ExportCaseCreateBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/ExportCaseModel" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" "/cases/{case_id}": get: tags: - Export summary: Get a single export case description: Gets a specific export case by ID. operationId: get_export_case_cases__case_id__get parameters: - name: case_id in: path required: true schema: type: string title: Case Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/ExportCaseModel" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" patch: tags: - Export summary: Update export case description: Updates an existing export case. operationId: update_export_case_cases__case_id__patch parameters: - name: case_id in: path required: true schema: type: string title: Case Id requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ExportCaseUpdateBody" 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: - Export summary: Delete export case description: |- Deletes an export case. Exports that reference this case will have their export_case set to null. operationId: delete_export_case_cases__case_id__delete parameters: - name: case_id in: path required: true schema: type: string title: Case 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" "/export/{export_id}/case": patch: tags: - Export summary: Assign export to case description: "Assigns an export to a case, or unassigns it if export_case_id is null." operationId: assign_export_case_export__export_id__case_patch parameters: - name: export_id in: path required: true schema: type: string title: Export Id requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ExportCaseAssignBody" 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/{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" "/export/custom/{camera_name}/start/{start_time}/end/{end_time}": post: tags: - Export summary: Start custom recording export description: >- Starts an export of a recording for the specified time range using custom FFmpeg arguments. 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. If ffmpeg_input_args and ffmpeg_output_args are not provided, defaults to timelapse export settings. operationId: >- export_recording_custom_export_custom__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/ExportRecordingsCustomBody" 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" "/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: attributes in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Attributes - 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: sub_labels in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Sub Labels - name: attributes in: query required: false schema: anyOf: - type: string - type: "null" default: all title: Attributes - 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}/attributes": post: tags: - Events summary: Set custom classification attributes description: >- Sets an event's custom classification attributes for all attribute-type models that apply to the event's object type. operationId: set_attributes_events__event_id__attributes_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/EventsAttributesBody" 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 description: >- Returns the latest frame from the specified camera in the requested format (jpg, png, webp). Falls back to preview frames if the camera is offline. 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" "/{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 - name: force_discontinuity in: query required: false schema: type: boolean default: false title: Force Discontinuity 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" "/vod/clip/{camera_name}/start/{start_ts}/end/{end_ts}": get: tags: - Media summary: Vod Clip description: >- Returns an HLS playlist for a timestamp range with HLS discontinuity enabled. Append /master.m3u8 or /index.m3u8 for HLS playback. operationId: vod_clip_vod_clip__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" "/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 - name: camera_name in: query required: false 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}/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" "/{camera_name}/region_grid": delete: tags: - Media summary: Clear Region Grid description: Clear the region grid for a camera. operationId: clear_region_grid__camera_name__region_grid_delete 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" "/events/{event_id}/snapshot-clean.webp": get: tags: - Media summary: Event Snapshot Clean operationId: event_snapshot_clean_events__event_id__snapshot_clean_webp_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 - name: camera_name in: query required: false 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" "/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. - name: camera_name in: query required: false 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" "/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 - name: camera_name in: query required: false 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}/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 - name: camera_name in: query required: false 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" "/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 - name: camera_name in: query required: false 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" "/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 - name: camera_name in: query required: false 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}/{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" "/{camera_name}/search/motion": post: tags: - Motion Search summary: Start motion search job description: |- Starts an asynchronous search for significant motion changes within a user-defined Region of Interest (ROI) over a specified time range. Returns a job_id that can be used to poll for results. operationId: start_motion_search__camera_name__search_motion_post parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/MotionSearchRequest" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/MotionSearchStartResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" "/{camera_name}/search/motion/{job_id}": get: tags: - Motion Search summary: Get motion search job status description: Returns the status and results (if complete) of a motion search job. operationId: >- get_motion_search_status_endpoint__camera_name__search_motion__job_id__get parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: job_id in: path required: true schema: type: string title: Job Id responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/MotionSearchStatusResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" "/{camera_name}/search/motion/{job_id}/cancel": post: tags: - Motion Search summary: Cancel motion search job description: Cancels an active motion search job if it is still processing. operationId: >- cancel_motion_search_endpoint__camera_name__search_motion__job_id__cancel_post parameters: - name: camera_name in: path required: true schema: anyOf: - type: string - type: "null" title: Camera Name - name: job_id in: path required: true schema: type: string title: Job Id 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: - Recordings 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: - Recordings 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: - Recordings 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: - Recordings 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: 1774023877.74743 title: After - name: before in: query required: false schema: type: number default: 1774027477.74744 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: - Recordings 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" "/recordings/start/{start}/end/{end}": delete: tags: - Recordings summary: Delete recordings description: |- Deletes recordings within the specified time range. Recordings can be filtered by cameras and kept based on motion, objects, or audio attributes. operationId: delete_recordings_recordings_start__start__end__end__delete parameters: - name: start in: path required: true schema: type: number description: Start timestamp (unix) title: Start description: Start timestamp (unix) - name: end in: path required: true schema: type: number description: End timestamp (unix) title: End description: End timestamp (unix) - name: keep in: query required: false schema: anyOf: - type: string - type: "null" title: Keep - 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: $ref: "#/components/schemas/GenericResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /debug_replay/start: post: tags: - App summary: Start debug replay description: Start a debug replay session from camera recordings. operationId: start_debug_replay_debug_replay_start_post requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/DebugReplayStartBody" responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/DebugReplayStartResponse" "422": description: Validation Error content: application/json: schema: $ref: "#/components/schemas/HTTPValidationError" /debug_replay/status: get: tags: - App summary: Get debug replay status description: Get the status of the current debug replay session. operationId: get_debug_replay_status_debug_replay_status_get responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/DebugReplayStatusResponse" /debug_replay/stop: post: tags: - App summary: Stop debug replay description: Stop the active debug replay session and clean up all artifacts. operationId: stop_debug_replay_debug_replay_stop_post responses: "200": description: Successful Response content: application/json: schema: $ref: "#/components/schemas/DebugReplayStopResponse" 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 skip_save: type: boolean title: Skip Save default: false 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 old_password: anyOf: - type: string - type: "null" title: Old 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 description: ID of the event to transcribe audio for 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 CameraSetBody: properties: value: type: string title: Value description: The value to set for the feature type: object required: - value title: CameraSetBody ChatCompletionRequest: properties: messages: items: $ref: "#/components/schemas/ChatMessage" type: array title: Messages description: List of messages in the conversation max_tool_iterations: type: integer maximum: 10 minimum: 1 title: Max Tool Iterations description: "Maximum number of tool call iterations (default: 5)" default: 5 stream: type: boolean title: Stream description: >- If true, stream the final assistant response in the body as newline-delimited JSON. default: false type: object required: - messages title: ChatCompletionRequest description: Request for chat completion with tool calling. ChatMessage: properties: role: type: string title: Role description: "Message role: 'user', 'assistant', 'system', or 'tool'" content: type: string title: Content description: Message content tool_call_id: anyOf: - type: string - type: "null" title: Tool Call Id description: "For tool messages, the ID of the tool call" name: anyOf: - type: string - type: "null" title: Name description: "For tool messages, the tool name" type: object required: - role - content title: ChatMessage description: A single message in a chat conversation. 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 DebugReplayStartBody: properties: camera: type: string title: Source camera name start_time: type: number title: Start timestamp end_time: type: number title: End timestamp type: object required: - camera - start_time - end_time title: DebugReplayStartBody description: Request body for starting a debug replay session. DebugReplayStartResponse: properties: success: type: boolean title: Success replay_camera: type: string title: Replay Camera type: object required: - success - replay_camera title: DebugReplayStartResponse description: Response for starting a debug replay session. DebugReplayStatusResponse: properties: active: type: boolean title: Active replay_camera: anyOf: - type: string - type: "null" title: Replay Camera source_camera: anyOf: - type: string - type: "null" title: Source Camera start_time: anyOf: - type: number - type: "null" title: Start Time end_time: anyOf: - type: number - type: "null" title: End Time live_ready: type: boolean title: Live Ready default: false type: object required: - active title: DebugReplayStatusResponse description: Response for debug replay status. DebugReplayStopResponse: properties: success: type: boolean title: Success type: object required: - success title: DebugReplayStopResponse description: Response for stopping a debug replay session. 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 EventsAttributesBody: properties: attributes: items: type: string type: array title: Selected classification attributes for the event type: object title: EventsAttributesBody 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: {} pre_capture: anyOf: - type: integer - type: "null" title: Pre Capture 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 ExportCaseAssignBody: properties: export_case_id: anyOf: - type: string maxLength: 30 - type: "null" title: Export Case Id description: "Case ID to assign to the export, or null to unassign" type: object title: ExportCaseAssignBody description: Request body for assigning or unassigning an export to a case. ExportCaseCreateBody: properties: name: type: string maxLength: 100 title: Name description: Friendly name of the export case description: anyOf: - type: string - type: "null" title: Description description: Optional description of the export case type: object required: - name title: ExportCaseCreateBody description: Request body for creating a new export case. ExportCaseModel: properties: id: type: string title: Id description: Unique identifier for the export case name: type: string title: Name description: Friendly name of the export case description: anyOf: - type: string - type: "null" title: Description description: Optional description of the export case created_at: type: number title: Created At description: Unix timestamp when the export case was created updated_at: type: number title: Updated At description: Unix timestamp when the export case was last updated type: object required: - id - name - created_at - updated_at title: ExportCaseModel description: Model representing a single export case. ExportCaseUpdateBody: properties: name: anyOf: - type: string maxLength: 100 - type: "null" title: Name description: Updated friendly name of the export case description: anyOf: - type: string - type: "null" title: Description description: Updated description of the export case type: object title: ExportCaseUpdateBody description: Request body for updating an existing export case. 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 export_case_id: anyOf: - type: string - type: "null" title: Export Case Id description: ID of the export case this export belongs to type: object required: - id - camera - name - date - video_path - thumb_path - in_progress title: ExportModel description: Model representing a single export. ExportRecordingsBody: properties: source: $ref: "#/components/schemas/PlaybackSourceEnum" title: Playback source default: recordings name: anyOf: - type: string maxLength: 256 - type: "null" title: Friendly name image_path: type: string title: Image Path export_case_id: anyOf: - type: string maxLength: 30 - type: "null" title: Export case ID description: ID of the export case to assign this export to type: object title: ExportRecordingsBody ExportRecordingsCustomBody: properties: 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 export_case_id: anyOf: - type: string maxLength: 30 - type: "null" title: Export case ID description: ID of the export case to assign this export to ffmpeg_input_args: anyOf: - type: string - type: "null" title: FFmpeg input arguments description: >- Custom FFmpeg input arguments. If not provided, defaults to timelapse input args. ffmpeg_output_args: anyOf: - type: string - type: "null" title: FFmpeg output arguments description: >- Custom FFmpeg output arguments. If not provided, defaults to timelapse output args. cpu_fallback: type: boolean title: CPU Fallback description: >- If true, retry export without hardware acceleration if the initial export fails. default: false type: object title: ExportRecordingsCustomBody 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"] } GenerateObjectExamplesBody: properties: model_name: type: string title: Model Name description: Name of the classification model label: type: string title: Label description: "Object label to collect examples for (e.g., 'person', 'car')" type: object required: - model_name - label title: GenerateObjectExamplesBody GenerateStateExamplesBody: properties: model_name: type: string title: Model Name description: Name of the classification model cameras: additionalProperties: prefixItems: - type: number - type: number - type: number - type: number type: array maxItems: 4 minItems: 4 type: object title: Cameras description: >- Dictionary mapping camera names to normalized crop coordinates in [x1, y1, x2, y2] format (values 0-1) type: object required: - model_name - cameras title: GenerateStateExamplesBody 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 MediaSyncBody: properties: dry_run: type: boolean title: Dry Run description: "If True, only report orphans without deleting them" default: true media_types: items: type: string type: array title: Media Types description: >- Types of media to sync: 'all', 'event_snapshots', 'event_thumbnails', 'review_thumbnails', 'previews', 'exports', 'recordings' default: - all force: type: boolean title: Force description: "If True, bypass safety threshold checks" default: false type: object title: MediaSyncBody MotionSearchMetricsResponse: properties: segments_scanned: type: integer title: Segments Scanned default: 0 segments_processed: type: integer title: Segments Processed default: 0 metadata_inactive_segments: type: integer title: Metadata Inactive Segments default: 0 heatmap_roi_skip_segments: type: integer title: Heatmap Roi Skip Segments default: 0 fallback_full_range_segments: type: integer title: Fallback Full Range Segments default: 0 frames_decoded: type: integer title: Frames Decoded default: 0 wall_time_seconds: type: number title: Wall Time Seconds default: 0 segments_with_errors: type: integer title: Segments With Errors default: 0 type: object title: MotionSearchMetricsResponse description: Metrics collected during motion search execution. MotionSearchRequest: properties: start_time: type: number title: Start Time description: Start timestamp for the search range end_time: type: number title: End Time description: End timestamp for the search range polygon_points: items: items: type: number type: array type: array title: Polygon Points description: "List of [x, y] normalized coordinates (0-1) defining the ROI polygon" threshold: type: integer maximum: 255 minimum: 1 title: Threshold description: Pixel difference threshold (1-255) default: 30 min_area: type: number maximum: 100 minimum: 0.1 title: Min Area description: Minimum change area as a percentage of the ROI default: 5 frame_skip: type: integer maximum: 30 minimum: 1 title: Frame Skip description: "Process every Nth frame (1=all frames, 5=every 5th frame)" default: 5 parallel: type: boolean title: Parallel description: Enable parallel scanning across segments default: false max_results: type: integer maximum: 200 minimum: 1 title: Max Results description: Maximum number of search results to return default: 25 type: object required: - start_time - end_time - polygon_points title: MotionSearchRequest description: Request body for motion search. MotionSearchResult: properties: timestamp: type: number title: Timestamp description: Timestamp where change was detected change_percentage: type: number title: Change Percentage description: Percentage of ROI area that changed type: object required: - timestamp - change_percentage title: MotionSearchResult description: A single search result with timestamp and change info. MotionSearchStartResponse: properties: success: type: boolean title: Success message: type: string title: Message job_id: type: string title: Job Id type: object required: - success - message - job_id title: MotionSearchStartResponse description: Response when motion search job starts. MotionSearchStatusResponse: properties: success: type: boolean title: Success message: type: string title: Message status: type: string title: Status results: anyOf: - items: $ref: "#/components/schemas/MotionSearchResult" type: array - type: "null" title: Results total_frames_processed: anyOf: - type: integer - type: "null" title: Total Frames Processed error_message: anyOf: - type: string - type: "null" title: Error Message metrics: anyOf: - $ref: "#/components/schemas/MotionSearchMetricsResponse" - type: "null" type: object required: - success - message - status title: MotionSearchStatusResponse description: Response containing job status and results. 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 description: New name for the face 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 reviewed: type: boolean title: Reviewed default: true 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 ToolExecuteRequest: properties: tool_name: type: string title: Tool Name arguments: type: object title: Arguments type: object required: - tool_name - arguments title: ToolExecuteRequest description: Request model for tool execution. 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