Skip to content

Заказы

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

ПараметрТипПо умолчаниюОписание
limitnumber100Макс. кол-во заказов

Ответ 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

ПараметрТипОбязательныйОписание
sinceISO8601даДата/время (RFC3339)
limitnumberнет (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"