first commit
This commit is contained in:
179
app/datamodels/schemas.py
Normal file
179
app/datamodels/schemas.py
Normal file
@@ -0,0 +1,179 @@
|
||||
from decimal import Decimal
|
||||
from pydantic import BaseModel, EmailStr
|
||||
from datetime import datetime, date
|
||||
from typing import Optional, List
|
||||
|
||||
|
||||
# ── Auth ──
|
||||
|
||||
class RegisterRequest(BaseModel):
|
||||
email: str
|
||||
password: str
|
||||
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
email: str
|
||||
password: str
|
||||
|
||||
|
||||
class TokenResponse(BaseModel):
|
||||
access_token: str
|
||||
refresh_token: Optional[str] = None
|
||||
token_type: str = "bearer"
|
||||
|
||||
|
||||
class RefreshRequest(BaseModel):
|
||||
refresh_token: str
|
||||
|
||||
|
||||
class ForgotPasswordRequest(BaseModel):
|
||||
email: str
|
||||
|
||||
|
||||
class ResetPasswordRequest(BaseModel):
|
||||
token: str
|
||||
new_password: str
|
||||
|
||||
|
||||
class UserResponse(BaseModel):
|
||||
id: str
|
||||
email: str
|
||||
balance: Decimal
|
||||
status: str
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ── API Key ──
|
||||
|
||||
class CreateKeyRequest(BaseModel):
|
||||
name: str = ""
|
||||
|
||||
|
||||
class ApiKeyResponse(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
key_prefix: str
|
||||
key_suffix: str
|
||||
status: str
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class ApiKeyCreatedResponse(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
key: str
|
||||
key_prefix: str
|
||||
key_suffix: str
|
||||
created_at: datetime
|
||||
|
||||
|
||||
# ── Wallet ──
|
||||
|
||||
class RedeemCodeRequest(BaseModel):
|
||||
code: str
|
||||
|
||||
|
||||
class TransactionResponse(BaseModel):
|
||||
id: str
|
||||
type: str
|
||||
amount: Decimal
|
||||
balance_after: Decimal
|
||||
reference_id: str
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class BalanceResponse(BaseModel):
|
||||
balance: Decimal
|
||||
|
||||
|
||||
# ── Models ──
|
||||
|
||||
class ModelPricingResponse(BaseModel):
|
||||
id: int
|
||||
model_name: str
|
||||
provider: str
|
||||
input_price_per_1k: Decimal
|
||||
output_price_per_1k: Decimal
|
||||
status: str
|
||||
updated_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ── Example (legacy) ──
|
||||
|
||||
class ExampleCreate(BaseModel):
|
||||
name: str
|
||||
description: str = ""
|
||||
|
||||
|
||||
class ExampleResponse(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
description: str
|
||||
created_at: datetime
|
||||
|
||||
|
||||
# ── Common ──
|
||||
|
||||
class MessageResponse(BaseModel):
|
||||
message: str
|
||||
|
||||
|
||||
# ── Usage ──
|
||||
|
||||
class UsageSummaryResponse(BaseModel):
|
||||
today_tokens: int
|
||||
today_cost: Decimal
|
||||
month_tokens: int
|
||||
month_cost: Decimal
|
||||
total_requests: int
|
||||
|
||||
|
||||
class DailyUsageResponse(BaseModel):
|
||||
date: date
|
||||
total_tokens: int
|
||||
cost: Decimal
|
||||
requests: int
|
||||
|
||||
|
||||
class ModelUsageResponse(BaseModel):
|
||||
model: str
|
||||
total_tokens: int
|
||||
cost: Decimal
|
||||
requests: int
|
||||
|
||||
|
||||
class KeyUsageResponse(BaseModel):
|
||||
key_id: str
|
||||
key_name: str
|
||||
key_prefix: str
|
||||
key_suffix: str
|
||||
total_tokens: int
|
||||
cost: Decimal
|
||||
requests: int
|
||||
|
||||
|
||||
class UsageLogResponse(BaseModel):
|
||||
id: int
|
||||
key_id: str
|
||||
model: str
|
||||
prompt_tokens: int
|
||||
completion_tokens: int
|
||||
total_tokens: int
|
||||
cost: Decimal
|
||||
request_time: datetime
|
||||
status: str
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
Reference in New Issue
Block a user