Довідник кодів помилок
Нижче перелік основних кодів помилок, які може повернути API.
Формат помилки:
{
"ok": false,
"error": {
"code": "SOME_CODE",
"message": "Людський текст",
"details": { "..." : "..." }
},
"meta": { "api_version": "0.1.0", "ts": "..." },
"id": "ваш-id"
}
Зауваження:
messageможе бути українською/російською (залежить від конкретного сценарію), алеcodeзавжди стабільний і саме його треба використовувати у вашій логіці.
Авторизація / доступ (401)
AUTH_REQUIRED (401)
Причина: не передали логін/пароль.
Як виправити: передайте:
- або Basic Auth (
Authorization) - або
auth.login/auth.passwordу JSON
AUTH_FAILED (401)
Причина: неправильний логін або пароль.
Як виправити: перевірте, що це ті самі дані, що і для онлайн статистики.
UNAUTHORIZED (401)
Причина: проблема з meta.user_card:
- не передали
meta.user_card - або в базі клієнта немає активного користувача з таким
Users.Card
Як виправити:
- передайте
meta.user_card - переконайтеся, що користувач існує і не видалений (
Users.Deleted=0)
Валідація запиту (400)
INVALID_JSON (400)
Причина: тіло запиту не є коректним JSON.
Як виправити: перевірте коми/лапки/екранування.
MISSING_METHOD (400)
Причина: не передали поле method.
Як виправити: додайте method.
INVALID_METHOD (400)
Причина: method має неправильний формат (не вистачає сегментів).
Як виправити: використовуйте формат scope.entity.operation, наприклад get.products.list.
INVALID_PARAMS (400)
Причина: params не є об’єктом.
Як виправити: передавайте params як JSON-об’єкт, наприклад {}.
INVALID_META (400)
Причина: meta не є об’єктом.
Як виправити: передавайте meta як JSON-об’єкт.
MISSING_DATA (400)
Причина: для set.* методів не передали params.data.
Як виправити: додайте params.data з полями, які потрібно записати.
EMPTY_DATA (400)
Причина: params.data є, але немає жодного дозволеного поля для запису.
Як виправити: передавайте тільки поля, які підтримує відповідний довідник.
MISSING_ID (400)
Причина: для get.*.get, set.*.update, set.*.delete не передали params.id.
Як виправити: додайте params.id (або PK-поле).
MISSING_TABLE (400)
Причина: для service.table.* не передали params.table.
Як виправити: передайте назву таблиці.
Дані не знайдені / відсутні (404)
NOT_FOUND (404)
Причина: запис не знайдено.
Як виправити: перевірте id або фільтри.
NO_DATA (404)
Причина: для звіту немає таблиць/даних у заданому діапазоні (наприклад, немає річних таблиць продажів).
Як виправити: змініть діапазон дат або перевірте, чи є відповідні таблиці у БД.
Конфлікти бізнес-логіки (409)
ALREADY_EXISTS (409)
Причина: спроба створити запис з PK, який уже існує (наприклад, товар з таким Code).
Як виправити: використайте інший PK або робіть update.
HAS_STOCK (409)
Причина: спроба видалити товар, у якого є залишок (Main.Quant != 0).
Як виправити: спочатку зведіть залишок до 0, потім видаляйте.
USED_IN_DRAFT_INVOICE (409)
Причина: товар використовується в непроведеній накладній.
Як виправити: проведіть/видаліть накладну або приберіть товар з неї.
CARD_HAS_DEBT (409)
Причина: дисконтна карта має борг у Discount_dolg.
Як виправити: погасіть борг або не видаляйте карту.
HAS_CHILDREN (409)
Причина: не можна видалити категорію, у якої є підкатегорії.
Як виправити: спочатку видаліть/перенесіть підкатегорії.
HAS_GOODS (409)
Причина: не можна видалити категорію, до якої прив’язані товари (Main.Cat).
Як виправити: перепризначте категорії товарам, потім видаляйте.
FORBIDDEN (409)
Причина: заборонена бізнес-операція (наприклад, видалення “(Не визначено)” з Ind=0).
Як виправити: не викликайте дію для службових записів.
Заборонено (403)
FORBIDDEN_TABLE (403)
Причина: спроба service.table.describe / service.table.count для таблиці, яка не у білому списку.
Як виправити: використовуйте лише таблиці зі списку service.schema.
Не підтримується / не реалізовано
NOT_SUPPORTED (400)
Причина: операція логічно не підтримується для цієї сутності (наприклад, restore там, де нема soft-delete).
NOT_IMPLEMENTED (501)
Причина: метод або звіт ще не реалізований у поточній версії API.
Як виправити: дочекайтеся реалізації або використайте інший метод.
Внутрішні помилки (500)
INTERNAL_ERROR (500)
Причина: неочікувана помилка на сервері.
Як діяти: збережіть id запиту і зверніться в підтримку.
DB_ERROR, DB_CONNECT_ERROR, MASTER_DB_ERROR, MASTER_DB_CONNECT_ERROR (500)
Причина: проблеми зі з’єднанням або помилка SQL.
Як діяти: перевірте доступність БД/мережі, або зверніться в підтримку.