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" "/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: 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: 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: allOf: - $ref: "#/components/schemas/SubmitPlusBody" title: Body 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: 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: $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 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: 1733228876.15567 title: After - name: before in: query required: false schema: type: number default: 1733232476.15567 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 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: type: boolean title: False Positive zones: items: type: string type: array title: Zones thumbnail: type: string 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: 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 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