openapi: 3.1.0
info:
  # To avoid the introduction page we set the title to empty string
  # https://github.com/PaloAltoNetworks/docusaurus-openapi-docs/blob/4e771d309f6defe395449b26cc3c65814d72cbcc/packages/docusaurus-plugin-openapi-docs/src/openapi/openapi.ts#L92-L129
  title: ""
  version: 0.1.0

servers:
  - url: https://demo.frigate.video/api
  - url: http://localhost:5001/api

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


        Returns the result of attempting to recognize a face from an uploaded
        image.
    FacesResponse:
      additionalProperties:
        items:
          type: string
        type: array
      type: object
      title: FacesResponse
      description: |-
        Response model for the get_faces endpoint.

        Returns a mapping of face names to lists of image filenames.
        Each face name corresponds to a directory in the faces folder,
        and the list contains the names of image files for that face.

        Example:
            {
                "john_doe": ["face1.webp", "face2.jpg"],
                "jane_smith": ["face3.png"]
            }
    GenericResponse:
      properties:
        success:
          type: boolean
          title: Success
        message:
          type: string
          title: Message
      type: object
      required:
        - success
        - message
      title: GenericResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Last24HoursReview:
      properties:
        reviewed_alert:
          type: integer
          title: Reviewed Alert
        reviewed_detection:
          type: integer
          title: Reviewed Detection
        total_alert:
          type: integer
          title: Total Alert
        total_detection:
          type: integer
          title: Total Detection
      type: object
      required:
        - reviewed_alert
        - reviewed_detection
        - total_alert
        - total_detection
      title: Last24HoursReview
    PlaybackFactorEnum:
      type: string
      enum:
        - realtime
        - timelapse_25x
      title: PlaybackFactorEnum
    PlaybackSourceEnum:
      type: string
      enum:
        - recordings
        - preview
      title: PlaybackSourceEnum
    PreviewModel:
      properties:
        camera:
          type: string
          title: Camera
          description: Camera name for this preview
        src:
          type: string
          title: Src
          description: Path to the preview video file
        type:
          type: string
          title: Type
          description: MIME type of the preview video (video/mp4)
        start:
          type: number
          title: Start
          description: Unix timestamp when the preview starts
        end:
          type: number
          title: End
          description: Unix timestamp when the preview ends
      type: object
      required:
        - camera
        - src
        - type
        - start
        - end
      title: PreviewModel
      description: Model representing a single preview clip.
    RegenerateDescriptionEnum:
      type: string
      enum:
        - thumbnails
        - snapshot
      title: RegenerateDescriptionEnum
    RenameFaceBody:
      properties:
        new_name:
          type: string
          title: New Name
      type: object
      required:
        - new_name
      title: RenameFaceBody
    ReviewActivityMotionResponse:
      properties:
        start_time:
          type: integer
          title: Start Time
        motion:
          type: number
          title: Motion
        camera:
          type: string
          title: Camera
      type: object
      required:
        - start_time
        - motion
        - camera
      title: ReviewActivityMotionResponse
    ReviewModifyMultipleBody:
      properties:
        ids:
          items:
            type: string
            minLength: 1
          type: array
          minItems: 1
          title: Ids
      type: object
      required:
        - ids
      title: ReviewModifyMultipleBody
    ReviewSegmentResponse:
      properties:
        id:
          type: string
          title: Id
        camera:
          type: string
          title: Camera
        start_time:
          type: string
          format: date-time
          title: Start Time
        end_time:
          type: string
          format: date-time
          title: End Time
        has_been_reviewed:
          type: boolean
          title: Has Been Reviewed
        severity:
          $ref: '#/components/schemas/SeverityEnum'
        thumb_path:
          type: string
          title: Thumb Path
        data:
          title: Data
      type: object
      required:
        - id
        - camera
        - start_time
        - end_time
        - has_been_reviewed
        - severity
        - thumb_path
        - data
      title: ReviewSegmentResponse
    ReviewSummaryResponse:
      properties:
        last24Hours:
          $ref: '#/components/schemas/Last24HoursReview'
        root:
          additionalProperties:
            $ref: '#/components/schemas/DayReview'
          type: object
          title: Root
      type: object
      required:
        - last24Hours
        - root
      title: ReviewSummaryResponse
    SeverityEnum:
      type: string
      enum:
        - alert
        - detection
      title: SeverityEnum
    StartExportResponse:
      properties:
        success:
          type: boolean
          title: Success
          description: Whether the export was started successfully
        message:
          type: string
          title: Message
          description: Status or error message
        export_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Export Id
          description: The export ID if successfully started
      type: object
      required:
        - success
        - message
      title: StartExportResponse
      description: Response model for starting an export.
    SubmitPlusBody:
      properties:
        include_annotation:
          type: integer
          title: Include Annotation
          default: 1
      type: object
      title: SubmitPlusBody
    TriggerEmbeddingBody:
      properties:
        type:
          $ref: '#/components/schemas/TriggerType'
        data:
          type: string
          title: Data
        threshold:
          type: number
          maximum: 1
          minimum: 0
          title: Threshold
          default: 0.5
      type: object
      required:
        - type
        - data
      title: TriggerEmbeddingBody
    TriggerType:
      type: string
      enum:
        - thumbnail
        - description
      title: TriggerType
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
