Init Repo
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import List, Optional
|
||||
from datetime import datetime
|
||||
from models.api_key import APIKeyScope
|
||||
|
||||
|
||||
class APIKeyCreate(BaseModel):
|
||||
name: str
|
||||
scopes: List[APIKeyScope]
|
||||
expires_at: Optional[datetime] = None
|
||||
user_id: Optional[int] = None # Only admins can specify this
|
||||
|
||||
|
||||
class APIKeyResponse(BaseModel):
|
||||
id: int
|
||||
user_id: int
|
||||
name: str
|
||||
scopes: List[str]
|
||||
is_active: bool
|
||||
expires_at: Optional[datetime]
|
||||
last_used_at: Optional[datetime]
|
||||
created_at: datetime
|
||||
user_email: Optional[str] = None # Include user email for admin view
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class APIKeyWithToken(BaseModel):
|
||||
api_key: APIKeyResponse
|
||||
token: str # The actual API key token (only returned on creation)
|
||||
|
||||
|
||||
class APIKeyUpdate(BaseModel):
|
||||
name: Optional[str] = None
|
||||
scopes: Optional[List[APIKeyScope]] = None
|
||||
is_active: Optional[bool] = None
|
||||
expires_at: Optional[datetime] = None
|
||||
|
||||
|
||||
class APIKeyUsageLog(BaseModel):
|
||||
api_key_id: int
|
||||
endpoint: str
|
||||
method: str
|
||||
timestamp: datetime
|
||||
ip_address: Optional[str] = None
|
||||
user_agent: Optional[str] = None
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
Reference in New Issue
Block a user