Source code for netbird.models.common

"""
Common types and base models for NetBird API.
"""

from datetime import datetime
from enum import Enum
from typing import Any, NewType

from pydantic import BaseModel as PydanticBaseModel, ConfigDict


[docs] class BaseModel(PydanticBaseModel): """Base model for all NetBird API models.""" model_config = ConfigDict( extra="allow", validate_assignment=True, use_enum_values=True, populate_by_name=True, )
# Type aliases for better type hints ResourceId = NewType("ResourceId", str) Timestamp = NewType("Timestamp", datetime)
[docs] class UserRole(str, Enum): """User role enumeration.""" ADMIN = "admin" USER = "user" OWNER = "owner"
[docs] class UserStatus(str, Enum): """User status enumeration.""" ACTIVE = "active" DISABLED = "disabled" INVITED = "invited"
[docs] class SetupKeyType(str, Enum): """Setup key type enumeration.""" REUSABLE = "reusable" ONE_OFF = "one-off"
[docs] class NetworkType(str, Enum): """Network type enumeration.""" IPV4 = "ipv4" IPV6 = "ipv6" DOMAIN = "domain" @classmethod def _missing_(cls, value: object) -> Any: if isinstance(value, str): value = value.lower() for member in cls: if member.value == value: return member return None
[docs] class Protocol(str, Enum): """Network protocol enumeration.""" TCP = "tcp" UDP = "udp" ICMP = "icmp" ALL = "all" @classmethod def _missing_(cls, value: object) -> Any: if isinstance(value, str): value = value.lower() for member in cls: if member.value == value: return member return None
[docs] class PolicyAction(str, Enum): """Policy action enumeration.""" ACCEPT = "accept" DROP = "drop" @classmethod def _missing_(cls, value: object) -> Any: if isinstance(value, str): value = value.lower() for member in cls: if member.value == value: return member return None
[docs] class TrafficDirection(str, Enum): """Traffic direction enumeration.""" SENT = "sent" RECEIVED = "received"
[docs] class ConnectionType(str, Enum): """Connection type enumeration.""" RELAY = "relay" P2P = "p2p"