صفحات الهبوط
صفحة الهبوط صفحة تحويل مركّزة لمنتج واحد. مستقلة عن كتالوج الواجهة — يمكنك امتلاك صفحة هبوط بدون منتج حي (لإطلاقات قادمة)، أو واحدة مرتبطة بمنتج لإعلانات مدفوعة.
تُدار الأقسام (السلايدرات، الزوار الوهميون، العدّاد التنازلي…) من لوحة التحكم في v1؛ الواجهة البرمجية تُجري CRUD على السجل الأم فقط. تحديث v1.1 سيكشف CRUD الأقسام أيضًا.
حدود الخطة
| الخطة | صفحات هبوط نشطة |
|---|---|
| Free | 0 (شراء لمرة واحدة: 1000 دج/مدى الحياة لكل منها) |
| Pro | 3 |
| Unlimited / Enterprise | غير محدود |
الواجهة البرمجية لا تفرض هذه الحدود عند الإنشاء — يمكنك إنشاء مسودات بحرية. تدفق النشر في اللوحة هو من يفحص الحد.
GET /v1/landing-pages
اسرد صفحات الهبوط. ترقيم بالمؤشّر.
المصادقة: مفتاح منصة بصلاحية landing_pages:read.
معاملات الاستعلام
| المعامل | النوع | ملاحظات |
|---|---|---|
limit | int 1–200 | الافتراضي 50 |
cursor | string | غير شفاف |
status | active | draft | تصفية |
الاستجابة 200
{
"data": {
"items": [
{
"id": 42,
"title": "Black T-Shirt — 30% off",
"slug": "black-tshirt-30-off",
"status": "active",
"language": "ar",
"product_id": 26,
"views": 1543,
"is_purchased": false,
"created_at": "2026-03-01 10:00:00",
"updated_at": "2026-03-15 14:22:11"
}
],
"next_cursor": null,
"has_more": false
}
}
GET /v1/landing-pages/{id}
تفاصيل مع section_count.
{
"data": {
"id": 42,
"title": "Black T-Shirt — 30% off",
"slug": "black-tshirt-30-off",
"status": "active",
"language": "ar",
"product_id": 26,
"views": 1543,
"is_purchased": false,
"meta_title": "Black T-Shirt — Cotton 200gsm — 30% off | DZBuild",
"meta_description": "Limited-time offer on our cotton black t-shirt.",
"section_count": 7,
"created_at": "2026-03-01 10:00:00",
"updated_at": "2026-03-15 14:22:11"
}
}
POST /v1/landing-pages — إنشاء
المصادقة: مفتاح منصة بصلاحية landing_pages:write. يتطلب Idempotency-Key.
الجسم
| الحقل | النوع | إلزامي | ملاحظات |
|---|---|---|---|
title | string 1–255 | ✅ | |
slug | string | يُشتق تلقائيًا من title إن أُغفل | |
status | active | draft | الافتراضي draft | |
language | ar | fr | en | الافتراضي ar | |
product_id | int | يجب أن ينتمي إلى متجرك؛ الصفحة تربط بهذا المنتج | |
meta_title | string ≤ 255 | عنوان SEO؛ الافتراضي title | |
meta_description | string | وصف SEO |
الطلب
curl -X POST 'https://api.dzbuild.app/v1/landing-pages' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"title": "Black T-Shirt — 30% off",
"language": "ar",
"product_id": 26,
"status": "draft"
}'
تُرجع 201 وبنفس شكل GET /v1/landing-pages/{id}. صفحة الهبوط الجديدة بدون أقسام — أضفها من لوحة التحكم.
PATCH /v1/landing-pages/{id}
تحديث جزئي.
curl -X PATCH 'https://api.dzbuild.app/v1/landing-pages/42' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{ "title": "Black T-Shirt — Spring promo" }'
تغيير العنوان يُعيد توليد slug تلقائيًا فقط إن لم تُرسل slug صراحةً.
POST /v1/landing-pages/{id}/publish
اختصار: تحويل الحالة إلى active. يكافئ PATCH ... { status: "active" }.
curl -X POST 'https://api.dzbuild.app/v1/landing-pages/42/publish' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Idempotency-Key: publish-42-$(date +%s)"
DELETE /v1/landing-pages/{id}
حذف نهائي. الـ cascades تحذف الأقسام.
curl -X DELETE 'https://api.dzbuild.app/v1/landing-pages/42' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Idempotency-Key: del-42"
الاستجابة: { "data": { "deleted": true, "id": 42 } }.