Files
svg-backend/backend/app/services/api_errors.py
greebo a266f56ddd feat(backend): harden draft, pricing and publish contracts
- unify typed API errors across draft, pricing and publish flows
- add stale draft and publish-state mutation guards
- add publish readiness contract and guarded publish flow
- add sellability reason codes to test seat preview
- add pricing diagnostics and strengthen snapshot/publish lifecycle consistency
2026-03-19 20:58:14 +03:00

42 lines
792 B
Python

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