Открыть главное меню

Изменения

API Offers

16 053 байта добавлено, 06:26, 16 января 2020
Нет описания правки
===Импорт предложений===
POST /offers/import?start=1
===Получение списка предложений===
GET /offers
===Изменение предложений===
PUT /offers{sku}
===Удаление предложений===
DELETE /offers{sku}
==Описание==
===Батчевый импорт предложений===
Данный метод предназначен для оптового импорта предложений в систему с ограничением в 1000 предложений.
Первый запрос должен отправляться с параметром start=1 (https://food.smartsatu.com/api/offers/import?start=1)
После первого запроса вы получите транзакционный идентификатор вида:
{
'id': '98db89147d6cd0018417b71'
}
Для всех последующих запросов на импорт предложений, вам необходимо добавлять транзакционный идентификатор в параметры запроса.
(https://food.smartsatu.com/api/offers/import?id=98db89147d6cd0018417b71)
Для того чтобы закончить оптовый импорт предложений в систему, необходимо отправить запрос с параметром end=1 (https://food.smartsatu.com/api/offers/import?id=98db89147d6cd0018417b71?end=1)
Если вам необходимо удалить все старые предложения, то в последнем запросе необходимо передать параметр delete=1 (https://food.smartsatu.com/api/offers/import?delete=1)
 
В атрибуте'comment' в JSON-ответе описываются причины ошибок.
 
Для того чтобы осуществить батчевую загрузку персональных прайсов (для конкретной торговой точки) необходимо указать в параметрах запроса ?store_id
https://food.smartsatu.com/api/offers/import?start=1&store_id=80)
 
Значение Quantum(количество товара в фасовке) обязательно должно быть кратно значению minQuantity (минимальное количество товара). Если значения не пройдут валидацию, то добавится только значение Quantum.
===Получение списка предложений===
Для того чтобы получить список всех предложений, необходимо отправить GET-запрос c пустым телом по URL: https://food.smartsatu.com/api/offers. Ответом от сервера будет являться массив данных со списком всех ваших предложений в системе Smart Satu с их данными.
===Редактирование предложения===
Для того чтобы отредактировать предложения требуется добавить в запрос SKU данного предложения.
''Пример: https://food.smartsatu.site/api/offers/9876786897623''
 
Вместе с данным параметром мы отправляем JSON-тело запроса на изменение.
===Удаление предложения===
Для того чтобы изменить предложение необходимо отправить PUT-запрос c JSON-телом по URL: https://food.smartsatu.com/api/offers/{sku}, где sku - это штрих-код предложения, которое необходимо изменить.
Ответом от сервера будет являться массив данных с измененными данными предложения.
==Безопасность==
В headers запроса обязательно должна передаваться страна пользователя, а также уникальный токен авторизации, который был получен при входе в систему. Ответом от сервера будет являться массив данных с измененными данными заказа.
{| class="wikitable"
! style="font-weight:bold;" | Type
! style="font-weight:bold;" | In
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
|-
| style="font-weight:bold;" | Authorization
| header
| required
| Для создания HTTP Basic Auth заголовка нужно преобразовать access_token следующим образом: $auth= "Basic " . base64encode(access_token . ":"); Данный токен должен использоваться в каждом запросе в системе.
|-
| style="font-weight:bold;" | country
| header
| required
| Параметр страны должен использоваться в каждом запросе в системе.
|}
==Параметры==
{| class="wikitable"
! style="font-weight:bold;" | Type
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
|-
| style="font-weight:bold;" | Body
| style="font-style:italic;" | body required
| Запрос на изменение предложения
|
|}
==Ответы==
'''Offers Import Response:'''
{| class="wikitable"
! style="font-weight:bold;" | HTTP Code
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
|-
| style="font-weight:bold;" | 200
| Ok
| [http://docs.smartsatu.com/wiki/API_Orders#Response_Orders_Items Response Order Items]
|-
| style="font-weight:bold;" | 401
| Unauthorized
| [http://docs.smartsatu.com/wiki/API_Orders#401 401]
|}
'''Offers Response:'''
{| class="wikitable"
! style="font-weight:bold;" | HTTP Code
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
|-
| style="font-weight:bold;" | 200
| Ok
| [http://docs.smartsatu.com/wiki/API_Orders#Response_Orders_Items Response Order Items]
|-
| style="font-weight:bold;" | 401
| Unauthorized
| [http://docs.smartsatu.com/wiki/API_Orders#401 401]
|}
'''Offers Response (изменение):'''
{| class="wikitable"
! style="font-weight:bold;" | HTTP Code
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
|-
| style="font-weight:bold;" | 200
| Ok
| [http://docs.smartsatu.com/wiki/API_Orders#Response_Orders_Items Response Order Items]
|-
| style="font-weight:bold;" | 401
| Unauthorized
| [http://docs.smartsatu.com/wiki/API_Orders#401 401]
|-
| style="font-weight:bold;" | 403
| Forbidden
| [http://docs.smartsatu.com/wiki/API_Orders#403 403]
|}
'''Delete Offer:'''
{| class="wikitable"
! style="font-weight:bold;" | HTTP Code
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
|-
| style="font-weight:bold;" | 204
| Ok
| [http://docs.smartsatu.com/wiki/API_Orders#Response_Orders_Items Response Order Items]
|-
| style="font-weight:bold;" | 401
| Unauthorized
| [http://docs.smartsatu.com/wiki/API_Orders#401 401]
|-
| style="font-weight:bold;" | 403
| Forbidden
| [http://docs.smartsatu.com/wiki/API_Orders#403 403]
|-
| style="font-weight:bold;" | 404
| Forbidden
| [http://docs.smartsatu.com/wiki/API_Orders#403 404]
|}
'''Принимаемые ресурсом типы MIME'''
*application/json
'''Возвращаемые ресурсом типы MIME'''
*application/json
==Определения==
===Offers Import Request===
{| class="wikitable"
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
! style="font-weight:bold;" | Example
|-
| style="font-weight:bold;" | name
| Название предложения
| string
| product1
|-
| style="font-weight:bold;" | sku
| Штрих-код предложения
| string
| 9876786897623
|-
| style="font-weight:bold;" | unit
| Единица измерения предложения
| string
| null
|-
| style="font-weight:bold;" | manufacturer
| Производитель
| string
| null
|-
| style="font-weight:bold;" | quantity
| Количество
| string
| 1
|-
| style="font-weight:bold;" | expires_at
| Годен до
| string
| null
|-
| style="font-weight:bold;" | price_1
| Цена 1 (для магазинов)
| string
| 555
|-
| style="font-weight:bold;" | price_2
| Цена 2 (для HoReCa)
| string
| null
|-
| style="font-weight:bold;" | price_3
| Цена 3 (для рынков)
| string
| null
|-
| style="font-weight:bold;" | price_4
| Цена 4
| string
| null
|-
| style="font-weight:bold;" | price_5
| Цена 5
| string
| null
|-
| style="font-weight:bold;" | price
| Цена для текущей ТТ
| string
| 888
|-
| style="font-weight:bold;" | delivery_days
| Дни доставки
| string
| 1,2,3,4,5,6,0
|-
| style="font-weight:bold;" | quantum
| Квант
| string
| 0,5
|-
| style="font-weight:bold;" | minQuantity
| Минимальное количество товара для заказа
| string
| 5.500
|-
| style="font-weight:bold;" | status
| Активность предложения (да/нет)
| string
| 1
|}
Пример запроса:
[
{
"name": "product1",
"sku": "9876786897623",
"unit": "",
"manufacturer": "",
"quantity": 1,
"expires_at": null,
"price_1": 555,
"price_2": null,
"price_3": null,
"price_4": null,
"price_5": null,
"price": 888,
"delivery_days": "1,2,3,4,5,6,0",
"quantum": 0.5,
"minQuantity": 5.500,
"status": 1
}
]
===OffersRequest (изменение)===
{| class="wikitable"
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
! style="font-weight:bold;" | Example
|-
| style="font-weight:bold;" | name
| Название предложения
| string
| product1
|-
| style="font-weight:bold;" | manufacturer
| Производитель
| string
| null
|-
| style="font-weight:bold;" | quantity
| Количество
| string
| 1
|-
| style="font-weight:bold;" | expires_at
| Годен до
| string
| null
|-
| style="font-weight:bold;" | price_1
| Цена 1 (для магазинов)
| string
| 555
|-
| style="font-weight:bold;" | price_2
| Цена 2 (для HoReCa)
| string
| null
|-
| style="font-weight:bold;" | price_3
| Цена 3 (для рынков)
| string
| null
|-
| style="font-weight:bold;" | price_4
| Цена 4
| string
| null
|-
| style="font-weight:bold;" | price_5
| Цена 5
| string
| null
|-
| style="font-weight:bold;" | status
| Активность предложения (да/нет)
| string
| 1
|-
| style="font-weight:bold;" | quantum
| Квант
| string
| 8.0
|}
Пример запроса:
[
{
"name": "Обновленное название предложения",
"manufacturer": "",
"quantity": 100,
"expires_at": null,
"price_1": 333,
"price_2": 500,
"price_3": null,
"price_4": null,
"price_5": null,
"status": 1
"quantum": 8.0,
}
]
===OffersImportResponse===
{| class="wikitable"
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
! style="font-weight:bold;" | Example
|-
| style="font-weight:bold;" | id
| Идентификатор наименования предложения
| integer($int32)
| 4317231
|-
| style="font-weight:bold;" | name
| Название предложения
| string
| 425МЛ ЗЕЛЕНЫЙ ГОРОШЕК GREEN GA
|-
| style="font-weight:bold;" | sku
| Штрих-код предложения
| string
| 4870007151458
|-
| style="font-weight:bold;" | unit
| Единица измерения предложения
| string
| null
|-
| style="font-weight:bold;" | manufacturer
| Производитель
| string
| null
|-
| style="font-weight:bold;" | quantity
| Количество
| string
| 0
|-
| style="font-weight:bold;" | expires_at
| Годен до
| string
| null
|-
| style="font-weight:bold;" | price_1
| Цена 1 (для магазинов)
| string
| 329
|-
| style="font-weight:bold;" | price_2
| Цена 2 (для HoReCa)
| string
| 329
|-
| style="font-weight:bold;" | price_3
| Цена 3 (для рынков)
| string
| 329
|-
| style="font-weight:bold;" | price_4
| Цена 4
| string
| null
|-
| style="font-weight:bold;" | price_5
| Цена 5
| string
| null
|-
| style="font-weight:bold;" | unique_code
| Уникальный код предложения
| string
| 141209
|-
| style="font-weight:bold;" | product_id
| Идентификатор продукта
| string
| 28952
|-
| style="font-weight:bold;" | step
| Шаг
| string
| null
|-
| style="font-weight:bold;" | minQuantity
| Минимальное количество товара для заказа
| string
| null
|-
| style="font-weight:bold;" | price
| Цена для текущей ТТ
| string
| 329
|}
Пример ответа:
 
[
{
"id": 4317231,
"name": "425МЛ ЗЕЛЕНЫЙ ГОРОШЕК GREEN GA",
"sku": 870007151458,
"unit": "",
"manufacturer": "",
"quantity": 0,
"expires_at": null,
"price_1": 329,
"price_2": 329,
"price_3": 329,
"price_4": null,
"price_5": null,
"unique_code": "151885",
"product_id": null,
"step": null,
"minQuantity": null,
"price": 329,
}
]
===Delete Offer===
===401===
{| class="wikitable"
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
! style="font-weight:bold;" | Example
|-
| style="font-weight:bold;" | name
| Название
| string
| Unauthorized
|-
| style="font-weight:bold;" | message
| Сообщение
| string
| Your request was made with invalid credentials
|-
| style="font-weight:bold;" | code
| Код
| integer($int32)
| 0
|-
| style="font-weight:bold;" | status
| Статус
| integer($int32)
| 401
|-
| style="font-weight:bold;" | type
| Тип
| string
| "yii\\web\\UnauthorizedHttpException"
|}
Пример ответа:
{
"name": "Unauthorized",
"message": "Your request was made with invalid credentials.",
"code": 0,
"status": 401,
"type": "yii\\web\\UnauthorizedHttpException"
}
===403===
{| class="wikitable"
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
! style="font-weight:bold;" | Example
|-
| style="font-weight:bold;" | name
| Название
| string
| Forbidden
|-
| style="font-weight:bold;" | message
| Сообщение
| string
| You're not allowed to delete this item
|-
| style="font-weight:bold;" | code
| Код
| integer($int32)
| 0
|-
| style="font-weight:bold;" | status
| Статус
| integer($int32)
| 403
|-
| style="font-weight:bold;" | type
| Тип
| string
| yii\\web\\HttpException
|}
Пример ответа:
{
"name": "Forbidden",
"message": "You're not allowed to delete this item.",
"code": 0,
"status": 403,
"type": "yii\\\\web\\\\HttpException"
}
===404===
{| class="wikitable"
! style="font-weight:bold;" | Name
! style="font-weight:bold;" | Description
! style="font-weight:bold;" | Schema
! style="font-weight:bold;" | Example
|-
| style="font-weight:bold;" | name
| Название
| string
| Not Found
|-
| style="font-weight:bold;" | message
| Сообщение
| string
| Предложение не существует, удалено либо недоступно
|-
| style="font-weight:bold;" | code
| Код
| integer($int32)
| 0
|-
| style="font-weight:bold;" | status
| Статус
| integer($int32)
| 404
|-
| style="font-weight:bold;" | type
| Тип
| string
| yii\\web\\HttpException
|}
Пример ответа:
 
{
"name": "Not Found",
"message": "Предложение не существует, удалено либо недоступно",
"code": 0,
"status": 404,
"type": "yii\\web\\HttpException"
}