Σελιδοποίηση + idempotency
Σελιδοποίηση με cursor σε κάθε endpoint λίστας· Idempotency-Key σε κάθε endpoint που μεταβάλλει κατάσταση. Δύο μοτίβα που εσωτερικεύετε μία φορά· κάθε endpoint τα ακολουθεί.
Σελιδοποίηση με cursor
Όλα τα endpoints λίστας (GET /api/v1/public/sessions, /evidence, /whiteboards κ.λπ.) επιστρέφουν έναν φάκελο:
{
"data": [
{ /* resource */ },
{ /* resource */ }
],
"has_more": true,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wNS0yMVQxNDoyMSswMDowMCJ9"
} Πώς να σελιδοποιήσετε
- Στείλτε το πρώτο αίτημα χωρίς παράμετρο
cursor. - Αν το
has_moreείναιtrue, περάστε τοnext_cursorαυτούσιο ως query paramcursorστο επόμενο αίτημα. - Επαναλάβετε μέχρι το
has_moreνα γίνειfalse.
curl "https://app.nexbasira.com/api/v1/public/sessions?limit=25" \
-H "Authorization: Bearer nb_sec_..."
# response includes next_cursor: "eyJjcmVhdGVkX2F0Ijo..."
curl "https://app.nexbasira.com/api/v1/public/sessions?limit=25&cursor=eyJjcmVhdGVkX2F0Ijo..." \
-H "Authorization: Bearer nb_sec_..." Όρια
| Param | Προεπιλογή | Μέγιστο |
|---|---|---|
limit | 25 | 100 |
Υψηλότερες τιμές limit μειώνουν τον αριθμό round-trip αλλά αυξάνουν το μέγεθος του payload ανά απόκριση + τον χρόνο serialisation. Η προεπιλογή 25 είναι κατάλληλη για χρήση UI· οι νυχτερινές batch εργασίες συνήθως περνούν 100.
Μορφή cursor
Το cursor είναι αδιαφανές για τους clients — είναι ένα JSON blob κωδικοποιημένο σε base64 που κωδικοποιεί τη θέση στο υποκείμενο queryset. Μην αναλύετε ή κατασκευάζετε cursors· απλώς περνάτε τα αυτούσια. Η μορφή δεν είναι σταθερή μεταξύ εκδόσεων API.
Ταξινόμηση
Η προεπιλεγμένη ταξινόμηση είναι created_at DESC (νεότερα πρώτα) για κάθε endpoint λίστας. Αυτή είναι επίσης η σειρά με την οποία προχωρά το cursor — θα κινηθείτε από το πιο πρόσφατο προς το παλαιότερο καθώς σελιδοποιείτε.
Βοηθητικές συναρτήσεις SDK
Και τα δύο SDK διαθέτουν έναν διαφανή async-iterator που σελιδοποιεί για εσάς:
// @nexbasira/node
for await (const session of nb.sessions.list({ limit: 100 })) {
// ...
}
// nexbasira (Python)
for session in nb.sessions.iter(limit=100):
... Idempotency
Κάθε endpoint που μεταβάλλει κατάσταση δέχεται μια κεφαλίδα Idempotency-Key. Περάστε ένα μοναδικό κλειδί (συνήθως ένα UUID) ανά λογική λειτουργία· μια επανάληψη με το ίδιο κλειδί επιστρέφει την cached απόκριση χωρίς να αναδημιουργεί τον πόρο.
curl -X POST https://app.nexbasira.com/api/v1/public/sessions \
-H "Authorization: Bearer nb_sec_..." \
-H "Idempotency-Key: 01HGAB7T8X3PVT3HKEXAMPLE" \
-H "Content-Type: application/json" \
-d '{"notes": "Vehicle damage CL-2026-0042"}' Παράθυρο cache
Οι cached αποκρίσεις ζουν για 24 ώρες. Επανάληψη μετά τις 24 ώρες με το ίδιο κλειδί δημιουργεί νέο πόρο — αντιμετωπίστε το κλειδί ως έγκυρο μόνο για τη διάρκεια του βρόχου επανάληψής σας.
Scoping
Τα κλειδιά περιορίζονται σε (credential, endpoint, method):
- Μια επανάληψη από το ίδιο διαπιστευτήριο προς το ίδιο endpoint με το ίδιο κλειδί επιστρέφει την cached απόκριση.
- Ένα διαφορετικό διαπιστευτήριο που χρησιμοποιεί το ίδιο κλειδί δημιουργεί νέο πόρο (το αντιμετωπίζει ως νέα κλήση).
- Το ίδιο κλειδί σε διαφορετικό endpoint δημιουργεί νέο πόρο (ξεχωριστή θέση cache).
Τι αποθηκεύεται στην cache
Μόνο επιτυχείς αποκρίσεις (2xx). Ένα αποτυχημένο αίτημα δεν δηλητηριάζει την cache — η επόμενη επανάληψή σας με το ίδιο κλειδί παίρνει μια νέα προσπάθεια.
Επανάληψη κεφαλίδας
Οι επιτυχείς idempotent αποκρίσεις επαναλαμβάνουν το κλειδί στην κεφαλίδα απόκρισης Idempotency-Key — χρήσιμο για logging / συσχέτιση.
Δημιουργία κλειδιών
Χρησιμοποιήστε οτιδήποτε είναι καθολικά μοναδικό ανά λογική λειτουργία:
crypto.randomUUID()στο Node 19+uuid.uuid4()στην Python- Το id της επιχειρησιακής σας διαδικασίας (π.χ. αριθμός απαίτησης + χρονοσφραγίδα) αν θέλετε ευανάγνωστα ίχνη στα logs
Βοηθητικές συναρτήσεις SDK
// @nexbasira/node — pass via second arg
await nb.sessions.create(
{ notes: "..." },
{ idempotencyKey: crypto.randomUUID() },
);
// nexbasira (Python)
nb.sessions.create(notes="...", idempotency_key=str(uuid.uuid4())) Τι ακολουθεί
- Σφάλματα + όρια ρυθμού — τι συμβαίνει όταν η σελιδοποίηση ή οι βρόχοι επανάληψης πάνε στραβά
- API Συνεδριών — το πρώτο endpoint που εφαρμόζει και τα δύο μοτίβα