File size: 2,249 Bytes
f1378d8 3a5bbc1 f1378d8 4d9774a f1378d8 3a5bbc1 f1378d8 4d9774a f1378d8 4d9774a f1378d8 3a5bbc1 f1378d8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | """Pydantic models for the token manager API."""
from pydantic import BaseModel, Field
VALID_SERVICES = ("tavily", "firecrawl", "exa")
# ββ API Key models ββ
class ApiKeyCreate(BaseModel):
email: str
password: str = ""
api_key: str
service: str | None = None
created_at: str = ""
class ApiKeyImport(BaseModel):
keys: list[ApiKeyCreate]
class ApiKeyResponse(BaseModel):
id: int
email: str
password: str
api_key: str
service: str = "tavily"
status: str
created_at: str
last_checked: str | None = None
quota_remaining: int | None = None
use_count: int | None = 0
class ApiKeyListResponse(BaseModel):
total: int
active: int
keys: list[ApiKeyResponse]
class ServiceStats(BaseModel):
total_keys: int = 0
active_keys: int = 0
inactive_keys: int = 0
exhausted_keys: int = 0
total_usage: int = 0
total_quota_remaining: int | None = None
class StatsResponse(BaseModel):
total_keys: int
active_keys: int
inactive_keys: int
exhausted_keys: int
total_usage: int = 0
total_quota_remaining: int | None = None
last_registration: str | None = None
last_healthcheck: str | None = None
by_service: dict[str, ServiceStats] = Field(default_factory=dict)
class HealthCheckResult(BaseModel):
id: int
api_key: str
status: str
message: str
quota_remaining: int | None = None
class BatchIds(BaseModel):
ids: list[int]
class BatchStatus(BaseModel):
ids: list[int]
status: str
# ββ Access Token models ββ
class AccessTokenCreate(BaseModel):
name: str = ""
token: str = ""
quota_limit: int = 1000
is_admin: bool = False
expires_at: str | None = None
class AccessTokenUpdate(BaseModel):
name: str | None = None
quota_limit: int | None = None
status: str | None = None
expires_at: str | None = None
class AccessTokenResponse(BaseModel):
id: int
token: str
name: str
quota_limit: int
quota_used: int
is_admin: bool
status: str
created_at: str
last_used: str | None = None
expires_at: str | None = None
# ββ Config models ββ
class ConfigUpdate(BaseModel):
configs: dict[str, str]
|