45 lines
857 B
Python
45 lines
857 B
Python
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel, Field, validator
|
|
|
|
|
|
class ChatRequest(BaseModel):
|
|
message: str = Field(..., min_length=1, max_length=10000)
|
|
provider: Optional[str] = None
|
|
|
|
@validator("message")
|
|
def message_not_empty(cls, v):
|
|
if not v.strip():
|
|
raise ValueError("Message cannot be empty or whitespace")
|
|
return v.strip()
|
|
|
|
|
|
class ChatResponse(BaseModel):
|
|
message: str
|
|
provider: str
|
|
|
|
|
|
class ProviderListResponse(BaseModel):
|
|
providers: List[str]
|
|
default: str
|
|
|
|
|
|
# Auth schemas
|
|
class AuthUrlResponse(BaseModel):
|
|
auth_url: str
|
|
|
|
|
|
class AuthCallbackRequest(BaseModel):
|
|
code: str
|
|
|
|
|
|
class UserResponse(BaseModel):
|
|
id: str
|
|
name: Optional[str] = None
|
|
email: Optional[str] = None
|
|
|
|
|
|
class AuthCallbackResponse(BaseModel):
|
|
token: str
|
|
user: UserResponse
|