المفاهيم
الصفحات والمزامنة
updatedSince يُبقي نظامًا آخر متزامنًا.
الصفحات
{ "data": [...], "next": "<cursor>" }. أرسل ?cursor=<next> للصفحة التالية، حتى تصبح next قيمة null. و?limit= من 1 إلى 200، و50 افتراضيًا. والمؤشّر الذي لم تعطه الواجهة يُرفض 400 CURSOR_INVALID.
عوامل التصفية
updatedSince وcreatedFrom وcreatedTo وexternalId، وبحقولها الخاصة — قائمة المستندات بـ status وpartnerId وissueFrom وissueTo وnumber، وجهات الاتصال بـ type وsearch وactive.
مزامنة نظام آخر
updatedSince قبلها بدقيقة أو اثنتين — فالتداخل الصغير يكلّف بضعة صفوف مكررة ولا يفوّت أيًا منها. حدّث أو أضف بحسب id.
let cursor = null;
do {
const url = new URL('https://app.kwn.tax/api/v1/invoices');
url.searchParams.set('limit', '200');
url.searchParams.set('updatedSince', lastSync); // an instant, UTC
if (cursor) url.searchParams.set('cursor', cursor);
const res = await fetch(url, { headers: { 'X-Api-Key': process.env.KWN_API_KEY } });
const { data, next } = await res.json();
for (const invoice of data) upsert(invoice);
cursor = next;
} while (cursor);