[PATCH] Изменение промоакции
Описание запроса
PATCH /v1/promotion/[promotion id]
Запрос позволяет изменить свойства промоакции.
В том числе изменять:
- Тип промоакции
- Скидочную модель
- Для промоакций типа "coupon" изменять список привязанных промокодов и их тип
Ограничение: доступны только промоакции, созданные под тем же пользователем API (username), от лица которого отправляется PATCH запрос.
Данные для отправки запроса
- Endpoints URL:
- Боевая среда: https://api.ecommerce.softline.com/v1/promotion
- Тестовая среда: https://api.ecommerce.softline.com.demoslweb.com/v1/promotion
- Метод: PATCH
- Формат: JSON
- Авторизация: с помощью токена
Вы можете получить его в ответ на запросы: Пример передачи параметра в URL: /v1/promotion/123456
- Формат значения:
Bearer [token]
- Вместо [token] подставьте значение token, полученное в ответ на запрос к Authentication API
Варианты значения:
- coupon - скидка применится к продукту только после активации промокода в корзине.
- discount - скидка применится к продукту автоматически сразу при его добавлении в корзину.
- Не более 255 символов.
- Если параметр не передан, то текущее название не изменится.
Варианты значений:
- true - активна.
- false - деактивирована.
- Формат даты: YYYY-MM-DDThh:mm:ss±hh:mm.
При обработке дата будет пересчитана по часовому поясу сервера и сохранена в промоакцию. При последующих запросах на получение данных промоакции дата будет возвращена в часовом поясе сервера. - Если параметр передан, то должно выполняться условие: date_from ≤ date_to.
- Если параметр не передан, то текущая дата начала действия промоакции не изменится.
- Формат даты: YYYY-MM-DDThh:mm:ss±hh:mm.
При обработке дата будет пересчитана по часовому поясу сервера и сохранена в промоакцию. При последующих запросах на получение данных промоакции дата будет возвращена в часовом поясе сервера. - Если параметр передан, то должно выполняться условие: date_from ≤ date_to.
- Если параметр не передан, то текущая дата окончания действия промоакции не изменится.
- Если "promotion_type":"discount", то данный параметр не должен быть передан.
- Если "promotion_type":"coupon":
- Если вы меняете тип промоакции с discount на coupon в этом запросе, то данный параметр является обязательным - *.
- Если на текущий момент промоакция имеет тип "coupon" и параметр не передан, то данные промокодов в текущей промоакции не изменятся.
- Если на текущий момент промоакция имеет тип "coupon" и параметр передан, то все значения вложенных параметров будут полностью обновлены новыми значениями. Если какой-то вложнный параметр не передан, то его значение будет изменено на значение по умолчанию, если оно предусмотрено.
- Если параметр передан, то требования к заполнению вложенных параметров такие же, как при создании промоакции.
- Если "promotion_type":"coupon", то данный параметр не должен быть передан.
- Если "promotion_type":"discount":
- Если вы меняете тип промоакции с coupon на discount в этом запросе, то данный параметр является обязательным - *.
- Если на текущий момент промоакция имеет тип "discount" и параметр не передан, то данные скидок в текущей промоакции изменятся.
- Если на текущий момент промоакция имеет тип "discount" и параметр передан, то все значения вложенных параметров будут полностью обновлены новыми значениями. Если какой-то вложнный параметр не передан, то его значение будет изменено на значение по умолчанию, если оно предусмотрено.
- Если параметр передан, то требования к заполнению вложенных параметров такие же, как при создании промоакции.
Пример запроса
Предположим, вы создали бессрочную промоакцию с типом discounts и общей скидкой на все ваши продукты.
Запрос на создание: POST /v1/promotion/
{
"promotion_type": "discount",
"promotion_name": "Black Friday",
"discounts": {
"discount_percent": "50"
}
}
Чтобы ограничить период проведения промоакции, и сделать так, чтобы промоакция действовала только на выбранный продукт, отправьте запрос на изменение:
PATCH /v1/promotion/123456
{
"promotion_type": "discount",
"date_to": "2022-01-10T09:16:35+03:00",
"discounts": {
"product_id": [22222],
"discount_percent": "50"
}
}
Обратите внимание:
- В запросе должен присутствовать параметр с типом промоакции (promotion_type).
- В объекте discounts переданы все параметры, в том числе размер скидки, который не меняется. Так как, если в запросе присутствует объект discounts (или coupons), то все вложенные параметры будут обновлены. Если какой-либо необязательный параметр не будет передан, то он будет пересохранен с значением по умолчанию.
Посмотрите дополнительные примеры изменения промоакции.
Ответ на запрос
В ответ на запрос вы получите код ответа сервера, соответствующий результату обработки.
В зависимости от кода в теле ответа могут присутствовать дополнительные параметры.
Положительный ответ
При успешной обработке запроса вы получите код ответа сервера HTTP/1.1 200 OK.
Положительный ответ возвращается только если запрос был полностью выполнен, в том числе:
- Если в промоакции используются промокоды, и их список был изменен, то:
- Все новые промокоды были успешно созданы
- Все ранее присутствующие промокоды были успешно обновлены
- Все промокоды, которые не были переданы в запросе, были удалены
Если удаляемый промокод уже был применен в заказе, то он не удаляется из заказа (независимо от статуса заказа)
Например, если был создан заказ с применением скидки по промокоду, заказ еще не оплачен, и промокод после этого был удален из промоакции, то скидка в заказе не изменится. Заказы с удаленными промокодами учитываются в статистике промоакции
- Если промоакция должна действовать только на определенные продукты, то они все найдены и принадлежат вам
Ответ об ошибке
В случае ошибки при обработке запроса вы получите код ответа сервера, соответствующий результату обработки.
В зависимости от кода в теле ответа могут присутствовать дополнительные параметры.
Справочник HTTP-кодов ответа сервера при ошибке
Код ответа сервера | Описание |
HTTP/1.1 400 Bad Request | Запрос не валиден (ошибка в параметрах; не переданы необходимые данные и т.п.). В теле ответа будет передан дополнительный код ошибки (один или несколько). |
HTTP/1.1 401 Unauthorized | Неуспешная аутентификация. В теле ответа будет передан дополнительный код ошибки (один или несколько). |
HTTP/1.1 404 Not found | Неверный URL запроса или промоакция не найдена. Проверьте адрес запроса. В теле ответа может быть передан дополнительный код ошибки (один или несколько). |
HTTP/1.1 500 Request Error | Ошибка на стороне сервера. Повторите запрос позднее или обратитесь в службу поддержки. |
Справочник дополнительных кодов ошибок для HTTP 400
Справочник этих ошибок совпадает с ошибками при создании промоакции.
Справочник дополнительных кодов ошибок для HTTP 401
Справочник этих ошибок одинаковый для всех API, которые используют авторизацию по токену.
Справочник дополнительных кодов ошибок для HTTP 404
Error | Message | Описание |
Если хотя бы одна ошибка из списка ниже найдена, то она возвращается в ответе на запрос, остальные ошибки не проверяются. | ||
11200 | Promotion not found: [id промоакции] | Запрос не может быть выполнен. Промоакция с переданным id не найдена или у вас нет доступа к ней (в том числе, если промоакция была создана под другим api-пользователем). В ошибке будут передан идентификатор промоакции, не прошедший проверку. |
Пример ответа об ошибке
{
"errors": [{
"error": 11010,
"message": "Invalid field value: date_from"
}, {
"error": 11010,
"message": "Invalid field value: product_id"
}
]
}