Ответы об ошибках#
| Статус HTTP | Значение | Рекомендуемое действие |
|---|---|---|
400 Bad Request | Тело запроса или параметры запроса недействительны. | Исправьте запрос перед повторной попыткой. |
401 Unauthorized | Учетные данные отсутствуют, недействительны, истекли или не активны. | Проверьте заголовки аутентификации или свяжитесь с Ideal House. |
403 Forbidden | Запрошенный shopId не связан с учетными данными. | Используйте Shop ID, назначенный для учетных данных. |
404 Not Found | Статус импорта или соответствующий товар недоступны. | Проверьте Shop ID и запрошенный идентификатор товара или SKU. |
409 Conflict | Для магазина активно другое задание импорта. | Дождитесь завершения текущего задания импорта. |
429 Too Many Requests | Частота запросов слишком высока. | Повторите попытку с экспоненциальной задержкой и случайным смещением. |
500 Internal Server Error | В сервисе произошла непредвиденная ошибка. | Повторите попытку с экспоненциальной задержкой. Если ошибка сохраняется, свяжитесь с Ideal House. |
502 Bad Gateway или 503 Service Unavailable | API временно недоступен. | Повторите попытку с экспоненциальной задержкой. |
Ошибка валидации может использовать следующий формат:
{
"message": ["shopId should not be empty"],
"error": "Bad Request",
"statusCode": 400
}
Текст в message может различаться. Для программной логики используйте код состояния HTTP и задокументированные поля ответа.
Рекомендации по повторным попыткам и восстановлению#
- Выполняйте опрос каждые 2–5 секунд, пока задание находится в состоянии
pendingилиrunning. - Для ответов
429,500,502и503используйте экспоненциальную задержку со случайным смещением и установите максимальное количество повторных попыток. - Не выполняйте автоматические повторные попытки для ответов
400,401или403без исправления запроса или учетных данных. - После
409дождитесь, пока активное задание не перейдет в состояниеcompletedилиfailed. - Если при отправке истекло время ожидания до получения ответа, запросите конечную точку статуса перед повторной отправкой партии.
- Повторная отправка того же товара с тем же SKU безопасна, так как импорт использует поведение «создать или обновить».
- После завершения задания с ошибками отдельных товаров отправьте новую партию, включающую только товары, обработка которых завершилась ошибкой.
- После ошибки на уровне задания товары, учтенные в
successCount, могли уже быть обновлены. Повторная отправка исходной партии с теми же SKU безопасна. - Удаление могло уже вступить в силу, даже если запрос возвращает
503. Повторная попытка того же запроса на удаление безопасна.
Конечная точка статуса предназначена для отслеживания активного или последнего задания, а не для постоянного журнала импорта. Храните отправленную партию, jobId, ответы о статусе и итоговый результат в собственной системе для сверки и поддержки.
Чек-лист для рабочей среды#
- Храните Client Secret в менеджере секретов или защищенной серверной среде.
- Используйте стабильный и уникальный SKU для каждого товара.
- Отправляйте не более 500 товаров за один запрос.
- Убедитесь, что URL изображений общедоступны и остаются доступными во время обработки.
- Явно устанавливайте
processImages: trueтолько в том случае, если требуется предварительная обработка изображений и вы принимаете связанную с ней плату за обработку в размере 1 кредита за изображение. В противном случае опустите это поле или установите значениеfalse. - Включайте разделение изображений напольного покрытия, только установив оба значения
processImagesиprocessFloorImagesвtrue. - Предоставляйте
name,imageUrl,productUrl,width,heightи поддерживаемыйproductTypeдля каждого товара. - Если поле предоставлено, установите
statusв значениеactive,inactive,out_of_stockилиinvalid. - Отправляйте размеры как положительные значения с поддерживаемой единицей измерения или опускайте единицу для использования дюймов; сохраняемые значения нормализуются в дюймы.
- Сохраняйте возвращенный
jobIdи сравнивайте его с последующими ответами о статусе. - Рассматривайте
completedсfailedCount > 0как частичный успех. - Используйте постраничную навигацию по списку товаров вместо запроса неограниченного каталога.
- Для операций удаления предоставляйте ровно одно из значений:
productIdилиsku. - Реализуйте ограниченные повторные попытки с экспоненциальной задержкой и случайным смещением.
По вопросам учетных данных, значений для подключения, сопоставления типов товаров или постоянных проблем с интеграцией обращайтесь к вашему представителю по интеграции Ideal House.