from pydantic import BaseModel, EmailStr from typing import List, Optional from datetime import datetime # User Schemas class UserBase(BaseModel): username: str email: EmailStr is_active: Optional[bool] = True is_admin: Optional[bool] = False class UserCreate(UserBase): password: str class UserUpdate(BaseModel): username: Optional[str] = None email: Optional[EmailStr] = None password: Optional[str] = None is_active: Optional[bool] = None is_admin: Optional[bool] = None class UserOut(UserBase): id: int created_at: datetime updated_at: datetime class Config: orm_mode = True # Application Schemas class ApplicationBase(BaseModel): name: str url: str class ApplicationCreate(ApplicationBase): pass class ApplicationOut(ApplicationBase): id: int api_key: str created_at: datetime class Config: orm_mode = True # Token Schema class Token(BaseModel): access_token: str token_type: str class TokenData(BaseModel): username: Optional[str] = None # SSO Verification Schema class SSOVerifyRequest(BaseModel): username: str password: str api_key: str class SSOVerifyResponse(BaseModel): authorized: bool message: str user: Optional[UserOut] = None