| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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):
- pass
- 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
|