mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-03-21 23:58:22 +03:00
Some checks are pending
CI / AMD64 Build (push) Waiting to run
CI / ARM Build (push) Waiting to run
CI / Jetson Jetpack 6 (push) Waiting to run
CI / AMD64 Extra Build (push) Blocked by required conditions
CI / ARM Extra Build (push) Blocked by required conditions
CI / Synaptics Build (push) Blocked by required conditions
CI / Assemble and push default build (push) Blocked by required conditions
* Change review GenAI metric to seconds * Update API docs
7301 lines
200 KiB
YAML
7301 lines
200 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/first_time_login:
|
|
get:
|
|
tags:
|
|
- Auth
|
|
summary: First Time Login
|
|
description: |-
|
|
Return whether the admin first-time login help flag is set in config.
|
|
|
|
This endpoint is intentionally unauthenticated so the login page can
|
|
query it before a user is authenticated.
|
|
operationId: first_time_login_auth_first_time_login_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/auth:
|
|
get:
|
|
tags:
|
|
- Auth
|
|
summary: Authenticate request
|
|
description: >-
|
|
Authenticates the current request based on proxy headers or JWT token.
|
|
This endpoint verifies authentication credentials and manages JWT token
|
|
refresh. On success, no JSON body is returned; authentication state is
|
|
communicated via response headers and cookies.
|
|
operationId: auth_auth_get
|
|
responses:
|
|
"202":
|
|
description: Authentication Accepted (no response body)
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
headers:
|
|
remote-user:
|
|
description: Authenticated username or "viewer" in proxy-only mode
|
|
schema:
|
|
type: string
|
|
remote-role:
|
|
description: "Resolved role (e.g., admin, viewer, or custom)"
|
|
schema:
|
|
type: string
|
|
Set-Cookie:
|
|
description: May include refreshed JWT cookie when applicable
|
|
schema:
|
|
type: string
|
|
"401":
|
|
description: Authentication Failed
|
|
/profile:
|
|
get:
|
|
tags:
|
|
- Auth
|
|
summary: Get user profile
|
|
description: >-
|
|
Returns the current authenticated user's profile including username,
|
|
role, and allowed cameras. This endpoint requires authentication and
|
|
returns information about the user's permissions.
|
|
operationId: profile_profile_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/logout:
|
|
get:
|
|
tags:
|
|
- Auth
|
|
summary: Logout user
|
|
description: >-
|
|
Logs out the current user by clearing the session cookie. After logout,
|
|
subsequent requests will require re-authentication.
|
|
operationId: logout_logout_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/login:
|
|
post:
|
|
tags:
|
|
- Auth
|
|
summary: Login with credentials
|
|
description: >-
|
|
Authenticates a user with username and password. Returns a JWT token as
|
|
a secure HTTP-only cookie that can be used for subsequent API requests.
|
|
The JWT token can also be retrieved from the response and used as a
|
|
Bearer token in the Authorization header.
|
|
|
|
|
|
Example using Bearer token:
|
|
|
|
```
|
|
|
|
curl -H "Authorization: Bearer <token_value>"
|
|
https://frigate_ip:8971/api/profile
|
|
|
|
```
|
|
operationId: login_login_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AppPostLoginBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/users:
|
|
get:
|
|
tags:
|
|
- Auth
|
|
summary: Get all users
|
|
description: >-
|
|
Returns a list of all users with their usernames and roles. Requires
|
|
admin role. Each user object contains the username and assigned role.
|
|
operationId: get_users_users_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
post:
|
|
tags:
|
|
- Auth
|
|
summary: Create new user
|
|
description: >-
|
|
Creates a new user with the specified username, password, and role.
|
|
Requires admin role. Password must be at least 12 characters long.
|
|
operationId: create_user_users_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AppPostUsersBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/users/{username}":
|
|
delete:
|
|
tags:
|
|
- Auth
|
|
summary: Delete user
|
|
description: >-
|
|
Deletes a user by username. The built-in admin user cannot be deleted.
|
|
Requires admin role. Returns success message or error if user not found.
|
|
operationId: delete_user_users__username__delete
|
|
parameters:
|
|
- name: username
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Username
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/users/{username}/password":
|
|
put:
|
|
tags:
|
|
- Auth
|
|
summary: Update user password
|
|
description: >-
|
|
Updates a user's password. Users can only change their own password
|
|
unless they have admin role. Requires the current password to verify
|
|
identity for non-admin users. Password must be at least 12 characters
|
|
long. If user changes their own password, a new JWT cookie is
|
|
automatically issued.
|
|
operationId: update_password_users__username__password_put
|
|
parameters:
|
|
- name: username
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Username
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AppPutPasswordBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/users/{username}/role":
|
|
put:
|
|
tags:
|
|
- Auth
|
|
summary: Update user role
|
|
description: >-
|
|
Updates a user's role. The built-in admin user's role cannot be
|
|
modified. Requires admin role. Valid roles are defined in the
|
|
configuration.
|
|
operationId: update_role_users__username__role_put
|
|
parameters:
|
|
- name: username
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Username
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AppPutRoleBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/go2rtc/streams:
|
|
get:
|
|
tags:
|
|
- Camera
|
|
summary: Go2Rtc Streams
|
|
operationId: go2rtc_streams_go2rtc_streams_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"/go2rtc/streams/{camera_name}":
|
|
get:
|
|
tags:
|
|
- Camera
|
|
summary: Go2Rtc Camera Stream
|
|
operationId: go2rtc_camera_stream_go2rtc_streams__camera_name__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/go2rtc/streams/{stream_name}":
|
|
put:
|
|
tags:
|
|
- Camera
|
|
summary: Go2Rtc Add Stream
|
|
description: Add or update a go2rtc stream configuration.
|
|
operationId: go2rtc_add_stream_go2rtc_streams__stream_name__put
|
|
parameters:
|
|
- name: stream_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Stream Name
|
|
- name: src
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Src
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
delete:
|
|
tags:
|
|
- Camera
|
|
summary: Go2Rtc Delete Stream
|
|
description: Delete a go2rtc stream.
|
|
operationId: go2rtc_delete_stream_go2rtc_streams__stream_name__delete
|
|
parameters:
|
|
- name: stream_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Stream Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/ffprobe:
|
|
get:
|
|
tags:
|
|
- Camera
|
|
summary: Ffprobe
|
|
operationId: ffprobe_ffprobe_get
|
|
parameters:
|
|
- name: paths
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Paths
|
|
- name: detailed
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
title: Detailed
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/ffprobe/snapshot:
|
|
get:
|
|
tags:
|
|
- Camera
|
|
summary: Ffprobe Snapshot
|
|
description: Get a snapshot from a stream URL using ffmpeg.
|
|
operationId: ffprobe_snapshot_ffprobe_snapshot_get
|
|
parameters:
|
|
- name: url
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Url
|
|
- name: timeout
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
title: Timeout
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/reolink/detect:
|
|
get:
|
|
tags:
|
|
- Camera
|
|
summary: Reolink Detect
|
|
description: >-
|
|
Detect Reolink camera capabilities and recommend optimal protocol.
|
|
|
|
|
|
Queries the Reolink camera API to determine the camera's resolution
|
|
|
|
and recommends either http-flv (for 5MP and below) or rtsp (for higher
|
|
resolutions).
|
|
operationId: reolink_detect_reolink_detect_get
|
|
parameters:
|
|
- name: host
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Host
|
|
- name: username
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Username
|
|
- name: password
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Password
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/onvif/probe:
|
|
get:
|
|
tags:
|
|
- Camera
|
|
summary: Probe ONVIF device
|
|
description: >-
|
|
Probe an ONVIF device to determine capabilities and optionally test
|
|
available stream URIs. Query params: host (required), port (default 80),
|
|
username, password, test (boolean), auth_type (basic or digest, default
|
|
basic).
|
|
operationId: onvif_probe_onvif_probe_get
|
|
parameters:
|
|
- name: host
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
title: Host
|
|
- name: port
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 80
|
|
title: Port
|
|
- name: username
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Username
|
|
- name: password
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Password
|
|
- name: test
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
title: Test
|
|
- name: auth_type
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: basic
|
|
title: Auth Type
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/cameras/{camera_name}":
|
|
delete:
|
|
tags:
|
|
- Camera
|
|
summary: Delete Camera
|
|
description: |-
|
|
Delete a camera and all its associated data.
|
|
|
|
Removes the camera from config, stops processes, and cleans up
|
|
all database entries and media files.
|
|
|
|
Args:
|
|
camera_name: Name of the camera to delete
|
|
delete_exports: Whether to also delete exports for this camera
|
|
operationId: delete_camera_cameras__camera_name__delete
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: delete_exports
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
title: Delete Exports
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/camera/{camera_name}/set/{feature}/{sub_command}":
|
|
put:
|
|
tags:
|
|
- Camera
|
|
summary: Camera Set
|
|
description: Set a camera feature state. Use camera_name='*' to target all cameras.
|
|
operationId: camera_set_camera__camera_name__set__feature___sub_command__put
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: feature
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Feature
|
|
- name: sub_command
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Sub Command
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CameraSetBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/camera/{camera_name}/set/{feature}":
|
|
put:
|
|
tags:
|
|
- Camera
|
|
summary: Camera Set
|
|
description: Set a camera feature state. Use camera_name='*' to target all cameras.
|
|
operationId: camera_set_camera__camera_name__set__feature__put
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: feature
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Feature
|
|
- name: sub_command
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Sub Command
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CameraSetBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/chat/tools:
|
|
get:
|
|
tags:
|
|
- Chat
|
|
summary: Get available tools
|
|
description: Returns OpenAI-compatible tool definitions for function calling.
|
|
operationId: get_tools_chat_tools_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/chat/execute:
|
|
post:
|
|
tags:
|
|
- Chat
|
|
summary: Execute a tool
|
|
description: Execute a tool function call from an LLM.
|
|
operationId: execute_tool_chat_execute_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ToolExecuteRequest"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/chat/completion:
|
|
post:
|
|
tags:
|
|
- Chat
|
|
summary: Chat completion with tool calling
|
|
description: >-
|
|
Send a chat message to the configured GenAI provider with tool calling
|
|
support. The LLM can call Frigate tools to answer questions about your
|
|
cameras and events.
|
|
operationId: chat_completion_chat_completion_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ChatCompletionRequest"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/faces:
|
|
get:
|
|
tags:
|
|
- Classification
|
|
summary: Get all registered faces
|
|
description: |-
|
|
Returns a dictionary mapping face names to lists of image filenames.
|
|
Each key represents a registered face name, and the value is a list of image
|
|
files associated with that face. Supported image formats include .webp, .png,
|
|
.jpg, and .jpeg.
|
|
operationId: get_faces_faces_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/FacesResponse"
|
|
/faces/reprocess:
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Reprocess a face training image
|
|
description: |-
|
|
Reprocesses a face training image to update the prediction.
|
|
Requires face recognition to be enabled in the configuration. The training file
|
|
must exist in the faces/train directory. Returns a success response or an error
|
|
message if face recognition is not enabled or the training file is invalid.
|
|
operationId: reclassify_face_faces_reprocess_post
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/faces/train/{name}/classify":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Classify and save a face training image
|
|
description: |-
|
|
Adds a training image to a specific face name for face recognition.
|
|
Accepts either a training file from the train directory or an event_id to extract
|
|
the face from. The image is saved to the face's directory and the face classifier
|
|
is cleared to incorporate the new training data. Returns a success message with
|
|
the new filename or an error if face recognition is not enabled, the file/event
|
|
is invalid, or the face cannot be extracted.
|
|
operationId: train_face_faces_train__name__classify_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/faces/{name}/create":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Create a new face name
|
|
description: |-
|
|
Creates a new folder for a face name in the faces directory.
|
|
This is used to organize face training images. The face name is sanitized and
|
|
spaces are replaced with underscores. Returns a success message or an error if
|
|
face recognition is not enabled.
|
|
operationId: create_face_faces__name__create_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/faces/{name}/register":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Register a face image
|
|
description: >-
|
|
Registers a face image for a specific face name by uploading an image
|
|
file.
|
|
The uploaded image is processed and added to the face recognition system. Returns a
|
|
success response with details about the registration, or an error if face recognition
|
|
is not enabled or the image cannot be processed.
|
|
operationId: register_face_faces__name__register_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: >-
|
|
#/components/schemas/Body_register_face_faces__name__register_post
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/faces/recognize:
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Recognize a face from an uploaded image
|
|
description: |-
|
|
Recognizes a face from an uploaded image file by comparing it against
|
|
registered faces in the system. Returns the recognized face name and confidence score,
|
|
or an error if face recognition is not enabled or the image cannot be processed.
|
|
operationId: recognize_face_faces_recognize_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: "#/components/schemas/Body_recognize_face_faces_recognize_post"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/FaceRecognitionResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/faces/{name}/delete":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Delete face images
|
|
description: >-
|
|
Deletes specific face images for a given face name. The image IDs must
|
|
belong
|
|
to the specified face folder. To delete an entire face folder, all image IDs in that
|
|
folder must be sent. Returns a success message or an error if face recognition is not enabled.
|
|
operationId: deregister_faces_faces__name__delete_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/DeleteFaceImagesBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/faces/{old_name}/rename":
|
|
put:
|
|
tags:
|
|
- Classification
|
|
summary: Rename a face name
|
|
description: |-
|
|
Renames a face name in the system. The old name must exist and the new
|
|
name must be valid. Returns a success message or an error if face recognition is not enabled.
|
|
operationId: rename_face_faces__old_name__rename_put
|
|
parameters:
|
|
- name: old_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Old Name
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/RenameFaceBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/lpr/reprocess:
|
|
put:
|
|
tags:
|
|
- Classification
|
|
summary: Reprocess a license plate
|
|
description: |-
|
|
Reprocesses a license plate image to update the plate.
|
|
Requires license plate recognition to be enabled in the configuration. The event_id
|
|
must exist in the database. Returns a success message or an error if license plate
|
|
recognition is not enabled or the event_id is invalid.
|
|
operationId: reprocess_license_plate_lpr_reprocess_put
|
|
parameters:
|
|
- name: event_id
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/reindex:
|
|
put:
|
|
tags:
|
|
- Classification
|
|
summary: Reindex embeddings
|
|
description: |-
|
|
Reindexes the embeddings for all tracked objects.
|
|
Requires semantic search to be enabled in the configuration. Returns a success message or an error if semantic search is not enabled.
|
|
operationId: reindex_embeddings_reindex_put
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
/audio/transcribe:
|
|
put:
|
|
tags:
|
|
- Classification
|
|
summary: Transcribe audio
|
|
description: |-
|
|
Transcribes audio from a specific event.
|
|
Requires audio transcription to be enabled in the configuration. The event_id
|
|
must exist in the database. Returns a success message or an error if audio transcription is not enabled or the event_id is invalid.
|
|
operationId: transcribe_audio_audio_transcribe_put
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AudioTranscriptionBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}/dataset":
|
|
get:
|
|
tags:
|
|
- Classification
|
|
summary: Get classification dataset
|
|
description: |-
|
|
Gets the dataset for a specific classification model.
|
|
The name must exist in the classification models. Returns a success message or an error if the name is invalid.
|
|
operationId: get_classification_dataset_classification__name__dataset_get
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/classification/attributes:
|
|
get:
|
|
tags:
|
|
- Classification
|
|
summary: Get custom classification attributes
|
|
description: |-
|
|
Returns custom classification attributes for a given object type.
|
|
Only includes models with classification_type set to 'attribute'.
|
|
By default returns a flat sorted list of all attribute labels.
|
|
If group_by_model is true, returns attributes grouped by model name.
|
|
operationId: get_custom_attributes_classification_attributes_get
|
|
parameters:
|
|
- name: object_type
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
title: Object Type
|
|
- name: group_by_model
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
title: Group By Model
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}/train":
|
|
get:
|
|
tags:
|
|
- Classification
|
|
summary: Get classification train images
|
|
description: |-
|
|
Gets the train images for a specific classification model.
|
|
The name must exist in the classification models. Returns a success message or an error if the name is invalid.
|
|
operationId: get_classification_images_classification__name__train_get
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Train a classification model
|
|
description: |-
|
|
Trains a specific classification model.
|
|
The name must exist in the classification models. Returns a success message or an error if the name is invalid.
|
|
operationId: train_configured_model_classification__name__train_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}/dataset/{category}/delete":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Delete classification dataset images
|
|
description: >-
|
|
Deletes specific dataset images for a given classification model and
|
|
category.
|
|
The image IDs must belong to the specified category. Returns a success message or an error if the name or category is invalid.
|
|
operationId: >-
|
|
delete_classification_dataset_images_classification__name__dataset__category__delete_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
- name: category
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Category
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}/dataset/{old_category}/rename":
|
|
put:
|
|
tags:
|
|
- Classification
|
|
summary: Rename a classification category
|
|
description: |-
|
|
Renames a classification category for a given classification model.
|
|
The old category must exist and the new name must be valid. Returns a success message or an error if the name is invalid.
|
|
operationId: >-
|
|
rename_classification_category_classification__name__dataset__old_category__rename_put
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
- name: old_category
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Old Category
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}/dataset/categorize":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Categorize a classification image
|
|
description: >-
|
|
Categorizes a specific classification image for a given classification
|
|
model and category.
|
|
The image must exist in the specified category. Returns a success message or an error if the name or category is invalid.
|
|
operationId: >-
|
|
categorize_classification_image_classification__name__dataset_categorize_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}/dataset/{category}/create":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Create an empty classification category folder
|
|
description: |-
|
|
Creates an empty folder for a classification category.
|
|
This is used to create folders for categories that don't have images yet.
|
|
Returns a success message or an error if the name is invalid.
|
|
operationId: >-
|
|
create_classification_category_classification__name__dataset__category__create_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
- name: category
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Category
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}/train/delete":
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Delete classification train images
|
|
description: |-
|
|
Deletes specific train images for a given classification model.
|
|
The image IDs must belong to the specified train folder. Returns a success message or an error if the name is invalid.
|
|
operationId: >-
|
|
delete_classification_train_images_classification__name__train_delete_post
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/classification/generate_examples/state:
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Generate state classification examples
|
|
description: Generate examples for state classification.
|
|
operationId: generate_state_examples_classification_generate_examples_state_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenerateStateExamplesBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/classification/generate_examples/object:
|
|
post:
|
|
tags:
|
|
- Classification
|
|
summary: Generate object classification examples
|
|
description: Generate examples for object classification.
|
|
operationId: generate_object_examples_classification_generate_examples_object_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenerateObjectExamplesBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/classification/{name}":
|
|
delete:
|
|
tags:
|
|
- Classification
|
|
summary: Delete a classification model
|
|
description: |-
|
|
Deletes a specific classification model and all its associated data.
|
|
Works even if the model is not in the config (e.g., partially created during wizard).
|
|
Returns a success message.
|
|
operationId: delete_classification_model_classification__name__delete
|
|
parameters:
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/review:
|
|
get:
|
|
tags:
|
|
- Review
|
|
summary: Review
|
|
operationId: review_review_get
|
|
parameters:
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Cameras
|
|
- name: labels
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Labels
|
|
- name: zones
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Zones
|
|
- name: reviewed
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
title: Reviewed
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
title: Limit
|
|
- name: severity
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/SeverityEnum"
|
|
- name: before
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
title: Before
|
|
- name: after
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
title: After
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ReviewSegmentResponse"
|
|
title: Response Review Review Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/review_ids:
|
|
get:
|
|
tags:
|
|
- Review
|
|
summary: Review Ids
|
|
operationId: review_ids_review_ids_get
|
|
parameters:
|
|
- name: ids
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Ids
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ReviewSegmentResponse"
|
|
title: Response Review Ids Review Ids Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/review/summary:
|
|
get:
|
|
tags:
|
|
- Review
|
|
summary: Review Summary
|
|
operationId: review_summary_review_summary_get
|
|
parameters:
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Cameras
|
|
- name: labels
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Labels
|
|
- name: zones
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Zones
|
|
- name: timezone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: utc
|
|
title: Timezone
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ReviewSummaryResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/reviews/viewed:
|
|
post:
|
|
tags:
|
|
- Review
|
|
summary: Set Multiple Reviewed
|
|
operationId: set_multiple_reviewed_reviews_viewed_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ReviewModifyMultipleBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/reviews/delete:
|
|
post:
|
|
tags:
|
|
- Review
|
|
summary: Delete Reviews
|
|
operationId: delete_reviews_reviews_delete_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ReviewModifyMultipleBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/review/activity/motion:
|
|
get:
|
|
tags:
|
|
- Review
|
|
summary: Motion Activity
|
|
description: Get motion and audio activity.
|
|
operationId: motion_activity_review_activity_motion_get
|
|
parameters:
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Cameras
|
|
- name: before
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
title: Before
|
|
- name: after
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
title: After
|
|
- name: scale
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 30
|
|
title: Scale
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ReviewActivityMotionResponse"
|
|
title: Response Motion Activity Review Activity Motion Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/review/event/{event_id}":
|
|
get:
|
|
tags:
|
|
- Review
|
|
summary: Get Review From Event
|
|
operationId: get_review_from_event_review_event__event_id__get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ReviewSegmentResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/review/{review_id}":
|
|
get:
|
|
tags:
|
|
- Review
|
|
summary: Get Review
|
|
operationId: get_review_review__review_id__get
|
|
parameters:
|
|
- name: review_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Review Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ReviewSegmentResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/review/{review_id}/viewed":
|
|
delete:
|
|
tags:
|
|
- Review
|
|
summary: Set Not Reviewed
|
|
operationId: set_not_reviewed_review__review_id__viewed_delete
|
|
parameters:
|
|
- name: review_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Review Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/review/summarize/start/{start_ts}/end/{end_ts}":
|
|
post:
|
|
tags:
|
|
- Review
|
|
summary: Generate Review Summary
|
|
description: Use GenAI to summarize review items over a period of time.
|
|
operationId: >-
|
|
generate_review_summary_review_summarize_start__start_ts__end__end_ts__post
|
|
parameters:
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Is Healthy
|
|
operationId: is_healthy__get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
/config/schema.json:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Config Schema
|
|
operationId: config_schema_config_schema_json_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/version:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Version
|
|
operationId: version_version_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
/stats:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Stats
|
|
operationId: stats_stats_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/stats/history:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Stats History
|
|
operationId: stats_history_stats_history_get
|
|
parameters:
|
|
- name: keys
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
title: Keys
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/metrics:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Metrics
|
|
description: Expose Prometheus metrics endpoint and update metrics with latest stats
|
|
operationId: metrics_metrics_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/config:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Config
|
|
operationId: config_config_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/profiles:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get Profiles
|
|
description: List all available profiles and the currently active profile.
|
|
operationId: get_profiles_profiles_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/profile/active:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get Active Profile
|
|
description: Get the currently active profile.
|
|
operationId: get_active_profile_profile_active_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/ffmpeg/presets:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Ffmpeg Presets
|
|
description: Return available ffmpeg preset keys for config UI usage.
|
|
operationId: ffmpeg_presets_ffmpeg_presets_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/config/raw_paths:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Config Raw Paths
|
|
description: >-
|
|
Admin-only endpoint that returns camera paths and go2rtc streams without
|
|
credential masking.
|
|
operationId: config_raw_paths_config_raw_paths_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/config/raw:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Config Raw
|
|
operationId: config_raw_config_raw_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/config/save:
|
|
post:
|
|
tags:
|
|
- App
|
|
summary: Config Save
|
|
operationId: config_save_config_save_post
|
|
parameters:
|
|
- name: save_option
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Save Option
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/config/set:
|
|
put:
|
|
tags:
|
|
- App
|
|
summary: Config Set
|
|
operationId: config_set_config_set_put
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/AppConfigSetBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/vainfo:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Vainfo
|
|
operationId: vainfo_vainfo_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/nvinfo:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Nvinfo
|
|
operationId: nvinfo_nvinfo_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"/logs/{service}":
|
|
get:
|
|
tags:
|
|
- App
|
|
- Logs
|
|
summary: Logs
|
|
description: Get logs for the requested service (frigate/nginx/go2rtc)
|
|
operationId: logs_logs__service__get
|
|
parameters:
|
|
- name: service
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- frigate
|
|
- nginx
|
|
- go2rtc
|
|
title: Service
|
|
- name: download
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Download
|
|
- name: stream
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
default: false
|
|
title: Stream
|
|
- name: start
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 0
|
|
title: Start
|
|
- name: end
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: End
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/restart:
|
|
post:
|
|
tags:
|
|
- App
|
|
summary: Restart
|
|
operationId: restart_restart_post
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/media/sync:
|
|
post:
|
|
tags:
|
|
- App
|
|
summary: Start media sync job
|
|
description: >-
|
|
Start an asynchronous media sync job to find and (optionally) remove
|
|
orphaned media files.
|
|
Returns 202 with job details when queued, or 409 if a job is already running.
|
|
operationId: sync_media_media_sync_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MediaSyncBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/media/sync/current:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get current media sync job
|
|
description: >-
|
|
Retrieve the current running media sync job, if any. Returns the job
|
|
details
|
|
or null when no job is active.
|
|
operationId: get_media_sync_current_media_sync_current_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"/media/sync/status/{job_id}":
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get media sync job status
|
|
description: >-
|
|
Get status and results for the specified media sync job id. Returns 200
|
|
with
|
|
job details including results, or 404 if the job is not found.
|
|
operationId: get_media_sync_status_media_sync_status__job_id__get
|
|
parameters:
|
|
- name: job_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Job Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/labels:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get Labels
|
|
operationId: get_labels_labels_get
|
|
parameters:
|
|
- name: camera
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: ""
|
|
title: Camera
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/sub_labels:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get Sub Labels
|
|
operationId: get_sub_labels_sub_labels_get
|
|
parameters:
|
|
- name: split_joined
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Split Joined
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/audio_labels:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get Audio Labels
|
|
operationId: get_audio_labels_audio_labels_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/plus/models:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Plusmodels
|
|
operationId: plusModels_plus_models_get
|
|
parameters:
|
|
- name: filterByCurrentModelDetector
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
title: Filterbycurrentmodeldetector
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/recognized_license_plates:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get Recognized License Plates
|
|
operationId: get_recognized_license_plates_recognized_license_plates_get
|
|
parameters:
|
|
- name: split_joined
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Split Joined
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/timeline:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Timeline
|
|
operationId: timeline_timeline_get
|
|
parameters:
|
|
- name: camera
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Camera
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 100
|
|
title: Limit
|
|
- name: source_id
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Source Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/timeline/hourly:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Hourly Timeline
|
|
description: Get hourly summary for timeline.
|
|
operationId: hourly_timeline_timeline_hourly_get
|
|
parameters:
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Cameras
|
|
- name: labels
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Labels
|
|
- name: after
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: After
|
|
- name: before
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Before
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 200
|
|
title: Limit
|
|
- name: timezone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: utc
|
|
title: Timezone
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/preview/{camera_name}/start/{start_ts}/end/{end_ts}":
|
|
get:
|
|
tags:
|
|
- Preview
|
|
summary: Get preview clips for time range
|
|
description: |-
|
|
Gets all preview clips for a specified camera and time range.
|
|
Returns a list of preview video clips that overlap with the requested time period,
|
|
ordered by start time. Use camera_name='all' to get previews from all cameras.
|
|
Returns an error if no previews are found.
|
|
operationId: preview_ts_preview__camera_name__start__start_ts__end__end_ts__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/PreviewModel"
|
|
title: >-
|
|
Response Preview Ts Preview Camera Name Start Start Ts
|
|
End End Ts Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/preview/{year_month}/{day}/{hour}/{camera_name}/{tz_name}":
|
|
get:
|
|
tags:
|
|
- Preview
|
|
summary: Get preview clips for specific hour
|
|
description: |-
|
|
Gets all preview clips for a specific hour in a given timezone.
|
|
Converts the provided date/time from the specified timezone to UTC and retrieves
|
|
all preview clips for that hour. Use camera_name='all' to get previews from all cameras.
|
|
The tz_name should be a timezone like 'America/New_York' (use commas instead of slashes).
|
|
operationId: >-
|
|
preview_hour_preview__year_month___day___hour___camera_name___tz_name__get
|
|
parameters:
|
|
- name: year_month
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Year Month
|
|
- name: day
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
title: Day
|
|
- name: hour
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
title: Hour
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: tz_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Tz Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/PreviewModel"
|
|
title: >-
|
|
Response Preview Hour Preview Year Month Day Hour
|
|
Camera Name Tz Name Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/preview/{camera_name}/start/{start_ts}/end/{end_ts}/frames":
|
|
get:
|
|
tags:
|
|
- Preview
|
|
summary: Get cached preview frame filenames
|
|
description: >-
|
|
Gets a list of cached preview frame filenames for a specific camera and
|
|
time range.
|
|
Returns an array of filenames for preview frames that fall within the specified time period,
|
|
sorted in chronological order. These are individual frame images cached for quick preview display.
|
|
operationId: >-
|
|
get_preview_frames_from_cache_preview__camera_name__start__start_ts__end__end_ts__frames_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
title: >-
|
|
Response Get Preview Frames From Cache Preview Camera Name
|
|
Start Start Ts End End Ts Frames Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/notifications/pubkey:
|
|
get:
|
|
tags:
|
|
- Notifications
|
|
summary: Get VAPID public key
|
|
description: |-
|
|
Gets the VAPID public key for the notifications.
|
|
Returns the public key or an error if notifications are not enabled.
|
|
operationId: get_vapid_pub_key_notifications_pubkey_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/notifications/register:
|
|
post:
|
|
tags:
|
|
- Notifications
|
|
summary: Register notifications
|
|
description: |-
|
|
Registers a notifications subscription.
|
|
Returns a success message or an error if the subscription is not provided.
|
|
operationId: register_notifications_notifications_register_post
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Body
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/exports:
|
|
get:
|
|
tags:
|
|
- Export
|
|
summary: Get exports
|
|
description: |-
|
|
Gets all exports from the database for cameras the user has access to.
|
|
Returns a list of exports ordered by date (most recent first).
|
|
operationId: get_exports_exports_get
|
|
parameters:
|
|
- name: export_case_id
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Export Case Id
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Cameras
|
|
- name: start_date
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Start Date
|
|
- name: end_date
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: End Date
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ExportModel"
|
|
title: Response Get Exports Exports Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/cases:
|
|
get:
|
|
tags:
|
|
- Export
|
|
summary: Get export cases
|
|
description: Gets all export cases from the database.
|
|
operationId: get_export_cases_cases_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ExportCaseModel"
|
|
title: Response Get Export Cases Cases Get
|
|
post:
|
|
tags:
|
|
- Export
|
|
summary: Create export case
|
|
description: Creates a new export case.
|
|
operationId: create_export_case_cases_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportCaseCreateBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportCaseModel"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/cases/{case_id}":
|
|
get:
|
|
tags:
|
|
- Export
|
|
summary: Get a single export case
|
|
description: Gets a specific export case by ID.
|
|
operationId: get_export_case_cases__case_id__get
|
|
parameters:
|
|
- name: case_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Case Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportCaseModel"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
patch:
|
|
tags:
|
|
- Export
|
|
summary: Update export case
|
|
description: Updates an existing export case.
|
|
operationId: update_export_case_cases__case_id__patch
|
|
parameters:
|
|
- name: case_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Case Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportCaseUpdateBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
delete:
|
|
tags:
|
|
- Export
|
|
summary: Delete export case
|
|
description: |-
|
|
Deletes an export case.
|
|
Exports that reference this case will have their export_case set to null.
|
|
operationId: delete_export_case_cases__case_id__delete
|
|
parameters:
|
|
- name: case_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Case Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/export/{export_id}/case":
|
|
patch:
|
|
tags:
|
|
- Export
|
|
summary: Assign export to case
|
|
description: "Assigns an export to a case, or unassigns it if export_case_id is null."
|
|
operationId: assign_export_case_export__export_id__case_patch
|
|
parameters:
|
|
- name: export_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Export Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportCaseAssignBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/export/{camera_name}/start/{start_time}/end/{end_time}":
|
|
post:
|
|
tags:
|
|
- Export
|
|
summary: Start recording export
|
|
description: |-
|
|
Starts an export of a recording for the specified time range.
|
|
The export can be from recordings or preview footage. Returns the export ID if
|
|
successful, or an error message if the camera is invalid or no recordings/previews
|
|
are found for the time range.
|
|
operationId: >-
|
|
export_recording_export__camera_name__start__start_time__end__end_time__post
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_time
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Time
|
|
- name: end_time
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Time
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportRecordingsBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StartExportResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/export/{event_id}/rename":
|
|
patch:
|
|
tags:
|
|
- Export
|
|
summary: Rename export
|
|
description: |-
|
|
Renames an export.
|
|
NOTE: This changes the friendly name of the export, not the filename.
|
|
operationId: export_rename_export__event_id__rename_patch
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportRenameBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/export/{event_id}":
|
|
delete:
|
|
tags:
|
|
- Export
|
|
summary: Delete export
|
|
operationId: export_delete_export__event_id__delete
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/export/custom/{camera_name}/start/{start_time}/end/{end_time}":
|
|
post:
|
|
tags:
|
|
- Export
|
|
summary: Start custom recording export
|
|
description: >-
|
|
Starts an export of a recording for the specified time range using
|
|
custom FFmpeg arguments.
|
|
The export can be from recordings or preview footage. Returns the export ID if
|
|
successful, or an error message if the camera is invalid or no recordings/previews
|
|
are found for the time range. If ffmpeg_input_args and ffmpeg_output_args are not provided,
|
|
defaults to timelapse export settings.
|
|
operationId: >-
|
|
export_recording_custom_export_custom__camera_name__start__start_time__end__end_time__post
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_time
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Time
|
|
- name: end_time
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Time
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportRecordingsCustomBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/StartExportResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/exports/{export_id}":
|
|
get:
|
|
tags:
|
|
- Export
|
|
summary: Get a single export
|
|
description: |-
|
|
Gets a specific export by ID. The user must have access to the camera
|
|
associated with the export.
|
|
operationId: get_export_exports__export_id__get
|
|
parameters:
|
|
- name: export_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Export Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ExportModel"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/events:
|
|
get:
|
|
tags:
|
|
- Events
|
|
summary: Get events
|
|
description: Returns a list of events.
|
|
operationId: events_events_get
|
|
parameters:
|
|
- name: camera
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Camera
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Cameras
|
|
- name: label
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Label
|
|
- name: labels
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Labels
|
|
- name: sub_label
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Sub Label
|
|
- name: sub_labels
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Sub Labels
|
|
- name: attributes
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Attributes
|
|
- name: zone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Zone
|
|
- name: zones
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Zones
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 100
|
|
title: Limit
|
|
- name: after
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: After
|
|
- name: before
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Before
|
|
- name: time_range
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: "00:00,24:00"
|
|
title: Time Range
|
|
- name: has_clip
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Has Clip
|
|
- name: has_snapshot
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Has Snapshot
|
|
- name: in_progress
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: In Progress
|
|
- name: include_thumbnails
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 1
|
|
title: Include Thumbnails
|
|
- name: favorites
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Favorites
|
|
- name: min_score
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Min Score
|
|
- name: max_score
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Max Score
|
|
- name: min_speed
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Min Speed
|
|
- name: max_speed
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Max Speed
|
|
- name: recognized_license_plate
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Recognized License Plate
|
|
- name: is_submitted
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Is Submitted
|
|
- name: min_length
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Min Length
|
|
- name: max_length
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Max Length
|
|
- name: event_id
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Event Id
|
|
- name: sort
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Sort
|
|
- name: timezone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: utc
|
|
title: Timezone
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/EventResponse"
|
|
title: Response Events Events Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/events/explore:
|
|
get:
|
|
tags:
|
|
- Events
|
|
summary: Get summary of objects
|
|
description: |-
|
|
Gets a summary of objects from the database.
|
|
Returns a list of objects with a max of `limit` objects for each label.
|
|
operationId: events_explore_events_explore_get
|
|
parameters:
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 10
|
|
title: Limit
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/EventResponse"
|
|
title: Response Events Explore Events Explore Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/event_ids:
|
|
get:
|
|
tags:
|
|
- Events
|
|
summary: Get events by ids
|
|
description: |-
|
|
Gets events by a list of ids.
|
|
Returns a list of events.
|
|
operationId: event_ids_event_ids_get
|
|
parameters:
|
|
- name: ids
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Ids
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/EventResponse"
|
|
title: Response Event Ids Event Ids Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/events/search:
|
|
get:
|
|
tags:
|
|
- Events
|
|
summary: Search events
|
|
description: |-
|
|
Searches for events in the database.
|
|
Returns a list of events.
|
|
operationId: events_search_events_search_get
|
|
parameters:
|
|
- name: query
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Query
|
|
- name: event_id
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Event Id
|
|
- name: search_type
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: thumbnail
|
|
title: Search Type
|
|
- name: include_thumbnails
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 1
|
|
title: Include Thumbnails
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 50
|
|
title: Limit
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Cameras
|
|
- name: labels
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Labels
|
|
- name: sub_labels
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Sub Labels
|
|
- name: attributes
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Attributes
|
|
- name: zones
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Zones
|
|
- name: after
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: After
|
|
- name: before
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Before
|
|
- name: time_range
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: "00:00,24:00"
|
|
title: Time Range
|
|
- name: has_clip
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
title: Has Clip
|
|
- name: has_snapshot
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
title: Has Snapshot
|
|
- name: is_submitted
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
title: Is Submitted
|
|
- name: timezone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: utc
|
|
title: Timezone
|
|
- name: min_score
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Min Score
|
|
- name: max_score
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Max Score
|
|
- name: min_speed
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Min Speed
|
|
- name: max_speed
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Max Speed
|
|
- name: recognized_license_plate
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Recognized License Plate
|
|
- name: sort
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Sort
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/events/summary:
|
|
get:
|
|
tags:
|
|
- Events
|
|
summary: Events Summary
|
|
operationId: events_summary_events_summary_get
|
|
parameters:
|
|
- name: timezone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: utc
|
|
title: Timezone
|
|
- name: has_clip
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Has Clip
|
|
- name: has_snapshot
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Has Snapshot
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}":
|
|
get:
|
|
tags:
|
|
- Events
|
|
summary: Get event by id
|
|
description: Gets an event by its id.
|
|
operationId: event_events__event_id__get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
delete:
|
|
tags:
|
|
- Events
|
|
summary: Delete event
|
|
description: |-
|
|
Deletes an event from the database.
|
|
Returns a success message or an error if the event is not found.
|
|
operationId: delete_event_events__event_id__delete
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/retain":
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Set event retain indefinitely.
|
|
description: |-
|
|
Sets an event to retain indefinitely.
|
|
Returns a success message or an error if the event is not found.
|
|
NOTE: This is a legacy endpoint and is not supported in the frontend.
|
|
operationId: set_retain_events__event_id__retain_post
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
delete:
|
|
tags:
|
|
- Events
|
|
summary: Stop event from being retained indefinitely
|
|
description: |-
|
|
Stops an event from being retained indefinitely.
|
|
Returns a success message or an error if the event is not found.
|
|
NOTE: This is a legacy endpoint and is not supported in the frontend.
|
|
operationId: delete_retain_events__event_id__retain_delete
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/plus":
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Send event to Frigate+
|
|
description: |-
|
|
Sends an event to Frigate+.
|
|
Returns a success message or an error if the event is not found.
|
|
operationId: send_to_plus_events__event_id__plus_post
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SubmitPlusBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventUploadPlusResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/false_positive":
|
|
put:
|
|
tags:
|
|
- Events
|
|
summary: Submit false positive to Frigate+
|
|
description: |-
|
|
Submit an event as a false positive to Frigate+.
|
|
This endpoint is the same as the standard Frigate+ submission endpoint,
|
|
but is specifically for marking an event as a false positive.
|
|
operationId: false_positive_events__event_id__false_positive_put
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventUploadPlusResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/sub_label":
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Set event sub label
|
|
description: |-
|
|
Sets an event's sub label.
|
|
Returns a success message or an error if the event is not found.
|
|
operationId: set_sub_label_events__event_id__sub_label_post
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsSubLabelBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/recognized_license_plate":
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Set event license plate
|
|
description: |-
|
|
Sets an event's license plate.
|
|
Returns a success message or an error if the event is not found.
|
|
operationId: set_plate_events__event_id__recognized_license_plate_post
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsLPRBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/attributes":
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Set custom classification attributes
|
|
description: >-
|
|
Sets an event's custom classification attributes for all attribute-type
|
|
models that apply to the event's object type.
|
|
operationId: set_attributes_events__event_id__attributes_post
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsAttributesBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/description":
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Set event description
|
|
description: |-
|
|
Sets an event's description.
|
|
Returns a success message or an error if the event is not found.
|
|
operationId: set_description_events__event_id__description_post
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsDescriptionBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/description/regenerate":
|
|
put:
|
|
tags:
|
|
- Events
|
|
summary: Regenerate event description
|
|
description: |-
|
|
Regenerates an event's description.
|
|
Returns a success message or an error if the event is not found.
|
|
operationId: regenerate_description_events__event_id__description_regenerate_put
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: source
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- $ref: "#/components/schemas/RegenerateDescriptionEnum"
|
|
- type: "null"
|
|
default: thumbnails
|
|
title: Source
|
|
- name: force
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
default: false
|
|
title: Force
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/description/generate:
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Generate description embedding
|
|
description: |-
|
|
Generates an embedding for an event's description.
|
|
Returns a success message or an error if the event is not found.
|
|
operationId: generate_description_embedding_description_generate_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsDescriptionBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/events/:
|
|
delete:
|
|
tags:
|
|
- Events
|
|
summary: Delete events
|
|
description: |-
|
|
Deletes a list of events from the database.
|
|
Returns a success message or an error if the events are not found.
|
|
operationId: delete_events_events__delete
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsDeleteBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventMultiDeleteResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{camera_name}/{label}/create":
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Create manual event
|
|
description: |-
|
|
Creates a manual event in the database.
|
|
Returns a success message or an error if the event is not found.
|
|
NOTES:
|
|
- Creating a manual event does not trigger an update to /events MQTT topic.
|
|
- If a duration is set to null, the event will need to be ended manually by calling /events/{event_id}/end.
|
|
operationId: create_event_events__camera_name___label__create_post
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: label
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Label
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsCreateBody"
|
|
default:
|
|
score: 0
|
|
duration: 30
|
|
include_recording: true
|
|
draw: {}
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventCreateResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/end":
|
|
put:
|
|
tags:
|
|
- Events
|
|
summary: End manual event
|
|
description: |-
|
|
Ends a manual event.
|
|
Returns a success message or an error if the event is not found.
|
|
NOTE: This should only be used for manual events.
|
|
operationId: end_event_events__event_id__end_put
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/EventsEndBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/trigger/embedding:
|
|
post:
|
|
tags:
|
|
- Events
|
|
summary: Create trigger embedding
|
|
description: |-
|
|
Creates a trigger embedding for a specific trigger.
|
|
Returns a success message or an error if the trigger is not found.
|
|
operationId: create_trigger_embedding_trigger_embedding_post
|
|
parameters:
|
|
- name: camera_name
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: name
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TriggerEmbeddingBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Response Create Trigger Embedding Trigger Embedding Post
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/trigger/embedding/{camera_name}/{name}":
|
|
put:
|
|
tags:
|
|
- Events
|
|
summary: Update trigger embedding
|
|
description: |-
|
|
Updates a trigger embedding for a specific trigger.
|
|
Returns a success message or an error if the trigger is not found.
|
|
operationId: update_trigger_embedding_trigger_embedding__camera_name___name__put
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TriggerEmbeddingBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: >-
|
|
Response Update Trigger Embedding Trigger Embedding Camera
|
|
Name Name Put
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
delete:
|
|
tags:
|
|
- Events
|
|
summary: Delete trigger embedding
|
|
description: |-
|
|
Deletes a trigger embedding for a specific trigger.
|
|
Returns a success message or an error if the trigger is not found.
|
|
operationId: delete_trigger_embedding_trigger_embedding__camera_name___name__delete
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
- name: name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: >-
|
|
Response Delete Trigger Embedding Trigger Embedding Camera
|
|
Name Name Delete
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/triggers/status/{camera_name}":
|
|
get:
|
|
tags:
|
|
- Events
|
|
summary: Get triggers status
|
|
description: |-
|
|
Gets the status of all triggers for a specific camera.
|
|
Returns a success message or an error if the camera is not found.
|
|
operationId: get_triggers_status_triggers_status__camera_name__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
title: Response Get Triggers Status Triggers Status Camera Name Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Mjpeg Feed
|
|
operationId: mjpeg_feed__camera_name__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: fps
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 3
|
|
title: Fps
|
|
- name: height
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 360
|
|
title: Height
|
|
- name: bbox
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Bbox
|
|
- name: timestamp
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Timestamp
|
|
- name: zones
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Zones
|
|
- name: mask
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Mask
|
|
- name: motion
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Motion
|
|
- name: regions
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Regions
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/ptz/info":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Camera Ptz Info
|
|
operationId: camera_ptz_info__camera_name__ptz_info_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/latest.{extension}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Latest Frame
|
|
description: >-
|
|
Returns the latest frame from the specified camera in the requested
|
|
format (jpg, png, webp). Falls back to preview frames if the camera is
|
|
offline.
|
|
operationId: latest_frame__camera_name__latest__extension__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: extension
|
|
in: path
|
|
required: true
|
|
schema:
|
|
$ref: "#/components/schemas/Extension"
|
|
- name: bbox
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Bbox
|
|
- name: timestamp
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Timestamp
|
|
- name: zones
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Zones
|
|
- name: mask
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Mask
|
|
- name: motion
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Motion
|
|
- name: paths
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Paths
|
|
- name: regions
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Regions
|
|
- name: quality
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 70
|
|
title: Quality
|
|
- name: height
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Height
|
|
- name: store
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Store
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/recordings/{frame_time}/snapshot.{format}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Get Snapshot From Recording
|
|
operationId: >-
|
|
get_snapshot_from_recording__camera_name__recordings__frame_time__snapshot__format__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: frame_time
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Frame Time
|
|
- name: format
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- png
|
|
- jpg
|
|
title: Format
|
|
- name: height
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
title: Height
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/plus/{frame_time}":
|
|
post:
|
|
tags:
|
|
- Media
|
|
summary: Submit Recording Snapshot To Plus
|
|
operationId: submit_recording_snapshot_to_plus__camera_name__plus__frame_time__post
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: frame_time
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Frame Time
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/start/{start_ts}/end/{end_ts}/clip.mp4":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Recording Clip
|
|
description: >-
|
|
For iOS devices, use the master.m3u8 HLS link instead of clip.mp4.
|
|
Safari does not reliably process progressive mp4 files.
|
|
operationId: recording_clip__camera_name__start__start_ts__end__end_ts__clip_mp4_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/vod/{camera_name}/start/{start_ts}/end/{end_ts}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Vod Ts
|
|
description: >-
|
|
Returns an HLS playlist for the specified timestamp-range on the
|
|
specified camera. Append /master.m3u8 or /index.m3u8 for HLS playback.
|
|
operationId: vod_ts_vod__camera_name__start__start_ts__end__end_ts__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
- name: force_discontinuity
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
title: Force Discontinuity
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/vod/{year_month}/{day}/{hour}/{camera_name}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Vod Hour No Timezone
|
|
description: >-
|
|
Returns an HLS playlist for the specified date-time on the specified
|
|
camera. Append /master.m3u8 or /index.m3u8 for HLS playback.
|
|
operationId: vod_hour_no_timezone_vod__year_month___day___hour___camera_name__get
|
|
parameters:
|
|
- name: year_month
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Year Month
|
|
- name: day
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
title: Day
|
|
- name: hour
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
title: Hour
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Vod Hour
|
|
description: >-
|
|
Returns an HLS playlist for the specified date-time (with timezone) on
|
|
the specified camera. Append /master.m3u8 or /index.m3u8 for HLS
|
|
playback.
|
|
operationId: vod_hour_vod__year_month___day___hour___camera_name___tz_name__get
|
|
parameters:
|
|
- name: year_month
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Year Month
|
|
- name: day
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
title: Day
|
|
- name: hour
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
title: Hour
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: tz_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Tz Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/vod/event/{event_id}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Vod Event
|
|
description: >-
|
|
Returns an HLS playlist for the specified object. Append /master.m3u8 or
|
|
/index.m3u8 for HLS playback.
|
|
operationId: vod_event_vod_event__event_id__get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: padding
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
description: Padding to apply to the vod.
|
|
default: 0
|
|
title: Padding
|
|
description: Padding to apply to the vod.
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/vod/clip/{camera_name}/start/{start_ts}/end/{end_ts}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Vod Clip
|
|
description: >-
|
|
Returns an HLS playlist for a timestamp range with HLS discontinuity
|
|
enabled. Append /master.m3u8 or /index.m3u8 for HLS playback.
|
|
operationId: vod_clip_vod_clip__camera_name__start__start_ts__end__end_ts__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/snapshot.jpg":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Event Snapshot
|
|
description: >-
|
|
Returns a snapshot image for the specified object id. NOTE: The query
|
|
params only take affect while the event is in-progress. Once the event
|
|
has ended the snapshot configuration is used.
|
|
operationId: event_snapshot_events__event_id__snapshot_jpg_get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: download
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
default: false
|
|
title: Download
|
|
- name: timestamp
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Timestamp
|
|
- name: bbox
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Bbox
|
|
- name: crop
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Crop
|
|
- name: height
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Height
|
|
- name: quality
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
default: 70
|
|
title: Quality
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/thumbnail.{extension}":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Event Thumbnail
|
|
operationId: event_thumbnail_events__event_id__thumbnail__extension__get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: extension
|
|
in: path
|
|
required: true
|
|
schema:
|
|
$ref: "#/components/schemas/Extension"
|
|
- name: max_cache_age
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
description: Max cache age in seconds. Default 30 days in seconds.
|
|
default: 2592000
|
|
title: Max Cache Age
|
|
description: Max cache age in seconds. Default 30 days in seconds.
|
|
- name: format
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- ios
|
|
- android
|
|
default: ios
|
|
title: Format
|
|
- name: camera_name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/grid.jpg":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Grid Snapshot
|
|
operationId: grid_snapshot__camera_name__grid_jpg_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: color
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: green
|
|
title: Color
|
|
- name: font_scale
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
default: 0.5
|
|
title: Font Scale
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/region_grid":
|
|
delete:
|
|
tags:
|
|
- Media
|
|
summary: Clear Region Grid
|
|
description: Clear the region grid for a camera.
|
|
operationId: clear_region_grid__camera_name__region_grid_delete
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/snapshot-clean.webp":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Event Snapshot Clean
|
|
operationId: event_snapshot_clean_events__event_id__snapshot_clean_webp_get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: download
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: boolean
|
|
default: false
|
|
title: Download
|
|
- name: camera_name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/clip.mp4":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Event Clip
|
|
operationId: event_clip_events__event_id__clip_mp4_get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: padding
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
description: Padding to apply to clip.
|
|
default: 0
|
|
title: Padding
|
|
description: Padding to apply to clip.
|
|
- name: camera_name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/events/{event_id}/preview.gif":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Event Preview
|
|
operationId: event_preview_events__event_id__preview_gif_get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: camera_name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/start/{start_ts}/end/{end_ts}/preview.gif":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Preview Gif
|
|
operationId: preview_gif__camera_name__start__start_ts__end__end_ts__preview_gif_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
- name: max_cache_age
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
description: Max cache age in seconds. Default 30 days in seconds.
|
|
default: 2592000
|
|
title: Max Cache Age
|
|
description: Max cache age in seconds. Default 30 days in seconds.
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/start/{start_ts}/end/{end_ts}/preview.mp4":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Preview Mp4
|
|
operationId: preview_mp4__camera_name__start__start_ts__end__end_ts__preview_mp4_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: start_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: Start Ts
|
|
- name: end_ts
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
title: End Ts
|
|
- name: max_cache_age
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
description: Max cache age in seconds. Default 7 days in seconds.
|
|
default: 604800
|
|
title: Max Cache Age
|
|
description: Max cache age in seconds. Default 7 days in seconds.
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/review/{event_id}/preview":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Review Preview
|
|
operationId: review_preview_review__event_id__preview_get
|
|
parameters:
|
|
- name: event_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Event Id
|
|
- name: format
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- gif
|
|
- mp4
|
|
default: gif
|
|
title: Format
|
|
- name: camera_name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/preview/{file_name}/thumbnail.webp":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Preview Thumbnail
|
|
description: Get a thumbnail from the cached preview frames.
|
|
operationId: preview_thumbnail_preview__file_name__thumbnail_webp_get
|
|
parameters:
|
|
- name: file_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: File Name
|
|
- name: camera_name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/preview/{file_name}/thumbnail.jpg":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Preview Thumbnail
|
|
description: Get a thumbnail from the cached preview frames.
|
|
operationId: preview_thumbnail_preview__file_name__thumbnail_jpg_get
|
|
parameters:
|
|
- name: file_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: File Name
|
|
- name: camera_name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/{label}/thumbnail.jpg":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Label Thumbnail
|
|
operationId: label_thumbnail__camera_name___label__thumbnail_jpg_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: label
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Label
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/{label}/best.jpg":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Label Thumbnail
|
|
operationId: label_thumbnail__camera_name___label__best_jpg_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: label
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Label
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/{label}/clip.mp4":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Label Clip
|
|
operationId: label_clip__camera_name___label__clip_mp4_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: label
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Label
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/{label}/snapshot.jpg":
|
|
get:
|
|
tags:
|
|
- Media
|
|
summary: Label Snapshot
|
|
description: >-
|
|
Returns the snapshot image from the latest event for the given camera
|
|
and label combo
|
|
operationId: label_snapshot__camera_name___label__snapshot_jpg_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: label
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Label
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/search/motion":
|
|
post:
|
|
tags:
|
|
- Motion Search
|
|
summary: Start motion search job
|
|
description: |-
|
|
Starts an asynchronous search for significant motion changes within
|
|
a user-defined Region of Interest (ROI) over a specified time range. Returns a job_id
|
|
that can be used to poll for results.
|
|
operationId: start_motion_search__camera_name__search_motion_post
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MotionSearchRequest"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MotionSearchStartResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/search/motion/{job_id}":
|
|
get:
|
|
tags:
|
|
- Motion Search
|
|
summary: Get motion search job status
|
|
description: Returns the status and results (if complete) of a motion search job.
|
|
operationId: >-
|
|
get_motion_search_status_endpoint__camera_name__search_motion__job_id__get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: job_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Job Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/MotionSearchStatusResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/search/motion/{job_id}/cancel":
|
|
post:
|
|
tags:
|
|
- Motion Search
|
|
summary: Cancel motion search job
|
|
description: Cancels an active motion search job if it is still processing.
|
|
operationId: >-
|
|
cancel_motion_search_endpoint__camera_name__search_motion__job_id__cancel_post
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: job_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
title: Job Id
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/recordings/storage:
|
|
get:
|
|
tags:
|
|
- Recordings
|
|
summary: Get Recordings Storage Usage
|
|
operationId: get_recordings_storage_usage_recordings_storage_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
/recordings/summary:
|
|
get:
|
|
tags:
|
|
- Recordings
|
|
summary: All Recordings Summary
|
|
description: Returns true/false by day indicating if recordings exist
|
|
operationId: all_recordings_summary_recordings_summary_get
|
|
parameters:
|
|
- name: timezone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: utc
|
|
title: Timezone
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Cameras
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/recordings/summary":
|
|
get:
|
|
tags:
|
|
- Recordings
|
|
summary: Recordings Summary
|
|
description: Returns hourly summary for recordings of given camera
|
|
operationId: recordings_summary__camera_name__recordings_summary_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: timezone
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: utc
|
|
title: Timezone
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/{camera_name}/recordings":
|
|
get:
|
|
tags:
|
|
- Recordings
|
|
summary: Recordings
|
|
description: >-
|
|
Return specific camera recordings between the given 'after'/'end' times.
|
|
If not provided the last hour will be used
|
|
operationId: recordings__camera_name__recordings_get
|
|
parameters:
|
|
- name: camera_name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera Name
|
|
- name: after
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
default: 1774023877.74743
|
|
title: After
|
|
- name: before
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
default: 1774027477.74744
|
|
title: Before
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema: {}
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/recordings/unavailable:
|
|
get:
|
|
tags:
|
|
- Recordings
|
|
summary: No Recordings
|
|
description: Get time ranges with no recordings.
|
|
operationId: no_recordings_recordings_unavailable_get
|
|
parameters:
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: all
|
|
title: Cameras
|
|
- name: before
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
title: Before
|
|
- name: after
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
title: After
|
|
- name: scale
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
default: 30
|
|
title: Scale
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
title: Response No Recordings Recordings Unavailable Get
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
"/recordings/start/{start}/end/{end}":
|
|
delete:
|
|
tags:
|
|
- Recordings
|
|
summary: Delete recordings
|
|
description: |-
|
|
Deletes recordings within the specified time range.
|
|
Recordings can be filtered by cameras and kept based on motion, objects, or audio attributes.
|
|
operationId: delete_recordings_recordings_start__start__end__end__delete
|
|
parameters:
|
|
- name: start
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
description: Start timestamp (unix)
|
|
title: Start
|
|
description: Start timestamp (unix)
|
|
- name: end
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: number
|
|
description: End timestamp (unix)
|
|
title: End
|
|
description: End timestamp (unix)
|
|
- name: keep
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Keep
|
|
- name: cameras
|
|
in: query
|
|
required: false
|
|
schema:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
default: all
|
|
title: Cameras
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GenericResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/debug_replay/start:
|
|
post:
|
|
tags:
|
|
- App
|
|
summary: Start debug replay
|
|
description: Start a debug replay session from camera recordings.
|
|
operationId: start_debug_replay_debug_replay_start_post
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/DebugReplayStartBody"
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/DebugReplayStartResponse"
|
|
"422":
|
|
description: Validation Error
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HTTPValidationError"
|
|
/debug_replay/status:
|
|
get:
|
|
tags:
|
|
- App
|
|
summary: Get debug replay status
|
|
description: Get the status of the current debug replay session.
|
|
operationId: get_debug_replay_status_debug_replay_status_get
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/DebugReplayStatusResponse"
|
|
/debug_replay/stop:
|
|
post:
|
|
tags:
|
|
- App
|
|
summary: Stop debug replay
|
|
description: Stop the active debug replay session and clean up all artifacts.
|
|
operationId: stop_debug_replay_debug_replay_stop_post
|
|
responses:
|
|
"200":
|
|
description: Successful Response
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/DebugReplayStopResponse"
|
|
components:
|
|
schemas:
|
|
AppConfigSetBody:
|
|
properties:
|
|
requires_restart:
|
|
type: integer
|
|
title: Requires Restart
|
|
default: 1
|
|
update_topic:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Update Topic
|
|
config_data:
|
|
anyOf:
|
|
- type: object
|
|
- type: "null"
|
|
title: Config Data
|
|
skip_save:
|
|
type: boolean
|
|
title: Skip Save
|
|
default: false
|
|
type: object
|
|
title: AppConfigSetBody
|
|
AppPostLoginBody:
|
|
properties:
|
|
user:
|
|
type: string
|
|
title: User
|
|
password:
|
|
type: string
|
|
title: Password
|
|
type: object
|
|
required:
|
|
- user
|
|
- password
|
|
title: AppPostLoginBody
|
|
AppPostUsersBody:
|
|
properties:
|
|
username:
|
|
type: string
|
|
title: Username
|
|
password:
|
|
type: string
|
|
title: Password
|
|
role:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Role
|
|
default: viewer
|
|
type: object
|
|
required:
|
|
- username
|
|
- password
|
|
title: AppPostUsersBody
|
|
AppPutPasswordBody:
|
|
properties:
|
|
password:
|
|
type: string
|
|
title: Password
|
|
old_password:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Old Password
|
|
type: object
|
|
required:
|
|
- password
|
|
title: AppPutPasswordBody
|
|
AppPutRoleBody:
|
|
properties:
|
|
role:
|
|
type: string
|
|
title: Role
|
|
type: object
|
|
required:
|
|
- role
|
|
title: AppPutRoleBody
|
|
AudioTranscriptionBody:
|
|
properties:
|
|
event_id:
|
|
type: string
|
|
title: Event Id
|
|
description: ID of the event to transcribe audio for
|
|
type: object
|
|
required:
|
|
- event_id
|
|
title: AudioTranscriptionBody
|
|
Body_recognize_face_faces_recognize_post:
|
|
properties:
|
|
file:
|
|
type: string
|
|
format: binary
|
|
title: File
|
|
type: object
|
|
required:
|
|
- file
|
|
title: Body_recognize_face_faces_recognize_post
|
|
Body_register_face_faces__name__register_post:
|
|
properties:
|
|
file:
|
|
type: string
|
|
format: binary
|
|
title: File
|
|
type: object
|
|
required:
|
|
- file
|
|
title: Body_register_face_faces__name__register_post
|
|
CameraSetBody:
|
|
properties:
|
|
value:
|
|
type: string
|
|
title: Value
|
|
description: The value to set for the feature
|
|
type: object
|
|
required:
|
|
- value
|
|
title: CameraSetBody
|
|
ChatCompletionRequest:
|
|
properties:
|
|
messages:
|
|
items:
|
|
$ref: "#/components/schemas/ChatMessage"
|
|
type: array
|
|
title: Messages
|
|
description: List of messages in the conversation
|
|
max_tool_iterations:
|
|
type: integer
|
|
maximum: 10
|
|
minimum: 1
|
|
title: Max Tool Iterations
|
|
description: "Maximum number of tool call iterations (default: 5)"
|
|
default: 5
|
|
stream:
|
|
type: boolean
|
|
title: Stream
|
|
description: >-
|
|
If true, stream the final assistant response in the body as
|
|
newline-delimited JSON.
|
|
default: false
|
|
type: object
|
|
required:
|
|
- messages
|
|
title: ChatCompletionRequest
|
|
description: Request for chat completion with tool calling.
|
|
ChatMessage:
|
|
properties:
|
|
role:
|
|
type: string
|
|
title: Role
|
|
description: "Message role: 'user', 'assistant', 'system', or 'tool'"
|
|
content:
|
|
type: string
|
|
title: Content
|
|
description: Message content
|
|
tool_call_id:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Tool Call Id
|
|
description: "For tool messages, the ID of the tool call"
|
|
name:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Name
|
|
description: "For tool messages, the tool name"
|
|
type: object
|
|
required:
|
|
- role
|
|
- content
|
|
title: ChatMessage
|
|
description: A single message in a chat conversation.
|
|
DayReview:
|
|
properties:
|
|
day:
|
|
type: string
|
|
format: date-time
|
|
title: Day
|
|
reviewed_alert:
|
|
type: integer
|
|
title: Reviewed Alert
|
|
reviewed_detection:
|
|
type: integer
|
|
title: Reviewed Detection
|
|
total_alert:
|
|
type: integer
|
|
title: Total Alert
|
|
total_detection:
|
|
type: integer
|
|
title: Total Detection
|
|
type: object
|
|
required:
|
|
- day
|
|
- reviewed_alert
|
|
- reviewed_detection
|
|
- total_alert
|
|
- total_detection
|
|
title: DayReview
|
|
DebugReplayStartBody:
|
|
properties:
|
|
camera:
|
|
type: string
|
|
title: Source camera name
|
|
start_time:
|
|
type: number
|
|
title: Start timestamp
|
|
end_time:
|
|
type: number
|
|
title: End timestamp
|
|
type: object
|
|
required:
|
|
- camera
|
|
- start_time
|
|
- end_time
|
|
title: DebugReplayStartBody
|
|
description: Request body for starting a debug replay session.
|
|
DebugReplayStartResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
replay_camera:
|
|
type: string
|
|
title: Replay Camera
|
|
type: object
|
|
required:
|
|
- success
|
|
- replay_camera
|
|
title: DebugReplayStartResponse
|
|
description: Response for starting a debug replay session.
|
|
DebugReplayStatusResponse:
|
|
properties:
|
|
active:
|
|
type: boolean
|
|
title: Active
|
|
replay_camera:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Replay Camera
|
|
source_camera:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Source Camera
|
|
start_time:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Start Time
|
|
end_time:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: End Time
|
|
live_ready:
|
|
type: boolean
|
|
title: Live Ready
|
|
default: false
|
|
type: object
|
|
required:
|
|
- active
|
|
title: DebugReplayStatusResponse
|
|
description: Response for debug replay status.
|
|
DebugReplayStopResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
type: object
|
|
required:
|
|
- success
|
|
title: DebugReplayStopResponse
|
|
description: Response for stopping a debug replay session.
|
|
DeleteFaceImagesBody:
|
|
properties:
|
|
ids:
|
|
items:
|
|
type: string
|
|
type: array
|
|
title: Ids
|
|
description: List of image filenames to delete from the face folder
|
|
type: object
|
|
required:
|
|
- ids
|
|
title: DeleteFaceImagesBody
|
|
EventCreateResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
message:
|
|
type: string
|
|
title: Message
|
|
event_id:
|
|
type: string
|
|
title: Event Id
|
|
type: object
|
|
required:
|
|
- success
|
|
- message
|
|
- event_id
|
|
title: EventCreateResponse
|
|
EventMultiDeleteResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
deleted_events:
|
|
items:
|
|
type: string
|
|
type: array
|
|
title: Deleted Events
|
|
not_found_events:
|
|
items:
|
|
type: string
|
|
type: array
|
|
title: Not Found Events
|
|
type: object
|
|
required:
|
|
- success
|
|
- deleted_events
|
|
- not_found_events
|
|
title: EventMultiDeleteResponse
|
|
EventResponse:
|
|
properties:
|
|
id:
|
|
type: string
|
|
title: Id
|
|
label:
|
|
type: string
|
|
title: Label
|
|
sub_label:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Sub Label
|
|
camera:
|
|
type: string
|
|
title: Camera
|
|
start_time:
|
|
type: number
|
|
title: Start Time
|
|
end_time:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: End Time
|
|
false_positive:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
title: False Positive
|
|
zones:
|
|
items:
|
|
type: string
|
|
type: array
|
|
title: Zones
|
|
thumbnail:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Thumbnail
|
|
has_clip:
|
|
type: boolean
|
|
title: Has Clip
|
|
has_snapshot:
|
|
type: boolean
|
|
title: Has Snapshot
|
|
retain_indefinitely:
|
|
type: boolean
|
|
title: Retain Indefinitely
|
|
plus_id:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Plus Id
|
|
model_hash:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Model Hash
|
|
detector_type:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Detector Type
|
|
model_type:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Model Type
|
|
data:
|
|
type: object
|
|
title: Data
|
|
type: object
|
|
required:
|
|
- id
|
|
- label
|
|
- sub_label
|
|
- camera
|
|
- start_time
|
|
- end_time
|
|
- false_positive
|
|
- zones
|
|
- thumbnail
|
|
- has_clip
|
|
- has_snapshot
|
|
- retain_indefinitely
|
|
- plus_id
|
|
- model_hash
|
|
- detector_type
|
|
- model_type
|
|
- data
|
|
title: EventResponse
|
|
EventUploadPlusResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
plus_id:
|
|
type: string
|
|
title: Plus Id
|
|
type: object
|
|
required:
|
|
- success
|
|
- plus_id
|
|
title: EventUploadPlusResponse
|
|
EventsAttributesBody:
|
|
properties:
|
|
attributes:
|
|
items:
|
|
type: string
|
|
type: array
|
|
title: Selected classification attributes for the event
|
|
type: object
|
|
title: EventsAttributesBody
|
|
EventsCreateBody:
|
|
properties:
|
|
sub_label:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Sub Label
|
|
score:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Score
|
|
default: 0
|
|
duration:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Duration
|
|
default: 30
|
|
include_recording:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
title: Include Recording
|
|
default: true
|
|
draw:
|
|
anyOf:
|
|
- type: object
|
|
- type: "null"
|
|
title: Draw
|
|
default: {}
|
|
pre_capture:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Pre Capture
|
|
type: object
|
|
title: EventsCreateBody
|
|
EventsDeleteBody:
|
|
properties:
|
|
event_ids:
|
|
items:
|
|
type: string
|
|
type: array
|
|
title: The event IDs to delete
|
|
type: object
|
|
required:
|
|
- event_ids
|
|
title: EventsDeleteBody
|
|
EventsDescriptionBody:
|
|
properties:
|
|
description:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: The description of the event
|
|
type: object
|
|
required:
|
|
- description
|
|
title: EventsDescriptionBody
|
|
EventsEndBody:
|
|
properties:
|
|
end_time:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: End Time
|
|
type: object
|
|
title: EventsEndBody
|
|
EventsLPRBody:
|
|
properties:
|
|
recognizedLicensePlate:
|
|
type: string
|
|
maxLength: 100
|
|
title: Recognized License Plate
|
|
recognizedLicensePlateScore:
|
|
anyOf:
|
|
- type: number
|
|
maximum: 1
|
|
exclusiveMinimum: 0
|
|
- type: "null"
|
|
title: Score for recognized license plate
|
|
type: object
|
|
required:
|
|
- recognizedLicensePlate
|
|
title: EventsLPRBody
|
|
EventsSubLabelBody:
|
|
properties:
|
|
subLabel:
|
|
type: string
|
|
maxLength: 100
|
|
title: Sub label
|
|
subLabelScore:
|
|
anyOf:
|
|
- type: number
|
|
maximum: 1
|
|
exclusiveMinimum: 0
|
|
- type: "null"
|
|
title: Score for sub label
|
|
camera:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Camera this object is detected on.
|
|
type: object
|
|
required:
|
|
- subLabel
|
|
title: EventsSubLabelBody
|
|
ExportCaseAssignBody:
|
|
properties:
|
|
export_case_id:
|
|
anyOf:
|
|
- type: string
|
|
maxLength: 30
|
|
- type: "null"
|
|
title: Export Case Id
|
|
description: "Case ID to assign to the export, or null to unassign"
|
|
type: object
|
|
title: ExportCaseAssignBody
|
|
description: Request body for assigning or unassigning an export to a case.
|
|
ExportCaseCreateBody:
|
|
properties:
|
|
name:
|
|
type: string
|
|
maxLength: 100
|
|
title: Name
|
|
description: Friendly name of the export case
|
|
description:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Description
|
|
description: Optional description of the export case
|
|
type: object
|
|
required:
|
|
- name
|
|
title: ExportCaseCreateBody
|
|
description: Request body for creating a new export case.
|
|
ExportCaseModel:
|
|
properties:
|
|
id:
|
|
type: string
|
|
title: Id
|
|
description: Unique identifier for the export case
|
|
name:
|
|
type: string
|
|
title: Name
|
|
description: Friendly name of the export case
|
|
description:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Description
|
|
description: Optional description of the export case
|
|
created_at:
|
|
type: number
|
|
title: Created At
|
|
description: Unix timestamp when the export case was created
|
|
updated_at:
|
|
type: number
|
|
title: Updated At
|
|
description: Unix timestamp when the export case was last updated
|
|
type: object
|
|
required:
|
|
- id
|
|
- name
|
|
- created_at
|
|
- updated_at
|
|
title: ExportCaseModel
|
|
description: Model representing a single export case.
|
|
ExportCaseUpdateBody:
|
|
properties:
|
|
name:
|
|
anyOf:
|
|
- type: string
|
|
maxLength: 100
|
|
- type: "null"
|
|
title: Name
|
|
description: Updated friendly name of the export case
|
|
description:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Description
|
|
description: Updated description of the export case
|
|
type: object
|
|
title: ExportCaseUpdateBody
|
|
description: Request body for updating an existing export case.
|
|
ExportModel:
|
|
properties:
|
|
id:
|
|
type: string
|
|
title: Id
|
|
description: Unique identifier for the export
|
|
camera:
|
|
type: string
|
|
title: Camera
|
|
description: Camera name associated with this export
|
|
name:
|
|
type: string
|
|
title: Name
|
|
description: Friendly name of the export
|
|
date:
|
|
type: number
|
|
title: Date
|
|
description: Unix timestamp when the export was created
|
|
video_path:
|
|
type: string
|
|
title: Video Path
|
|
description: File path to the exported video
|
|
thumb_path:
|
|
type: string
|
|
title: Thumb Path
|
|
description: File path to the export thumbnail
|
|
in_progress:
|
|
type: boolean
|
|
title: In Progress
|
|
description: Whether the export is currently being processed
|
|
export_case_id:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Export Case Id
|
|
description: ID of the export case this export belongs to
|
|
type: object
|
|
required:
|
|
- id
|
|
- camera
|
|
- name
|
|
- date
|
|
- video_path
|
|
- thumb_path
|
|
- in_progress
|
|
title: ExportModel
|
|
description: Model representing a single export.
|
|
ExportRecordingsBody:
|
|
properties:
|
|
source:
|
|
$ref: "#/components/schemas/PlaybackSourceEnum"
|
|
title: Playback source
|
|
default: recordings
|
|
name:
|
|
anyOf:
|
|
- type: string
|
|
maxLength: 256
|
|
- type: "null"
|
|
title: Friendly name
|
|
image_path:
|
|
type: string
|
|
title: Image Path
|
|
export_case_id:
|
|
anyOf:
|
|
- type: string
|
|
maxLength: 30
|
|
- type: "null"
|
|
title: Export case ID
|
|
description: ID of the export case to assign this export to
|
|
type: object
|
|
title: ExportRecordingsBody
|
|
ExportRecordingsCustomBody:
|
|
properties:
|
|
source:
|
|
$ref: "#/components/schemas/PlaybackSourceEnum"
|
|
title: Playback source
|
|
default: recordings
|
|
name:
|
|
type: string
|
|
maxLength: 256
|
|
title: Friendly name
|
|
image_path:
|
|
type: string
|
|
title: Image Path
|
|
export_case_id:
|
|
anyOf:
|
|
- type: string
|
|
maxLength: 30
|
|
- type: "null"
|
|
title: Export case ID
|
|
description: ID of the export case to assign this export to
|
|
ffmpeg_input_args:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: FFmpeg input arguments
|
|
description: >-
|
|
Custom FFmpeg input arguments. If not provided, defaults to
|
|
timelapse input args.
|
|
ffmpeg_output_args:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: FFmpeg output arguments
|
|
description: >-
|
|
Custom FFmpeg output arguments. If not provided, defaults to
|
|
timelapse output args.
|
|
cpu_fallback:
|
|
type: boolean
|
|
title: CPU Fallback
|
|
description: >-
|
|
If true, retry export without hardware acceleration if the initial
|
|
export fails.
|
|
default: false
|
|
type: object
|
|
title: ExportRecordingsCustomBody
|
|
ExportRenameBody:
|
|
properties:
|
|
name:
|
|
type: string
|
|
maxLength: 256
|
|
title: Friendly name
|
|
type: object
|
|
required:
|
|
- name
|
|
title: ExportRenameBody
|
|
Extension:
|
|
type: string
|
|
enum:
|
|
- webp
|
|
- png
|
|
- jpg
|
|
- jpeg
|
|
title: Extension
|
|
FaceRecognitionResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
description: Whether the face recognition was successful
|
|
score:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
title: Score
|
|
description: Confidence score of the recognition (0-1)
|
|
face_name:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Face Name
|
|
description: The recognized face name if successful
|
|
type: object
|
|
required:
|
|
- success
|
|
title: FaceRecognitionResponse
|
|
description: >-
|
|
Response model for face recognition endpoint.
|
|
|
|
|
|
Returns the result of attempting to recognize a face from an uploaded
|
|
image.
|
|
FacesResponse:
|
|
additionalProperties:
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
title: FacesResponse
|
|
description: |-
|
|
Response model for the get_faces endpoint.
|
|
|
|
Returns a mapping of face names to lists of image filenames.
|
|
Each face name corresponds to a directory in the faces folder,
|
|
and the list contains the names of image files for that face.
|
|
|
|
Example:
|
|
{
|
|
"john_doe": ["face1.webp", "face2.jpg"],
|
|
"jane_smith": ["face3.png"]
|
|
}
|
|
GenerateObjectExamplesBody:
|
|
properties:
|
|
model_name:
|
|
type: string
|
|
title: Model Name
|
|
description: Name of the classification model
|
|
label:
|
|
type: string
|
|
title: Label
|
|
description: "Object label to collect examples for (e.g., 'person', 'car')"
|
|
type: object
|
|
required:
|
|
- model_name
|
|
- label
|
|
title: GenerateObjectExamplesBody
|
|
GenerateStateExamplesBody:
|
|
properties:
|
|
model_name:
|
|
type: string
|
|
title: Model Name
|
|
description: Name of the classification model
|
|
cameras:
|
|
additionalProperties:
|
|
prefixItems:
|
|
- type: number
|
|
- type: number
|
|
- type: number
|
|
- type: number
|
|
type: array
|
|
maxItems: 4
|
|
minItems: 4
|
|
type: object
|
|
title: Cameras
|
|
description: >-
|
|
Dictionary mapping camera names to normalized crop coordinates in
|
|
[x1, y1, x2, y2] format (values 0-1)
|
|
type: object
|
|
required:
|
|
- model_name
|
|
- cameras
|
|
title: GenerateStateExamplesBody
|
|
GenericResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
message:
|
|
type: string
|
|
title: Message
|
|
type: object
|
|
required:
|
|
- success
|
|
- message
|
|
title: GenericResponse
|
|
HTTPValidationError:
|
|
properties:
|
|
detail:
|
|
items:
|
|
$ref: "#/components/schemas/ValidationError"
|
|
type: array
|
|
title: Detail
|
|
type: object
|
|
title: HTTPValidationError
|
|
Last24HoursReview:
|
|
properties:
|
|
reviewed_alert:
|
|
type: integer
|
|
title: Reviewed Alert
|
|
reviewed_detection:
|
|
type: integer
|
|
title: Reviewed Detection
|
|
total_alert:
|
|
type: integer
|
|
title: Total Alert
|
|
total_detection:
|
|
type: integer
|
|
title: Total Detection
|
|
type: object
|
|
required:
|
|
- reviewed_alert
|
|
- reviewed_detection
|
|
- total_alert
|
|
- total_detection
|
|
title: Last24HoursReview
|
|
MediaSyncBody:
|
|
properties:
|
|
dry_run:
|
|
type: boolean
|
|
title: Dry Run
|
|
description: "If True, only report orphans without deleting them"
|
|
default: true
|
|
media_types:
|
|
items:
|
|
type: string
|
|
type: array
|
|
title: Media Types
|
|
description: >-
|
|
Types of media to sync: 'all', 'event_snapshots',
|
|
'event_thumbnails', 'review_thumbnails', 'previews', 'exports',
|
|
'recordings'
|
|
default:
|
|
- all
|
|
force:
|
|
type: boolean
|
|
title: Force
|
|
description: "If True, bypass safety threshold checks"
|
|
default: false
|
|
type: object
|
|
title: MediaSyncBody
|
|
MotionSearchMetricsResponse:
|
|
properties:
|
|
segments_scanned:
|
|
type: integer
|
|
title: Segments Scanned
|
|
default: 0
|
|
segments_processed:
|
|
type: integer
|
|
title: Segments Processed
|
|
default: 0
|
|
metadata_inactive_segments:
|
|
type: integer
|
|
title: Metadata Inactive Segments
|
|
default: 0
|
|
heatmap_roi_skip_segments:
|
|
type: integer
|
|
title: Heatmap Roi Skip Segments
|
|
default: 0
|
|
fallback_full_range_segments:
|
|
type: integer
|
|
title: Fallback Full Range Segments
|
|
default: 0
|
|
frames_decoded:
|
|
type: integer
|
|
title: Frames Decoded
|
|
default: 0
|
|
wall_time_seconds:
|
|
type: number
|
|
title: Wall Time Seconds
|
|
default: 0
|
|
segments_with_errors:
|
|
type: integer
|
|
title: Segments With Errors
|
|
default: 0
|
|
type: object
|
|
title: MotionSearchMetricsResponse
|
|
description: Metrics collected during motion search execution.
|
|
MotionSearchRequest:
|
|
properties:
|
|
start_time:
|
|
type: number
|
|
title: Start Time
|
|
description: Start timestamp for the search range
|
|
end_time:
|
|
type: number
|
|
title: End Time
|
|
description: End timestamp for the search range
|
|
polygon_points:
|
|
items:
|
|
items:
|
|
type: number
|
|
type: array
|
|
type: array
|
|
title: Polygon Points
|
|
description: "List of [x, y] normalized coordinates (0-1) defining the ROI polygon"
|
|
threshold:
|
|
type: integer
|
|
maximum: 255
|
|
minimum: 1
|
|
title: Threshold
|
|
description: Pixel difference threshold (1-255)
|
|
default: 30
|
|
min_area:
|
|
type: number
|
|
maximum: 100
|
|
minimum: 0.1
|
|
title: Min Area
|
|
description: Minimum change area as a percentage of the ROI
|
|
default: 5
|
|
frame_skip:
|
|
type: integer
|
|
maximum: 30
|
|
minimum: 1
|
|
title: Frame Skip
|
|
description: "Process every Nth frame (1=all frames, 5=every 5th frame)"
|
|
default: 5
|
|
parallel:
|
|
type: boolean
|
|
title: Parallel
|
|
description: Enable parallel scanning across segments
|
|
default: false
|
|
max_results:
|
|
type: integer
|
|
maximum: 200
|
|
minimum: 1
|
|
title: Max Results
|
|
description: Maximum number of search results to return
|
|
default: 25
|
|
type: object
|
|
required:
|
|
- start_time
|
|
- end_time
|
|
- polygon_points
|
|
title: MotionSearchRequest
|
|
description: Request body for motion search.
|
|
MotionSearchResult:
|
|
properties:
|
|
timestamp:
|
|
type: number
|
|
title: Timestamp
|
|
description: Timestamp where change was detected
|
|
change_percentage:
|
|
type: number
|
|
title: Change Percentage
|
|
description: Percentage of ROI area that changed
|
|
type: object
|
|
required:
|
|
- timestamp
|
|
- change_percentage
|
|
title: MotionSearchResult
|
|
description: A single search result with timestamp and change info.
|
|
MotionSearchStartResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
message:
|
|
type: string
|
|
title: Message
|
|
job_id:
|
|
type: string
|
|
title: Job Id
|
|
type: object
|
|
required:
|
|
- success
|
|
- message
|
|
- job_id
|
|
title: MotionSearchStartResponse
|
|
description: Response when motion search job starts.
|
|
MotionSearchStatusResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
message:
|
|
type: string
|
|
title: Message
|
|
status:
|
|
type: string
|
|
title: Status
|
|
results:
|
|
anyOf:
|
|
- items:
|
|
$ref: "#/components/schemas/MotionSearchResult"
|
|
type: array
|
|
- type: "null"
|
|
title: Results
|
|
total_frames_processed:
|
|
anyOf:
|
|
- type: integer
|
|
- type: "null"
|
|
title: Total Frames Processed
|
|
error_message:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Error Message
|
|
metrics:
|
|
anyOf:
|
|
- $ref: "#/components/schemas/MotionSearchMetricsResponse"
|
|
- type: "null"
|
|
type: object
|
|
required:
|
|
- success
|
|
- message
|
|
- status
|
|
title: MotionSearchStatusResponse
|
|
description: Response containing job status and results.
|
|
PlaybackSourceEnum:
|
|
type: string
|
|
enum:
|
|
- recordings
|
|
- preview
|
|
title: PlaybackSourceEnum
|
|
PreviewModel:
|
|
properties:
|
|
camera:
|
|
type: string
|
|
title: Camera
|
|
description: Camera name for this preview
|
|
src:
|
|
type: string
|
|
title: Src
|
|
description: Path to the preview video file
|
|
type:
|
|
type: string
|
|
title: Type
|
|
description: MIME type of the preview video (video/mp4)
|
|
start:
|
|
type: number
|
|
title: Start
|
|
description: Unix timestamp when the preview starts
|
|
end:
|
|
type: number
|
|
title: End
|
|
description: Unix timestamp when the preview ends
|
|
type: object
|
|
required:
|
|
- camera
|
|
- src
|
|
- type
|
|
- start
|
|
- end
|
|
title: PreviewModel
|
|
description: Model representing a single preview clip.
|
|
RegenerateDescriptionEnum:
|
|
type: string
|
|
enum:
|
|
- thumbnails
|
|
- snapshot
|
|
title: RegenerateDescriptionEnum
|
|
RenameFaceBody:
|
|
properties:
|
|
new_name:
|
|
type: string
|
|
title: New Name
|
|
description: New name for the face
|
|
type: object
|
|
required:
|
|
- new_name
|
|
title: RenameFaceBody
|
|
ReviewActivityMotionResponse:
|
|
properties:
|
|
start_time:
|
|
type: integer
|
|
title: Start Time
|
|
motion:
|
|
type: number
|
|
title: Motion
|
|
camera:
|
|
type: string
|
|
title: Camera
|
|
type: object
|
|
required:
|
|
- start_time
|
|
- motion
|
|
- camera
|
|
title: ReviewActivityMotionResponse
|
|
ReviewModifyMultipleBody:
|
|
properties:
|
|
ids:
|
|
items:
|
|
type: string
|
|
minLength: 1
|
|
type: array
|
|
minItems: 1
|
|
title: Ids
|
|
reviewed:
|
|
type: boolean
|
|
title: Reviewed
|
|
default: true
|
|
type: object
|
|
required:
|
|
- ids
|
|
title: ReviewModifyMultipleBody
|
|
ReviewSegmentResponse:
|
|
properties:
|
|
id:
|
|
type: string
|
|
title: Id
|
|
camera:
|
|
type: string
|
|
title: Camera
|
|
start_time:
|
|
type: string
|
|
format: date-time
|
|
title: Start Time
|
|
end_time:
|
|
type: string
|
|
format: date-time
|
|
title: End Time
|
|
has_been_reviewed:
|
|
type: boolean
|
|
title: Has Been Reviewed
|
|
severity:
|
|
$ref: "#/components/schemas/SeverityEnum"
|
|
thumb_path:
|
|
type: string
|
|
title: Thumb Path
|
|
data:
|
|
title: Data
|
|
type: object
|
|
required:
|
|
- id
|
|
- camera
|
|
- start_time
|
|
- end_time
|
|
- has_been_reviewed
|
|
- severity
|
|
- thumb_path
|
|
- data
|
|
title: ReviewSegmentResponse
|
|
ReviewSummaryResponse:
|
|
properties:
|
|
last24Hours:
|
|
$ref: "#/components/schemas/Last24HoursReview"
|
|
root:
|
|
additionalProperties:
|
|
$ref: "#/components/schemas/DayReview"
|
|
type: object
|
|
title: Root
|
|
type: object
|
|
required:
|
|
- last24Hours
|
|
- root
|
|
title: ReviewSummaryResponse
|
|
SeverityEnum:
|
|
type: string
|
|
enum:
|
|
- alert
|
|
- detection
|
|
title: SeverityEnum
|
|
StartExportResponse:
|
|
properties:
|
|
success:
|
|
type: boolean
|
|
title: Success
|
|
description: Whether the export was started successfully
|
|
message:
|
|
type: string
|
|
title: Message
|
|
description: Status or error message
|
|
export_id:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
title: Export Id
|
|
description: The export ID if successfully started
|
|
type: object
|
|
required:
|
|
- success
|
|
- message
|
|
title: StartExportResponse
|
|
description: Response model for starting an export.
|
|
SubmitPlusBody:
|
|
properties:
|
|
include_annotation:
|
|
type: integer
|
|
title: Include Annotation
|
|
default: 1
|
|
type: object
|
|
title: SubmitPlusBody
|
|
ToolExecuteRequest:
|
|
properties:
|
|
tool_name:
|
|
type: string
|
|
title: Tool Name
|
|
arguments:
|
|
type: object
|
|
title: Arguments
|
|
type: object
|
|
required:
|
|
- tool_name
|
|
- arguments
|
|
title: ToolExecuteRequest
|
|
description: Request model for tool execution.
|
|
TriggerEmbeddingBody:
|
|
properties:
|
|
type:
|
|
$ref: "#/components/schemas/TriggerType"
|
|
data:
|
|
type: string
|
|
title: Data
|
|
threshold:
|
|
type: number
|
|
maximum: 1
|
|
minimum: 0
|
|
title: Threshold
|
|
default: 0.5
|
|
type: object
|
|
required:
|
|
- type
|
|
- data
|
|
title: TriggerEmbeddingBody
|
|
TriggerType:
|
|
type: string
|
|
enum:
|
|
- thumbnail
|
|
- description
|
|
title: TriggerType
|
|
ValidationError:
|
|
properties:
|
|
loc:
|
|
items:
|
|
anyOf:
|
|
- type: string
|
|
- type: integer
|
|
type: array
|
|
title: Location
|
|
msg:
|
|
type: string
|
|
title: Message
|
|
type:
|
|
type: string
|
|
title: Error Type
|
|
type: object
|
|
required:
|
|
- loc
|
|
- msg
|
|
- type
|
|
title: ValidationError
|