Вопрос проверяет знание HTTP статусов.
Определяйте классы ошибок и сопоставляйте их кодам: validation → 400, not found → 404, conflict (no slots) → 409, «непредвиденная» → 500. Маппинг реализуйте через errors.Is/As.
Рекомендации:
400 — неверный ввод/валидация;
404 — сущность не найдена;
409 — конфликт состояния (бронь занята);
401/403 — аутентификация/авторизация;
500 — внутренняя ошибка.
Реализация:
доменные ошибки в сервисе;
в хендлере switch по errors.Is.
Вывод: явные доменные ошибки → предсказуемые и стабильные HTTP-ответы.