منتج
القوائم
صفحات من الجهات بفلاتر تجتمع: الدولة، والقطاع، والصناعة، ونوع الجهة، وحكومية أو خاصة، والموثّقة، وما يتوفر لها من ملفات، وسنة الهوية، ومجموعة عامة، بالترتيب الذي تختاره. لكل جهة بطاقة جاهزة للعرض، والقائمة كلها لا تُحسب سحبًا.
المسارات
- يُحسب سحبًا
- لا
- الصفحة
- حتى 50 جهة، و500 صفحة
- الحد
- 60 في الدقيقة بلا مفتاح
- قيمة غير صالحة
- تُتجاهل كأنها لم تُرسل
ما يعطيك
فلاتر تجتمع
الدولة والقطاع ونوع الجهة والتوثيق والملفات معًا، وأكثر من دولة بفاصلة.
ترتيب تختاره
الأحدث، أو المحدَّثة مؤخرًا، أو الأكثر تحميلًا، أو أبجديًا.
بطاقة جاهزة
المعرّف والاسم والدولة والقطاع والتوثيق وعدد النسخ والصورة المصغّرة.
صفحات معروفة
totalوpageCountلترقيم الصفحات من أول طلب.نسخة عندك
امشِ على الصفحات كلها لتبني قائمة وبحثًا عندك، بلا سحوبات.
التحديث اليومي
sort=updatedيعطيك ما تغيّر أولًا، فتتوقف حين تصل إلى ما قرأته.
جرّب القوائم
غيّر الفلاتر والترتيب وتنقّل بين الصفحات. العنوان والكود يتغيّران معك.
الفلاتر
| المعامل | مثال |
|---|---|
country | SA، أو SA,AE |
category | معرّف القطاع، ويشمل المتفرع منه |
entityType | government، private_company… |
sector | government أو private |
verified | 1 للموثّقة |
has | svg أو png أو pdf أو guidelines |
collection | معرّف مجموعة عامة |
sort | newest، updated، downloads، alpha_ar… |
القيمة غير الصالحة تُتجاهل كأنها لم تُرسل. كل المعاملات في مرجع القائمة.
كيف تستخدمه
- 01
خذ مفتاحًا
افتح حساب مطور من لوحة المطورين وأنشئ مفتاحًا. الباقة المجانية تكفي للبداية، والمفتاح يبقى على خادمك في متغير بيئة.
- 02
ابنِ العنوان من الفلاتر
كل فلتر معامل في العنوان، وما لا تحتاجه لا ترسله.
- 03
اعرض البطاقات
كل عنصر في
itemsيكفي لبطاقة: لا تقرأ السجل لكل بطاقة. - 04
رقّم الصفحات
pageوpageCount، وtotalلعدد النتائج. - 05
اقرأ السجل حين تُفتح البطاقة
للألوان والموقع والنسخ، سحب واحد حين يفتحها المستخدم.
صفحة من الدليل
directory.js
const base = 'https://new.wasmenia.com';/** 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, { headers: { Authorization: `Bearer ${process.env.WASMENIA_API_KEY}` }, }); 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 };}المرور على القائمة كلها
walk.js
// Every card of the archive, page by page. Lists are not pulls.const base = 'https://new.wasmenia.com';const headers = { Authorization: `Bearer ${process.env.WASMENIA_API_KEY}` };const sleep = (s) => new Promise((r) => setTimeout(r, s * 1000));export async function* allBrands(filters = {}) { for (let page = 1; ; page++) { const url = new URL('/api/v1/brands', base); for (const [k, v] of Object.entries({ ...filters, limit: 50, page })) url.searchParams.set(k, String(v)); const res = await fetch(url, { headers }); if (res.status === 429) { await sleep(Number(res.headers.get('Retry-After') ?? 60)); page--; // the same page again continue; } if (!res.ok) throw new Error(`HTTP ${res.status}`); const { items, pageCount } = await res.json(); yield* items; // { slug, name, country, category, verified, versions, thumbnailUrl, url } if (page >= pageCount || page >= 500) return; }}for await (const brand of allBrands({ country: 'SA' })) { await db.cards.upsert(brand.slug, brand);}أسئلة
القائمة أطول من حد الصفحات
أقصى ما تمر عليه القائمة بفلاتر واحدة 25,000 جهة. قسّم المرور بفلتر: دولة بعد دولة، أو قطاعًا بعد قطاع.
هل في البطاقة ألوان الجهة؟
لا. البطاقة للقائمة، والألوان والموقع والنسخ في السجل.
ماذا في `category` في البطاقة؟
اسم القطاع للعرض. للفلترة استخدم معرّف القطاع في المعامل category.
حالات تستخدمه
شعارات العملاء والشركاء
شريط شعارات يتحدّث حين تغيّر الجهة هويتها.
أدلة الجهات
قائمة بفلاتر الدولة والقطاع والنوع، وبطاقة لكل جهة.
نسخة من الأرشيف عندك
القائمة كاملة بلا سحوبات، والسجل حين تحتاجه، وتحديث يومي.
اقرأ الدليل