Files
ctms/backend/app/schemas/notification.py
T
Cheng Zhou 628ff8828b
Client Quality Gates / Shared client and Web (push) Has been cancelled
Client Quality Gates / macOS Desktop (push) Has been cancelled
feat(desktop): implement phase 2 native capabilities
2026-06-30 21:21:55 +08:00

49 lines
1.1 KiB
Python

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]