إنتقل إلى المحتوى الرئيسي

بيكسلات التتبع

هذه النقاط الأربع تدير بيكسلات التتبع الخاصة بالمتجر، وهي القائمة نفسها التي يعدّلها التاجر في صفحة إعدادات البكسل بلوحة التحكم (/dashboard/pixels). يقبل المتجر سبعة أنواع من البيكسلات: Meta (Facebook) وTikTok وSnapchat وPinterest وGoogle Analytics وGoogle Tag Manager وGoogle Ads. ما تحتاجه كل منصة، وطريقة التأكد من وصول أحداثها، تجدهما في دليل البيكسلات.

الفحوص شكلية فقط. الاستجابة 201 تعني أن المعرّفات مكتوبة بصيغة صحيحة، لا أن المنصة الإعلانية قبلتها. توكن الوصول الخاص بأحداث الخادم يُكتب ولا يُقرأ: لا تُرجعه أي نقطة، والحقل has_token يخبرك هل يوجد توكن محفوظ.

قبل أن تبدأ​

  • تحتاج GET إلى pixels:read. وتحتاج POST وPATCH وDELETE إلى pixels:write وإلى Idempotency-Key (انظر Idempotency). المفاتيح المُنشأة من لوحة التحكم (الإعدادات ← واجهة API، /dashboard/api) تحمل الصلاحيتين. الصلاحيات تُجمَّد لحظة إنشاء المفتاح، فالمفتاح القديم الذي تنقصه الصلاحية المطلوبة يُرجع 403 forbidden: أنشئ مفتاحاً جديداً من لوحة التحكم.
  • الخطة تحدد عدد البيكسلات التي يمكن للمتجر أن يحملها: لا شيء في الخطة المجانية، وبيكسل واحد من كل نوع في Pro، وبلا حدّ في Unlimited وEnterprise. المفتاح الشخصي لا يعمل إلا على متجر بخطة Enterprise سارية. أما التطبيق المثبّت فيصل أيضاً إلى متاجر على الخطة المجانية أو Pro، وفيها يُطبَّق الحدّ.
  • يستطيع التاجر تعيين بيكسل لمنتجات أو فئات أو صفحات هبوط من لوحة التحكم. الواجهة البرمجية لا تقرأ هذه التعيينات ولا تغيّرها.
النطاقالوصف
pixels:readالاطلاع على بيكسلات التتبع الخاصة بالمتجر. توكنات الوصول لا تُرجَع أبداً.
pixels:writeإضافة بيكسلات التتبع وتعديلها وحذفها.

كائن البيكسل​

الحقلالنوعملاحظات
idintرقم البيكسل في DZBuild، ويُستعمل في مسار PATCH وDELETE.
pixel_typestringأحد الأنواع السبعة أسفله. يُحدَّد عند الإنشاء ولا يتغير.
pixel_idstringمعرّف البيكسل أو الوسم أو القياس من المنصة الإعلانية. يُحدَّد عند الإنشاء ولا يتغير.
pixel_namestring أو nullالاسم المعروض.
has_tokenbooltrue عندما يكون توكن وصول لأحداث الخادم محفوظاً.
test_event_codestring أو nullرمز اختبار الأحداث المكتوب في لوحة التحكم. لا تستطيع الواجهة البرمجية ضبطه، وPATCH الذي يكتب أي حقل يمسحه.
ad_account_idstring أو nullمعرّف الحساب الإعلاني في Pinterest.
conversion_labelstring أو nullتسمية التحويل (conversion label) في Google Ads.
is_activeboolfalse تُبقي البيكسل وتوقف أحداثه في المتصفح وفي الخادم.
is_defaultboolضبطه على true يلغيه من بيكسلات المتجر الأخرى من النوع نفسه. مكان تحميل البيكسل لا يتعلق به.
created_at، updated_atstringYYYY-MM-DD HH:MM:SS بتوقيت الجزائر.

أنواع البيكسلات​

pixel_typeالمنصةأحداث الخادم
facebookMeta (Facebook)نعم، عندما يملك البيكسل توكن وصول.
tiktokTikTokنعم، عندما يملك البيكسل توكن وصول.
snapchatSnapchatنعم، عندما يملك البيكسل توكن وصول.
pinterestPinterestنعم، عندما يملك البيكسل توكن وصول وad_account_id.
google_analyticsGoogle Analyticsلا.
gtmGoogle Tag Managerلا.
google_adsGoogle Adsلا. الحقل conversion_label يُقرأ لهذا النوع فقط.

التوكن المرسل لنوع بلا أحداث خادم يُحفظ ولا يُستعمل أبداً.

أين يُحمَّل البيكسل​

البيكسل المفعّل الذي لا تعيينات له يُحمَّل في كل صفحات المتجر، بما فيها صفحات الهبوط. أما البيكسل الذي عيّنه التاجر لمنتجات أو فئات أو صفحات هبوط فلا يُحمَّل إلا في الصفحات المطابقة، وأحداث الخادم الخاصة به تتبع القاعدة نفسها. البيكسل المُنشأ عبر الواجهة البرمجية يبدأ بلا تعيينات.

توكن الوصول​

access_token هو توكن أحداث الخادم المنسوخ من مدير الأحداث في المنصة الإعلانية. تحذف الواجهة البرمجية الأحرف غير المرئية والمسافات وعلامات الاقتباس المحيطة به، ثم ترفضه بـ 422 invalid_access_token إذا بقي فيه < أو مسافة أو سطر جديد، أو إذا ساوى pixel_id، أو إذا كان توكن facebook أقصر من 40 حرفاً.

  • لا تُرجع أي نقطة التوكن. ويحفظ سجلّ تعديلات المتجر القناع •••••••• مكانه.
  • مع PATCH، النص الفارغ أو null أو قيمة تحتوي ذلك القناع تُبقي التوكن المحفوظ. يمكن استبدال التوكن لكن لا يمكن إزالته عبر الواجهة البرمجية: لإزالته احذف البيكسل وأضفه من جديد بلا توكن، وهذا يزيل تعييناته أيضاً.

GET /v1/pixels​

بيكسلات المتجر من الأحدث إلى الأقدم، مع حصة الخطة في limits.

المصادقة: مفتاح منصة بصلاحية pixels:read.

معاملات الاستعلام​

المعاملالنوعالافتراضيملاحظات
pixel_typestringلا شيءبيكسلات هذا النوع فقط. النوع غير المعروف يُرجع قائمة فارغة.
limitint50من 1 إلى 200.
cursorstringلا شيءقيمة next_cursor من الصفحة السابقة. انظر الترقيم.

الطلب​

curl 'https://api.dzbuild.app/v1/pixels?pixel_type=facebook' \
-H "Authorization: Bearer $DZ_KEY"

الاستجابة 200​

{
"data": {
"items": [
{
"id": 12,
"pixel_type": "facebook",
"pixel_id": "123456789012345",
"pixel_name": "Main ad account",
"has_token": true,
"test_event_code": null,
"ad_account_id": null,
"conversion_label": null,
"is_active": true,
"is_default": false,
"created_at": "2026-10-01 14:20:05",
"updated_at": "2026-10-01 14:20:05"
}
],
"next_cursor": null,
"has_more": false,
"limits": {
"plan": "enterprise",
"can_add": true,
"per_type_limit": null,
"total_limit": null,
"counts": {
"facebook": 1,
"tiktok": 1,
"snapchat": 0,
"pinterest": 0,
"google_analytics": 1,
"gtm": 0,
"google_ads": 0
},
"total": 3
}
}
}

limits​

يأتي limits مع كل صفحة ويصف المتجر كله، مهما كان pixel_type الذي تصفّي به.

الحقلالمعنى
planخطة المتجر التي تأتي منها الحصة.
can_addfalse عندما لا تسمح الخطة بأي بيكسل. لا ينظر إلى الأعداد، لذا قارن counts بـ per_type_limit قبل إضافة بيكسل.
per_type_limitعدد البيكسلات المسموح به لكل نوع، وnull تعني بلا حدّ.
total_limitعدد البيكسلات المسموح به إجمالاً، وnull تعني بلا حدّ.
countsعدد البيكسلات لكل نوع، بمفتاح لكل نوع من الأنواع السبعة.
totalكل بيكسلات المتجر، المفعّلة وغير المفعّلة.

POST /v1/pixels​

يضيف بيكسلاً ويُرجعه مع 201.

المصادقة: مفتاح منصة بصلاحية pixels:write. يتطلب Idempotency-Key.

الجسم​

الحقلالنوعإلزاميملاحظات
pixel_typestringنعمأحد الأنواع السبعة، بأحرف كبيرة أو صغيرة. يُقبل type أيضاً.
pixel_idstringنعممن 1 إلى 100 حرف أو رقم أو - أو _. معرّف facebook من 15 إلى 17 رقماً، يُنسخ من Events Manager.
pixel_namestringلايُقطع عند 100 حرف. يُقبل name أيضاً.
access_tokenstringلايخضع لقواعد توكن الوصول أعلاه. اتركه أو أرسل "" لبيكسل بلا أحداث خادم.
ad_account_idstringلايُقطع عند 64 حرفاً.
conversion_labelstringلايُقطع عند 64 حرفاً.
is_activeboolلاالافتراضي true.
is_defaultboolلاالافتراضي false.

ما يفحصه النداء​

تجري الفحوص بهذا الترتيب، وأول فحص يفشل هو الذي يحدد الخطأ. الرفض يُحفظ مع Idempotency-Key الخاص به مدة 24 ساعة: بعد إصلاح السبب، أعد إرسال النداء بـ Idempotency-Key جديد.

  1. pixel_type أحد الأنواع السبعة، وإلا 422 invalid_pixel_type.
  2. pixel_id بالصيغة الصحيحة، وإلا 422 invalid_pixel_id.
  3. الخطة تسمح ببيكسل آخر من هذا النوع، وإلا 409 limit_reached.
  4. لا يملك المتجر بيكسلاً من النوع نفسه بـ pixel_id نفسه، وإلا 409 pixel_exists.
  5. access_token، إن أُرسل، يحترم قواعد توكن الوصول، وإلا 422 invalid_access_token.

الطلب​

curl -X POST 'https://api.dzbuild.app/v1/pixels' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pixel-meta-main-1" \
-d '{"pixel_type": "facebook", "pixel_id": "123456789012345", "pixel_name": "Main ad account", "access_token": "EAAGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}'

الاستجابة 201​

{
"data": {
"id": 12,
"pixel_type": "facebook",
"pixel_id": "123456789012345",
"pixel_name": "Main ad account",
"has_token": true,
"test_event_code": null,
"ad_account_id": null,
"conversion_label": null,
"is_active": true,
"is_default": false,
"created_at": "2026-10-01 14:20:05",
"updated_at": "2026-10-01 14:20:05"
}
}

PATCH /v1/pixels/{id}​

يغيّر الحقول التي ترسلها فقط ويُرجع البيكسل مع 200. الجسم الفارغ لا يغيّر شيئاً.

المصادقة: مفتاح منصة بصلاحية pixels:write. يتطلب Idempotency-Key.

الجسم​

الحقلالنوعملاحظات
pixel_namestring أو nullيُقطع عند 100 حرف. null أو "" يمسحه.
access_tokenstringالتوكن الجديد يحل محل المحفوظ. النص الفارغ أو null أو القناع يُبقيه.
ad_account_idstring أو nullيُقطع عند 64 حرفاً. null أو "" يمسحه.
conversion_labelstring أو nullيُقطع عند 64 حرفاً. null أو "" يمسحه.
is_activeboolfalse توقف البيكسل مؤقتاً وتُبقيه.
is_defaultbooltrue تلغيه من بيكسلات المتجر الأخرى من النوع نفسه.

لا يمكن إرسال pixel_type ولا type ولا pixel_id، حتى بقيمتها الحالية: يُرجع النداء 422 immutable_field. لتغييرها احذف البيكسل وأضف بيكسلاً جديداً.

الطلب​

curl -X PATCH 'https://api.dzbuild.app/v1/pixels/12' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pixel-12-pause-1" \
-d '{"is_active": false}'

الاستجابة 200​

{
"data": {
"id": 12,
"pixel_type": "facebook",
"pixel_id": "123456789012345",
"pixel_name": "Main ad account",
"has_token": true,
"test_event_code": null,
"ad_account_id": null,
"conversion_label": null,
"is_active": false,
"is_default": false,
"created_at": "2026-10-01 14:20:05",
"updated_at": "2026-10-02 09:05:41"
}
}

DELETE /v1/pixels/{id}​

يحذف البيكسل وتعييناته للمنتجات والفئات وصفحات الهبوط.

المصادقة: مفتاح منصة بصلاحية pixels:write. يتطلب Idempotency-Key.

الطلب​

curl -X DELETE 'https://api.dzbuild.app/v1/pixels/12' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Idempotency-Key: pixel-12-delete-1"

الاستجابة 200​

{
"data": {
"deleted": true,
"id": 12
}
}

التراجع​

كل كتابة على البيكسلات تتم عبر الواجهة البرمجية تُسجَّل في سجلّ تعديلات المتجر. استجابة الكتابة لا تحمل رقم التغيير: ابحث عنه بـ GET /v1/changes?entity=pixels، الأحدث أولاً، وهي تحتاج إلى store:read. يتراجع POST /v1/changes/{id}/undo عن تغيير واحد ويحتاج إلى pixels:write وإلى Idempotency-Key. انظر التغييرات والتراجع عنها.

  • التراجع عن تعديل يُعيد pixel_name وad_account_id وconversion_label وis_active وis_default. التوكن ليس في السجل، فيبقى كما هو الآن.
  • التراجع عن حذف يُعيد البيكسل بحقوله القديمة، وبرقمه id القديم إن بقي متاحاً، لكن بلا توكن وصول وبلا تعييناته. حدّ الخطة وفحص التكرار يبقيان ساريين، فقد يُرجع هذا التراجع 409 limit_reached أو 409 pixel_exists.
  • لا يمكن التراجع عن إضافة بيكسل: يُرجع التراجع 422 nothing_to_restore. احذف البيكسل بدلاً من ذلك.
  • التراجع عن تعديل بيكسل حُذف بعد ذلك يُرجع 422 restore_target_missing.
  • تغييرات البيكسلات المحفوظة من لوحة التحكم لا تُسجَّل، فلا يمكن التراجع عنها عبر الواجهة البرمجية.
  • لا يستطيع رمز التطبيق المثبّت قراءة التغييرات ولا التراجع عنها: كلاهما يُرجع 403 forbidden.

الأخطاء​

HTTPالرمزالسبب
400bad_requestالجسم ليس JSON صالحاً، أو رقم البيكسل في المسار ليس أرقاماً فقط، أو Idempotency-Key غائب أو غير صالح مع POST أو PATCH أو DELETE.
401unauthorizedمفتاح خاطئ أو غائب.
402quota_exceededانتهت حصة الطلبات الشهرية للمتجر. انظر حدود المعدل.
403forbiddenMissing scope: pixels:read أو Missing scope: pixels:write، أو API access requires an active Enterprise plan لمفتاح شخصي متجره ليس على خطة Enterprise سارية.
404not_foundلا يوجد بيكسل بهذا الرقم في المتجر. وبيكسل متجر آخر يُرجع الجواب نفسه.
409limit_reachedالخطة لا تسمح ببيكسلات أخرى من هذا النوع.
409pixel_existsالمتجر يملك من قبل بيكسلاً من هذا النوع بـ pixel_id نفسه.
413payload_too_largeالجسم أكبر من 1 ميغابايت.
422invalid_pixel_typepixel_type غائب أو ليس أحد الأنواع السبعة.
422invalid_pixel_idpixel_id غائب، أو أطول من 100 حرف، أو فيه حرف غير الحروف والأرقام و- و_، أو هو معرّف facebook ليس من 15 إلى 17 رقماً.
422invalid_access_tokenالتوكن يخالف إحدى قواعد توكن الوصول.
422immutable_fieldأرسل PATCH الحقل pixel_type أو type أو pixel_id.
422pixel_write_failedرُفضت الكتابة بعد نجاح الفحوص أعلاه. الرسالة تذكر السبب وقد تكون بالعربية.
422idempotency_key_reuseاستُعمل Idempotency-Key نفسه مع طريقة أو مسار أو جسم مختلف.
429rate_limitedطلبات كثيرة. انتظر المدة في Retry-After.
500server_errorفشل الطلب. أعد المحاولة بالـ Idempotency-Key نفسه.
هذه الصفحة لأدوات الذكاء الاصطناعيعرض بصيغة Markdownفتح في ChatGPTفتح في Claude