35 lines
893 B
Python
35 lines
893 B
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class PushConfigOut(BaseModel):
|
|
enabled: bool
|
|
# Der oeffentliche VAPID-Schluessel, base64url ohne Auffuellzeichen.
|
|
public_key: str | None = None
|
|
throttle_hours: int
|
|
|
|
|
|
class PushKeys(BaseModel):
|
|
p256dh: str = Field(max_length=200)
|
|
auth: str = Field(max_length=100)
|
|
|
|
|
|
class PushSubscribeIn(BaseModel):
|
|
# Vom Push-Dienst des Browserherstellers vergebene URL.
|
|
endpoint: str = Field(min_length=10, max_length=500)
|
|
keys: PushKeys
|
|
# Grobe Geraetebezeichnung zur Unterscheidung mehrerer Anmeldungen.
|
|
label: str | None = Field(default=None, max_length=80)
|
|
|
|
|
|
class PushUnsubscribeIn(BaseModel):
|
|
endpoint: str = Field(min_length=10, max_length=500)
|
|
|
|
|
|
class PushSubscriptionOut(BaseModel):
|
|
id: str
|
|
label: str | None
|
|
created_at: datetime
|
|
last_success_at: datetime | None
|