"""Shared metadata models for map and zone files.
These models capture versioning and export provenance while keeping the
runtime schema clean. Authoring files (MapFile) include version counters,
while exported zone files include an exported_from stamp.
"""
from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, Field
[docs]
class ExportedFrom(BaseModel):
"""Provenance for a zone export.
Stored under ``metadata.exported_from`` on exported zone files.
"""
map_id: str = Field(..., min_length=1, description="Source map identifier")
map_version: str = Field(..., min_length=1, description="Map version at export time")
map_revision: int = Field(..., ge=0, description="Map revision at export time")
exported_at: datetime = Field(..., description="Export timestamp (ISO in JSON)")
exporter: str = Field(..., min_length=1, description="Exporter name and version")