Ошибки и обработка результата
Network использует status: error и error: {name, message}. SSO legacy использует error_name, error_msg и иногда error_code. AntiCheat SecureChannel сначала требует расшифровки ответа; plain middleware errors могут прийти раньше. HTTP-код не заменяет проверку application status.
| Имя/группа | Что проверить |
|---|---|
incorrect_data | Обязательные поля, расположение body/query, формат и границы ID |
method_not_found | Сервис, регистр имени Network, зарегистрированные методы, SSO route coverage |
token_invalid, token_no_passed | Правильный тип credentials и штатное обновление входа |
access_denied | Аккаунт, роль, владелец/доступ к серверу и условия метода |
license_upgrade_required, checker_addon_required | Серверная feature matrix и состояние подписки |
dedicated_project_mismatch | Соответствие проекту конкретного контура |
ozprotect_network_host_mismatch | Назначенный Network host выбранного сервера |
another_project, server_not_belong_project | Связь проекта и сервера, а не только существование обоих ID |
no_data | Объект не найден или не виден в текущей области доступа |
checker_session_not_found/taken/closed/refused | Код и состояние сессии, привязка устройства, завершение/отказ |
checker_too_many_sessions, checker_rate_limited | Активные сессии и ограничение частоты; не запускайте бесконечные повторы |
AC missing_headers, request_expired, session_expired, replay_detected | SecureChannel headers, время, сессия и новый nonce в штатном клиенте |
database_error, api_exception | Диагностика backend без вывода stack trace/SQL/credentials пользователю |
Перечень не является единственным набором ошибок: у категорий есть дополнительные словари и динамические ошибки модулей. OpenAPI хранит наблюдаемые имена в x-observed-errors, но этот список не исчерпывает все runtime-ветки.
Как показывать пользователю
Сначала перевод errors.<name>, затем безопасное сообщение backend и общий перевод неизвестной ошибки. Для SSO сначала нормализуйте error_name/error_msg, для сокета смотрите error.name/error.message. Не показывайте raw объект с токенами или внутренним SQL.
Повтор запроса
Read-запрос можно повторить после восстановления соединения, если он не меняет состояние. Для наказания, оплаты, отправки сообщения и upload потерянный ACK оставляет результат неопределённым. Сначала проверьте созданный объект/историю; используйте предусмотренную идемпотентность. Не считайте timeout автоматическим rollback.
Источники: Network common/ApiController.js, common/ApiErrors.json, common/SocketController.js; SSO src/legacy/response.js; AC common/SecureChannel.js.
