الفلاتر
/api/v1/brands يقبل الفلاتر معًا:
| المعامل | مثال |
|---|---|
country | SA، أو SA,AE |
category | معرّف القطاع، ويشمل المتفرع منه |
entityType | government، private_company… |
sector | government أو private |
verified | 1 للموثّقة |
has | svg أو png أو pdf أو guidelines |
collection | معرّف مجموعة عامة |
sort | newest، downloads، alpha_ar… |
القيمة غير الصالحة تُتجاهل كأنها لم تُرسل. كل المعاملات في مرجع القائمة.
صفحة من الدليل
directory.js
const base = 'https://new-wasmenia-4zjd6l.cranl.net';/** One page of a directory: Saudi brands with an SVG logo, newest first. */export async function directoryPage(page = 1) { const url = new URL('/api/v1/brands', base); url.searchParams.set('country', 'SA'); url.searchParams.set('has', 'svg'); url.searchParams.set('limit', '24'); // up to 50 url.searchParams.set('page', String(page)); const res = await fetch(url); if (!res.ok) throw new Error(`HTTP ${res.status}`); const { total, pageCount, items } = await res.json(); // pageCount is 0 when nothing matches. return { total, pageCount, items };}البطاقة
كل عنصر في items فيه slug وname وcountry وcategory وverified وversions وthumbnailUrl وurl. هذا يكفي للقائمة. للتفاصيل (الألوان، والموقع، والنسخ) اقرأ السجل حين يفتح المستخدم البطاقة.
limit حتى 50، وpage حتى 500، وما زاد يُحصر في الحد. وpageCount صفر حين لا يطابق شيء.