Зачем?
Чтобы зарабатывать с помощью ОбоиРу. На основе API создаётся витрина и осуществляются заказы товара со складов ОбоиРу. Вам не нужен ассортимент для того, чтобы продавать. Витрина это сайт, мобильное приложение, е-киоск…
Как работает?
- Для начала Вам нужно получить в shop.oboi.ru myToken - это ключ для работы с API
- Получите Товар - метод может отдавать отдельные списки для добавления и обновления
- Нарисуйте своё меню - всё продумано по категориям, производителям и коллекциям
- Загрузите товар - это просто. обновляться будет легче ;)
- Подтяните остатки и цены - обновляйте когда захотите, а ещё желающим прилетает webhook
- Контролируйте заказы - или shop.oboi.ru или напишите себе свою приколюху
Что там с деньгами?
Выручку можно посмотреть с помощью метода Заказы или в shop.oboi.ru
Подтвердить оплату заказа и необходимость доставки там же.
В качестве авторизации используется заголовок запросов ключа aut со значением myToken - это ключ к API системе. Он генерируется самостоятельно в личном кабинете торговой точки.
Заголовок нужно добавлять к каждому, каждому, каждому при каждому запросу.
headers = {"aut": "{myToken}"}
r = requests.get(url, headers=headers)
Все товары одним взмахом - вжух… Подумай над тем, что тебе возможно пригодятся методы обновления товаров по изменению за период времени или по списку товаров в твоём приложении ;)
Responses
Body
{"response": {
"menu": [
{"name": "{menuSection1}", "status": true},
....],
"products": [
{"article": "{article1}",
"section": "{menuSection1}",
"vendor": "{vendor1}",
"vendorSearch": "{vendorSearch1}",
"collection": false,
"status": true,
"frontal" : {"width" : 700,
"height" : 1000,
"size" : "700x1000",
"main" : "https://..../api2/{vendor}/{article1}/main/frontal.jpg",
"{size1}" : "https://..../api2/{vendor}/{article1}/{size1}/frontal.jpg",
....},
"rooms": ["room1", "room2", ....],
"firstColor": "{firstColor}",
"secondColor": "{secondColor}",
"thirdColor": "{thirdColor}",
"style": "{style}",
"boxQuantity": "{quantity}",
"boxSize": "{size 3d}",
"boxWeight": "{weight}",
"size": "{size 2d}",
"weight": "{wieght}",
"texture": "{texture}"
},
....
]}}
Изображения продукта
После добавления изображение проверяется, обрабатывается и публикуется:
https://..../api2/{производитель}/{артикул}/{размер}/{тип изображения}.jpg
В течении нескольких минут добавляется набор изображений с определенными размерами, например 800x600 600x600 320x240. Любое из изображений становится доступным:
https://..../api2/victoriastenova/999888/800x600/frontal.jpg
https://..../api2/victoriastenova/999888/600x600/frontal.jpg
https://..../api2/victoriastenova/999888/320x240/frontal.jpg
https://..../api2/victoriastenova/999888/main/frontal.jpg (исходное изображение)
Изображения имеют 3 ключевые характеристики, эти характеристики нужно указать при добавлении и поиске изображения:
character
тип изображения
- frontal фронтальное
- macro макро
- interior интерьер
vendor
производитель, например Victoria Stenova
article
артикул
{myToken}
! Если хочешь построить каталог с товаром, смотри раздел Товар - изображения уже входят в карточки товара.
Метод врядли пригодится в создании сервисов, он нужен как промежуточный для обогащения товаров изображениями и позволяет хранить ссылки на изображения в удобном виде. Если тебе пришла замечательная идея как его можно заюзать… Я за тебя искренне счастлив ;)
Request body
Для получения одного товара:
{
"article": "{article}",
"vendor": "{vendor}"
}
Для получения нескольких товаров:
{
"article": ["{article0}", "{article1}", "{article2}", "{article3}"],
"vendor": "{vendor}"
}
Для получения всех товаров по производителю:
{
"vendor": "{vendor}"
}
Examples
Responses
Body
В ответе содержится список запрошенных артикулов. Ссылки на изображения разбиты на типы, например frontal - основной вид спереди, macro - макросъемка, interior - интерьер. Обратите внимание на “x” : 700, “y” : 1000, “size” : “700x1000” - это характеристики оригинального изображения. Они будут различными для каждого изображения main
{"response":[
{
"dateCreate": "{datetimeCreate}",
"dateUpdate": "{datetimeUpdate}",
"vendorSearch" : "{vendor}",
"article" : "{article1}",
"vendor" : "{vendor}",
"frontal" : { # фронтальное изображение
"width" : 700, #
"height" : 1000, # размер main изображения (исходное изображение)
"size" : "700x1000", #
"main" : "https://..../api2/{vendor}/{article1}/main/frontal.jpg",
"{size1}" : "https://..../api2/{vendor}/{article1}/800x600/frontal.jpg",
"{size2}" : "https://..../api2/{vendor}/{article1}/600x600/frontal.jpg"
"macro" : { # макро
"width" : 1000,
"height" : 1000,
"size" : "1000x1000",
"main" : "https://..../api2/{vendor}/{article1}/main/macro.jpg",
"{size1}" : "https://..../api2/{vendor}/{article1}/800x600/macro.jpg",
"{size2}" : "https://..../api2/{vendor}/{article1}/600x600/macro.jpg"
"interior" : { # интерьер
"width" : 700,
"height" : 1000,
"size" : "700x1000",
"main" : "https://.........../api2/{vendor}/article2/main/interior.jpg",
"{size1}" : "https://..../api2/{vendor}/{article1}/800x600/interior.jpg",
"{size2}" : "https://..../api2/{vendor}/{article1}/600x600/interior.jpg"
}
]
}
Body
{"response": "не найдено"}
Body
{"response": "Токен отсутствует или недействителен"}
url = 'https://api2.oboi.ru/pictures'
headers = {"aut": "{myToken}"}
js = {"vendor" : "Victoria Stenova", "article" : ["111111", "222222"]}
requests.post(url, data=js, headers=headers)
----------------------------------------------------------------------Запрос
GET https://api2.oboi.ru/pictures HTTP/1.1
Content-Type: application/json
aut: {myToken}
{"vendor" : "Victoria Stenova", "article" : ["111111", "222222"]}
------------------------------------------------------------------------Ответ
HTTP/1.1 200 OK
Content-Type: application/json
{"response":[
{
"dateCreate": ISODate("2018-10-01T16:47:44.706Z"),
"dateUpdate": ISODate("2018-10-01T16:47:44.706Z"),
"vendorSearch" : "victoriastenova",
"article" : "111111",
"vendor" : "Victoria Stenova",
"frontal" : {
"width" : 700,
"height" : 1000,
"size" : "700x1000",
"main" : "https://..../api2/victoriastenova/111111/main/frontal.jpg",
"s800x600" : "https://..../api2/victoriastenova/111111/800x600/frontal.jpg",
"s600x600" : "https://..../api2/victoriastenova/111111/600x600/frontal.jpg",
"s320x240" : "https://..../api2/victoriastenova/111111/320x240/frontal.jpg"},
"macro" : {
"width" : 1000,
"height" : 1000,
"size" : "1000x1000",
"main" : "https://..../api2/victoriastenova/111111/main/macro.jpg",
"s800x600" : "https://..../api2/victoriastenova/111111/800x600/macro.jpg",
"s600x600" : "https://..../api2/victoriastenova/111111/600x600/macro.jpg",
"s320x240" : "https://..../api2/victoriastenova/111111/320x240/macro.jpg"}
},
{
"dateCreate": ISODate("2018-10-01T16:47:44.706Z"),
"dateUpdate": ISODate("2018-10-01T16:47:44.706Z"),
"vendorSearch" : "victoriastenova",
"article" : "222222",
"vendor" : "Victoria Stenova",
"frontal" : {
"width" : 700,
"height" : 1000,
"size" : "700x1000",
"main" : "https://..../api2/victoriastenova/222222/main/frontal.jpg",
"s800x600" : "https://..../api2/victoriastenova/222222/800x600/frontal.jpg",
"s600x600" : "https://..../api2/victoriastenova/222222/600x600/frontal.jpg",
"s320x240" : "https://..../api2/victoriastenova/222222/320x240/frontal.jpg"},
"interior" : {
"width" : 1000,
"height" : 700,
"size" : "700x1000",
"main" : "https://..../api2/victoriastenova/222222/main/interior.jpg",
"s800x600" : "https://..../api2/victoriastenova/222222/800x600/interior.jpg"}
}
]
}