48 lines
1,007 B
Python
48 lines
1,007 B
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from .pagination import PaginatedResponse
|
|
|
|
|
|
class InviteCheckResponse(BaseModel):
|
|
"""Response for invite check endpoint."""
|
|
|
|
valid: bool
|
|
status: str | None = None
|
|
error: str | None = None
|
|
|
|
|
|
class InviteCreate(BaseModel):
|
|
"""Request model for creating an invite."""
|
|
|
|
godfather_id: int
|
|
|
|
|
|
class InviteResponse(BaseModel):
|
|
"""Response model for invite data (admin view)."""
|
|
|
|
id: int
|
|
identifier: str
|
|
godfather_id: int
|
|
godfather_email: str
|
|
status: str
|
|
used_by_id: int | None
|
|
used_by_email: str | None
|
|
created_at: datetime
|
|
spent_at: datetime | None
|
|
revoked_at: datetime | None
|
|
|
|
|
|
class UserInviteResponse(BaseModel):
|
|
"""Response model for a user's invite (simpler than admin view)."""
|
|
|
|
id: int
|
|
identifier: str
|
|
status: str
|
|
used_by_email: str | None
|
|
created_at: datetime
|
|
spent_at: datetime | None
|
|
|
|
|
|
PaginatedInviteRecords = PaginatedResponse[InviteResponse]
|