from __future__ import annotations import uuid from datetime import datetime from pydantic import BaseModel, ConfigDict class NotificationItem(BaseModel): id: uuid.UUID document_id: uuid.UUID version_id: uuid.UUID document_title: str document_no: str | None = None version_no: str change_summary: str | None = None effective_at: datetime | None = None created_at: datetime study_id: uuid.UUID | None = None study_name: str | None = None delivered_at: datetime | None = None read_at: datetime | None = None model_config = ConfigDict(from_attributes=True) class DesktopNotificationSubscriptionRead(BaseModel): enabled: bool enabled_at: datetime | None = None class DesktopNotificationSubscriptionUpdate(BaseModel): enabled: bool class DesktopNotificationClaimRequest(BaseModel): limit: int = 20 class DesktopNotificationClaimResponse(BaseModel): claim_token: uuid.UUID | None = None lease_expires_at: datetime | None = None items: list[NotificationItem] class DesktopNotificationAckRequest(BaseModel): claim_token: uuid.UUID delivered_ids: list[uuid.UUID]