Source code for netbird.models.account

"""
Account models for NetBird API.
"""

from typing import Any, Dict, List, Optional

from pydantic import Field

from .common import BaseModel, ResourceId


[docs] class AccountSettings(BaseModel): """Account settings configuration. Attributes: peer_login_expiration: Peer login expiration settings peer_login_expiration_enabled: Whether peer login expiration is enabled peer_inactivity_expiration_enabled: Whether peer inactivity expiration is enabled user_view_restrictions: User view restriction settings group_propagation_enabled: Whether group propagation is enabled jwt_groups_enabled: Whether JWT groups are enabled jwt_groups_claim_name: JWT groups claim name dns_resolution_enabled: Whether DNS resolution is enabled network_traffic_logging_enabled: Whether network traffic logging is enabled lazy_connection_enabled: Whether lazy connection is enabled """ peer_login_expiration: Optional[int] = Field( None, description="Peer login expiration in seconds" ) peer_login_expiration_enabled: bool = Field( False, description="Enable peer login expiration" ) peer_inactivity_expiration_enabled: bool = Field( False, description="Enable peer inactivity expiration" ) user_view_restrictions: Optional[Dict[str, bool]] = Field( None, description="User view restrictions" ) group_propagation_enabled: bool = Field( True, description="Enable group propagation" ) jwt_groups_enabled: bool = Field(False, description="Enable JWT groups") jwt_groups_claim_name: Optional[str] = Field( None, description="JWT groups claim name" ) dns_resolution_enabled: bool = Field(True, description="Enable DNS resolution") network_traffic_logging_enabled: bool = Field( False, description="Enable network traffic logging" ) lazy_connection_enabled: bool = Field(False, description="Enable lazy connection") peer_inactivity_expiration: Optional[int] = Field( None, description="Peer inactivity expiration in seconds" ) routing_peer_dns_resolution_enabled: Optional[bool] = Field( None, description="Enable routing peer DNS resolution" ) network_range: Optional[str] = Field(None, description="Network range") peer_expose_enabled: Optional[bool] = Field(None, description="Enable peer expose") peer_expose_groups: Optional[List[str]] = Field( None, description="Peer expose groups" ) auto_update_version: Optional[str] = Field(None, description="Auto update version") embedded_idp_enabled: Optional[bool] = Field( None, description="Enable embedded IDP" ) local_auth_disabled: Optional[bool] = Field(None, description="Disable local auth") extra_settings: Optional[Dict[str, Any]] = Field( None, alias="extra", description="Extra settings (peer_approval, traffic_logs, etc.)", )
[docs] class Account(BaseModel): """NetBird account model. Attributes: id: Unique account identifier domain: Account domain domain_category: Domain category created_at: Account creation timestamp created_by: User who created the account settings: Account settings """ id: ResourceId = Field(..., description="Unique account identifier") domain: str = Field(..., description="Account domain") domain_category: Optional[str] = Field(None, description="Domain category") created_at: Optional[str] = Field(None, description="Account creation timestamp") created_by: Optional[str] = Field(None, description="User who created the account") settings: Optional[Dict[str, Any]] = Field(None, description="Account settings") onboarding: Optional[Dict[str, Any]] = Field(None, description="Onboarding status")