Пагинация
Длинные списки листаются курсором, без номеров страниц: новые записи между запросами не сдвигают страницы и не дают дублей.
| Операция | Параметры | Ответ |
|---|---|---|
GET conversations | limit (1–100, по умолчанию 50), cursor | items, next_cursor, has_more |
GET conversations/{id}/history | limit (1–100, по умолчанию 50), cursor | items, next_cursor, up_to_sequence |
GET webhooks/{webhook_id}/deliveries | limit (до 100) | последние доставки за 30 дней, без курсора |
Остальные списки (справочники, метки обращения, подписки) приходят целиком.
Как листать
- Первый запрос — без
cursor. - Если в ответе
next_cursorнеnull, следующий запрос — сcursor=<next_cursor>и теми же фильтрами. next_cursor = null— это последняя страница.
curl -sS "$HELPDESK_URL/api/integration/v1/conversations?state=waiting&limit=100" \
-H "Authorization: Bearer $TOKEN"
# следующая страница
curl -sS "$HELPDESK_URL/api/integration/v1/conversations?state=waiting&limit=100&cursor=$NEXT" \
-H "Authorization: Bearer $TOKEN"
- Курсор передают как есть: он подписан сервером. Изменённый или чужой курсор —
422 VALIDATION_FAILED. - Сначала идут новые: обращения — по убыванию номера, история — по убыванию
sequence. up_to_sequenceистории — номер самого нового сообщения на момент чтения. Сообщения новее него читаются следующим запросом без курсора.- Если история обращения перестроена (например, при слиянии), курсор старой истории получает
410 RESYNC_REQUIRED: начните чтение заново, без курсора.
SDK обходят страницы сами: history(...) и списки в SDK — итераторы по всем страницам.