Создание одного товара


Последовательность вызовов

Создать товар через Merchants API можно несколькими способами, ниже приведена одна из возможных последовательностей вызовов API.

  1. Авторизация и получение токена: GET https://api.ozon.ru/auth/token/merchants
    1. В заголовке запроса должны быть переданы идентификатор (x-ApplicationId), подпись запроса (x-Sign), номер версии (X-ApiVersion: 0.1).
    2. В ответе возвращается значение токена и время его жизни в секундах. Значение токена необходимо сохранить для использования при дальнейших обращениях к API.
  2. Вызов метода создания товара: POST https://api.ozon.ru/merchants/products
    1. В заголовке запроса должны быть переданы идентификатор (x-ApplicationId), полученный на предыдущем шаге токен (x-Token) и номер версии (X-ApiVersion: 0.1).
    2. В теле запроса передается информация о товаре. Обязательно должны быть указаны атрибуты MerchantSKU и ProductTypeID, а также данные в элементе SKU. Остальные элементы не являются обязательными для создания товара в системе, однако для выставления товара в продажу он обязательно должен иметь описание и, как минимум, заглавное изображение (элемент Picture внутри элемента Description).
    3. В ответе возвращается идентификатор запроса в очереди на обработку. Для контроля результата обработки запроса необходимо сохранить это значение (необязательно).
  3. Контроль статуса обработки запроса: GET https://api.ozon.ru/merchants/jobs/{id}
    1. В заголовке запроса должны быть переданы идентификатор (x-ApplicationId), токен (x-Token) и номер версии (X-ApiVersion: 0.1).
    2. В качестве {id} необходимо передать идентификатор запроса, полученный на предыдущем шаге.
    3. В ответе будет возвращен текущий статус обработки запроса (в элементе State) и признак наличия/отсутствия ошибок (элемент HasErrors).

Пример

Разберем описанные выше шаги на примере создания через Merchants API товара с типом "Кроссовки". 

1. Запрос на получение токена. 

Сначала необходимо рассчитать подпись для запроса. Для этого используется алгоритм расчета хэш-суммы SHA1 с использованием HMAC key.

Допустим, ApplicationId = superapp, а Secret Key = superkey, то есть ключом для подписи является значение "superkey". При этом необходимо получить токен для доступа к ресурсам сервиса https://api.ozon.ru/merchants/. Соответственно, URL, на который необходимо обратиться за токеном, будет выглядеть так: https://api.ozon.ru/auth/token/merchants Тогда значение на подпись равно "/auth/token/merchants", поскольку для подписи необходима только path-часть URL, а "https://api.ozon.ru" в подписи не участвует. Обратите внимание на наличие слэша в начале path-части URL и отсутствие слэша в конце этого значения. Рассчитываем: HMAC_SHA1("superkey", "/auth/token/merchants") = 62e37f6dc60083ba969f06ec2276a8682bec227b

Теперь формируем запрос к Auth API (авторизационный сервис):

URL
https://api.ozon.ru/auth/token/merchants
Method
GET
Headers
x-applicationid:superapp
x-sign:62e37f6dc60083ba969f06ec2276a8682bec227b
x-ApiVersion: 0.1
Content-Type: application/json
Payload
 

В ответе получаем значение токена и время его жизни в секундах:

{ "token": "9895DDA48379484ABC51A4B193CDAE04", "expiration": 600 }

Это значение необходимо сохранить и использовать при дальнейших обращениях к Merchant API. 

2. Вызов метода создания товара. 

Допустим, необходимо добавить товар из категории "Кроссовки" (ProductTypeId=252982129000). Обратите внимание, что для сервисов Auth API и Merchants API актуальными могут являться разные версии, соответственно, заголовок x-ApiVersion может различаться. Для создания товара необходимо полное описание товара (блок Description), а так же основные блоки SKU, Price, Availability. Вопрос подготовки данных с описанием товара для блока Description в данном сценарии не рассматривается. Этот вопрос будет рассматриваться в отдельной статье.

URL
https://api.ozon.ru/merchants/products
Method
POST
Headers
x-applicationid:superapp
x-token:9895DDA48379484ABC51A4B193CDAE04
x-ApiVersion: 0.1
Content-Type: application/json
Payload
{
  "SKU": {
    "Name": "Кроссовки Asics. Цвет: Белый. Размер 41.",
    "ManufacturerIdentifier": "T240N",
    "GrossWeight": 325
  },
  "Price": {
    "SellingPrice": 3590.0
  },
  "Availability": {
    "DaysForShippingDelay": 2,
    "SupplyState": "InStock",
    "SellingState": "ForSale"
  },
  "Description": 
      "<Description>
            <Name>Кроссовки Asics. Цвет: Белый. Размер 41.</Name>
            <Article>
                  <Article>T240N</Article>
                  <Model>
                         <Name>Asics T240N Кроссовки</Name>
                         <Brand>
                               <Name>Asics</Name>
                        </Brand>
                        <Sex>Муж.</Sex>
                        <Age>Взрослая</Age>
                        <Season>Демисезон</Season>
                        <Collection></Collection>
                        <Country></Country>
                        <Annotation>Универсальная модель с высоким уровнем амортизации, обеспечивающая непревзойденный комфорт, в категории
                 Амортизация.&lt;br/&gt;Эта версия имеет новый дизайн верха, выглядит эстетично и плотно прилегает к ноге.
</Annotation>                         <Comment></Comment>                         <Material>Натуральная кожа</Material>                         <SoleMaterial>Резина</SoleMaterial>                         <InnerMaterial>Текстиль</InnerMaterial>                         <Insole>Текстиль</Insole>                         <HeelHeight></HeelHeight>                         <PlatformHeight></PlatformHeight>                         <LegVolume></LegVolume>                         <Type>Кроссовки</Type>                         <Width></Width>                         <LegHeight></LegHeight>                         <ExternalID>UT000054870</ExternalID>                    </Model>                    <Color>                         <Name>белый</Name><Color>белый</Color>                    </Color>                    <Picture>http://lorempixel.com/401/401/?Rlhfosexek</Picture>                    <Images>http://lorempixel.com/317/337/?Xfhtuor</Images>                    <Images>http://lorempixel.com/348/338/?Xhfdmgwmsp</Images>                <ExternalID>UT000054870</ExternalID>                <Comment></Comment>             </Article> <Size>41</Size> </Description>",   "MerchantSKU": "TestSKU",   "ProductTypeID": "252982129000"
}

Поскольку реальное изменение товара выполняется асинхронно, в ответе возвращается идентификатор запроса в очереди на обработку. Если необходимо проконтролировать результат обработки запроса, необходимо сохранить это значение.

{ "JobId": "58011" }

3. Получение информации о результате обработки запроса.

 Для контроля успешности изменения данных о товаре имеет смысл запросить статус обработки задания. Для этого используется идентификатор запроса, возвращенный в ответе предыдущего шага.

URL
https://api.ozon.ru/merchants/jobs/58011
Method
GET
Headers
x-applicationid:superapp
x-token:9895DDA48379484ABC51A4B193CDAE04
x-ApiVersion: 0.1
Content-Type: application/json
Payload
 

В ответе получаем

{"JobInfo":{"Id":58011,"DateEnqueued":"2013-07-15T11:41:10.24","DateFinished":"0001-01-01T00:00:00","DateStarted":"0001-01-01T00:00:00","State":"Created","HasErrors":false,"EntityId":"TestSKU"},"ProcessingInfos":[]}

То есть обработка запроса завершилась (State: "Finished"), в процессе обработки ошибок не возникло (HasErrors: false), значит, товар создан успешно.