تخطَّ إلى المستندات
API

سرد القوالب

كل قالب على الاتصال، الأحدث أولاً، مقسَّم إلى صفحات بأسلوب keyset.

GETapi.openemail.uk/templates

ينفّذ الاستدعاء الحقيقي على مساحة عملك، بمفتاحك أنت.

GET /templates

كل قالب على الاتصال، الأحدث أولاً، مقسَّم إلى صفحات بأسلوب keyset.

محرّكان

shell
export OE=https://api.openemail.ukexport AUTH="Authorization: Bearer $OPENEMAIL_API_KEY"

القالب متن يُخزَّن مرة ويُرسل مرات، وهو ملك للاتصال لا لمن كتبه. فمفتاح مساحة العمل يرى القوالب ذاتها التي يراها زميلك، وحذف حساب كاتبها لا يأخذها معه.

يخزّن engine: "blocks" شجرةً أنواع عقدها هي صادرات @react-email/components (Section وRow وColumn وContainer وText وHeading وButton وLink وImg وHr وMarkdown وCodeBlock وCodeInline) وخصائصها هي خصائص تلك المكوّنات نفسها. ويجري التحقق منها عند الدخول، فالعقدة الفاسدة هي 422 على الطلب الذي كتبها لا بريد معطوب لاحقاً.

يخزّن engine: "html" ترميزاً تملكه أصلاً، يُنقّى مرة واحدة عند نشر الإصدار. وهذا ما تلجأ إليه حين تكون قوالبك مكوّنات react-email تعيش في مستودعك: اعرض المكوّن عبر @react-email/render في عملية البناء لديك وأرسل الناتج. لا توجد نقطة نهاية لـ JSX ولن توجد. فالـ API يقبل HTML لأن HTML هو ما يقرأه عميل البريد، وتنفيذ مكوّن المستدعي يشتري صندوقاً رملياً لا يحتاجه أحد.

يُعلَن بوصفهيملؤهغيابه عند الإرسال
`slots`من يحرّر القالبيُعرض default الخاص بالفتحة
`props`من يرسلmissing_template_prop، وهو 422، ولا يخرج أي بريد

يُكتب كلاهما على هيئة {{key}} في المتن وفي الموضوع، ويحمل كلاهما kind (text أو url أو image) يحدّد كيفية تهريب القيمة عند استبدالها. والمفتاح الذي لا يعلنه شيء يفشل عند النشر؛ وقيمة url التي ليس مخططها http أو https أو mailto تُرفض بدل أن تُعرض.

الإصدار المنشور مجمَّد. وتحرير متن قالب منشور يسكّ مسوّدة جديدة بدل أن يغيّر ما تحلّه عمليات الإرسال الحيّة، فالزميل الذي يعيد كتابة النص لا يستطيع تغيير ما ترسله شيفرتك أصلاً، وتثبيت version يعني أنه لن يغيّره عند النشر أيضاً.

مثال

يتطلب templates:read. تصل limit إلى 100، ويضيّق status إلى draft أو active أو archived، وcursor معتم، فأعد تمرير nextCursor الذي أُعطي لك بدل أن تبني واحداً.

curl
curl "$OE/templates?limit=25&status=active" -H "$AUTH"
الاستجابة
{  "object": "list",  "data": [    {      "object": "template",      "id": "tpl_9c1f0a4b7e05d3862c1f0a44",      "name": "Order shipped",      "slug": "order-shipped",      "description": null,      "status": "active",      "publishedVersion": 3,      "latestVersion": 4,      "createdAt": "2026-08-01T09:12:44.000Z",      "updatedAt": "2026-08-28T16:03:10.000Z"    }  ],  "hasMore": false,  "nextCursor": null}

الحقل publishedVersion هو ما يحلّه إرسال بلا version، وlatestVersion هو المسوّدة الجاثمة فوقه. واختلافهما يعني أن أحدهم حرّر ولم ينشر. وليس هذا خطأ، ويستحق الإظهار في سجل النشر.

الصف بيانات وصفية. أما slots وprops المعلَنة فتعود من عملية جلب، وهي الطلب الذي تجريه حين تحتاج أن تعرف ما تمرّره إلى قالب.