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