Temeller
Sayfalama
İmzalı imleç (cursor) tabanlı sayfalama — neden offset yok, imleç nasıl taşınır, sınırlar ne.
Liste uçları imleç (cursor) tabanlı sayfalar. page=3 gibi bir offset parametresi yoktur ve bilinçli olarak yoktur.
Neden offset değil
Offset sayfalama iki yerde bozulur ve ikisi de sessizdir:
- Kayan liste. Sen 2. sayfayı okurken yeni bir kayıt eklenirse tüm kayıtlar bir sıra kayar; 3. sayfada bir kaydı iki kez görürsün ya da bir kaydı hiç görmezsin.
- Derin sayfa maliyeti.
OFFSET 50000veritabanına 50.000 satırı okuyup atmasını söyler; 40. sayfa 1. sayfadan kat kat pahalıdır.
İmleç, "en son gördüğün kaydın konumu"nu taşır: liste kaysa da senin okuma noktan sabit kalır.
Kullanımı
curl "https://acme.crm.blesyum.app/api/crm/public/v1/contacts?per_page=50" \
-H "Authorization: Bearer blsk_..."{
"type": "list",
"data": [ … ],
"pages": {
"type": "pages",
"per_page": 50,
"next": { "starting_after": "eyJjIjoxNzY0…" }
}
}Sonraki sayfa:
curl "https://acme.crm.blesyum.app/api/crm/public/v1/contacts?per_page=50&starting_after=eyJjIjoxNzY0…" \
-H "Authorization: Bearer blsk_..."pages.next yoksa liste bitmiştir. Bu tek durak koşuludur — boş data dizisini beklemek gereksiz bir tur daha attırır.
İmleç OPAKTIR
starting_after değeri HMAC ile imzalıdır ve içeriğini ayrıştırmamalısın:
- Değeri değiştirirsen imza tutmaz ve
400alırsın. - Biçimi haber vermeden değişebilir; ayrıştıran bir istemci bir gün kırılır.
- İçinde çalışma alanı kimliği yoktur — kapsam her zaman anahtardan gelir, yani imleci taklit ederek başka bir kiracının verisine ulaşmak imkânsızdır.
Yapman gereken tek şey: aldığın değeri aynen geri göndermek.
Sınırlar
| Parametre | Varsayılan | En fazla |
|---|---|---|
per_page | 50 | 150 |
Aşarsan 400 ve parameter_invalid alırsın.
Sıralama
Liste uçları (created_at DESC, id DESC) sıralıdır. id bir eşitlik bozucudur: aynı mikrosaniyede oluşmuş iki kayıt olsa bile sıra kararlıdır ve sayfalar arasında kayma olmaz.
Tüm listeyi çekiyorsan per_page=150 kullan ve pages.next boşalana kadar döngü kur. Her turda hız sınırını gözet — X-RateLimit-Remaining başlığı kaç isteğin kaldığını söyler.