from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class ApiKey(BaseModel): id: Optional[str] = Field(None, alias="_id") name: str source_app: str key_hash: str # SHA-256 of raw key; raw key never stored scopes: list[str] = ["preflight", "record", "upsert"] is_active: bool = True workspace_id: Optional[str] = None # restricts events to this workspace if set created_at: Optional[datetime] = None last_used_at: Optional[datetime] = None revoked_at: Optional[datetime] = None created_by: Optional[str] = None # admin ID class Config: populate_by_name = True