кто сможет сделать?
необходимо создать API конектинг для магазина на PS 1.6.1.19 и маркетплейса wildberris
вот часть описания
Особенности работы системы:
Все карточки товаров которые были созданы в API
Для просмотра ссылки Войди или Зарегистрируйся будут видны методом /card/list
Карточки созданные ранее в API
Для просмотра ссылки Войди или Зарегистрируйся, не будут отображаться на текущий момент.
Тестового окружения для поставщиков не предусмотрено. Все карточки сразу создаются в продуктовой среде. В случае ошибок, для исправления которых нет методов в API можно обращаться в службу поддержки с темой Заявка на API Content
Аутентификация
Процедура аутентификации по номеру телефона состоит из 3-х шагов:
Шаг 1.
Необходимо запросить у пользователя номер телефона, а так же согласие на правила использования. Затем отправить эти данные методом login_by_phone (POST /api/v2/auth/login_by_phone) в формате:
Пример запроса:
POST
Для просмотра ссылки Войди или Зарегистрируйся
Content-Type: application/json
{
"phone": "79999999999",
"is_terms_and_conditions_accepted": true
}
Ответ:
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 01 Sep 2021 00:00:00 GMT
Content-Type: application/json
Content-Length: 149
Connection: keep-alive
Uber-Trace-Id: 0000000000000000:0000000000000000:0000000000000000:0
Strict-Transport-Security: max-age=31536000; preload;
X-Content-Type-Options: nosniff
{
"token": "AfvYxgf6o8X1C7akxfULQprf2iFGASdb_s9tRzTzdYgTY6iYghxW7Cq4wJbsMBk6T_o9W3TBA2p_VbogrjSJfXAi3rD44ng",
"till_next_request": 30000
}
Если формат данных корректен, то пользователю будет отправлена SMS/Push с кодом подтверждения владения номером. Помимо этого в ответе будет отправлен токен и время (в миллисекундах), в течение которого паспорт будет ожидать ввод кода подтверждения.
Шаг 2.
После ввода пользователем кода, пришедшего по SMS, он вместе с токеном должен быть передан методу login (POST /api/v2/auth/login)
Пример:
POST
Для просмотра ссылки Войди или Зарегистрируйся
Content-Type: application/json
{
"token": "AfvYxgf6o8X1C7akxfULQprf2iFGASdb_s9tRzTzdYgTY6iYghxW7Cq4wJbsMBk6T_o9W3TBA2p_VbogrjSJfXAi3rD44ng",
"options":{
"notify_code": "680014"
}
}
В ответ, если аутентификация прошла успешно, будет установлен secure httpOnly cookie WBToken с сессией пользователя.
WBToken AvvYxgfM6bv1C8yMwfULQqIylUTql5Zm3kndf2i8Z-7knuI6SD6o6onmUn4_KY2mx3ZW3ZZjnQ10QZ0vQ3TTLAue-keC
Шаг 3.
Для того чтобы не запрашивать каждый раз аутентификацию с помощью смс, можно запросить токен аутентификации. Для этого нужно отправить фоновый POST запрос по адресу /api/v2/auth/grant.
POST
Для просмотра ссылки Войди или Зарегистрируйся
Content-Type: application/json
Cookie: WBToken=AvvYxgfM6bv1C8yMwfULQqIylUTql5Zm3kndf2i8Z-7knuI6SD6o6onmUn4_KY2mx3ZW3ZZjnQ10QZ0vQ3TTLAue-keC
Пример ответа :
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 01 Sep 2021 00:00:00 GMT
Content-Type: application/json
Content-Length: 123
Connection: keep-alive
Uber-Trace-Id: 0000000000000000:0000000000000000:0000000000000000:0
Strict-Transport-Security: max-age=31536000; preload;
X-Content-Type-Options: nosniff
{
"token": "APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ"
}
В ответ будет получен токен в формате APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ
Полученный токен необходимо отправить в центральную инсталяцию паспорта. Для этого нужно произвести фоновый POST запрос на
Для просмотра ссылки Войди или Зарегистрируйся в формате:
POST
Для просмотра ссылки Войди или Зарегистрируйся
Content-Type: application/json
Cookie: WBToken=AvvYxgfM6bv1C8yMwfULQqIylUTql5Zm3kndf2i8Z-7knuI6SD6o6onmUn4_KY2mx3ZW3ZZjnQ10QZ0vQ3TTLAue-keC
{
"country": "RU",
"device": "MacBookPro16",
"token": "APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ"
}
На этом передачу знания об аутентификации можно считать успешно завершённой. Теперь с токеном аутентификации можно запрашивать обновление cookies:
Пример:
POST
Для просмотра ссылки Войди или Зарегистрируйся
Content-Type: application/json
{
"token": "APvYxgfUvMX1C5C9xfULQogsIQwqBj-i6GJLkzMyni0ybGkuOvkEr-4SW_al4P-xfkvs5_aYAbZAmByrArEr7NPd_aRSu_ReaZnvV_a-A5O-ZQ"
}
Описание процесса создания карточки товара
Данное API предназначено для работы по схеме “Со склада поставщика”.
Для работы с запросами требуется пройти аутентификацию пользователя.
Создание карточки/карточек товаров.
Для создания карточек существует 2 метода:
Create.
Для просмотра ссылки Войди или Зарегистрируйся
Описание: метод позволяет создать одну новую карточку товара. Возвращает созданную карточку.
Тело запроса выглядит следующим образом:
{
"id": 1, // ID запроса для сопоставления ответа отправленному запросу, необходимы уникальные идентификаторы.
// Для каждого запроса, рекомендуется избегать простых идентификаторов, таких как 1, 2, 3 и т.д.
"jsonrpc": "2.0", // Версия протокола. Всегда должна быть "2.0".
"params": { // Параметры.
"card": {
"countryProduction": "string", // Страна проиводитель.
"object": "string" // Категория товара (Jeans, Books и другие).
"addin": [ // Структура, содержащая характеристики карточки, общие для всех номенклатур и размеров.
{
"type": "string", // Название характеристики. Пример: "Composition".
"params": [ // Массив значений характеристики. Пример для 1 эл-та: "{"type": "Brand", "params": [{"value": "brandName"}]}".
{
"count": 0, // Численное значение характеристики.
"units": "string", // Единицы измерения характеристики ("см", "%" и другие).
"value": "string" // Текстовое значение характеристики ("brandName").
}
]
}
],
"nomenclatures": [ // Массив номенклатур товара.
{
"vendorCode": "string", // Артикул товара.
"variations": [ // Массив вариаций товара. Одна цена - одна вариация.
{
"barcode": "string", // Штрихкод товара.
"addin": [ // Структура, содержащая характеристики конкретной вариации товара.
{
"type": "string", // Название характеристики.
// Массив значений хар-ки. Пример: "{"type": "Size", "params": [{"value": "S"}]}".
"params": [ // У хар-ик, содержащих одно значение, массив будет содержать только 1 элемент.
{
"count": 0, // Численное значение характеристики.
"units": "string", // Единицы измерения характеристики.
"value": "string" // Текстовое значение характеристики.
}
]
}
]
}
],
"addin": [ // Структура, содержащая характеристики конкретной номенклатуры.
{
"type": "string", // Название характеристики.
// Массив значений характеристики. Пример: "{"type": "Color", "params": [{"value": "Красный"}]}".
"params": [ // У хар-ик, содержащих одно значение массив будет содержать только 1 элемент.
{
"count": 0, // Численное значение характеристики.
"units": "string", // Единицы измерения характеристики.
"value": "string" // Текстовое значение характеристики.
}
]
}
]
}
]
},
"supplierID": "00000000-0000-0000-0000-000000000000" // Идентификатор поставщика. Выдаётся при регистрации поставщика.
}
}
Пример запроса:
POST
Для просмотра ссылки Войди или Зарегистрируйся
Content-Type: application/json
Cookie: WBToken={{cookie}}
ADDIN
Addin - структура, хранящая в себе характеристики товаров, которые могут различаться у разных категорий товаров. Она состоит из следующих полей:
"type" - название характеристики товара
"params" - массив значений характеристики
params, в свою очередь, содержит следующие поля для более удобного хранения характеристик:
"value" - текстовое значение характеристики
"count" - числовое значение характеристики
"units" - единицы измерения характеристики
Все характеристики для определённой категории товаров можно получить, совершив следующий запрос:
GET
Для просмотра ссылки Войди или Зарегистрируйся
В результате в формате json вернётся список характеристик данной категории товаров (в примере используется категория Кроссовки) и требования к ним. Получение списка возможных категорий товаров будет описано ниже в пункте "Поиск ключа объекта". Некоторые характеристики требуется заполнять из словарных значений. Для получения списка возможных значений характеристик используется следующий запрос:
GET
Для просмотра ссылки Войди или Зарегистрируйся
В данном запросе имеется 3 параметра:
pattern позволяет указать шаблон для поиска значения характеристики;
lang - обязательный параметр, на данный момент используется только ru;
top - ограничение по количеству объектов, если не указано - 10 шт.
Получение карточки/карточек.
Для получения карточек существует 2 метода:
CardByID.
Для просмотра ссылки Войди или Зарегистрируйся
Описание: метод позволяет получить карточку поставщика с указанным ID.
Тело запроса выглядит следующим образом:
{
"id": 1,
"jsonrpc": "2.0",
"params": {
"cardID": "00000000-0000-0000-0000-000000000000", // ID карточки. Можно получить в ответе сервиса после создания карточки или методом "List", который рассмотрен ниже.
"supplierID": "00000000-0000-0000-0000-000000000000" // ID поставщика. Выдаётся при регистрации поставщика.
}
}
List.
Для просмотра ссылки Войди или Зарегистрируйся
Описание: метод позволяет получить список карточек поставщика по указанным параметрам. Фильтрация позволяет исключить из итогового списка карточек те, в которых указанное поле column содержит значение excludedValues. Поиск позволяет оставить в итоговом списке карточек только те, у которых поле column имеет значение search, если это число, если это строка, то значение поля начинается с search. Сортировка позволяет отсортировать список по полю column в порядке order. query содержит значения limit и offset, который указывают соответственно на макисмальное количество карточек, которые надо вывести и на количество карточек, которые с самого начала списка нужно пропустить.
Наименования полей соответствуют пути до этого поля через точку. Так, например, чтобы добраться до поля barcode, понадобится путь nomenclatures.variations.barcode. Исключения - параметры, лежащие внутри структуры addin. Чтобы добраться до них, требуется в пути после addin через точку указать type этого параметра. Например, чтобы получить brand, потребуется путь addin.Brand. Brand написан с большой буквы, так как type был написан тоже с большой.
Тело запроса выглядит следующим образом:
{
В результате вышеприведённого запроса нам вернутся все карточки поставщика 00000000-0000-0000-0000-000000000000, среди которых не будет карточек с красными цветами и ноутбуков, у всех карточек будут товары с размером “S”. И все эти карточки будут отсортированы по дате создания в порядке возрастания (сначала старые).
Описание процесса загрузки файлов
Для работы с запросами требуется пройти аутентификацию пользователя.
Files.
Для просмотра ссылки Войди или Зарегистрируйся
Заголовок должен содержать следующие поля:
X-File-ID – сгенерированный идентификатор файла в формате uuid v4, его в дальнейшем и надо передавать в карточку товара. Идентификатор поставщик генерирует своими силами.
Cookie – данные полученные полученная после авторизации (пример WBToken=AvvYxgfMn7P0C8zCuPQLQhkkkt-C…)
X-Supplier-ID – Supplier-ID в формате uuid который был выдан при регистрации
В тело запроса передаётся файл.
Пример запроса:
POST
Для просмотра ссылки Войди или Зарегистрируйся
Cookie: WBToken={{cookie}}
Content-Type: multipart/form-data; boundary=boundaryImage
X-File-Id: 00000000-0000-0000-0000-000000000001
X-Supplier-ID: 00000000-0000-0000-0000-000000000001
--boundaryImage
Content-Disposition: form-data; name="uploadfile"; filename="photo.jpg"
bytes photo.jpg
--boundaryImage--
Пример CURL запроса который можно использовать для загрузки файла:
$ curl -H "X-File-ID: 00000000-0000-0000-0000-000000000001" -H "Cookie: WBToken=AvvYxgfMn7P0C8zCuPQLQhkwRa6AidtSA" -H "X-Supplier-ID: 00000000-0000-0000-0000-000000000001" -X POST -v "
Для просмотра ссылки Войди или Зарегистрируйся" -F "uploadfile= @ Downloads/photo.jpg"
Добавление файла в карточку товара
Для добавления файла надо создать или обновить карточку товара
Create.
Для просмотра ссылки Войди или Зарегистрируйся
Update.
Для просмотра ссылки Войди или Зарегистрируйся
Сервиc конфигурации предметов и характеристик объекта.
Требуется для того чтобы сконфигурировать карточку товара
Для просмотра ссылки Войди или Зарегистрируйся
Поиск ключа объекта
Для осуществления поиска ключа следует выполнить GET запрос например:
Для просмотра ссылки Войди или Зарегистрируйся
В полученном ответе требуется обратить внимание на столбик с названиями на русском языке. Именно они являются названиями категорий товаров и должны использоваться при создании карточек в поле object.
Получение списка доступных справочников
Метод GET:
Для просмотра ссылки Войди или Зарегистрируйся
Получение данных справочника
Пример получения значения из справочника "/options", для получения данных следует выполнить GET запрос:
Для просмотра ссылки Войди или Зарегистрируйся
Как и в случае с категориями товаров, из ответа данного запроса требуется извлечь поля translate и использовать для создания карточки.
Получение всех данных справочника
Пример получения значения из справочника "/options", для получения данных следует выполнить GET запрос:
Для просмотра ссылки Войди или Зарегистрируйся