| 
					
				 | 
			
			
				@@ -65,8 +65,17 @@ class MqttConfig(FrigateBaseModel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return v 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class RetainModeEnum(str, Enum): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    all = "all" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    motion = "motion" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    active_objects = "active_objects" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class RetainConfig(FrigateBaseModel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     default: float = Field(default=10, title="Default retention period.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mode: RetainModeEnum = Field( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default=RetainModeEnum.active_objects, title="Retain mode." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     objects: Dict[str, float] = Field( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         default_factory=dict, title="Object retention period." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -88,9 +97,18 @@ class EventsConfig(FrigateBaseModel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class RecordRetainConfig(FrigateBaseModel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    days: float = Field(default=0, title="Default retention period.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mode: RetainModeEnum = Field(default=RetainModeEnum.all, title="Retain mode.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class RecordConfig(FrigateBaseModel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     enabled: bool = Field(default=False, title="Enable record on all cameras.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    retain_days: float = Field(default=0, title="Recording retention period in days.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # deprecated - to be removed in a future version 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    retain_days: Optional[float] = Field(title="Recording retention period in days.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    retain: RecordRetainConfig = Field( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default_factory=RecordRetainConfig, title="Record retention settings." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     events: EventsConfig = Field( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         default_factory=EventsConfig, title="Event specific settings." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -810,6 +828,14 @@ class FrigateConfig(FrigateBaseModel): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     f"Camera {name} has rtmp enabled, but rtmp is not assigned to an input." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # backwards compatibility for retain_days 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if not camera_config.record.retain_days is None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.warning( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    "The 'retain_days' config option has been DEPRECATED and will be removed in a future version. Please use the 'days' setting under 'retain'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if camera_config.record.retain.days == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    camera_config.record.retain.days = camera_config.record.retain_days 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             config.cameras[name] = camera_config 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return config 
			 |