تغطي هذه النقاط ما تحفظه لوحة التحكم في صفحات الشحن: سعر التوصيل للمنزل وللمكتب في كل ولاية، وقواعد الشحن المجاني، وشركات التوصيل المرتبطة بالمتجر. وتقدّم أيضاً قوائم الولايات والبلديات التي يحتاجها نموذج الطلب، والبلديات ومكاتب الاستلام التي تخدمها شركة توصيل المتجر.
الأسعار بالدينار الجزائري (DZD). يحسب POST /v1/orders سعر التوصيل من هذه الأسعار ويتجاهل أي تكلفة شحن تُرسل في الجسم، لذلك تقرأ واجهة المتجر الخاصة هذه الأسعار لتعرض تقديراً وتترك الطلب يحسب المبلغ. انظر الثيمات والواجهات المخصصة.
قبل أن تبدأ
يحتاج المفتاح صلاحيات الشحن. المفاتيح المُنشأة من لوحة التحكم (الإعدادات ← واجهة API،
/dashboard/api) تملك الاثنتين. الصلاحيات تُجمَّد لحظة إنشاء المفتاح، فالمفتاح القديم الذي تنقصه يُرجع403 forbidden: أنشئ مفتاحاً جديداً من لوحة التحكم.المتجر الذي يبيع منتجات رقمية ليس له إعداد شحن: كل كتابة في هذه الصفحة تُرجع فيه
422 shipping_not_available.كل كتابة تحتاج الترويسة
Idempotency-Key. انظر Idempotency.اختبار شركة توصيل وربطها يتصلان بخوادم الشركة أثناء النداء، ومزامنة الأسعار تتصل بها في الخلفية. هذه النداءات الثلاثة و
POST /v1/orders/{id}/send-to-deliveryتتقاسم ميزانية خاصة بشركات التوصيل لكل متجر، فوق حدود المعدل.يمكن التراجع عن كتابة الأسعار والإعدادات. أما ربط شركة توصيل وفصلها وتغيير الشركة الافتراضية فلا. قسم التراجع في آخر هذه الصفحة يشرح الطريقة.
قراءات الشحن لا تُخزَّن مؤقتاً على الحافة: نداء
GETيُرسل مباشرة بعد كتابة يُرجع القيم الجديدة.
النطاق | الوصف |
| قراءة أسعار الشحن وإعداداته، وشركات التوصيل المرتبطة، وتغطية شركات التوصيل، وقوائم الولايات والبلديات. |
| تعديل أسعار الشحن وإعداداته، وربط شركات التوصيل واختبارها وفصلها ومزامنة أسعارها. |
GET /v1/wilayas
الولايات التي يوصل إليها المتجر حسب نظام الولايات فيه: من 1 إلى 58 في النظام المتوافق مع شركات التوصيل، ومن 1 إلى 69 في نظام 69 ولاية. الأسماء بالعربية والفرنسية والإنجليزية. القائمة كلها تأتي في استجابة واحدة، دون ترقيم صفحات.
المصادقة: مفتاح منصة بصلاحية shipping:read.
الطلب
curl 'https://api.dzbuild.app/v1/wilayas' \ -H "Authorization: Bearer $DZ_KEY"
الاستجابة 200
تظهر هنا ولايتان من 58 ولاية. الحقل mode_note جملة واحدة بالإنجليزية تشرح النظام.
{
"data": {
"wilaya_mode": "58",
"mode_note": "Courier-compatible mode: wilayas 1-58 only.",
"count": 58,
"wilayas": [
{ "id": 1, "name_ar": "أدرار", "name_fr": "Adrar", "name_en": "Adrar" },
{ "id": 16, "name_ar": "الجزائر", "name_fr": "Alger", "name_en": "Algiers" }
]
}
}
GET /v1/wilayas/{id}/communes
بلديات ولاية واحدة، مرتبة حسب الاسم الفرنسي. يُجاب عن أي ولاية من 1 إلى 69 مهما كان نظام الولايات في المتجر. القائمة كلها تأتي في استجابة واحدة.
المصادقة: مفتاح منصة بصلاحية shipping:read.
هذه قائمة البلديات الخاصة بالمنصة. لا تقول أي البلديات تخدمها شركة التوصيل: هذا دور GET /v1/shipping/coverage.
الطلب
curl 'https://api.dzbuild.app/v1/wilayas/16/communes' \ -H "Authorization: Bearer $DZ_KEY"
الاستجابة 200
تظهر هنا بلديتان من 57 بلدية في الولاية 16.
{
"data": {
"wilaya_id": 16,
"count": 57,
"communes": [
{ "id": 564, "wilaya_id": 16, "name_ar": "عين بنيان", "name_fr": "Ain Benian" },
{ "id": 558, "wilaya_id": 16, "name_ar": "عين طاية", "name_fr": "Ain Taya" }
]
}
}
المعرّف الذي ليس أرقاماً فقط يُرجع 400 bad_request. والولاية غير الموجودة تُرجع 404 not_found.
GET /v1/shipping/rates
سعر التوصيل لكل ولاية لها سعر في المتجر، مفهرساً برقم الولاية. الولاية التي ليس لها سعر لا تظهر في rates.
المصادقة: مفتاح منصة بصلاحية shipping:read.
الطلب
curl 'https://api.dzbuild.app/v1/shipping/rates' \ -H "Authorization: Bearer $DZ_KEY"
الاستجابة 200
تظهر هنا ولاية واحدة.
{
"data": {
"wilaya_mode": "58",
"currency": "DZD",
"limits": {
"max_price": 100000,
"max_delivery_days": 60
},
"count": 58,
"rates": {
"16": {
"home_price": 400,
"home_enabled": true,
"desk_price": 300,
"desk_enabled": true,
"days": 1,
"is_active": true,
"synced_provider": null,
"synced_at": null
}
}
}
}
الحقل | المعنى |
|
|
| أعلى سعر وأعلى قيمة |
| عدد الولايات في |
| سعر التوصيل للمنزل وسعر التوصيل للمكتب، بالدينار الجزائري. |
| هل يقدّم المتجر نوع التوصيل هذا في هذه الولاية. |
| مدة التوصيل بالأيام. |
| شركة التوصيل التي كتبت قائمة أسعارها هذا السعر آخر مرة، ومتى ( |
POST /v1/shipping/rates
ينشئ أسعار الولايات التي ترسلها أو يعدّلها. الولايات الأخرى لا تُمَس.
المصادقة: مفتاح منصة بصلاحية shipping:write. يتطلب Idempotency-Key.
الجسم
rates كائن مفهرس برقم الولاية مكتوباً بأرقام فقط ("16" وليس "016")، ويضم من 1 إلى 69 ولاية. كل قيمة تحمل الحقول المراد ضبطها، وكل حقل اختياري.
الحقل | النوع | ملاحظات |
| number | بالدينار، يُقرَّب إلى رقمين بعد الفاصلة، من 0 إلى 100000. يُقبل النص الرقمي أيضاً. |
| bool |
|
| number | القواعد نفسها التي لـ |
| bool | القواعد نفسها التي لـ |
| int | عدد صحيح من الأيام، من 0 إلى 60. |
الحقل الذي تتركه أو ترسله null يحتفظ بقيمته المحفوظة. والولاية التي لم يكن لها سعر تبدأ بسعر 0 وبنوعَي التوصيل مفعّلين وبمدة 3 أيام.
الطلب
curl -X POST 'https://api.dzbuild.app/v1/shipping/rates' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: rates-2026-10-06-1" \
-d '{"rates": {"16": {"home_price": 450, "desk_price": 350}, "31": {"desk_enabled": false}}}'
الاستجابة 200
الحقل rates يضم الولايات المكتوبة فقط، كما حُفظت بعد الكتابة.
{
"data": {
"updated": 2,
"wilaya_ids": [16, 31],
"rates": {
"16": { "home_price": 450, "home_enabled": true, "desk_price": 350, "desk_enabled": true, "days": 1 },
"31": { "home_price": 500, "home_enabled": true, "desk_price": 350, "desk_enabled": false, "days": 2 }
}
}
}
القيم السابقة تُحفظ، فيمكن التراجع عن الكتابة. الاستجابة لا تحمل change_id: انظر قسم التراجع.
GET /v1/shipping/settings
قواعد الشحن المجاني ونظام الولايات.
المصادقة: مفتاح منصة بصلاحية shipping:read.
الطلب
curl 'https://api.dzbuild.app/v1/shipping/settings' \ -H "Authorization: Bearer $DZ_KEY"
الاستجابة 200
تحمل الاستجابة أيضاً كائن notes فيه جملتان بالإنجليزية تعيدان شرح قاعدة الحد الأدنى وقاعدة نظام الولايات. المثال لا يعرضه.
{
"data": {
"free_shipping": false,
"free_shipping_threshold": 8000,
"free_shipping_threshold_active": true,
"wilaya_mode": "58"
}
}
الحقل | المعنى |
|
|
| المجموع الفرعي للطلب بالدينار الذي يصبح التوصيل مجانياً ابتداءً منه. القيمة |
|
|
|
|
PATCH /v1/shipping/settings
يغيّر إعداداً أو أكثر من الإعدادات الثلاثة. أرسل واحداً على الأقل، والحقول الأخرى تُتجاهل.
المصادقة: مفتاح منصة بصلاحية shipping:write. يتطلب Idempotency-Key.
الجسم
الحقل | النوع | ملاحظات |
| bool |
|
| number أو null | بالدينار، يُقرَّب إلى رقمين بعد الفاصلة، من 0 إلى 99999999.99. القيمة |
| string |
|
الطلب
curl -X PATCH 'https://api.dzbuild.app/v1/shipping/settings' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: settings-2026-10-06-1" \
-d '{"free_shipping_threshold": 8000}'
الاستجابة 200
الإعدادات بعد الكتابة، دون notes. القيم السابقة تُحفظ، فيمكن التراجع عن التغيير.
GET /v1/shipping/providers
كل شركات التوصيل التي تدعمها المنصة، مرتبطة بالمتجر أو لا، مع ما تطلبه كل واحدة عند ربطها. قيم بيانات الدخول لا تُرجع أبداً: الحقلان has_id وhas_token يقولان فقط هل توجد قيمة محفوظة. القائمة كلها تأتي في استجابة واحدة.
المصادقة: مفتاح منصة بصلاحية shipping:read.
الطلب
curl 'https://api.dzbuild.app/v1/shipping/providers' \ -H "Authorization: Bearer $DZ_KEY"
الاستجابة 200
تظهر هنا شركة واحدة. وتحمل الاستجابة أيضاً جملة note لا يعرضها المثال.
{
"data": {
"count": 103,
"providers": [
{
"provider": "yalidine",
"family": "yalidine",
"credentials": {
"api_id": { "label": "API ID", "required": true },
"api_token": { "label": "API Token", "required": true },
"_note": "Send an empty string to keep the currently stored value. Credentials are never returned by this API."
},
"extra_fields": {
"delivery_tier": {
"label": "Service tier",
"required": false,
"values": ["express"],
"note": "Only \"express\" is valid here: this courier rejects the economic parameter outright and every order push would fail."
}
},
"supports_rate_sync": true,
"linked": true,
"source": "store_delivery_providers",
"is_enabled": true,
"is_default": true,
"is_send_default": true,
"has_id": true,
"has_token": true,
"delivery_tier": "express",
"economic_available": null,
"credentials_failed_at": null,
"synced_tier": "express",
"stock_account": null,
"auto_validate": null,
"custom_name": null,
"linked_at": "2026-09-14 10:12:00",
"updated_at": "2026-09-14 10:12:00"
}
]
}
}
الحقل | المعنى |
|
|
| ما يعنيه |
| الحقول الأخرى التي تقبلها هذه الشركة عند ربطها، مفهرسة بأسمائها. مصفوفة فارغة عندما لا توجد. |
| هل يعمل |
| هل هذه الشركة مربوطة بالمتجر. |
|
|
| هل الربط مفعّل. |
| هل هذه هي شركة التوصيل الافتراضية للمتجر. |
| الشركة التي يستعملها |
| مستوى الخدمة عند شركات عائلة Yalidine: المستوى المختار، والمستوى الذي استعملته آخر مزامنة للأسعار، وهل كان الحساب يقدّم المستوى الاقتصادي عند تلك المزامنة. |
| الحقول الإضافية المحفوظة لهذه الشركة، و |
| وقت بصيغة |
|
|
ما يحمله api_id وapi_token
|
|
|
| API ID | API Token |
| Token | Key |
| API Key (secret key) | Tenant ID |
| API Token | User GUID |
| Public Key | Bearer Token |
| API Key | API Token |
| ApiKey | ApiSecret |
| API Token | لا شيء |
| Bearer Token | لا شيء |
| API Key | لا شيء |
| x-api-key | لا شيء |
| Bearer Token | لا شيء |
الحقول الإضافية، وكلها اختيارية ما لم يُذكر غير ذلك:
delivery_tier، عائلة Yalidine: القيمةexpress. وتقبلguepexأيضاًeconomic.stock_account، عائلةecotrack: تجهيز الطلبات من مخزون شركة التوصيل.auto_validate،noest: اعتماد الطلبات تلقائياً لدى شركة التوصيل.api_urlوcustom_name،customecotrack، وكلاهما إلزامي للربط: عنوان Ecotrack الخاص بالشركة بصيغةhttps(نطاق ينتهي بـ.ecotrack.dz، أوplatform.dhd-dz.comأوapp.conexlog-dz.com)، والاسم الذي يظهر لها، حتى 100 حرف.
POST /v1/shipping/providers/test
يرسل بيانات الدخول إلى شركة التوصيل ويخبرك هل قبلتها. لا يُحفظ شيء. إذا كان api_id أو api_token فارغاً أو غائباً تُستعمل القيمة المحفوظة لهذه الشركة، فيمكنك إعادة اختبار شركة مربوطة دون أن تملك بيانات دخولها.
المصادقة: مفتاح منصة بصلاحية shipping:write. يتطلب Idempotency-Key. يُحسب من ميزانية شركات التوصيل.
الجسم
الحقل | النوع | إلزامي | ملاحظات |
| string | نعم | معرّف من |
| string | ما لم يكن محفوظاً | القيمة الأولى من بيانات الدخول. |
| string | ما لم يكن محفوظاً | القيمة الثانية، للشركات التي تأخذ قيمتين. |
| string | لـ | عنوان Ecotrack الخاص بالشركة. عند إعادة استعمال بيانات الدخول المحفوظة يجب أن يطابق العنوان المحفوظ. |
| string | لا |
|
الطلب
curl -X POST 'https://api.dzbuild.app/v1/shipping/providers/test' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: test-yalidine-1" \
-d '{"provider": "yalidine", "api_id": "YOUR_API_ID", "api_token": "YOUR_API_TOKEN"}'
الاستجابة 200
الشركة التي ترفض بيانات الدخول تُرجع أيضاً 200، مع ok: false وmessage نتيجة الفحص لدى الشركة. الحقل resolved_provider يُضبط لـ zrexpressnew فقط: منصة ZR Express التي قبلت الزوج.
{
"data": {
"provider": "yalidine",
"ok": true,
"message": "تم الاتصال بنجاح",
"resolved_provider": null,
"saved": false
}
}
POST /v1/shipping/providers
يربط شركة توصيل، أو يعيد حفظ شركة مربوطة. تختبر المنصة بيانات الدخول مع الشركة أولاً، ولا تحفظ شيئاً إن رفضتها الشركة.
المصادقة: مفتاح منصة بصلاحية shipping:write. يتطلب Idempotency-Key. يُحسب من ميزانية شركات التوصيل.
الجسم
حقول نداء الاختبار، مع:
الحقل | النوع | الافتراضي | ملاحظات |
| bool |
| تفعيل الربط أو تعطيله. |
| bool |
| جعل هذه الشركة الشركةَ الافتراضية للمتجر. |
| string | لا شيء | لـ |
| bool | القيمة المحفوظة | عائلة |
| bool | القيمة المحفوظة |
|
الحقل
api_idأوapi_tokenالفارغ يحتفظ بالقيمة المحفوظة، فيمكن إعادة حفظ شركة مربوطة دون إرسال بيانات دخولها من جديد.أول شركة يربطها المتجر تصبح شركته الافتراضية. في الاستجابة يكون
is_defaultمساوياً لـtrueفقط عندما يجعل هذا النداء الشركة افتراضية، فالشركة الافتراضية التي يُعاد حفظها دونset_defaultتبقى افتراضية بينما تقول الاستجابةfalse. ويُظهرGET /v1/shipping/providersالحالة الحقيقية.zrexpressوzrexpressnewشركة واحدة: ربط إحداهما يحل محل الأخرى. والزوجzrexpressnewالذي تقبله منصة ZR Express القديمة يُحفظ باسمzrexpress، ويظهر ذلك في الحقلproviderفي الاستجابة.
الطلب
curl -X POST 'https://api.dzbuild.app/v1/shipping/providers' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: link-yalidine-1" \
-d '{"provider": "yalidine", "api_id": "YOUR_API_ID", "api_token": "YOUR_API_TOKEN", "set_default": true}'
الاستجابة 200
{
"data": {
"provider": "yalidine",
"is_enabled": true,
"is_default": true,
"has_id": true,
"has_token": true,
"undoable": false,
"note": "Courier credentials are never recorded, so linking cannot be undone. To revert, link the previous courier again or unlink this one."
}
}
بيانات الدخول المرفوضة تُرجع 422 credentials_rejected مع رسالة الشركة، ولا يُحفظ شيء.
POST /v1/shipping/providers/default
يجعل شركة مربوطة الشركةَ الافتراضية للمتجر. الإرسالات الجديدة إلى التوصيل تذهب إليها.
المصادقة: مفتاح منصة بصلاحية shipping:write. يتطلب Idempotency-Key.
الحقل provider في الجسم يسمّي الشركة. لا تصبح شركة افتراضية إلا إذا رُبطت من قائمة شركات التوصيل، والشركة المضبوطة في إعدادات المتجر تُرجع 404 provider_not_linked. وعندما تكون الشركة المختارة معطّلة، يقول warning إن الإرسال يبقى متوقفاً إلى أن تُفعَّل من جديد.
الطلب
curl -X POST 'https://api.dzbuild.app/v1/shipping/providers/default' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: default-noest-1" \
-d '{"provider": "noest"}'
الاستجابة 200
{
"data": {
"provider": "noest",
"is_default": true,
"previous_default": "yalidine",
"undoable": false,
"warning": "New send-to-delivery pushes now go to \"noest\". "
}
}
التأكيد قبل مزامنة الأسعار أو فصل شركة
مزامنة الأسعار تكتب فوق أسعار التاجر نفسه، وفصل الشركة يزيل بيانات دخول محفوظة، لذلك يطلب النداءان تأكيداً قبل التنفيذ.
نادِ دون تأكيد. الرد يكون
422 confirmation_required، ويضيف الكائنerrorالحقولconfirm_token(يُستعمل مرة واحدة) وconfirm_token_expires_in(600ثانية) وactionوwill_change، وهو الملخص الذي تعرضه على التاجر.بعد موافقة التاجر، أعد النداء ومعه
confirm_tokenفي الجسم وبمفتاحIdempotency-Keyجديد. المفتاح الأول مرتبط بالجسم الذي لا يحوي الرمز، فإعادة استعماله تُرجع422 idempotency_key_reuse.
الرمز يعمل مرة واحدة، وللمفتاح الذي تلقّاه فقط، وما دام ما يصفه لم يتغير: جدول الأسعار في حالة المزامنة، وفي حالة الفصل عدد الشركات المربوطة وهل هذه الشركة هي الافتراضية. الرمز المستعمل أو المنتهي أو الذي لم يعد يطابق يُرجع 422 confirmation_stale مع رمز وملخص جديدين.
المفتاح الذي لا يستعمله المساعد المدمج في لوحة التحكم يمكنه إرسال "confirm": true بدل الرمز وتخطي الخطوة 1. أما المفاتيح التي يستعملها المساعد فيجب أن ترسل الرمز.
هكذا يبدو الرد الأول للمزامنة.
{
"error": {
"code": "confirmation_required",
"message": "Syncing overwrites your own prices for every wilaya \"yalidine\" serves. Show the merchant the summary below; when they approve, re-send with the confirm_token.",
"confirm_token": "cft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"confirm_token_expires_in": 600,
"action": "shipping.rates_sync:yalidine",
"will_change": {
"action": "Overwrite shipping rates from yalidine",
"wilayas_at_risk": 58,
"reversible": true,
"note": "The prior prices are saved to the change log first, so this can be undone."
}
}
}
في حالة الفصل يضم will_change الحقول action وwas_store_default وremaining_providers وconsequence وreversible (false) وnote.
POST /v1/shipping/rates/sync
يستبدل أسعار المتجر بقائمة أسعار شركة التوصيل نفسها، لكل ولاية من 1 إلى 58 تسعّرها الشركة. تجري المزامنة في الخلفية. قبل وضع أي شيء في الطابور يُحفظ جدول الأسعار كله، وchange_id في الاستجابة يتراجع عن المزامنة.
المصادقة: مفتاح منصة بصلاحية shipping:write. يتطلب Idempotency-Key وتأكيداً. يُحسب من ميزانية شركات التوصيل.
الجسم
الحقل | النوع | إلزامي | ملاحظات |
| string | نعم | شركة رُبطت من قائمة شركات التوصيل ومفعّلة. |
| string | انظر أعلاه | من الرد |
| bool | انظر أعلاه |
|
ما تغيّره المزامنة
تكتب
home_priceوdesk_priceوتضبطsynced_providerوsynced_at. مفاتيح التفعيل وdaysفي الولاية التي كان لها سعر تبقى كما هي. والولاية التي لم يكن لها سعر تأخذ3أيام.شركات عائلة Yalidine تحتاج ولاية المتجر، وتُضبط بالحقل
wilaya_idفيPATCH /v1/store(انظر المتجر). دونها يُرجع النداء422 store_wilaya_required.تابع النتيجة بـ
GET /v1/shipping/rates: الأسعار التي كتبتها المزامنة تحمل اسم الشركة فيsynced_providerوقيمة جديدة فيsynced_at. وإذا لم ترسل الشركة أي أسعار تبقى الأسعار كما كانت.ما دامت مزامنة للشركة نفسها جارية، يُرجع النداء
202معstatus: already_runningوsync_idتلك المزامنة وchange_id: null، دون طلب تأكيد.بعد نجاح مزامنة، يمكن مزامنة الشركة نفسها من جديد بعد 5 دقائق. والنداء قبل ذلك يُرجع
429 sync_cooldown.
الطلب
curl -X POST 'https://api.dzbuild.app/v1/shipping/rates/sync' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: sync-yalidine-2" \
-d '{"provider": "yalidine", "confirm_token": "cft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}'
الاستجابة 202
{
"data": {
"status": "queued",
"sync_id": "a1b2c3d4e5f6a7b8c9d0e1f2",
"change_id": 500,
"note": "The sync runs in the background and overwrites your prices for every wilaya this courier serves. Poll GET /v1/shipping/rates for the result; undo change_id to restore the prior prices."
}
}
DELETE /v1/shipping/providers/{provider}
يفصل شركة توصيل ويزيل بيانات دخولها من المتجر. لا يمكن التراجع عن ذلك: لتُرسل مع هذه الشركة من جديد، اربطها من جديد. والطرود الموجودة أصلاً عند الشركة يبقى تتبعها مستمراً.
المصادقة: مفتاح منصة بصلاحية shipping:write. يتطلب Idempotency-Key وتأكيداً.
providerفي المسار هو معرّف الشركة. لا يمكن فصل شركة هنا إلا إذا رُبطت من قائمة شركات التوصيل، وأي شركة أخرى تُرجع404 provider_not_linked.الجسم يحمل التأكيد فقط:
confirm_token، أوconfirm: trueللمفاتيح التي لا يستعملها المساعد.عندما تكون الشركة المفصولة هي الافتراضية، تصبح الشركة الافتراضية هي الشركة المفعّلة الأخرى التي رُبطت قبل غيرها.
وإن لم توجد، لا تبقى شركة افتراضية ويتوقف الإرسال إلى التوصيل في المتجر كله. وتحمل الاستجابة حينها
new_default: nullوsend_to_delivery_active: false.
الطلب
curl -X DELETE 'https://api.dzbuild.app/v1/shipping/providers/yalidine' \
-H "Authorization: Bearer $DZ_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: unlink-yalidine-2" \
-d '{"confirm_token": "cft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}'
الاستجابة 200
{
"data": {
"provider": "yalidine",
"unlinked": true,
"undoable": false,
"remaining_providers": 1,
"new_default": "noest",
"send_to_delivery_active": true,
"warning": "The store default is now \"noest\"; new send-to-delivery pushes go there."
}
}
GET /v1/shipping/coverage
الولايات والبلديات ومكاتب الاستلام التي تخدمها شركة توصيل مربوطة، من بيانات الشركة نفسها. والشركة المضبوطة في إعدادات المتجر تُعد مربوطة هنا.
المصادقة: مفتاح منصة بصلاحية shipping:read.
معاملات الاستعلام
المعامل | النوع | الافتراضي | ملاحظات |
| string | لا شيء | معرّف شركة مربوطة. دونه تُستعمل الشركة المعلَّمة بـ |
| int | 0 | القيمة |
الطلب
curl 'https://api.dzbuild.app/v1/shipping/coverage?wilaya_id=16' \ -H "Authorization: Bearer $DZ_KEY"
الاستجابة 200
تظهر هنا بلدية واحدة ومكتب واحد.
{
"data": {
"provider": "yalidine",
"is_send_default": true,
"knowledge_synced_at": "2026-10-05 03:12:44",
"wilayas": [
{ "wilaya_id": 16, "name": "Alger", "communes": 57, "communes_home": 57, "communes_desk": 12, "desks": 9 }
],
"wilaya_id": 16,
"desk_send_allowed": true,
"communes": [
{ "commune_id": 521, "name": "Alger Centre", "name_ar": "الجزائر الوسطى", "home": true, "desk": true }
],
"desks": [
{ "desk_id": "160101", "name": "Agence Alger Centre", "address": "Alger Centre", "phone": null, "commune_id": 521 }
]
}
}
الحقل | المعنى |
| آخر مرة حدّثت فيها المنصة بلديات هذه الشركة ومكاتبها. القيمة |
| لكل ولاية: عدد البلديات |
| هل يقبل |
|
|
| مكاتب الاستلام لدى الشركة في الولاية. يشرح دليل الثيمات والواجهات المخصصة كيف تعرضها عند إتمام الطلب. |
المتجر الذي ليس له شركة توصيل يُرجع 422 no_courier_linked. والقيمة provider لشركة لم يربطها المتجر تُرجع 404 provider_not_linked.
التراجع عن تغييرات الأسعار والإعدادات
POST /v1/shipping/rates وPATCH /v1/shipping/settings ومزامنة الأسعار تحفظ القيم التي تستبدلها، فيمكن التراجع عن كل منها بـ POST /v1/changes/{id}/undo.
مزامنة الأسعار تُرجع
change_idالخاص بها. أما الكتابتان الأخريان فلا: ابحث عن التغيير بـGET /v1/changes?entity=shipping.ratesأوGET /v1/changes?entity=shipping.settings، الأحدث أولاً. عرض التغييرات يحتاجstore:read.التراجع يحتاج
shipping:writeوIdempotency-Key. والتراجع نفسه تغيير مستقل،undo_change_id، يمكنك التراجع عنه بدوره، إلا التراجع عن مزامنة فإنه يُرجع422 nothing_to_restore. انظر التغييرات والتراجع عنها.التراجع عن كتابة أسعار يحذف أسعار الولايات التي أنشأتها تلك الكتابة. والتراجع عن مزامنة يُرجع الولايات التي كان لها سعر قبلها، أما الولاية التي أضافتها المزامنة فتحتفظ بسعرها الجديد.
التراجع يعيد كتابة القيم المحفوظة حتى لو تغيّرت الأسعار أو الإعدادات بعد ذلك، من لوحة التحكم أو عبر الواجهة البرمجية.
التغيير الذي يُتراجع عنه مرة ثانية يُرجع
409 already_undone.رمز التطبيق المثبّت لا يستطيع عرض التغييرات ولا التراجع عنها: كلاهما يُرجع
403 forbidden.
curl -X POST 'https://api.dzbuild.app/v1/changes/500/undo' \ -H "Authorization: Bearer $DZ_KEY" \ -H "Idempotency-Key: undo-500"
{
"data": {
"undone": true,
"change_id": 500,
"entity": "shipping.rates",
"undo_change_id": 510
}
}
الأخطاء
HTTP | الرمز | السبب |
400 |
| الجسم ليس كائن |
400 |
|
|
400، 422 |
| 400: مفتاح في |
400، 422 |
| 400: ليس رقماً. 422: سالب أو أكبر من 100000. |
400، 422 |
| 400: ليس عدداً صحيحاً. 422: خارج المجال من 0 إلى 60. |
400 |
|
|
400 |
|
|
400، 422 |
| 400: ليس رقماً ولا |
400 |
|
|
422 |
|
|
400 |
|
|
400 |
| لم يُرسل |
400 |
| قيم |
400 |
|
|
400، 422 |
| 400: ليس |
422 |
| المعرّف ليس في |
422 |
| عنوان |
422 |
| رفضت الشركة بيانات الدخول. لم يُحفظ شيء. |
422 |
|
|
422 |
| مزامنة الأسعار: الشركة لم تُربط من قائمة شركات التوصيل، أو معطّلة. |
404 |
| الشركة الافتراضية أو الفصل أو التغطية: المتجر لم يربط هذه الشركة. |
422 |
| مزامنة أسعار شركة من عائلة Yalidine قبل ضبط ولاية المتجر. |
422 |
| انظر قسم التأكيد أعلاه. |
422 |
| تعذّر حفظ الأسعار السابقة، فرُفضت الكتابة بدل أن تصبح غير قابلة للتراجع. |
422 |
| التغطية لمتجر ليس له شركة توصيل. |
422 |
| كتابة على متجر يبيع منتجات رقمية. |
422 |
| المفتاح |
403 |
| المفتاح لا يملك الصلاحية، مثلاً |
404 |
| بلديات ولاية غير موجودة. |
404 |
| متجر المفتاح لم يعد موجوداً. |
429 |
| جرت مزامنة الشركة نفسها قبل أقل من 5 دقائق. الرسالة تقول كم دقيقة بقيت. |
429 |
| استُنفدت ميزانية شركات التوصيل أو حد طلبات المتجر. انظر حدود المعدل. |
503 |
| تعذّر بدء المزامنة ولم تتغير الأسعار. أعد المحاولة لاحقاً. |
500 |
| أعد المحاولة بالمفتاح |