Пагінація
Три типи списків використовують три стилі пагінації. Обирайте ендпоінт за тим, що вам потрібно, а не лише за набором фільтрів.
| Номери сторінок | Курсор прокручування | Курсор за ID | |
|---|---|---|---|
| Ендпоінти | /search, /car-options | /cars | /countries, /locations |
| Запит | page, perPage | Переходьте за next_url | after_id, per_page |
| Розмір сторінки | 2–50, за замовчуванням 50 | 1–500, за замовчуванням 500 | 1–1,000, за замовчуванням 100 |
| Ліміт глибини | page × perPage ≤ 10,000 | Немає, курсор живе 1–15 хв | Немає |
| Зупинка, коли | links.next дорівнює null | scroll_id дорівнює null | meta.has_more дорівнює false |
| Для чого | Пошук для користувачів | Синхронізація всього каталогу | Синхронізація довідників |
Дві особливості /search, які треба врахувати в коді. data може містити на один автомобіль більше, ніж perPage (ми бачили 3 автомобілі при perPage=2), тож обрізайте на клієнті, якщо потрібен точний розмір. А meta.total обмежується 10,000: сприймайте це значення як «10,000 або більше» і викликайте /search/count з тими самими фільтрами, щоб отримати точне число.
Довідники автомобілів і мотоциклів
Без vehicle_type повертаються автомобілі; motorcycle / 2 вибирає мотоцикли. Зберігайте тип на кожному кроці.
per_page — 1–100, типово 100. Використовуйте page або after_id, не обидва. Для сторінок: page × per_page ≤ 10000. Для повного обходу передавайте next_after_id як after_id без page до has_more=false. Тоді total рахує решту збігів.
Без пагінації /brands і /models зберігають попередні масиви та ліміти. Передайте per_page=100 для {data,meta}. Вкладені generations зберігають {name,from,to}; ID поколінь беріть із /generations/{model_id}.
{
"links": {
"first": "https://api.carstat.dev/search?perPage=2&page=1",
"last": "https://api.carstat.dev/search?perPage=2&page=5000",
"prev": null,
"next": "https://api.carstat.dev/search?perPage=2&page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5000,
"path": "https://api.carstat.dev/search",
"per_page": 2,
"to": 3,
"total": 10000
}
}{
"data": [
"…3 countries…"
],
"meta": {
"per_page": 3,
"has_more": true,
"next_after_id": 3
}
}Отримайте доступ до API
Підключіть ключ, щоб виконувати будь-який запит із цих сторінок на своїх даних. Ключа ще немає? Попросіть у нас демо-ключ: той самий JSON, що й у платних планах.