from pydantic import BaseModel, field_validator class NostrProfileSchema(BaseModel): name: str | None = None display_name: str | None = None about: str | None = None picture: str | None = None banner: str | None = None website: str | None = None nip05: str | None = None lud16: str | None = None @field_validator("picture", "banner", "website") @classmethod def validate_https_url(cls, v: str | None) -> str | None: if v and not v.startswith("https://"): raise ValueError(f"URL must use https://: {v}") return v class NostrAccountConfig(BaseModel): name: str | None = None enabled: bool = True private_key: str | None = None relays: list[str] = [] dm_policy: str = "pairing" allow_from: list[str] = [] profile: NostrProfileSchema | None = None class NostrConfig(BaseModel): enabled: bool = True name: str | None = None default_account: str = "default" private_key: str | None = None relays: list[str] = [] dm_policy: str = "pairing" allow_from: list[str] = [] profile: NostrProfileSchema | None = None accounts: dict[str, NostrAccountConfig] = {}