Source code for netbird.models.policy

"""
Policy models for NetBird API.
"""

from typing import Any, Dict, List, Optional, Union

from pydantic import Field

from .common import BaseModel, PolicyAction, Protocol, ResourceId


[docs] class PolicyRule(BaseModel): """Policy rule model. Attributes: id: Rule identifier name: Rule name description: Rule description enabled: Whether rule is enabled action: Policy action (accept/drop) protocol: Network protocol ports: List of ports sources: Source groups destinations: Destination groups bidirectional: Whether rule is bidirectional """ id: Optional[ResourceId] = Field(None, description="Rule identifier") name: str = Field(..., description="Rule name") description: Optional[str] = Field(None, description="Rule description") enabled: bool = Field(True, description="Rule enabled status") action: PolicyAction = Field(..., description="Policy action") protocol: Protocol = Field(..., description="Network protocol") ports: Optional[List[str]] = Field(None, description="Port list") sources: Optional[List[Union[str, Dict[str, Any]]]] = Field( None, description="Source group IDs (str for writes, objects in GET responses)" ) destinations: Optional[List[Union[str, Dict[str, Any]]]] = Field( None, description="Destination group IDs (str for writes, objects in GET responses)", ) bidirectional: bool = Field(False, description="Bidirectional rule") port_ranges: Optional[List[Dict[str, Any]]] = Field(None, description="Port ranges") authorized_groups: Optional[Dict[str, Any]] = Field( None, description="Authorized groups" ) source_resource: Optional[Dict[str, Any]] = Field( None, alias="sourceResource", description="Source resource" ) destination_resource: Optional[Dict[str, Any]] = Field( None, alias="destinationResource", description="Destination resource" )
[docs] class PolicyCreate(BaseModel): """Model for creating a policy. Attributes: name: Policy name description: Policy description enabled: Whether policy is enabled source_posture_checks: Source posture check IDs rules: List of policy rules """ name: str = Field(..., description="Policy name") description: Optional[str] = Field(None, description="Policy description") enabled: bool = Field(True, description="Policy enabled status") source_posture_checks: Optional[List[ResourceId]] = Field( None, description="Source posture check IDs" ) rules: List[PolicyRule] = Field(..., description="Policy rules")
[docs] class PolicyUpdate(BaseModel): """Model for updating a policy. Attributes: name: Policy name description: Policy description enabled: Whether policy is enabled source_posture_checks: Source posture check IDs rules: List of policy rules """ name: Optional[str] = Field(None, description="Policy name") description: Optional[str] = Field(None, description="Policy description") enabled: Optional[bool] = Field(None, description="Policy enabled status") source_posture_checks: Optional[List[ResourceId]] = Field( None, description="Source posture check IDs" ) rules: Optional[List[PolicyRule]] = Field(None, description="Policy rules")
[docs] class Policy(BaseModel): """NetBird policy model. Attributes: id: Unique policy identifier name: Policy name description: Policy description enabled: Whether policy is enabled source_posture_checks: Source posture check IDs rules: List of policy rules """ id: ResourceId = Field(..., description="Unique policy identifier") name: str = Field(..., description="Policy name") description: Optional[str] = Field(None, description="Policy description") enabled: bool = Field(..., description="Policy enabled status") source_posture_checks: Optional[List[ResourceId]] = Field( None, description="Source posture check IDs" ) rules: List[PolicyRule] = Field(..., description="Policy rules")