""" Request log schemas for API responses """ from datetime import datetime from typing import Dict, List, Optional, Any from pydantic import BaseModel class RequestLogResponse(BaseModel): """Response schema for individual request log""" id: int request_id: str endpoint: str method: str path: str query_params: Optional[Dict[str, Any]] = None request_body: Optional[Dict[str, Any]] = None headers: Optional[Dict[str, Any]] = None status_code: int response_size: Optional[int] = None user_agent: Optional[str] = None client_ip: Optional[str] = None response_time_ms: Optional[float] = None created_at: Optional[str] = None class RequestLogListResponse(BaseModel): """Response schema for paginated request logs""" items: List[RequestLogResponse] total: int page: int page_size: int total_pages: int class RequestLogStats(BaseModel): """Response schema for request log statistics""" total_requests: int success_requests: int # 2xx status codes client_error_requests: int # 4xx status codes server_error_requests: int # 5xx status codes success_rate: float # percentage requests_by_method: Dict[str, int] requests_by_status_code: Dict[str, int] requests_by_endpoint: Dict[str, int] average_response_time_ms: float hourly_trend: Dict[str, int] # Hour -> count start_date: str end_date: str