Appearance
Заказы
GoSync отдаёт заказы с маркетплейсов (Wolt, Glovo и др.) через единый API. Ваша система запрашивает новые заказы, при необходимости — изменения по уже выгруженным, и подтверждает получение batch. Смена статусов заказа (принять / отклонить / готов / доставлен) доступна через API. Поддерживаются маркетплейсы, для которых включена интеграция (например Wolt). Таймаут вызова маркетплейса — 7 секунд; при превышении заказ не изменяется.
Базовый путь эндпоинтов заказов: https://gosync.kz/api/v1/1c
Авторизация только HTTP Basic Auth: заголовок Authorization: Basic base64(client_id:client_secret). Заголовки X-Client-ID / X-Client-Secret здесь не используются (они для /api/v1/import/*). Подробнее — Авторизация.
GET /api/v1/1c/orders
Получение новых заказов (ещё не подтверждённых вашей системой). При запросе создаётся batch; после обработки его нужно подтвердить через POST /orders/confirm.
Query
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
| limit | number | 100 | Макс. кол-во заказов |
Ответ 200
json
{
"batch_id": "550e8400-e29b-41d4-a716-446655440000",
"orders": [
{
"id": "uuid-заказа",
"external_order_id": "id-в-системе-маркетплейса",
"external_order_display_id": "номер для клиента",
"marketplace_code": "wolt20",
"status_internal": "new",
"created_at": "2026-02-18T12:00:00Z",
"customer_name": "Иван",
"customer_phone": "+7 700 123 4567",
"order_comment": "Позвонить перед доставкой",
"delivery_address_full": "г. Алматы, ул. Примерная, 1",
"warehouse_cml_id": "",
"items_total": 2500.50,
"fees_total": 700,
"items": [
{
"cml_id": "идентификатор товара (то же значение, что product_id)",
"product_id": "идентификатор товара в каталоге — совпадает с product_id из импорта (POST /import/catalog)",
"name": "Наименование позиции",
"quantity": 1,
"price": 100.50
}
]
}
]
}- items_total — сумма по товарам (корзина), в единицах валюты. Для Wolt подставляется из API заказа.
- fees_total — общая сумма сборов (доставка + сервис и т.д.) без разбивки. Итого по заказу =
items_total+fees_total(используйте для суммы документа в 1С). - items[].product_id — идентификатор товара в каталоге. Для каталога, загруженного через API, это тот же product_id, который вы передали в POST /import/catalog. Используйте его для сопоставления позиции заказа с вашей учётной системой.
- items[].cml_id — то же значение, что product_id. Имя поля сохранено, так как те же эндпоинты используются для обмена с 1С (CommerceML), где этот идентификатор традиционно называется так.
- warehouse_cml_id — идентификатор склада (если передан при выгрузке заказа).
После получения заказов обязательно подтвердите batch: POST /api/v1/1c/orders/confirm с телом {"batch_id": "<uuid>"}.
GET /api/v1/1c/orders/updates
Изменения по заказам, которые уже были выгружены (подтверждены) вашей системой. Выборка по updated_at > since.
Query
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| since | ISO8601 | да | Дата/время (RFC3339) |
| limit | number | нет (100) | Макс. кол-во записей |
Ответ 200
json
{
"updates": [
{
"id": "uuid-заказа",
"updated_at": "2026-02-18T14:00:00Z",
"marketplace_code": "wolt20",
"status_internal": "shipped",
"items": [
{
"cml_id": "...",
"product_id": "...",
"name": "...",
"quantity": 1,
"price": 100.50
}
]
}
]
}В items поле product_id совпадает с product_id из импорта каталога.
POST /api/v1/1c/orders/confirm
Подтверждение получения batch заказов (ваша система обработала заказы и отмечает batch как полученный).
Тело запроса
json
{
"batch_id": "550e8400-e29b-41d4-a716-446655440000"
}Ответ 200
json
{
"ok": true,
"confirmed": 5
}confirmed — количество заказов в batch, отмеченных как полученные.
POST /api/v1/1c/orders/{order_id}/accept | reject | in_progress | ready | delivered (смена статуса для 1С)
Отдельные эндпоинты для команд статуса с Basic Auth (без JWT, без X-Client-*):
| Метод | Путь | Команда |
|---|---|---|
| POST | /api/v1/1c/orders/{order_id}/accept | Принять заказ |
| POST | /api/v1/1c/orders/{order_id}/reject | Отклонить заказ |
| POST | /api/v1/1c/orders/{order_id}/in_progress | В работе (например Kaspi: сборка / накладная) |
| POST | /api/v1/1c/orders/{order_id}/ready | Готов к выдаче |
| POST | /api/v1/1c/orders/{order_id}/delivered | Доставлен |
order_id — UUID заказа в GoSync (поле id из GET /api/v1/1c/orders или updates).
Логика и таймаут те же, что у PATCH статуса: синхронный вызов маркетплейса (7 сек); при успехе — обновление БД и ответ с актуальным статусом.
Для reject в теле запроса можно передать причину (опционально):
json
{
"reason": "Нет в наличии",
"code": "GENERIC"
}Ответ 200
json
{
"ok": true,
"order": {
"id": "uuid-заказа",
"status_internal": "accepted",
"status_external": "acknowledged",
"updated_at": "2026-02-18T14:00:00Z"
}
}Ошибки
| Код | Описание |
|---|---|
| 404 | Заказ не найден или не принадлежит клиенту. |
| 422 | Для данного маркетплейса смена статуса не поддерживается. |
| 502 | Ошибка маркетплейса. В теле — текст ошибки. |
| 504 | Маркетплейс не ответил вовремя (7 сек). Заказ не изменён. |
PATCH /api/v1/marketplace-orders/{order_id}/status (смена статуса)
Команды: принять (accepted), отклонить (rejected), готов (ready), доставлен (delivered). Запрос синхронно отправляется в маркетплейс; БД обновляется только при успешном ответе. Авторизация: JWT (логин пользователя).
Таймаут: 7 секунд. При отсутствии ответа маркетплейса в течение 7 сек запрос завершается без изменения заказа.
Тело запроса
json
{
"status": "accepted",
"reason": "Причина отклонения (для rejected)",
"code": "GENERIC"
}status — один из: accepted, rejected, ready, delivered. Для rejected можно передать reason и code.
Ответ 200
В теле возвращаются актуальные значения после синхронизации с маркетплейсом. Ими можно сразу обновить отображение статуса в 1С (маппинг на «человеческий» вид — на стороне 1С).
json
{
"ok": true,
"order": {
"id": "uuid-заказа",
"status_internal": "accepted",
"status_external": "acknowledged",
"updated_at": "2026-02-18T14:00:00Z"
}
}- status_internal — нормализованный статус (accepted, rejected, ready, delivered).
- status_external — фактический статус, возвращённый маркетплейсом (например Wolt
acknowledged), полезен для маппинга в 1С.
Ошибки
| Код | Описание |
|---|---|
| 502 | Ошибка маркетплейса. В теле — текст ошибки. Статус в БД не меняется; покажите пользователю текст ошибки. |
| 504 | Маркетплейс не ответил вовремя (7 сек). Заказ не изменён. Повторите попытку. |
| 422 | Для данного маркетплейса смена статуса не поддерживается. |
После успешной смены статуса при желании можно обновить данные по заказу через опрос: GET /api/v1/1c/orders/updates?since= с недавним временем.
Примеры curl
Подставьте свой client_id, client_secret (как в кабинете). Basic-строка: echo -n 'CLIENT_ID:CLIENT_SECRET' | base64 (на macOS без переноса: printf '%s' 'id:secret' | base64).
bash
BASE="https://gosync.kz/api/v1/1c"
AUTH="Authorization: Basic $(printf '%s' 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET' | base64)"
# Новые заказы
curl -H "$AUTH" "$BASE/orders?limit=50"
# Изменения с даты
curl -G -H "$AUTH" --data-urlencode "since=2026-02-18T00:00:00Z" "$BASE/orders/updates"
# Подтвердить batch
curl -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{"batch_id":"<uuid>"}' "$BASE/orders/confirm"
# Смена статуса (order_id — UUID заказа из GET /orders или /orders/updates)
curl -X POST -H "$AUTH" "$BASE/orders/<order_id>/accept"
curl -X POST -H "$AUTH" -H "Content-Type: application/json" \
-d '{"reason":"Нет в наличии","code":"GENERIC"}' "$BASE/orders/<order_id>/reject"
curl -X POST -H "$AUTH" "$BASE/orders/<order_id>/in_progress"
curl -X POST -H "$AUTH" "$BASE/orders/<order_id>/ready"
curl -X POST -H "$AUTH" "$BASE/orders/<order_id>/delivered"