[PATCH] Изменение продукта

PATCH /v1/product/[product id]

Запрос позволяет изменить свойства продукта.

[product id]
required
Идентификатор продукта.
Вы можете получить его в ответ на запросы: Пример передачи параметра в URL: /v1/product/123456
content-type
string
required
MIME-тип данных в теле запроса.
Должен быть равен "application/json".
AuthorizationJWT
required
Авторизационный токен.
  • Формат значения: Bearer [token]
  • Вместо [token] подставьте значение token, полученное в ответ на запрос к Authentication API.
[...]
Список допустимых параметров такой же, как в запросе на создание продукта. Требования к параметрам аналогичны, за исключением:
  • family_name - не обязательный параметр
  • name - не обязательный параметр
  • variants - не обязательный параметр

Обратите внимание, для следующих параметров происходит полное обновление всех вложенных элементов, если параметр передан в запросе:

Для этих параметров:

  • Если параметр передан, то все (а не только переданные) соответствующие ему вложенные данные будут полностью перезаписаны.
  • Если параметр отсутствует в запросе на обновление, то ранее заполненные значения не изменятся.

Например:

  • При создании продукта было передано поле localization_values и в нем данные для локали cs_CZ.
  • В запросе на обновление было передано поле localization_values и в нем только данные для локали en_EN.
  • Результат:
    • В продукте останутся только данные для en_EN.
    • Данные для cs_CZ будут удалены.

В этом примере, чтобы добавить перевод для другого языка к имеющемуся, вам необходимо передать в запросе данные для всех локалей, для которых должен быть перевод (в приведенном примере это cs_CZ и en_EN).

{
  "family_name": "Демо-продукт",
  "name": "Лицензия на 1 год",
  "is_publish": true,
  "image_url": "https://my-shop.com/images/product-1234.png",
  "description": "<p><strong>Тестовый продукт</strong></p>",
  "comment_for_manager": "Комментарий для менеджера",
  "url_to_instructions": "https://www.google.com",
  "url_to_download": "https://www.google.com",
  "business_segment": "b2c",
  "available_for_sale": "all",
  "is_service": true,
  "license_type": "new",
  "licence_term": "P1Y",
  "device_quantity": 1,
  "renew_settings": {
    "product_id_for_renew": [
      4645130,
      4645131,
      4645131
    ],
    "renew_ar": {
      "enable": true,
      "required": false
    },
    "renew_pmr": true,
    "renew_email": false
  },
  "localization_values": {
    "en_EN": {
      "family_name": "Test product",
      "name": "1 PC/1 year",
      "description": "<p><strong>Test product</strong> for test purchase</p>",
      "comment_for_cart": "This is a test purchase.",
      "comment_for_product_top": "The license is valid for 1 year.",
      "comment_for_product_middle": "New version of the test product.",
      "comment_for_product_for_AR": "The license is renewed automatically.",
      "comment_for_product_for_MR": "You will need to manually renew your license after 1 year.",
      "comment_for_product_bottom": "This license is not for sale or activation outside of the country."
    }
  },
  "display_settings": {
    "hide_name": true,
    "hide_item_quantity": true
  },
  "variants": [
    {
      "vendor_code": "1",
      "sku": "111",
      "from": 1,
      "to": 5,
      "price": {
        "RUB": {
          "currency": "USD",
          "price": "99.99"
        }
      }
    },
    {
      "vendor_code": "1",
      "sku": "111",
      "from": 6,
      "price": {
        "RUB": {
          "currency": "USD",
          "price": "80.99"
        }
      }
    }
  ],
  "cross_sell": {
    "type": "add_to_basket",
    "status": true,
    "date_from": "2020-10-15 14:18:00",
    "date_to": "2020-10-25 14:18:00",
    "removal_available": true,
    "quantity_change_available": false,
    "product_id": [
      4645130,
      4645131
    ]
  },
  "typo": {
    "status": true,
    "date_from": "2020-10-15 14:18:40",
    "date_to": "2020-10-25 14:18:40",
    "localization_values": {
      "ru_RU": {
        "comment_for_typo": "Специальное предложение"
      },
      "en_EN": {
        "comment_for_typo": "Special offer"
      }
    },
    "product_id": [
      4645130,
      4645131
    ]
  },
  "license_data": {
    "ru_RU": {
      "customer_notification": "Ключ активации: {KEY}"
    },
    "en_EN": {
      "customer_notification": "Key: {KEY}"
    }
  },
  "software_registry": {
    "status": true,
    "date": "2020-10-15",
    "url": "https://reestr.digital.gov.ru/reestr/111",
    "registration_number": 111
  }
}

Если вы хотите при обновлении удалить какие-либо свойства продукта:

  • Для параметров, перечисленных в предыдущем разделе, происходит полная замена ранее переданных данных на новые значения, если параметр присутствует в запросе. При этом:
    • Если вы хотите заменить все старые значения на новые, то достаточно просто передать новые значения
    • Если нужно удалить настройки продления, то передайте false в соответствующих параметрах (renew_settings.renew_ar.enable, renew_settings.renew_pmr, renew_settings.renew_email). При этом будут автоматически удалена привязка продуктов для продления (renew_settings.product_id_for_renew). Сами продукты для продления останутся в системе
    • Если нужно настройкам отображения (display_settings) продукта вернуть значения по умолчанию, то передайте параметр с пустым значением ({})
    • Если нужно удалить настройки дополнительных продуктов / TYPO-предложения, то передайте статус false в соответствующих объектах (cross_sell.status, typo.status),
    • Если нужно удалить локализованные значения (localization_values), то передайте пустые массивы данных для соответствующего языка
    • Удалить все цены у продукта нельзя
    • Удалить данные для электронной доставки продукта (license_data) нельзя, если вы хотите перестать использовать индивидуальные значения для продуктов и вернуться к настройкам по умолчанию, то обратитесь в службу поддержки 
    • При удалении данных о включении продукта в реестр российского ПО нужно передать только вложенный параметр software_registry.status со значением false
  • Для удаления описания продукта, URL инструкции, URL загрузки и т.п. значений, передайте их пустыми (""). На текущий момент не поддерживается удаление изображения продукта, обратитесь в службу поддержки, если нужно его удалить
{
  "description": "",
  "comment_for_manager": "",
  "url_to_instructions": "",
  "url_to_download": "",
  "licence_term": "",
  "localization_values": {
    "en_EN": {}
  },
  "display_settings": {},
  "renew_settings": {
    "product_id_for_renew": [],
    "renew_ar": {
      "enable": false,
      "required": false
    },
    "renew_pmr": false,
    "renew_email": false
  },
  "typo": {
    "status": false
  },
  "cross_sell": {
    "status": false
  },
  "software_registry": {
    "status": false
  }
}

В ответ на запрос вы получите код ответа сервера, соответствующий результату обработки.
В зависимости от кода в теле ответа могут присутствовать дополнительные параметры.

При успешной обработке запроса вы получите код ответа сервера HTTP/1.1 200 OK

В случае ошибки при обработке запроса вы получите код ответа сервера, соответствующий результату обработки.
В зависимости от кода в теле ответа могут присутствовать дополнительные параметры.

Код ответа сервера Описание
HTTP/1.1 400 Bad Request Запрос не валиден (ошибка в параметрах; не переданы необходимые данные и т.п.).
В теле ответа будет передан дополнительный код ошибки (один или несколько).
HTTP/1.1 401 Unauthorized Неуспешная аутентификация.
В теле ответа будет передан дополнительный код ошибки (один или несколько). 
HTTP/1.1 404 Not found Неверный URL запроса или продукт не найден. Проверьте адрес запроса. В теле ответа может быть передан дополнительный код ошибки (один или несколько). 
HTTP/1.1 500 Request Error Ошибка на стороне сервера. Повторите запрос позднее или обратитесь в службу поддержки.

Справочник этих ошибок совпадает с ошибками при создании продукта.

Справочник этих ошибок одинаковый для всех API, которые используют авторизацию по токену.

Error Message Описание
Если хотя бы одна ошибка из списка ниже найдена, то она возвращается в ответе на запрос, остальные ошибки не проверяются.
11200 Product not found Запрос не может быть выполнен. Продукт с переданным id не найден или у вас нет доступа к нему. 
errors
array [objects]
required
Список ошибок.
errors / [error object]
/
error
number
required
Код ошибки.
errors / [error object]
/
message
string
Описание ошибки.
{
 "errors": [{
   "error": 1010,
   "message": "Invalid field value: name"
  }, {
   "error": 1010,
   "message": "Invalid field value: family_name"
  }
 ]
}