Прочти сперва

Зачем?

Чтобы зарабатывать с помощью ОбоиРу. На основе API создаётся витрина и осуществляются заказы товара со складов ОбоиРу. Вам не нужен ассортимент для того, чтобы продавать. Витрина это сайт, мобильное приложение, е-киоск…

Как работает?

  1. Для начала Вам нужно получить в shop.oboi.ru myToken - это ключ для работы с API
  2. Получите Товар - метод может отдавать отдельные списки для добавления и обновления
  3. Нарисуйте своё меню - всё продумано по категориям, производителям и коллекциям
  4. Загрузите товар - это просто. обновляться будет легче ;)
  5. Подтяните остатки и цены - обновляйте когда захотите, а ещё желающим прилетает webhook
  6. Контролируйте заказы - или shop.oboi.ru или напишите себе свою приколюху

Что там с деньгами?

Выручку можно посмотреть с помощью метода Заказы или в shop.oboi.ru

Подтвердить оплату заказа и необходимость доставки там же.

Авторизация

В качестве авторизации используется заголовок запросов ключа aut со значением myToken - это ключ к API системе. Он генерируется самостоятельно в личном кабинете торговой точки.

Заголовок нужно добавлять к каждому, каждому, каждому при каждому запросу.

python
headers = {"aut": "{myToken}"}
r = requests.get(url, headers=headers)
Заказы
Товар
GET /goods/all
READ ALL
GET /goods/all

Все товары одним взмахом - вжух… Подумай над тем, что тебе возможно пригодятся методы обновления товаров по изменению за период времени или по списку товаров в твоём приложении ;)

Responses

200 OK
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

артикул
GET /pictures
aut
string optional

{myToken}

Default:
{myToken}
Operations: READ
READ
GET /pictures

! Если хочешь построить каталог с товаром, смотри раздел Товар - изображения уже входят в карточки товара.

Метод врядли пригодится в создании сервисов, он нужен как промежуточный для обогащения товаров изображениями и позволяет хранить ссылки на изображения в удобном виде. Если тебе пришла замечательная идея как его можно заюзать… Я за тебя искренне счастлив ;)

Request headers

aut
string optional

{myToken}

Default:
{myToken}

Request body

Для получения одного товара:

{
    "article": "{article}",
    "vendor": "{vendor}"
}

Для получения нескольких товаров:

{
    "article": ["{article0}", "{article1}", "{article2}", "{article3}"],
    "vendor": "{vendor}"
}

Для получения всех товаров по производителю:

{
    "vendor": "{vendor}"
}
Examples

Responses

200 OK
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"
    }
]
}
Object
404 Not Found
Body
{"response": "не найдено"}
401 Unauthorized
Body
{"response": "Токен отсутствует или недействителен"}
Python
HTTP
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"}
            }
        ]
    }