{
  "label": "Camera configuration.",
  "properties": {
    "name": {
      "label": "Camera name."
    },
    "friendly_name": {
      "label": "Camera friendly name used in the Frigate UI."
    },
    "enabled": {
      "label": "Enable camera."
    },
    "audio": {
      "label": "Audio events configuration.",
      "properties": {
        "enabled": {
          "label": "Enable audio events."
        },
        "max_not_heard": {
          "label": "Seconds of not hearing the type of audio to end the event."
        },
        "min_volume": {
          "label": "Min volume required to run audio detection."
        },
        "listen": {
          "label": "Audio to listen for."
        },
        "filters": {
          "label": "Audio filters."
        },
        "enabled_in_config": {
          "label": "Keep track of original state of audio detection."
        },
        "num_threads": {
          "label": "Number of detection threads"
        }
      }
    },
    "audio_transcription": {
      "label": "Audio transcription config.",
      "properties": {
        "enabled": {
          "label": "Enable audio transcription."
        },
        "language": {
          "label": "Language abbreviation to use for audio event transcription/translation."
        },
        "device": {
          "label": "The device used for license plate recognition."
        },
        "model_size": {
          "label": "The size of the embeddings model used."
        },
        "enabled_in_config": {
          "label": "Keep track of original state of camera."
        },
        "live_enabled": {
          "label": "Enable live transcriptions."
        }
      }
    },
    "birdseye": {
      "label": "Birdseye camera configuration.",
      "properties": {
        "enabled": {
          "label": "Enable birdseye view for camera."
        },
        "mode": {
          "label": "Tracking mode for camera."
        },
        "order": {
          "label": "Position of the camera in the birdseye view."
        }
      }
    },
    "detect": {
      "label": "Object detection configuration.",
      "properties": {
        "enabled": {
          "label": "Detection Enabled."
        },
        "height": {
          "label": "Height of the stream for the detect role."
        },
        "width": {
          "label": "Width of the stream for the detect role."
        },
        "fps": {
          "label": "Number of frames per second to process through detection."
        },
        "min_initialized": {
          "label": "Minimum number of consecutive hits for an object to be initialized by the tracker."
        },
        "max_disappeared": {
          "label": "Maximum number of frames the object can disappear before detection ends."
        },
        "stationary": {
          "label": "Stationary objects config.",
          "properties": {
            "interval": {
              "label": "Frame interval for checking stationary objects."
            },
            "threshold": {
              "label": "Number of frames without a position change for an object to be considered stationary"
            },
            "max_frames": {
              "label": "Max frames for stationary objects.",
              "properties": {
                "default": {
                  "label": "Default max frames."
                },
                "objects": {
                  "label": "Object specific max frames."
                }
              }
            },
            "classifier": {
              "label": "Enable visual classifier for determing if objects with jittery bounding boxes are stationary."
            }
          }
        },
        "annotation_offset": {
          "label": "Milliseconds to offset detect annotations by."
        }
      }
    },
    "face_recognition": {
      "label": "Face recognition config.",
      "properties": {
        "enabled": {
          "label": "Enable face recognition."
        },
        "min_area": {
          "label": "Min area of face box to consider running face recognition."
        }
      }
    },
    "ffmpeg": {
      "label": "FFmpeg configuration for the camera.",
      "properties": {
        "path": {
          "label": "FFmpeg path"
        },
        "global_args": {
          "label": "Global FFmpeg arguments."
        },
        "hwaccel_args": {
          "label": "FFmpeg hardware acceleration arguments."
        },
        "input_args": {
          "label": "FFmpeg input arguments."
        },
        "output_args": {
          "label": "FFmpeg output arguments per role.",
          "properties": {
            "detect": {
              "label": "Detect role FFmpeg output arguments."
            },
            "record": {
              "label": "Record role FFmpeg output arguments."
            }
          }
        },
        "retry_interval": {
          "label": "Time in seconds to wait before FFmpeg retries connecting to the camera."
        },
        "apple_compatibility": {
          "label": "Set tag on HEVC (H.265) recording stream to improve compatibility with Apple players."
        },
        "inputs": {
          "label": "Camera inputs."
        }
      }
    },
    "live": {
      "label": "Live playback settings.",
      "properties": {
        "streams": {
          "label": "Friendly names and restream names to use for live view."
        },
        "height": {
          "label": "Live camera view height"
        },
        "quality": {
          "label": "Live camera view quality"
        }
      }
    },
    "lpr": {
      "label": "LPR config.",
      "properties": {
        "enabled": {
          "label": "Enable license plate recognition."
        },
        "expire_time": {
          "label": "Expire plates not seen after number of seconds (for dedicated LPR cameras only)."
        },
        "min_area": {
          "label": "Minimum area of license plate to begin running recognition."
        },
        "enhancement": {
          "label": "Amount of contrast adjustment and denoising to apply to license plate images before recognition."
        }
      }
    },
    "motion": {
      "label": "Motion detection configuration.",
      "properties": {
        "enabled": {
          "label": "Enable motion on all cameras."
        },
        "threshold": {
          "label": "Motion detection threshold (1-255)."
        },
        "lightning_threshold": {
          "label": "Lightning detection threshold (0.3-1.0)."
        },
        "improve_contrast": {
          "label": "Improve Contrast"
        },
        "contour_area": {
          "label": "Contour Area"
        },
        "delta_alpha": {
          "label": "Delta Alpha"
        },
        "frame_alpha": {
          "label": "Frame Alpha"
        },
        "frame_height": {
          "label": "Frame Height"
        },
        "mask": {
          "label": "Coordinates polygon for the motion mask."
        },
        "mqtt_off_delay": {
          "label": "Delay for updating MQTT with no motion detected."
        },
        "enabled_in_config": {
          "label": "Keep track of original state of motion detection."
        }
      }
    },
    "objects": {
      "label": "Object configuration.",
      "properties": {
        "track": {
          "label": "Objects to track."
        },
        "filters": {
          "label": "Object filters.",
          "properties": {
            "min_area": {
              "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
            },
            "max_area": {
              "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
            },
            "min_ratio": {
              "label": "Minimum ratio of bounding box's width/height for object to be counted."
            },
            "max_ratio": {
              "label": "Maximum ratio of bounding box's width/height for object to be counted."
            },
            "threshold": {
              "label": "Average detection confidence threshold for object to be counted."
            },
            "min_score": {
              "label": "Minimum detection confidence for object to be counted."
            },
            "mask": {
              "label": "Detection area polygon mask for this filter configuration."
            }
          }
        },
        "mask": {
          "label": "Object mask."
        },
        "genai": {
          "label": "Config for using genai to analyze objects.",
          "properties": {
            "enabled": {
              "label": "Enable GenAI for camera."
            },
            "use_snapshot": {
              "label": "Use snapshots for generating descriptions."
            },
            "prompt": {
              "label": "Default caption prompt."
            },
            "object_prompts": {
              "label": "Object specific prompts."
            },
            "objects": {
              "label": "List of objects to run generative AI for."
            },
            "required_zones": {
              "label": "List of required zones to be entered in order to run generative AI."
            },
            "debug_save_thumbnails": {
              "label": "Save thumbnails sent to generative AI for debugging purposes."
            },
            "send_triggers": {
              "label": "What triggers to use to send frames to generative AI for a tracked object.",
              "properties": {
                "tracked_object_end": {
                  "label": "Send once the object is no longer tracked."
                },
                "after_significant_updates": {
                  "label": "Send an early request to generative AI when X frames accumulated."
                }
              }
            },
            "enabled_in_config": {
              "label": "Keep track of original state of generative AI."
            }
          }
        }
      }
    },
    "record": {
      "label": "Record configuration.",
      "properties": {
        "enabled": {
          "label": "Enable record on all cameras."
        },
        "sync_recordings": {
          "label": "Sync recordings with disk on startup and once a day."
        },
        "expire_interval": {
          "label": "Number of minutes to wait between cleanup runs."
        },
        "continuous": {
          "label": "Continuous recording retention settings.",
          "properties": {
            "days": {
              "label": "Default retention period."
            }
          }
        },
        "motion": {
          "label": "Motion recording retention settings.",
          "properties": {
            "days": {
              "label": "Default retention period."
            }
          }
        },
        "detections": {
          "label": "Detection specific retention settings.",
          "properties": {
            "pre_capture": {
              "label": "Seconds to retain before event starts."
            },
            "post_capture": {
              "label": "Seconds to retain after event ends."
            },
            "retain": {
              "label": "Event retention settings.",
              "properties": {
                "days": {
                  "label": "Default retention period."
                },
                "mode": {
                  "label": "Retain mode."
                }
              }
            }
          }
        },
        "alerts": {
          "label": "Alert specific retention settings.",
          "properties": {
            "pre_capture": {
              "label": "Seconds to retain before event starts."
            },
            "post_capture": {
              "label": "Seconds to retain after event ends."
            },
            "retain": {
              "label": "Event retention settings.",
              "properties": {
                "days": {
                  "label": "Default retention period."
                },
                "mode": {
                  "label": "Retain mode."
                }
              }
            }
          }
        },
        "export": {
          "label": "Recording Export Config",
          "properties": {
            "timelapse_args": {
              "label": "Timelapse Args"
            }
          }
        },
        "preview": {
          "label": "Recording Preview Config",
          "properties": {
            "quality": {
              "label": "Quality of recording preview."
            }
          }
        },
        "enabled_in_config": {
          "label": "Keep track of original state of recording."
        }
      }
    },
    "review": {
      "label": "Review configuration.",
      "properties": {
        "alerts": {
          "label": "Review alerts config.",
          "properties": {
            "enabled": {
              "label": "Enable alerts."
            },
            "labels": {
              "label": "Labels to create alerts for."
            },
            "required_zones": {
              "label": "List of required zones to be entered in order to save the event as an alert."
            },
            "enabled_in_config": {
              "label": "Keep track of original state of alerts."
            },
            "cutoff_time": {
              "label": "Time to cutoff alerts after no alert-causing activity has occurred."
            }
          }
        },
        "detections": {
          "label": "Review detections config.",
          "properties": {
            "enabled": {
              "label": "Enable detections."
            },
            "labels": {
              "label": "Labels to create detections for."
            },
            "required_zones": {
              "label": "List of required zones to be entered in order to save the event as a detection."
            },
            "cutoff_time": {
              "label": "Time to cutoff detection after no detection-causing activity has occurred."
            },
            "enabled_in_config": {
              "label": "Keep track of original state of detections."
            }
          }
        },
        "genai": {
          "label": "Review description genai config.",
          "properties": {
            "enabled": {
              "label": "Enable GenAI descriptions for review items."
            },
            "alerts": {
              "label": "Enable GenAI for alerts."
            },
            "detections": {
              "label": "Enable GenAI for detections."
            },
            "additional_concerns": {
              "label": "Additional concerns that GenAI should make note of on this camera."
            },
            "debug_save_thumbnails": {
              "label": "Save thumbnails sent to generative AI for debugging purposes."
            },
            "enabled_in_config": {
              "label": "Keep track of original state of generative AI."
            },
            "preferred_language": {
              "label": "Preferred language for GenAI Response"
            },
            "activity_context_prompt": {
              "label": "Custom activity context prompt defining normal activity patterns for this property."
            }
          }
        }
      }
    },
    "semantic_search": {
      "label": "Semantic search configuration.",
      "properties": {
        "triggers": {
          "label": "Trigger actions on tracked objects that match existing thumbnails or descriptions",
          "properties": {
            "enabled": {
              "label": "Enable this trigger"
            },
            "type": {
              "label": "Type of trigger"
            },
            "data": {
              "label": "Trigger content (text phrase or image ID)"
            },
            "threshold": {
              "label": "Confidence score required to run the trigger"
            },
            "actions": {
              "label": "Actions to perform when trigger is matched"
            }
          }
        }
      }
    },
    "snapshots": {
      "label": "Snapshot configuration.",
      "properties": {
        "enabled": {
          "label": "Snapshots enabled."
        },
        "clean_copy": {
          "label": "Create a clean copy of the snapshot image."
        },
        "timestamp": {
          "label": "Add a timestamp overlay on the snapshot."
        },
        "bounding_box": {
          "label": "Add a bounding box overlay on the snapshot."
        },
        "crop": {
          "label": "Crop the snapshot to the detected object."
        },
        "required_zones": {
          "label": "List of required zones to be entered in order to save a snapshot."
        },
        "height": {
          "label": "Snapshot image height."
        },
        "retain": {
          "label": "Snapshot retention.",
          "properties": {
            "default": {
              "label": "Default retention period."
            },
            "mode": {
              "label": "Retain mode."
            },
            "objects": {
              "label": "Object retention period."
            }
          }
        },
        "quality": {
          "label": "Quality of the encoded jpeg (0-100)."
        }
      }
    },
    "timestamp_style": {
      "label": "Timestamp style configuration.",
      "properties": {
        "position": {
          "label": "Timestamp position."
        },
        "format": {
          "label": "Timestamp format."
        },
        "color": {
          "label": "Timestamp color.",
          "properties": {
            "red": {
              "label": "Red"
            },
            "green": {
              "label": "Green"
            },
            "blue": {
              "label": "Blue"
            }
          }
        },
        "thickness": {
          "label": "Timestamp thickness."
        },
        "effect": {
          "label": "Timestamp effect."
        }
      }
    },
    "best_image_timeout": {
      "label": "How long to wait for the image with the highest confidence score."
    },
    "mqtt": {
      "label": "MQTT configuration.",
      "properties": {
        "enabled": {
          "label": "Send image over MQTT."
        },
        "timestamp": {
          "label": "Add timestamp to MQTT image."
        },
        "bounding_box": {
          "label": "Add bounding box to MQTT image."
        },
        "crop": {
          "label": "Crop MQTT image to detected object."
        },
        "height": {
          "label": "MQTT image height."
        },
        "required_zones": {
          "label": "List of required zones to be entered in order to send the image."
        },
        "quality": {
          "label": "Quality of the encoded jpeg (0-100)."
        }
      }
    },
    "notifications": {
      "label": "Notifications configuration.",
      "properties": {
        "enabled": {
          "label": "Enable notifications"
        },
        "email": {
          "label": "Email required for push."
        },
        "cooldown": {
          "label": "Cooldown period for notifications (time in seconds)."
        },
        "enabled_in_config": {
          "label": "Keep track of original state of notifications."
        }
      }
    },
    "onvif": {
      "label": "Camera Onvif Configuration.",
      "properties": {
        "host": {
          "label": "Onvif Host"
        },
        "port": {
          "label": "Onvif Port"
        },
        "user": {
          "label": "Onvif Username"
        },
        "password": {
          "label": "Onvif Password"
        },
        "tls_insecure": {
          "label": "Onvif Disable TLS verification"
        },
        "autotracking": {
          "label": "PTZ auto tracking config.",
          "properties": {
            "enabled": {
              "label": "Enable PTZ object autotracking."
            },
            "calibrate_on_startup": {
              "label": "Perform a camera calibration when Frigate starts."
            },
            "zooming": {
              "label": "Autotracker zooming mode."
            },
            "zoom_factor": {
              "label": "Zooming factor (0.1-0.75)."
            },
            "track": {
              "label": "Objects to track."
            },
            "required_zones": {
              "label": "List of required zones to be entered in order to begin autotracking."
            },
            "return_preset": {
              "label": "Name of camera preset to return to when object tracking is over."
            },
            "timeout": {
              "label": "Seconds to delay before returning to preset."
            },
            "movement_weights": {
              "label": "Internal value used for PTZ movements based on the speed of your camera's motor."
            },
            "enabled_in_config": {
              "label": "Keep track of original state of autotracking."
            }
          }
        },
        "ignore_time_mismatch": {
          "label": "Onvif Ignore Time Synchronization Mismatch Between Camera and Server"
        }
      }
    },
    "type": {
      "label": "Camera Type"
    },
    "ui": {
      "label": "Camera UI Modifications.",
      "properties": {
        "order": {
          "label": "Order of camera in UI."
        },
        "dashboard": {
          "label": "Show this camera in Frigate dashboard UI."
        }
      }
    },
    "webui_url": {
      "label": "URL to visit the camera directly from system page"
    },
    "zones": {
      "label": "Zone configuration.",
      "properties": {
        "filters": {
          "label": "Zone filters.",
          "properties": {
            "min_area": {
              "label": "Minimum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
            },
            "max_area": {
              "label": "Maximum area of bounding box for object to be counted. Can be pixels (int) or percentage (float between 0.000001 and 0.99)."
            },
            "min_ratio": {
              "label": "Minimum ratio of bounding box's width/height for object to be counted."
            },
            "max_ratio": {
              "label": "Maximum ratio of bounding box's width/height for object to be counted."
            },
            "threshold": {
              "label": "Average detection confidence threshold for object to be counted."
            },
            "min_score": {
              "label": "Minimum detection confidence for object to be counted."
            },
            "mask": {
              "label": "Detection area polygon mask for this filter configuration."
            }
          }
        },
        "coordinates": {
          "label": "Coordinates polygon for the defined zone."
        },
        "distances": {
          "label": "Real-world distances for the sides of quadrilateral for the defined zone."
        },
        "inertia": {
          "label": "Number of consecutive frames required for object to be considered present in the zone."
        },
        "loitering_time": {
          "label": "Number of seconds that an object must loiter to be considered in the zone."
        },
        "speed_threshold": {
          "label": "Minimum speed value for an object to be considered in the zone."
        },
        "objects": {
          "label": "List of objects that can trigger the zone."
        }
      }
    },
    "enabled_in_config": {
      "label": "Keep track of original state of camera."
    }
  }
}