Body:
Controllers currently return varied error shapes. Create a single ApiError class (or similar) and ensure errorHandler middleware converts all thrown errors into a consistent JSON response with status, code, and message fields.
Acceptance Criteria:
ApiError exists and is used by controllers for expected failures.
errorHandler middleware returns consistent JSON schema: {status, code, message, details?}.
- Tests verify that 400/401/403/404/500 responses follow the schema.
Body:
Controllers currently return varied error shapes. Create a single
ApiErrorclass (or similar) and ensureerrorHandlermiddleware converts all thrown errors into a consistent JSON response withstatus,code, andmessagefields.Acceptance Criteria:
ApiErrorexists and is used by controllers for expected failures.errorHandlermiddleware returns consistent JSON schema:{status, code, message, details?}.