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'
  /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:
            allOf:
              - $ref: '#/components/schemas/SeverityEnum'
            title: Severity
        - 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/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'
  /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: 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'
  /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}/{new_name}:
    patch:
      tags:
        - Export
      summary: Export Rename
      operationId: export_rename_export__event_id___new_name__patch
      parameters:
        - name: event_id
          in: path
          required: true
          schema:
            type: string
            title: Event Id
        - name: new_name
          in: path
          required: true
          schema:
            type: string
            title: New Name
      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'
  /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: 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: { }
        '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: { }
        '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: { }
        '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: 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: 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: { }
        '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: { }
        '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: { }
        '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: { }
        '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:
              allOf:
                - $ref: '#/components/schemas/SubmitPlusBody'
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: { }
        '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: { }
        '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: { }
        '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: { }
        '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: { }
        '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:
              allOf:
                - $ref: '#/components/schemas/EventsCreateBody'
              default:
                source_type: api
                score: 0
                duration: 30
                include_recording: true
                draw: { }
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: { }
        '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: { }
        '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
      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: { }
  /{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: 1731275308.238304
            title: After
        - name: before
          in: query
          required: false
          schema:
            type: number
            default: 1731278908.238313
            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
      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.jpg:
    get:
      tags:
        - Media
      summary: Event Thumbnail
      operationId: event_thumbnail_events__event_id__thumbnail_jpg_get
      parameters:
        - name: event_id
          in: path
          required: true
          schema:
            type: string
            title: Event Id
        - 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
      type: object
      required:
        - username
        - password
      title: AppPostUsersBody
    AppPutPasswordBody:
      properties:
        password:
          type: string
          title: Password
      type: object
      required:
        - password
      title: AppPutPasswordBody
    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
    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: integer
            - 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
    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: integer
            - 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
      type: object
      required:
        - subLabel
      title: EventsSubLabelBody
    ExportRecordingsBody:
      properties:
        playback:
          allOf:
            - $ref: '#/components/schemas/PlaybackFactorEnum'
          title: Playback factor
          default: realtime
        source:
          allOf:
            - $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
    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