mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-12-06 13:34:13 +03:00
Some checks failed
CI / AMD64 Build (push) Has been cancelled
CI / ARM Build (push) Has been cancelled
CI / Jetson Jetpack 6 (push) Has been cancelled
CI / AMD64 Extra Build (push) Has been cancelled
CI / ARM Extra Build (push) Has been cancelled
CI / Synaptics Build (push) Has been cancelled
CI / Assemble and push default build (push) Has been cancelled
* Remove source_type from API * Don't require state classification models to select all classes * Specifically validate provided end_time for manual events * Remove yolov9 specification for warning * Remove warning for coral * clarify zone name tip * clarify replace rules in lpr docs * remove periods * Add explanation for review report * adjust HLS gap controller params defaults to false, should help to recover from hangs and stalling in tracking details videos on chrome * only redirect to login page once on 401 attempt to fix ios pwa safari redirect storm * Use contextual information from other cameras to inform report summary * Formatting and prompt improvements for review summary report * More improvements to prompt * Remove examples * Don't show admin action buttons on export card * fix redirect race condition Coordinate 401 redirect logic between ApiProvider and ProtectedRoute using a shared flag to prevent multiple simultaneous redirects that caused UI flashing. Ensure both auth error paths check and set the redirect flag before navigating to login, eliminating race conditions where both mechanisms could trigger at once --------- Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
5258 lines
141 KiB
YAML
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
|