frigate/docs/static/frigate-api.yaml
2025-12-03 11:11:44 -07:00

5258 lines
141 KiB
YAML

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