# Экспорт заказов
В системе есть возможность подписаться на отправку заказов по HTTP протоколу при их создании и изменении
# Настройка экспорта
Для того чтобы приходили заказы, нам необходимо сообщить адреса для импорта заказов на вашей стороне, например https://your-domain.com/order/import. Настроить аутентификацию по Bearer токену, далее выдать этот токен нам, чтобы мы вам присылали запросы с этим токеном
# Как работает экспорт
При создании заказа и его изменении, он попадает в очередь по обмену. Очередь запускается каждую минуту и отправляет заказы на указанные при настройке адреса по HTTP протоколу
# Параметры
[order, order...] где order имеет следующие атрибуты
| Название | Тип | Обязательный | Описание | 
|---|---|---|---|
| id | string(255) | true | Идентификатор в экспортирующей системе | 
| external_id | integer(11) | false | Идентификатор в принимающей системе | 
| status | range in 'new', 'approved', 'completed', 'removed' | true | Статус заказа new - новый неразобранный заказ approved - назначен курьер для доставки (заказ обработан оператором) completed - доставлено removed - отменено (диспетчером или клиентом) | 
| created_at | datetime | false | Дата создания | 
| total | float | true | Сумма заказа (стоимость доставки включена) | 
| delivery_cost | float | false | Стоимость доставки | 
| coins | float | false | Кол-во баллов, которые использовались для оплаты заказа | 
| payment_type | range | false | Способ оплаты, возможные варианты можно посмотреть здесь | 
| payment_status | boolean | true | true - заказ успешно оплачен, false - заказ еще не оплачен | 
| shipping_date_from | datetime | true | Время доставки от | 
| shipping_date_to | datetime | true | Время доставки до | 
| comment | string | false | Комментарий | 
| ask_for_checkout | range in 'bill', 'agreement' | false | Запрос документов bill - запрос счёта agreement - запрос договора | 
| count_of_returned_bottles | integer | false | Кол-во бутылей к возврату | 
| order_item_list | array | true | Массив из заказанных позиций | 
| client | object | true | Объект содержащий клиента | 
| shipping_address | object | true | Объект содержащий адрес доставки | 
| organization | object | false | Объект содержащий организацию на которую был сделан заказа | 
Атрибуты объекта клиент client, если он существует в системе можно
посмотреть здесь
Атрибуты объекта клиент client, если заказ от не зарегистрированного пользователя
| Название | Тип | Обязательный | Описание | 
|---|---|---|---|
| username | string(255) | true | Имя клиента | 
| phone | string(12) | true | Телефон клиента, например +79191991919 | 
| string(255) | false | Электронная почта клиента | 
Атрибуты объекта организации на которую был сделан заказ organization
| Название | Тип | Обязательный | Описание | 
|---|---|---|---|
| inn | string(255) | true | ИНН | 
| kpp | string(12) | false | КПП | 
| ogrn | string(255) | false | ОГРН | 
| okpo | string(255) | false | ОКПО | 
| name | string(255) | true | Название | 
| full_name | string(255) | false | Полное название | 
| address_name | string(255) | false | Адрес | 
| address_full_name | string(255) | false | Полный адрес | 
Атрибуты объекта адрес доставки shipping_address
| Название | Тип | Обязательный | Описание | 
|---|---|---|---|
| user_address_id | integer(11) | false | Идентификатор в принимающей системе | 
| city | string(255) | true | Город | 
| street | string(255) | true | Улица | 
| house | string(10) | true | Дом | 
| entrance | string(10) | false | Подъезд | 
| floor | string(10) | false | Этаж | 
| room | string(10) | false | Номер квартиры или офиса | 
| str | string(255) | true | Адрес не структурировано, а единой строкой | 
Массив из заказанных позиций order_item_list включает в себя заказанные позиции [order_item, order_item...]
со следующими атрибутами
| Название | Тип | Обязательный | Описание | 
|---|---|---|---|
| id | string(255) | true | Идентификатор в экспортирующей системе | 
| product_id | string(255) | true | Идентификатор продукта в экспортирующей системе | 
| external_id | integer(11) | false | Идентификатор в принимающей системе | 
| name | string(255) | false | Название продукта | 
| price | decimal(10,2) | false | Цена продукта | 
| quantity | integer(11) | false | Кол-во заказанных продуктов | 
| order_product_id | integer(11) | false | Идентификатор позиции продукта в заказе в экспортирующей системе | 
# Тело запроса при экспорте заказов
[
  {
    "id": "50894",
    "external_id": "657f9553-ff97-11e9-80d3-001e4f377cd7",
    "status": "approved",
    "client": {
      "id": 68,
      "external_id": "jqLbQR3be8jlJZIh4dBrUCyyIhFzuAKK",
      "username": "Василий Тестовый",
      "comment": null,
      "email": "ognev@baitek.org",
      "account_number": 68,
      "type": "fiz",
      "phones": [
        "9083280832"
      ],
      "addresses": [
        {
          "id": 2647,
          "external_id": null,
          "name": "Кутузова, д. 21, эт. 1, кв./оф. 1, под. 2, г. Сыктывкар – Орбита ближняя (Париж)",
          "city": "Сыктывкар",
          "street": "Кутузова",
          "house": "21",
          "room": "1",
          "entrance": "2",
          "floor": "1",
          "district_id": 1,
          "str": "Кутузова, д. 21, эт. 1, кв./оф. 1, под. 2, г. Сыктывкар   Орбита ближняя (Париж)"
        }
      ],
      "requisites": {
        "bank_account": {
          "inn": "1234512345",
          "kpp": "1234512345",
          "account_number": "1234512345",
          "correspondent_account": "1234512345",
          "bik": "1234512345",
          "bank_name": "1234512345"
        }
      },
      "legal_address": [
        "г. Сыктывкар,ул. Кутузова,д. 21"
      ],
      "product_price_list": {
        "36": {
          "product_id": 36,
          "external_product_id": null,
          "price": "101.00",
          "active": false
        }
      },
      "coins_amount": 90,
      "loyalty_system_is_active": true
    },
    "account_number": 68,
    "total": 710,
    "delivery_cost": 30,
    "coins": 710,
    "payment_type": "cash",
    "created_at": "2019-11-07 00:54:05",
    "shipping_address": null,
    "shipping_date_from": "2019-11-06 14:00:00",
    "shipping_date_to": "2019-11-06 21:00:00",
    "order_item_list": [
      {
        "name": "Вода 19 л. Ваш бренд",
        "quantity": 2,
        "price": 355,
        "product_id": 28,
        "order_product_id": 1435
      }
    ],
    "comment": "comment",
    "ask_for_checkout": null,
    "count_of_returned_bottles": 0
  }
]
# Как формировать ответ на принимающей стороне
Запросы отправляются через очередь, если принимающая сторона отвечает кодом отличным от 200, то запрос из очереди не убирается и продолжает отправляться пока не будет дан ответ с кодом 200