2026-02-05 17:29:50 +02:00
|
|
|
"""Authentication schemas for refresh token endpoints."""
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
|
2026-02-05 17:55:21 +02:00
|
|
|
class RefreshTokenRequest(BaseModel):
|
|
|
|
|
"""Request body for token refresh endpoint."""
|
|
|
|
|
|
2026-06-23 12:53:06 +05:30
|
|
|
refresh_token: str | None = None
|
2026-02-05 17:55:21 +02:00
|
|
|
|
|
|
|
|
|
2026-02-05 17:29:50 +02:00
|
|
|
class RefreshTokenResponse(BaseModel):
|
|
|
|
|
"""Response from token refresh endpoint."""
|
|
|
|
|
|
|
|
|
|
access_token: str
|
2026-06-23 12:53:06 +05:30
|
|
|
refresh_token: str | None = None
|
2026-02-05 17:29:50 +02:00
|
|
|
token_type: str = "bearer"
|
2026-06-23 12:53:06 +05:30
|
|
|
access_expires_at: int
|
2026-02-05 17:29:50 +02:00
|
|
|
|
|
|
|
|
|
2026-02-05 17:55:21 +02:00
|
|
|
class LogoutRequest(BaseModel):
|
|
|
|
|
"""Request body for logout endpoint (current device)."""
|
|
|
|
|
|
2026-06-23 12:53:06 +05:30
|
|
|
refresh_token: str | None = None
|
2026-02-05 17:55:21 +02:00
|
|
|
|
|
|
|
|
|
2026-02-05 17:29:50 +02:00
|
|
|
class LogoutResponse(BaseModel):
|
|
|
|
|
"""Response from logout endpoint (current device)."""
|
|
|
|
|
|
|
|
|
|
detail: str = "Successfully logged out"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LogoutAllResponse(BaseModel):
|
|
|
|
|
"""Response from logout all devices endpoint."""
|
|
|
|
|
|
|
|
|
|
detail: str = "Successfully logged out from all devices"
|
2026-06-23 12:53:06 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
class SessionResponse(BaseModel):
|
|
|
|
|
authenticated: bool = True
|
2026-06-24 03:55:39 +05:30
|
|
|
access_expires_at: int | None = None
|
2026-06-23 12:53:06 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
class DesktopSessionRequest(BaseModel):
|
|
|
|
|
code: str
|
|
|
|
|
code_verifier: str
|
|
|
|
|
redirect_uri: str
|
2026-06-24 03:55:39 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
class DesktopLoginRequest(BaseModel):
|
|
|
|
|
email: str
|
|
|
|
|
password: str
|