36 lines
817 B
Python
36 lines
817 B
Python
|
|
"""
|
||
|
|
Unified API response format utilities.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from typing import Any, List, Optional
|
||
|
|
|
||
|
|
from fastapi.responses import JSONResponse
|
||
|
|
|
||
|
|
|
||
|
|
def success_response(data: Any = None, message: str = "Operation successful") -> dict:
|
||
|
|
"""Return a standardised success payload."""
|
||
|
|
return {
|
||
|
|
"success": True,
|
||
|
|
"data": data,
|
||
|
|
"message": message,
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
def error_response(
|
||
|
|
message: str,
|
||
|
|
code: str,
|
||
|
|
details: Optional[List[dict]] = None,
|
||
|
|
status_code: int = 400,
|
||
|
|
) -> JSONResponse:
|
||
|
|
"""Return a standardised error JSONResponse."""
|
||
|
|
body: dict = {
|
||
|
|
"success": False,
|
||
|
|
"data": None,
|
||
|
|
"message": message,
|
||
|
|
"error": {
|
||
|
|
"code": code,
|
||
|
|
"details": details or [],
|
||
|
|
},
|
||
|
|
}
|
||
|
|
return JSONResponse(status_code=status_code, content=body)
|