Broniboy Merchant API (1.0b2b)

Download OpenAPI specification:Download

Авторизация

Для работы с API необходимо получить статичный токен, который передается в заголовке X-App-Token.

Формат ответа

Все успешные ответы имеют следующую структуру:

{
  "success": true,
  "status_code": 200,
  "data": <тело ответа>
}

Все 400 ошибки имеют следующую структуру:

{
  "success": false,
  "status_code": 400,
  "error": {
    "code": 3, // внутренний код ошибки
    "message": "Это поле обязательно.", // Общее описание ошибки, либо текст первой ошибки в поле.
    "dev_err": { // Техническая информация об ошибке, содержит имя поля и список его ошибок
      "comment": [
        "Это поле обязательно."
      ]
    },
  }
}

Все остальные ошибки имеют следующую структуру:

{
  "success": false,
  "status_code": 403,
  "error": {
    "code": 4, // внутренний код ошибки
    "message": "Операция запрещена, переавторизуйтесь", // Общее описание ошибки
    "dev_err": "Токен заблокирован.", Техническая информация об ошибке
  }
}

Заказы

Размещение заказа

Происходит в 2 этапа:

  • /orders/verify/ - проверка заказа, получение итоговой цены и доступного времени забора заказа
  • /orders/create/ - создание заказа на выбранное время

Статусы заказа

  • accepted - Заказ принят
  • cooking - Заказ готовится
  • ready - Заказ готов
  • on_way - Заказ в пути
  • finished - Заказ завершен
  • canceled - Заказ отменен

Статусы курьера

  • courier-not-assigned - Не назначен
  • courier-assigned - Назначен
  • courier-accepted - Принял заказ
  • courier-arrived - Прибыл на точку

Вебхуки

Для получения вебхуков о смене статуса заказа / курьера, необходимо предоставить url для их отправки.

URL для вебхуков должен:

  • принимать POST запрос
  • проверять целостность запроса с использованием HMAC

Если код ответа на вызов вебхука не равен 200, то будет совершено еще несколько попыток вызова вебхука.

Формат запроса

Заголовки:

  • Hook-Event - имя события
  • Hook-Delivery - Id запроса, может быть использован для реализации идемпотентности.
  • Hook-HMAC - подпись для проверки целостности запроса. Для проверки подписи нужно вычислить HMACSHA256 для содержимого поля data.

Тело запроса:

{
  "event": "order.changed",
  "data": {} // данные о заказе
}

Authentication

MerchantUserToken

Security Scheme Type API Key
Header parameter name: X-Auth-Token

MerchantAppToken

Security Scheme Type API Key
Header parameter name: X-App-Token

New B2B Order

Создание B2B заказа

Проверка заказа

Request Body schema: application/json
required
object (PickupCreate)

Время/место забора заказа.

Одно из полей place или external_place является обязательным.

payment_type
required
string (MerchantB2BPaymentType)
Enum: "cash" "b2b_account"

Способ оплаты.

cash - наличными b2b_account - по счету

required
Array of objects (DropOffList) 1 items [ items ]

Список адресов доставки. Текущая версия API поддерживает только один адрес.

Responses

Request samples

Content type
application/json
{
  • "pickup": {
    },
  • "payment_type": "cash",
  • "drop_off": [
    ]
}

Response samples

Content type
application/json
{
  • "order": {
    },
  • "available_payment_types": [
    ],
  • "available_pickup_times": [
    ]
}

Создание заказа

Request Body schema: application/json
required
object (PickupCreate)

Время/место забора заказа.

Одно из полей place или external_place является обязательным.

payment_type
required
string (MerchantB2BPaymentType)
Enum: "cash" "b2b_account"

Способ оплаты.

cash - наличными b2b_account - по счету

required
Array of objects (DropOffList) 1 items [ items ]

Список адресов доставки. Текущая версия API поддерживает только один адрес.

Responses

Request samples

Content type
application/json
{
  • "pickup": {
    },
  • "payment_type": "cash",
  • "drop_off": [
    ]
}

Response samples

Content type
application/json
{
  • "price": 1000,
  • "final_price": 1200,
  • "payment_type": "cash",
  • "pickup": {
    },
  • "drop_off": [
    ],
  • "id": "eb3b595d-3653-41a3-a531-ebeba332154c",
  • "state": "finished",
  • "courier_state": "courier-assigned",
  • "number": 123,
  • "couriers": [
    ]
}

B2B Orders

Работа с B2B заказами

Список заказов

query Parameters
limit
integer [ 0 .. 100 ]
Default: 20
Example: limit=20

Паджинация. Кол-во возвращаемых объектов.

offset
integer >= 0
Default: 0
Example: offset=20

Паджинация. Смещение.

order_id
string <uuid>
Example: order_id=eb3b595d-3653-41a3-a531-ebeba332154c

Id заказа в системе Broniboy. Можно передать несколько значений. order_id=<id1>&order_id=<id2>. Нужно помнить про ограничение длины URL, если планируется передавать много значений разом.

states
string (MerchantB2BOrderState)
Enum: "accepted" "cooking" "ready" "on_way" "finished" "canceled"
Example: states=finished

Статус заказа в системе Broniboy. Можно передать несколько значений. states=<state1>&states=<state2>.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Отмена заказа

path Parameters
order_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Id заказа в системе Broniboy

Request Body schema: application/json
comment
string <= 256 characters

Причина отмены в свободной форме.

reason
required
string
Enum: "long_waiting" "expensive" "other"

Причина отмены. long_waiting - Долго ждать курьера expensive - У другого сервиса дешевле other - Другое

Responses

Request samples

Content type
application/json
{
  • "comment": "Передумали.",
  • "reason": "expensive"
}

Response samples

Content type
application/json
{
  • "success": false,
  • "status_code": 429,
  • "error": {
    }
}

Merchant Places

Работа с Точками

Summary of places with multiple networks

query Parameters
o
string
Example: o=id&o=-id&o=created,id

Сортировка

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List Places with legal info

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Merchant Place Schedule

Работа с временем работы Точки

Get workload info

path Parameters
place_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Id Точки в системе Broniboy

Responses

Response samples

Content type
application/json
{
  • "state": "default",
  • "reset_state_after": "2020-08-18T23:01:00+03:00",
  • "cooking_time_minutes_default": 30,
  • "cooking_time_minutes_medium": 30,
  • "cooking_time_minutes_high": 30,
  • "allowed_intervals": [
    ]
}

Change workload

path Parameters
place_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Id Точки в системе Broniboy

Request Body schema: application/json
state
required
string
Enum: "pause" "default" "medium" "high"
reset_after_minutes
number <int> [ 30 .. 120 ]

Do not send this field to change state until next day

Responses

Request samples

Content type
application/json
{
  • "state": "default",
  • "reset_after_minutes": 30
}

Response samples

Content type
application/json
{
  • "state": "default",
  • "reset_state_after": "2020-08-18T23:01:00+03:00",
  • "cooking_time_minutes_default": 30,
  • "cooking_time_minutes_medium": 30,
  • "cooking_time_minutes_high": 30,
  • "allowed_intervals": [
    ]
}

Get schedule

path Parameters
place_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Id Точки в системе Broniboy

Responses

Response samples

Content type
application/json
[
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ]
]

Change schedule

path Parameters
place_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Id Точки в системе Broniboy

Request Body schema: application/json
Array (7 items)
Array
Array (2 items)
string <time>

Responses

Request samples

Content type
application/json
[
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ]
]

Response samples

Content type
application/json
[
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ],
  • [
    ]
]

Get schedule overrides for Place

path Parameters
place_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Id Точки в системе Broniboy

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create schedule override

Request Body schema: application/json
place
required
string <uuid>
period
required
Array of strings <date> 2 items
interval
Array of strings <time> 2 items
is_day_off
boolean

Responses

Request samples

Content type
application/json
{
  • "place": "8d7f62ba-14c9-4fb2-8bc8-87d23513fd8e",
  • "period": [
    ],
  • "interval": [
    ],
  • "is_day_off": true
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "period": [
    ],
  • "interval": [
    ],
  • "is_day_off": true
}

Get schedule override

path Parameters
schedule_override_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "period": [
    ],
  • "interval": [
    ],
  • "is_day_off": true
}

Change schedule override

path Parameters
schedule_override_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c
Request Body schema: application/json
place
required
string <uuid>
period
required
Array of strings <date> 2 items
interval
Array of strings <time> 2 items
is_day_off
boolean

Responses

Request samples

Content type
application/json
{
  • "place": "8d7f62ba-14c9-4fb2-8bc8-87d23513fd8e",
  • "period": [
    ],
  • "interval": [
    ],
  • "is_day_off": true
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "period": [
    ],
  • "interval": [
    ],
  • "is_day_off": true
}

Delete schedule override

path Parameters
schedule_override_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Responses

Merchant Orders

Работа с заказами

Order details

path Parameters
order_id
required
string <uuid>
Example: eb3b595d-3653-41a3-a531-ebeba332154c

Id заказа в системе Broniboy

Responses

Response samples

Content type
application/json
{
  • "comment": "string",
  • "delivery_type": "string",
  • "tasks": [
    ],
  • "is_service_delivery": true,
  • "from_address": {
    },
  • "asap": true,
  • "price": 0,
  • "currency": "RUB",
  • "number": "string",
  • "full_price": 0,
  • "has_review": true,
  • "services": [
    ],
  • "delivery": {
    },
  • "to_address": {
    },
  • "change_amount": 0,
  • "guest_count": 0,
  • "display_date_short": "string",
  • "id": "string",
  • "business_type": "string",
  • "order_type": "string",
  • "cancellable": true,
  • "payment_binding": "string",
  • "display_date_full": "string",
  • "state": "created",
  • "points": 0,
  • "date_of_visit": "01.01.2021 13:21:00",
  • "date_of_visit_iso": "2021-06-17T17:49:24+03:00",
  • "final_price": 0,
  • "services_text": "string",
  • "date_of_pickup": "01.01.2021 13:21:00",
  • "date_of_pickup_iso": "2021-06-17T17:49:24+03:00",
  • "payment_type": "card-online",
  • "merchant_order_state": "created",
  • "merchant_delivery_type": "Доставка Broniboy",
  • "merchant_list_title": "#123",
  • "merchant_price": 0,
  • "result_tags": [
    ],
  • "terminal_state": {
    },
  • "group_name": "string"
}

Orders list

path Parameters
state
required
string
Enum: "active" "history"

active - created, accepted, on_way, cooking, ready, picking_up_order,

history - on_way (only if is_service_delivery=true and not b2b), finished, canceled, canceled_place, canceled_bb,

query Parameters
date_after
string <date>
date_before
string <date>
place
string <uuid>

Responses

Response samples

Content type
application/json
[
  • {
    }
]