К содержимому
TURANYOLРазработчикам

Коды ошибок

API никогда не возвращает локализованный текст. Любая ошибка — JSON-конверт со стабильным машиночитаемым кодом; код вы сопоставляете со своими строками.

Конверт

statusCode повторяет HTTP-статус, code — стабильный идентификатор, message — англоязычная подсказка разработчику, которая может измениться в любой момент, а details несёт структурированный контекст для части кодов (например, каких товаров не хватило).

application/json
{
  "statusCode": 409,
  "code": "ERR_OUT_OF_STOCK",
  "message": "insufficient stock for 2 items",
  "details": { "items": [{ "productId": "…", "requested": 5, "available": 2 }] }
}

Сопоставляйте по code, никогда по message

message написан для человека, читающего лог. Он не входит в контракт и не переводится; code — входит.

Каталог

Кодов: 98

Общие

Общие
КодЗначение
ERR_VALIDATIONТело запроса или параметры не прошли валидацию; details перечисляет проблемные поля.
ERR_BAD_REQUESTЗапрос сформирован неверно так, что валидация не может это описать.
ERR_UNAUTHORIZEDУчётные данные не переданы или access-токен истёк.
ERR_FORBIDDENАутентификация прошла, но действие не разрешено.
ERR_NOT_FOUNDРесурс не существует или вам не виден.
ERR_CONFLICTЗапись конфликтует с параллельной операцией; повторите запрос.
ERR_RATE_LIMITEDСлишком много запросов по этому ключу. Подождите столько секунд, сколько в Retry-After.
ERR_INTERNALНеожиданная ошибка сервера. Можно безопасно повторить с задержкой.
ERR_NETWORKЗапрос не дошёл до API (сеть, DNS или CORS).
ERR_UNKNOWNНераспознанная ошибка; посмотрите сырой ответ.

Аутентификация и учётные записи

Аутентификация и учётные записи
КодЗначение
ERR_OTP_INVALIDОдноразовый код не совпадает.
ERR_OTP_EXPIREDОдноразовый код истёк; запросите новый.
ERR_OTP_RATE_LIMITEDСлишком много запросов кода для этого номера или адреса эл. почты.
ERR_OTP_TOO_MANY_ATTEMPTSСлишком много неверных кодов; запросите новый.
ERR_USER_BLOCKEDУчётная запись заблокирована; все её токены отклоняются.
ERR_STAFF_PHONE_EXISTSПользователь с таким номером телефона уже существует.
ERR_PHONE_REQUIREDУ этой учётной записи нет контактного номера телефона — добавьте его перед оформлением заказа.
ERR_CONTACT_TAKENЭтот номер телефона или адрес эл. почты уже принадлежит другой учётной записи.
ERR_CHANNEL_DISABLEDЭтот способ входа здесь отключён — используйте другой.

Партнёрский API, ключи и вебхуки

Партнёрский API, ключи и вебхуки
КодЗначение
ERR_API_KEY_INVALIDЗаголовок X-Api-Key отсутствует или не совпадает ни с одним ключом.
ERR_API_KEY_REVOKEDКлюч отозван либо его льготный период после ротации истёк.
ERR_API_KEY_SCOPEКлюч валиден, но не содержит скоуп, который нужен этому эндпоинту.
ERR_API_KEY_ENVIRONMENTSandbox-ключ отправлен в боевой API или наоборот.
ERR_API_KEY_LIMITУ вас уже максимальное количество активных ключей.
ERR_WEBHOOK_URL_INVALIDURL эндпоинта должен быть https (http допустим только для localhost вне продакшена).
ERR_WEBHOOK_LIMITУ этого ключа уже максимальное количество вебхуков.
ERR_WEBHOOK_DISABLEDЭтот вебхук отключён — включите его перед отправкой теста.
ERR_PARTNER_ORDER_NOT_ASSIGNEDЗаказ не назначен вашему партнёрскому аккаунту.

Платежи

Платежи
КодЗначение
ERR_PAYMENT_METHOD_UNAVAILABLEЭтот способ оплаты отключён в данной среде.
ERR_PAYMENT_PROVIDER_UNAVAILABLEПровайдер карт не настроен или не ответил.
ERR_PAYMENT_INTENT_INVALID_STATEПлатёжное намерение не в том статусе, чтобы выполнить это действие.
ERR_PAYMENT_SIGNATURE_INVALIDПодпись вебхука провайдера не прошла проверку.
ERR_PAYMENT_ALREADY_PAIDЗаказ уже оплачен.

Заказы

Заказы
КодЗначение
ERR_NO_DEFAULT_ADDRESSУ клиента нет адреса доставки по умолчанию.
ERR_OUT_OF_STOCKОдна или несколько позиций превышают остаток; details их перечисляет.
ERR_PRODUCT_UNAVAILABLEТовар в заказе больше нельзя купить.
ERR_OUT_OF_ZONEАдрес доставки вне всех активных зон доставки.
ERR_ORDER_NOT_CANCELLABLEЗаказ прошёл стадию, на которой его можно отменить.
ERR_ORDER_NOT_RATABLEОценить можно только доставленный заказ.
ERR_ALREADY_RATEDУ этого заказа уже есть оценка.
ERR_INVALID_TRANSITIONМашина состояний заказа отклоняет переход из текущего статуса.
ERR_IDEMPOTENCY_KEY_REQUIREDДля этой записи нужен заголовок Idempotency-Key.
ERR_IDEMPOTENCY_CONFLICTТот же Idempotency-Key использован с другим телом запроса.
ERR_ORDER_NOT_ACCEPTABLEЗаказ не в том статусе, когда продавец может его принять или отклонить.
ERR_ORDER_ALREADY_CLAIMEDЭтот заказ уже взял другой сборщик.
ERR_ORDER_NOT_CLAIMEDЗаказ не закреплён за вами.
ERR_ORDER_NOT_PACKABLEЗаказ не в том состоянии, чтобы его упаковать, переупаковать или напечатать документы.

Каталог и продавцы

Каталог и продавцы
КодЗначение
ERR_VENDOR_NOT_FOUNDПрофиль продавца для этого пользователя или id не найден.
ERR_ITEMS_ALREADY_DECIDEDЭти позиции заказа уже приняты или отклонены.
ERR_PRODUCT_NOT_OWNEDТовар принадлежит другому продавцу.
ERR_CATEGORY_INVALIDИдентификатор категории неизвестен или это не конечная категория.
ERR_SKU_CONFLICTСгенерированный SKU совпал с существующим.
ERR_MEDIA_UNAVAILABLEОбъектное хранилище не настроено или недоступно.
ERR_MEDIA_INVALIDЗагрузка отклонена: неверный тип содержимого или слишком большой размер.
ERR_CATEGORY_NOT_EMPTYВ категории ещё есть товары или подкатегории.
ERR_CATEGORY_CYCLEПеренос сделал бы категорию собственным предком.

Диспетчеризация и доставка

Диспетчеризация и доставка
КодЗначение
ERR_PICKUP_INCOMPLETEСобраны ещё не все принятые позиции.
ERR_ITEM_NOT_PICKABLEЭта позиция не в том статусе, чтобы её собрать.
ERR_DRIVER_NOT_FOUNDПрофиль водителя для этого пользователя не найден.
ERR_DRIVER_OFFLINEВодитель не в сети, поэтому партию предложить нельзя.
ERR_DRIVER_BUSYУ водителя уже есть активная партия.
ERR_BATCH_NOT_OFFEREDПартия сейчас не предложена этому водителю.
ERR_OFFER_EXPIRED90-секундное окно принятия истекло.
ERR_BATCH_NOT_ASSIGNEDПартия не назначена этому водителю.
ERR_SCAN_INCOMPLETEСканирующий шлюз не выпустил в рейс: отсканированы не все позиции.
ERR_SCAN_WRONG_BATCHЭтот штрихкод принадлежит позиции из другой партии.
ERR_STOP_ALREADY_RESOLVEDТочка уже доставлена или отмечена как неудачная.
ERR_BATCH_INCOMPLETEВ партии остались нерешённые точки.
ERR_COD_VARIANCE_NOTE_REQUIREDСобранная наличность отличается от ожидаемой; нужен комментарий.
ERR_BATCH_INVALID_TRANSITIONМашина состояний партии отклоняет этот переход.
ERR_ROUTE_UNAVAILABLEПровайдер маршрутов недоступен, и запасной способ не смог построить маршрут.
ERR_DELIVERY_RETRY_LIMITПо этому заказу уже исчерпаны повторные попытки.
ERR_ITEM_NOT_EXPECTEDОтсканированная позиция здесь не ожидается: заказ отменён или продавец её отклонил.
ERR_INTAKE_INCOMPLETEПриёмку нельзя завершить — часть принятых позиций заказа ещё не отсканирована на хабе.
ERR_PARCEL_NOT_IN_BATCHКод посылки не относится ни к одному заказу загружаемого рейса.
ERR_WRONG_STOP_PARCELОтсканированная у двери посылка относится к другой точке маршрута; как доставка она не записывается.
ERR_PARCEL_NOT_LOADEDЭту посылку не загружали в фургон этой партии, поэтому передать её у двери нельзя.
ERR_OUTSIDE_GEOFENCEПозиция дальше от адреса точки, чем допускает геозона доставки, и причина не указана.
ERR_DELIVERY_SCAN_INCOMPLETEПрежде чем отметить доставку, у двери нужно отсканировать каждую посылку точки.
ERR_LOCATION_REQUIREDМаршрут нельзя начать без свежего онлайн-сигнала присутствия водителя.

Поддержка, возвраты и возвраты товара

Поддержка, возвраты и возвраты товара
КодЗначение
ERR_TICKET_CLOSEDТикет поддержки закрыт и не принимает новых сообщений.
ERR_TICKET_NOT_ASSIGNABLEТикет нельзя назначить этому агенту.
ERR_CSAT_NOT_ALLOWEDОценку удовлетворённости можно оставить только по решённому или закрытому тикету.
ERR_CSAT_ALREADY_GIVENПо этому тикету уже есть оценка удовлетворённости.
ERR_REFUND_AMOUNT_EXCEEDSВозврат превысил бы оплаченную или уже возвращённую по заказу сумму.
ERR_REFUND_INVALID_STATEВозврат не в том статусе, чтобы выполнить это действие.
ERR_REFUND_ORDER_NOT_ELIGIBLEЗаказ в текущем статусе не подлежит возврату средств.
ERR_RETURN_NOT_ELIGIBLEЗаказ в текущем статусе не подлежит возврату товара.

Администрирование платформы

Администрирование платформы
КодЗначение
ERR_DEPENDENCY_UNAVAILABLEВнутренний сервис (Redis) был недоступен — запрос не применён. Можно безопасно повторить с задержкой.
ERR_ZONE_INVALID_POLYGONПолигон зоны доставки не является корректным замкнутым контуром.
ERR_SETTLEMENT_EXISTSРасчёт для этого продавца и периода уже существует.
ERR_SETTLEMENT_INVALID_STATEРасчёт не в том статусе, чтобы выполнить это действие.
ERR_SETTLEMENT_PERIOD_OPENРасчётный период ещё не закончился.
ERR_SETTING_UNKNOWNНастройки платформы с таким ключом нет.
ERR_SETTING_INVALIDЗначение настройки вне допустимого диапазона или типа.
ERR_COUPON_INVALIDКод купона не применяется — неизвестен, истёк, ещё не начался, исчерпан лимит использований или не достигнута минимальная сумма заказа.
ERR_COUPON_CODE_TAKENКупон с таким кодом уже существует; коды уникальны.
ERR_LOYALTY_INSUFFICIENTЗаказ пытается списать больше баллов Turan, чем есть на счёте.