From 4ba33184a3c100a9287aef5dedcbada5bea05f42 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Wed, 25 Feb 2026 10:29:09 -0600 Subject: [PATCH] add wildcard support for camera config updates in config_set --- frigate/api/app.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/frigate/api/app.py b/frigate/api/app.py index bb2abba1b..45038584e 100644 --- a/frigate/api/app.py +++ b/frigate/api/app.py @@ -596,23 +596,33 @@ def config_set(request: Request, body: AppConfigSetBody): if body.update_topic.startswith("config/cameras/"): _, _, camera, field = body.update_topic.split("/") - if field == "add": - settings = config.cameras[camera] - elif field == "remove": - settings = old_config.cameras[camera] - else: - settings = config.get_nested_object(body.update_topic) - + if camera == "*": + # Wildcard: fan out update to all cameras + enum_value = CameraConfigUpdateEnum[field] + for camera_name in config.cameras: + settings = config.get_nested_object( + f"config/cameras/{camera_name}/{field}" + ) request.app.config_publisher.publish_update( - CameraConfigUpdateTopic( - CameraConfigUpdateEnum[field], camera - ), + CameraConfigUpdateTopic(enum_value, camera_name), settings, ) + else: + if field == "add": + settings = config.cameras[camera] + elif field == "remove": + settings = old_config.cameras[camera] else: - # Generic handling for global config updates settings = config.get_nested_object(body.update_topic) + request.app.config_publisher.publish_update( + CameraConfigUpdateTopic(CameraConfigUpdateEnum[field], camera), + settings, + ) + else: + # Generic handling for global config updates + settings = config.get_nested_object(body.update_topic) + # Publish None for removal, actual config for add/update request.app.config_publisher.publisher.publish( body.update_topic, settings