'''URI схема'''
''Host : //food.smartsatu.com/api/ Schemes : HTTPS''
==Методы==
===Получение списка заказов===
GET /v1/orders
===Получение списка заказов в зависимости от статуса заказа===
GET /v1/orders?status=
===Изменение и корректировка заказа поставщиком===
PUT /orders/{id}
==Описание==
===Получение списка заказов===
*0 = оплата заказа наличными;
*1 = оплата заказа оборотными средствами;
*2 = оплата заказа по Visa QR;*3 = оплата заказа по безналичному расчету;*4 = оплата заказа по Raiffeisen QR;*5 = оплата заказа корпоративной картой.
===Получение списка заказов в зависимости от статуса заказа===
Для того чтобы получить список заказов имеющих определенный статус необходимо отправить GET-запрос c пустым телом по URL: https://food.smartsatu.com/api/v1/orders. В строке запроса необходимо добавить параметр статуса и его значение (?status=1). В итоге получаем запрос вида: https://food.smartsatu.com/api/v1/orders?status=31. В headers запроса обязательно должна передаваться страна пользователя, а также и уникальный токен авторизации, который был получен при входе в систему. Ответом от сервера будет являться массив данных со списком всех ваших заказов поставщика в указанном статусе, а также их данными.Также возможно получение списка заказов, начиная от определенной даты, указав дату и время:
Также возможно получение списка заказов за период от времени, указанного в GET-параметре "updated_from", до времени выполнения запроса: "updated_from=2019-11-27T07:03:01". ''Пример: https://food.smartsatu.com/api/v1/orders?status=7&updated_from=2019-11-27T07:03:01''
Перечень статусов заказа:
|-
| style="font-weight:bold;" | status=1
| Новый- <small>заказ создан Торговой точкой</small>
|-
| style="font-weight:bold;" | status=2
| Принят- <small>заказ в статусе "Новый" принят Поставщиком</small>
|-
| style="font-weight:bold;" | status=3
| Отклонен поставщиком- <small>заказ в статусе "Новый" отклонен Поставщиком</small>
|-
| style="font-weight:bold;" | status=4
| Принят с корректировкой- <small>заказ в статусе "Новый" принят Поставщиком с изменениями: откорректировано количество товара, изменена дата доставки</small>
|-
| style="font-weight:bold;" | status=5
| Подтвержден- <small>заказ в статусе "Принят с корректировкой" принят Торговой точкой: ТТ согласна с внесенными в заказ изменениями</small>
|-
| style="font-weight:bold;" | status=6
| Отменен магазином- <small>заказ в статусе "Принят с корректировкой" отклонен Торговой точкой: ТТ не принимает внесенные в заказ изменениями</small>
|-
| style="font-weight:bold;" | status=7
| Выполнен- <small>заказ в статусе "Подтвержден"/"Принят" доставлен в Торговую точку: ТТ приняла все товары без изменений и подтвердила доставку</small>
|-
| style="font-weight:bold;" | status=8
| Не доставлен- <small>заказ в статусе "Подтвержден"/"Принят" не доставлен в Торговую точку: ТТ меняет статус не доставленного заказа по прошествии 24 часов с установленной даты доставки</small>
|-
| style="font-weight:bold;" | status=9
| Не выполнен- <small>заказ, изначально принятый Поставщиком, который не будет доставлен ТТ</small>
|-
| style="font-weight:bold;" | status=10
| Выполнен с корректировкой- <small>заказ в статусах "Подтвержден"/"Принят" доставлен в Торговую точку, которая приняла не все товары (изменила количество) и подтвердила доставку</small>
|}
===Изменение и корректировка заказа поставщиком===
Для того чтобы изменить статус заказа, количество товаров или набор продуктов в заказе необходимо отправить PUT-запрос c JSON-телом по URL: https://food.smartsatu.com/api/orders/{id}, где id - это уникальный идентификатор заказа, который необходимо изменить. При отправке данного PUT-запроса с id заказа '''{}''' не использовать. Поставщик может изменять новые заказы (status=1) на статусы, которые представлены в таблице ниже:
{| class="wikitable"
! style="font-weight:bold;" | Status
Если заказ должен быть изменен, то запрос должен содержать параметры '''offer_id''' и '''quantity'''.
'''<span style="color:#FFFFFF; background:#FF3333">Внимание: offer_id на самом деле является параметром id в order_items, а не :</span> [[Файл:Offer id.jpg||350px|offer_id - идентификатор предложения.''' для корректировки заказа]]
Если были переданы не все товарные позиции из order_items, то отсутствующие позиции будут удалены системой из заказа.
Дополнительно со статусом заказа пользователю может отображаться статус поставщика. Для этого в теле PUT-запроса на изменение статуса (2, 3, 4 и 9) поставщик добавляет параметр "supplierStatus" с необходимым текстом статуса, например:
{
"status": 2,
"supplierStatus": "Заказ принят без изменений",
}
==Безопасность==
В headers запроса обязательно должна передаваться страна пользователя, а также уникальный токен авторизации, который был получен при входе в систему. Ответом от сервера будет являться массив данных с измененными данными заказа.
| style="font-weight:bold;" | 200
| Ok
| [http://docs.smartsatu.com/wiki/API_CounterpartiesAPI_Orders#Response_Counterparties Response_Orders_Items Response CounterpartiesOrder Items]
|-
| style="font-weight:bold;" | 401
| Unauthorized
| [http://docs.smartsatu.com/wiki/API_CounterpartiesAPI_Orders#401 401]
|-
| style="font-weight:bold;" | 403
| Forbidden
| [http://docs.smartsatu.com/wiki/API_CounterpartiesAPI_Orders#401 403 403]
|}
'''Orders Status Change Response:'''
| style="font-weight:bold;" | 200
| Ok
| [http://docs.smartsatu.com/wiki/API_CounterpartiesAPI_Orders#Response_Counterparties Orders_Status_Change_Response Order Status Change Response Counterparties]
|-
| style="font-weight:bold;" | 401
| Unauthorized
| [http://docs.smartsatu.com/wiki/API_CounterpartiesAPI_Orders#401 401]
|-
| style="font-weight:bold;" | 403
| Forbidden
| [http://docs.smartsatu.com/wiki/API_CounterpartiesAPI_Orders#401 403 403]
|}
'''Принимаемые ресурсом типы MIME'''
'''Возвращаемые ресурсом типы MIME'''
*application/json
==Определения==
===Request Order Items===
| < items> array
| 4
|-
| style="font-weight:bold;" | delivery_date
| Дата доставки (строкой DD.MM.YYYY)
| string
| 09.10.2019
|-
| style="font-weight:bold;" | status
| integer($int64)
| 4
|-
| style="font-weight:bold;" | delivery_days
| Дни доставки
| string
| null
|-
| style="font-weight:bold;" | offer_id
Пример запроса:
{
"comment": "Вот такой комментарий Изменена дата доставки и количество товара", "delivery_date": "09.10.2019",
"items":
[
{
"quantity": 50, "delivery_days": "", "offer_id": 4166524 }
],
"status": 4
}
===Response Orders Items===
'''Items'''
{| class="wikitable"
| 80
|-
| style="font-weight:bold;" | supplier_company_iddelivery_date| Идентификатор поставщикаДата доставки (time stamp с учетом time zone)
| integer
| 84|-| style="font-weight:bold;" | delivery_date| Дата доставки| string| 1,2,4,61581292800
|-
| style="font-weight:bold;" | initial_delivery_date
| Первоначальная дата доставки(time stamp с учетом time zone)| stringinteger| 1,2,4,61581292800
|-
| style="font-weight:bold;" | supplier_company_id
| style="font-weight:bold;" | supplierCompanyName
| Идентификатор названия поставщика
| integerstring
| ТОО "Поставщиk-"
|-
| style="font-weight:bold;" | with_documents
| Наличие документов
| booleaninteger
| 0
|-
| style="font-weight:bold;" | sum
| Общая сумма заказа
| integerdecimal| 11340.00
|-
| style="font-weight:bold;" | comments
| Комментарий к заказу
| stringarray
| Ок
|-
| string
| null
|-
| style="font-weight:bold;" | role
| Роль пользователя, который оформил заказ
| string
| Торговый представитель
|-
| style="font-weight:bold;" | full_name
| ФИО пользователя, который оформил заказ
| string
| Иван Иванов
|-
| style="font-weight:bold;" | alcohol_license
| style="font-weight:bold;" | payment_type
| Тип оплаты заказа
| integer
| 0
|-
| style="font-weight:bold;" | payment_status
| Статус оплаты заказа
| integer
| 0
|-
| style="font-weight:bold;" | order_items
| Массивarray
| < order_items > array
|
|-
| style="font-weight:bold;" | Supplier_company_namesupplier_company_name
| Название поставщика
| string
|-
| style="font-weight:bold;" | store_company
| Массивarray
| < store_company > array
|
|-
| style="font-weight:bold;" | service_fee_amount
| Сумма сервисного сбора
| decimal
| 300.00
|}
'''Order Items'''
|-
| style="font-weight:bold;" | images
| Массивarray
| < images > array
|
|-
| style="font-weight:bold;" | promotion_type
| Признак бонусного товара
| string
| 0
"store_user_id": 656,
"store_company_id": 656,
"delivery_date": "1,2,4,61581292800", "initial_delivery_date": "1,2,4,61581292800",
"supplier_company_id": "84",
"supplierCompanyName": "ТОО \"Поставщиk-",
"replacement_id": " ",
"replacement_status": " ",
"role": "Торговый представитель"
"full_name": "Иван Иванов"
"alcohol_license": {
"number": "213",
},
"payment_type": 0,
"payment_status": 0
"order_items": [
{
]
}
===Orders Status Change Response==={| 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)| null|-| style="font-weight:bold;" | store_user_id| Идентификатор пользователя торговой точки| integer($int32)| ИП "Чип и Дейл" | маг. "Рокфор"|-| style="font-weight:bold;" | store_company_id| Идентификатор торговой точки| integer($int32)| 0|-| style="font-weight:bold;" | supplier_company_id| Идентификатор поставщика| integer($int32)| shop@me.kz|-| style="font-weight:bold;" | supplierCompanyName| Идентификатор названия поставщика| string| Магазин для тестирования\r\n|-| style="font-weight:bold;" | status| Статус заказа| integer($int32)| Алматы, Байзакова, 125/185|-| style="font-weight:bold;" | created_at| Время создания заказа| integer($int32)| Телефон: +78000000001, Вн.: 123, Контактное лицо: Гайка|-| style="font-weight:bold;" | updated_at| Время обновления заказа| integer($int32)| store|-| style="font-weight:bold;" | with_documents| Доставка заказа с документами| integer($int32)| 0123456789|-| style="font-weight:bold;" | sum| Сумма заказа| integer($int32)| +78000000001|-| style="font-weight:bold;" | comments| Массив| < comments > array| |-| style="font-weight:bold;" | replacement_id| | integer| null|-| style="font-weight:bold;" | replacement_status| | integer| null|}'''Comments'''{| 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| 75875|-| style="font-weight:bold;" | company_id| Идентификатор поставщика| integer| 84|-| style="font-weight:bold;" | message| Текст комментария| string| Вот такой комментарий|-| style="font-weight:bold;" | type| Статус заказа| string| 4|-| style="font-weight:bold;" | order_id| Уникальный идентификатор заказа| integer| 153390|-| style="font-weight:bold;" | created_at| Время создания| string| 1540376988|-| style="font-weight:bold;" | companyName| Идентификатор названия поставщика| string| ТОО "Поставщиk-"|-| style="font-weight:bold;" | is_system| Системное сообщение| string| null|}Пример ответа: { "id": 153390, "store_user_id": 656, "store_company_id": 80, "supplier_company_id": 84, "supplierCompanyName": "ТОО \"Поставщиk-\"", "status": 2, "created_at": 1497429666, "updated_at": 1497431046, "with_documents": 1, "sum": 8663, "comments": [ { "id": 75875, "company_id": 84, "message": "Вот такой комментарий", "type": 4, "order_id": 153390, "created_at": 1540376988, "companyName": "ТОО \"Поставщиk-\"", "is_system": "Null" } ], "replacement_id": null, "replacement_status": null }===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" }