Главный метод синхронизации: «что нового с прошлого опроса» — новые коды после поступления поставщика, смена статусов.
Зачем нужен метод
Главный метод синхронизации: «что нового с прошлого опроса» — новые коды после поступления поставщика, смена статусов. Эффективнее полного list.
Когда использовать
Cron каждые 5–15 мин + сразу после webhook incoming.completed. Храните cursor/nextCursor.
Эндпоинт
POST /v1/platform/promo-codes/changes
Аутентификация: API-ключ в заголовке X-Api-Key (префикс bk_plt_). projectId и actor id в body не передаются — берутся из ключа.
Scope: platform:catalog:read
Пример запроса
{
"meta": { "requestId": "optional-uuid" },
"data": { "updatedSince": "2026-07-13T08:00:00Z", "limit": 500, "changeTypes": ["created", "status_changed"] }
}
Пример ответа
{
"success": true,
"data": {
"items": [
{
"codeId": "code-uuid",
"changeType": "created",
"status": "available",
"codeDisplay": "QUEEN14-***AMU",
"supplierName": "Промомед",
"updatedAt": "2026-07-13T09:15:00Z"
}
],
"nextCursor": "…",
"hasMore": false,
"serverTime": "2026-07-13T12:00:00Z"
}
}
Ошибки
UNAUTHORIZED/ACCESS_DENIED— нет доступаVALIDATION_ERROR— некорректное телоNOT_FOUND— сущность не найденаRATE_LIMIT_EXCEEDED(429) — превышен лимит
cURL
curl -X POST "https://api-external.promanta.ru/v1/platform/promo-codes/changes" \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{"data": { "updatedSince": "2026-07-13T08:00:00Z", "limit": 500, "changeTypes": ["created", "status_changed"] }}'