Коды ошибок (V2 и ACP)
В V2 и ACP все ошибки возвращаются в формате:
json
{
"time": 1700000000,
"error": {
"code": "string",
"http_status": 400,
"message": "string",
"details": { "key": "value" }
}
}- code: машинночитаемый код.
- http_status: HTTP-статус ответа.
- message: краткое описание.
- details: опциональные детали (валидатор, поля и т.п.).
Источники:
- интерфейс ошибок API:
interfaces/api/apierrors/app_error.go - маппинг доменных ошибок:
interfaces/api/apierrors/mapper.go - доменные коды:
domain/errors/errors.go
Стандартные ошибки API (apierrors)
| code | http_status | message |
|---|---|---|
| auth.unauthorized | 401 | Unauthorized |
| auth.invalid_headers | 400 | Invalid headers |
| auth.invalid_token | 401 | Invalid token |
| auth.client_version_too_low | 400 | Client version too low |
| auth.banned | 403 | User is banned |
| auth.forbidden | 403 | Forbidden |
| validation.invalid_input | 422 | Invalid input |
| validation.conflict | 409 | Conflict |
| system.internal | 500 | Internal server error |
| system.try_again_later | 503 | Please try again later |
| db.select_failed | 500 | Database select failed |
| db.update_failed | 500 | Database update failed |
Дополнительно при маппинге доменных ошибок:
| code | http_status | message | источник |
|---|---|---|---|
| resource.not_found | 404 | Not found | mapper |
| system.unsupported | 501 | Unsupported | mapper |
Доменные коды (domain/errors)
Эти коды маппятся в AppError через mapper.go:
| domain code | Назначение | Маппинг в API |
|---|---|---|
| unauthorized | нет авторизации | auth.unauthorized (401) |
| forbidden | запрет доступа | auth.forbidden (403) |
| not_found | ресурс не найден | resource.not_found (404) |
| invalid | неверные данные | validation.invalid_input (422) |
| conflict | конфликт состояния | validation.conflict (409) |
| unsupported | не поддерживается | system.unsupported (501) |
| internal | внутренняя ошибка | system.internal (500) |
Примечание: точный HTTP‑статус выбирается маппером, исходя из доменного кода.
