50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ApiClientItem(BaseModel):
|
|
id: str
|
|
client_key: str
|
|
name: str
|
|
status: str
|
|
allowed_origins: list[str] = Field(default_factory=list)
|
|
allowed_ips: list[str] = Field(default_factory=list)
|
|
allowed_paths: list[str] = Field(default_factory=list)
|
|
rate_limit_per_min: int | None = None
|
|
expires_at: datetime | None = None
|
|
last_used_at: datetime | None = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class ApiClientCreateRequest(BaseModel):
|
|
name: str
|
|
client_key: str | None = None
|
|
status: str = "active"
|
|
allowed_origins: list[str] = Field(default_factory=list)
|
|
allowed_ips: list[str] = Field(default_factory=list)
|
|
allowed_paths: list[str] = Field(default_factory=list)
|
|
rate_limit_per_min: int | None = None
|
|
expires_at: datetime | None = None
|
|
|
|
|
|
class ApiClientUpdateRequest(BaseModel):
|
|
name: str | None = None
|
|
status: str | None = None
|
|
allowed_origins: list[str] | None = None
|
|
allowed_ips: list[str] | None = None
|
|
allowed_paths: list[str] | None = None
|
|
rate_limit_per_min: int | None = None
|
|
expires_at: datetime | None = None
|
|
|
|
|
|
class ApiClientCreateResponse(BaseModel):
|
|
item: ApiClientItem
|
|
api_key: str
|
|
|
|
|
|
class ApiClientRotateKeyResponse(BaseModel):
|
|
client_key: str
|
|
api_key: str
|