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:
        - Events
      summary: Get Faces
      operationId: get_faces_faces_get
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
  /faces/reprocess:
    post:
      tags:
        - Events
      summary: Reclassify Face
      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:
        - Events
      summary: Train Face
      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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/faces/{name}/create":
    post:
      tags:
        - Events
      summary: Create Face
      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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/faces/{name}/register":
    post:
      tags:
        - Events
      summary: Register Face
      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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /faces/recognize:
    post:
      tags:
        - Events
      summary: Recognize Face
      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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/faces/{name}/delete":
    post:
      tags:
        - Events
      summary: Deregister Faces
      operationId: deregister_faces_faces__name__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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /lpr/reprocess:
    put:
      tags:
        - Events
      summary: Reprocess License Plate
      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:
        - Events
      summary: Reindex Embeddings
      operationId: reindex_embeddings_reindex_put
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
  /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"
  /:
    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: Preview Ts
      description: Get all mp4 previews relevant for time period.
      operationId: preview_ts_preview__camera_name__start__start_ts__end__end_ts__get
      parameters:
        - name: camera_name
          in: path
          required: true
          schema:
            type: string
            title: Camera Name
        - name: start_ts
          in: path
          required: true
          schema:
            type: number
            title: Start Ts
        - name: end_ts
          in: path
          required: true
          schema:
            type: number
            title: End Ts
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "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: Preview Hour
      description: Get all mp4 previews relevant for time period given the timezone
      operationId: >-
        preview_hour_preview__year_month___day___hour___camera_name___tz_name__get
      parameters:
        - name: year_month
          in: path
          required: true
          schema:
            type: string
            title: Year Month
        - name: day
          in: path
          required: true
          schema:
            type: integer
            title: Day
        - name: hour
          in: path
          required: true
          schema:
            type: integer
            title: Hour
        - name: camera_name
          in: path
          required: true
          schema:
            type: string
            title: Camera Name
        - name: tz_name
          in: path
          required: true
          schema:
            type: string
            title: Tz Name
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "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 Preview Frames From Cache
      description: Get list of cached preview frames
      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:
            type: string
            title: Camera Name
        - name: start_ts
          in: path
          required: true
          schema:
            type: number
            title: Start Ts
        - name: end_ts
          in: path
          required: true
          schema:
            type: number
            title: End Ts
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /notifications/pubkey:
    get:
      tags:
        - Notifications
      summary: Get Vapid Pub Key
      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
      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
      operationId: get_exports_exports_get
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
  "/export/{camera_name}/start/{start_time}/end/{end_time}":
    post:
      tags:
        - Export
      summary: Export Recording
      operationId: >-
        export_recording_export__camera_name__start__start_time__end__end_time__post
      parameters:
        - name: camera_name
          in: path
          required: true
          schema:
            type: string
            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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/export/{event_id}/rename":
    patch:
      tags:
        - Export
      summary: Export Rename
      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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/export/{event_id}":
    delete:
      tags:
        - Export
      summary: Export Delete
      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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/exports/{export_id}":
    get:
      tags:
        - Export
      summary: Get 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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /events:
    get:
      tags:
        - Events
      summary: 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: Events Explore
      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: Event Ids
      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: Events Search
      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: Event
      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
      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 Retain
      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: Delete Retain
      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 To Plus
      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: 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 Sub Label
      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}/description":
    post:
      tags:
        - Events
      summary: Set Description
      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 Description
      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
      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
      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 Event
      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 Event
      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"
  "/{camera_name}":
    get:
      tags:
        - Media
      summary: Mjpeg Feed
      operationId: mjpeg_feed__camera_name__get
      parameters:
        - name: camera_name
          in: path
          required: true
          schema:
            type: string
            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:
            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"
  "/{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:
            type: string
            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: 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:
            type: string
            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:
            type: string
            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:
            type: string
            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:
            type: string
            title: Camera Name
        - name: after
          in: query
          required: false
          schema:
            type: number
            default: 1744227965.180043
            title: After
        - name: before
          in: query
          required: false
          schema:
            type: number
            default: 1744231565.180048
            title: Before
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/{camera_name}/start/{start_ts}/end/{end_ts}/clip.mp4":
    get:
      tags:
        - Media
      summary: Recording Clip
      description: >-
        For iOS devices, use the master.m3u8 HLS link instead of clip.mp4. Safari does not reliably process progressive mp4 files.
      operationId: recording_clip__camera_name__start__start_ts__end__end_ts__clip_mp4_get
      parameters:
        - name: camera_name
          in: path
          required: true
          schema:
            type: string
            title: Camera Name
        - name: start_ts
          in: path
          required: true
          schema:
            type: number
            title: Start Ts
        - name: end_ts
          in: path
          required: true
          schema:
            type: number
            title: End Ts
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "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
      operationId: vod_ts_vod__camera_name__start__start_ts__end__end_ts__get
      parameters:
        - name: camera_name
          in: path
          required: true
          schema:
            type: string
            title: Camera Name
        - name: start_ts
          in: path
          required: true
          schema:
            type: number
            title: Start Ts
        - name: end_ts
          in: path
          required: true
          schema:
            type: number
            title: End Ts
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "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: VOD for specific hour. Uses the default timezone (UTC).
      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:
            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"
  "/vod/{year_month}/{day}/{hour}/{camera_name}/{tz_name}":
    get:
      tags:
        - Media
      summary: Vod Hour
      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:
            type: string
            title: Camera Name
        - name: tz_name
          in: path
          required: true
          schema:
            type: string
            title: Tz Name
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/vod/event/{event_id}":
    get:
      tags:
        - Media
      summary: Vod Event
      operationId: vod_event_vod_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: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  "/events/{event_id}/snapshot.jpg":
    get:
      tags:
        - Media
      summary: Event Snapshot
      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:
            type: string
            title: 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:
            type: string
            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
      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:
            type: string
            title: Camera Name
        - name: start_ts
          in: path
          required: true
          schema:
            type: number
            title: Start Ts
        - name: end_ts
          in: path
          required: true
          schema:
            type: number
            title: End Ts
        - 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:
            type: string
            title: Camera Name
        - name: start_ts
          in: path
          required: true
          schema:
            type: number
            title: Start Ts
        - name: end_ts
          in: path
          required: true
          schema:
            type: number
            title: End Ts
        - 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:
            type: string
            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:
            type: string
            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:
            type: string
            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:
            type: string
            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
      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
    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
    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
    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
    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
    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
    RegenerateDescriptionEnum:
      type: string
      enum:
        - thumbnails
        - snapshot
      title: RegenerateDescriptionEnum
    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
    SubmitPlusBody:
      properties:
        include_annotation:
          type: integer
          title: Include Annotation
          default: 1
      type: object
      title: SubmitPlusBody
    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
