Files
svg-backend/backend/app/services/api_errors.py
greebo 8d4255181b feat(backend): add publish readiness contract and pricing diagnostics
add backend readiness contract for publish prechecks

add pricing diagnostics to explain publish-blocking conditions
make publish decisions more explicit and easier to debug for clients
2026-03-19 20:29:58 +03:00

43 lines
875 B
Python

from __future__ import annotations
from fastapi import HTTPException, status
def build_error_detail(
*,
code: str,
message: str,
details: dict | None = None,
) -> dict:
payload = {
"code": code,
"message": message,
}
if details:
payload["details"] = details
return payload
def raise_conflict(
*,
code: str,
message: str,
details: dict | None = None,
) -> None:
raise HTTPException(
status_code=status.HTTP_409_CONFLICT,
detail=build_error_detail(code=code, message=message, details=details),
)
def raise_unprocessable(
*,
code: str,
message: str,
details: dict | None = None,
) -> None:
raise HTTPException(
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
detail=build_error_detail(code=code, message=message, details=details),
)