Source code for netbird.models.dns_zone
"""
DNS zone and record models for NetBird API.
"""
from typing import List, Optional
from pydantic import Field
from .common import BaseModel, ResourceId
[docs]
class DNSZoneCreate(BaseModel):
"""Model for creating a DNS zone."""
name: str = Field(..., description="Zone name identifier")
domain: str = Field(..., description="Zone domain (FQDN)")
enabled: Optional[bool] = Field(None, description="Zone status")
enable_search_domain: bool = Field(..., description="Enable zone as search domain")
distribution_groups: List[str] = Field(
..., description="Group IDs for peer resolution"
)
[docs]
class DNSZoneUpdate(BaseModel):
"""Model for updating a DNS zone."""
name: Optional[str] = Field(None, description="Zone name identifier")
domain: Optional[str] = Field(None, description="Zone domain (FQDN)")
enabled: Optional[bool] = Field(None, description="Zone status")
enable_search_domain: Optional[bool] = Field(
None, description="Enable zone as search domain"
)
distribution_groups: Optional[List[str]] = Field(
None, description="Group IDs for peer resolution"
)
[docs]
class DNSZone(BaseModel):
"""NetBird DNS zone model."""
id: ResourceId = Field(..., description="Unique zone identifier")
name: str = Field(..., description="Zone name identifier")
domain: str = Field(..., description="Zone domain")
enabled: Optional[bool] = Field(None, description="Zone status")
enable_search_domain: Optional[bool] = Field(
None, description="Search domain status"
)
distribution_groups: Optional[List[str]] = Field(
None, description="Distribution group IDs"
)
[docs]
class DNSRecordCreate(BaseModel):
"""Model for creating a DNS record."""
name: str = Field(..., description="FQDN for DNS record")
type: str = Field(..., description="DNS record type")
content: str = Field(..., description="IP or domain value")
ttl: int = Field(..., description="Time to live in seconds")
[docs]
class DNSRecordUpdate(BaseModel):
"""Model for updating a DNS record."""
name: Optional[str] = Field(None, description="FQDN for DNS record")
type: Optional[str] = Field(None, description="DNS record type")
content: Optional[str] = Field(None, description="IP or domain value")
ttl: Optional[int] = Field(None, description="Time to live in seconds")
[docs]
class DNSRecord(BaseModel):
"""NetBird DNS record model."""
id: ResourceId = Field(..., description="Unique record identifier")
name: str = Field(..., description="FQDN for DNS record")
type: str = Field(..., description="DNS record type")
content: str = Field(..., description="IP or domain value")
ttl: int = Field(..., description="Time to live in seconds")