| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from typing import Optional, List
- from pydantic import BaseModel, HttpUrl
- from enum import Enum
- from datetime import datetime
- class ProtocolType(str, Enum):
- OIDC = "OIDC"
- SIMPLE_API = "SIMPLE_API"
- class ApplicationBase(BaseModel):
- app_name: str
- icon_url: Optional[str] = None
- protocol_type: ProtocolType = ProtocolType.SIMPLE_API
- redirect_uris: Optional[str] = None # Stored as JSON string or comma-separated for simplicity in MVP, or validate as list
- notification_url: Optional[str] = None
- class ApplicationCreate(ApplicationBase):
- sync_all_users: bool = False
- sync_email: bool = False
- email_domain: Optional[str] = None
- class ApplicationUpdate(BaseModel):
- app_name: Optional[str] = None
- icon_url: Optional[str] = None
- protocol_type: Optional[ProtocolType] = None
- redirect_uris: Optional[str] = None
- notification_url: Optional[str] = None
- password: Optional[str] = None
- verification_code: Optional[str] = None
- class ApplicationTransferRequest(BaseModel):
- target_mobile: str
- password: str
- verification_code: str
- class RegenerateSecretRequest(BaseModel):
- password: str
- verification_code: str
- class ApplicationResponse(ApplicationBase):
- id: int
- app_id: str
- owner_id: int
- # We do NOT return app_secret_hash
- created_at: datetime
- updated_at: datetime
- class Config:
- from_attributes = True
- class ApplicationList(BaseModel):
- total: int
- items: List[ApplicationResponse]
- class ApplicationSecretDisplay(BaseModel):
- app_id: str
- app_secret: str
- access_token: Optional[str] = None
- class ViewSecretRequest(BaseModel):
- password: str
|