مفاتيح API
إنشاء بيانات اعتماد API وتكوينها وإدارتها مع تحكم دقيق في الوصول
تُصادق مفاتيح API (بيانات الاعتماد) تطبيقك مع واجهة برمجة تطبيقات MailLand. يكون كل مفتاح محدداً بالمنتج والوضع والتدفق والقناة، وبشكل اختياري مقيداً بالنطاق وعنوان IP.
في لوحة التحكم، أنشئ المفاتيح وأدِرها من Credentials في الشريط الجانبي (قسم Global). تتوفر العمليات نفسها عبر واجهة /v1/credentials الموضحة أدناه.
تستخدم أمثلة Authorization: Bearer في هذه الصفحة رمز الوصول JWT الذي يعيده POST /v1/auth/login (راجع Login). مفاتيح API مختلفة: أرسلها في الترويسة X-API-Key وليس كرمز Bearer.
تنسيق المفتاح
تتبع جميع مفاتيح API في MailLand هذا التنسيق:
ml_{mode}{product}{stream?}_{random45chars}ml_: البادئة لجميع المفاتيح- الوضع:
p(Production) أوs(Sandbox) - المنتج:
e(Sending)،i(Inbound)،v(Validation) - التدفق (Sending فقط):
t(Transactional) أوm(Marketing) - ٤٥ حرفاً عشوائياً
أمثلة:
ml_pet_Ab3Kx9mN2pQ7rT4wL8yD... → Production Sending Transactional
ml_sem_Xn7Kp2qR4tW9yB1cD6eF... → Sandbox Sending Marketing
ml_pi_Mn5Jp8kL3rV6wA2xC4fG... → Production Inbound
ml_pv_Qw9Er3tY6uI1oP5aS8dF... → Production Validationتظهر مفاتيح API مرة واحدة فقط عند الإنشاء. احفظها بشكل آمن: يخزن MailLand تجزئة المفتاح فقط. إذا فقدت مفتاحاً، ستحتاج إلى تدويره أو إنشاء مفتاح جديد.
خصائص بيانات الاعتماد
عند إنشاء بيانات اعتماد، تقوم بتكوين ما يلي:
| الخاصية | النوع | الوصف |
|---|---|---|
name | string | تسمية قابلة للقراءة لبيانات الاعتماد هذه |
product | enum | Sending أو Inbound أو Validation |
mode | enum | Production (تُسلّم رسائل حقيقية) أو Sandbox (لا تُسلّم إلى المستلمين العاديين، انظر وضع Sandbox) |
stream | enum | Transactional أو Marketing (منتج Sending فقط) |
channels | string | "Api" أو "Smtp" أو "Api, Smtp" (تعداد أعلام يُرسل كسلسلة نصية واحدة؛ وتعمل القيمة الصحيحة أيضاً). ليس مصفوفة JSON: يحدد أين يمكن للمفتاح المصادقة |
scope | enum | AllDomains أو SelectedDomains |
sandboxBehavior | enum | LogOnly (الافتراضي) أو AllowListOnly (وضع Sandbox فقط؛ إرسال API فقط) |
rateLimitPerHour | int | الحد الأقصى للرسائل في الساعة (الافتراضي: 1000) |
rateLimitPerDay | int | الحد الأقصى للرسائل في اليوم (الافتراضي: 10000) |
rateLimitPerMinute | int | حد اختياري في الدقيقة |
expiresAt | datetime | تاريخ انتهاء صلاحية اختياري |
channels سلسلة نصية واحدة وليست مصفوفة أبداً. أرسل "channels": "Api, Smtp" للسماح بالقناتين؛ يُرفض ["Api", "Smtp"] برمز 400.
إنشاء بيانات اعتماد
curl -X POST https://api.mail.land/v1/credentials \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Production Transactional",
"product": "Sending",
"mode": "Production",
"stream": "Transactional",
"channels": "Api",
"scope": "AllDomains",
"rateLimitPerHour": 5000,
"rateLimitPerDay": 50000
}'{
"id": "n4k9pq2rt8mwxa",
"name": "Production Transactional",
"key": "ml_pet_Ab3Kx9mN2pQ7rT4wL8yD...",
"keyPrefix": "ml_pet_Ab3Kx9mN",
"product": "sending",
"mode": "production",
"stream": "transactional",
"channels": "api",
"scope": "allDomains",
"sandboxBehavior": "logOnly",
"rateLimitPerHour": 5000,
"rateLimitPerDay": 50000,
"isActive": true,
"createdAt": "2026-02-17T10:00:00Z"
}حقل key مُدرج فقط في استجابة الإنشاء. انسخه فوراً.
النطاق: قيود النطاق
بشكل افتراضي، يمكن لبيانات الاعتماد الإرسال من أي نطاق موثق في مساحة العمل الخاصة بك (AllDomains). لتقييد بيانات الاعتماد بنطاقات محددة:
curl -X POST https://api.mail.land/v1/credentials \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Marketing - notifications.com only",
"product": "Sending",
"mode": "Production",
"stream": "Marketing",
"channels": "Api",
"scope": "SelectedDomains",
"domainIds": ["q7wm3nx9k2rtpz", "h5vy8jc2lspqwr"]
}'يمكنك أيضاً تحديث تعيينات النطاق بعد الإنشاء:
curl -X PUT https://api.mail.land/v1/credentials/n4k9pq2rt8mwxa/domains \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"domainIds": ["q7wm3nx9k2rtpz", "h5vy8jc2lspqwr"]
}'قيود IP
قيّد بيانات الاعتماد بعناوين IP أو نطاقات CIDR محددة:
curl -X PUT https://api.mail.land/v1/credentials/n4k9pq2rt8mwxa/allowed-ips \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"allowedIps": [
{ "ipAddress": "203.0.113.10", "description": "Production server" },
{ "ipAddress": "198.51.100.0/24", "description": "Office network" }
]
}'عند تكوين قيود IP، تُعيد طلبات API من عناوين IP غير المدرجة 403 IP_NOT_ALLOWED.
تكوين القنوات
يتحكم حقل channels في مكان مصادقة بيانات الاعتماد:
| القناة | الاستخدام |
|---|---|
Api | REST API عبر ترويسة X-API-Key |
Smtp | مصادقة SMTP relay (المفتاح ككلمة مرور) |
Api, Smtp | كلتا القناتين |
لاستخدام بيانات الاعتماد لـ SMTP relay، تأكد من تضمين Smtp في القنوات. عند المصادقة عبر SMTP، استخدم أي اسم مستخدم ومفتاح API ككلمة مرور.
تدوير المفاتيح
قم بتدوير مفتاح API لبيانات الاعتماد دون توقف باستخدام فترة سماح:
curl -X POST https://api.mail.land/v1/credentials/n4k9pq2rt8mwxa/rotate \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"gracePeriodHours": 24
}'{
"key": "ml_pet_Yn8Lq3rS5uW0zA4bC7dE...",
"oldKeyExpiresAt": "2026-02-18T10:00:00Z"
}خلال فترة السماح (الافتراضية 24 ساعة)، يكون كل من المفتاح القديم والجديد صالحَين. بعد انتهاء فترة السماح، يتوقف المفتاح القديم عن العمل.
تدوير المفاتيح مثالي للنشر دون توقف. انشر المفتاح الجديد في تطبيقك، ثم دع المفتاح القديم ينتهي بشكل طبيعي.
وضع Sandbox
كلمة «Sandbox» تعني شيئين منفصلين يجتمعان:
1. بيانات اعتماد Sandbox (mode: Sandbox). للتطوير وCI/CD والتجريب. يعتمد مصير الإرسال على قيمة sandboxBehavior لبيانات الاعتماد:
LogOnly(الافتراضي): يُتحقق من الطلب ويُجاب بـ202، لكن لا يُسلَّم شيء ولا تُنشأ رسالة. تتضمن الاستجابةisSandboxed: trueوsandboxReason: "credential_sandbox_mode"وmessageIdsفارغة.AllowListOnly: المستلمون المطابقون لـقائمة السماح الخاصة بـ Sandbox في مساحة عملك يستلمون الرسالة فعلاً؛ أما البقية فتُعاد فيrejectedRecipientsبالسببrecipient_not_in_sandbox_allowlist. وإذا لم يكن أي مستلم مسموحاً، تبقى الاستجابة202معacceptedRecipients: []وsandboxReason: "all_recipients_not_in_sandbox_allowlist".
عبر SMTP لا تُسلّم بيانات اعتماد Sandbox أبداً: تُقبل الرسالة وتُسجَّل دون إرسال، أياً كانت قيمة sandboxBehavior.
2. مساحات عمل Sandbox. تبدأ مساحة العمل الجديدة بمستوى التحقق Sandbox (انظر مساحات العمل). إلى أن يتم التحقق منها، يقتصر الإرسال على مستلمي قائمة السماح حتى مع بيانات اعتماد Production. يُرفض أي مستلم آخر بـ 429 SENDING_BLOCKED («Recipient '…' is not in sandbox allowlist. Add to allowlist or complete verification.»).
أدِر قائمة السماح من لوحة التحكم عبر الإعدادات ← Sandbox Allow List. الإدخال عنوان ([email protected]) أو نطاق كامل (*@example.com). القائمة نفسها متاحة عبر GET /v1/account/settings/sandbox-allowlist, POST /v1/account/settings/sandbox-allowlist, DELETE /v1/account/settings/sandbox-allowlist/{email} (رمز bearer الخاص بلوحة التحكم؛ يقبل POST الحقل email وdescription اختيارياً).
إدارة بيانات الاعتماد
سرد بيانات الاعتماد
curl "https://api.mail.land/v1/credentials?limit=20" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."التصفية حسب المنتج أو الوضع:
curl "https://api.mail.land/v1/credentials?product=Sending&mode=Production" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."تحديث بيانات اعتماد
curl -X PATCH https://api.mail.land/v1/credentials/n4k9pq2rt8mwxa \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Name",
"rateLimitPerHour": 10000,
"isActive": false
}'جميع الحقول اختيارية: أدرج فقط ما تريد تغييره.
حذف بيانات اعتماد
curl -X DELETE https://api.mail.land/v1/credentials/n4k9pq2rt8mwxa \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."تُعيد 204 No Content عند النجاح. تتوقف بيانات الاعتماد المحذوفة فوراً عن المصادقة. يؤدي الحذف إلى إلغاء المفتاح: تبقى بيانات الاعتماد ظاهرة في GET /v1/credentials مع isActive: false.
حدود المعدل
لكل بيانات اعتماد حدود معدلها المستقلة عن بيانات الاعتماد الأخرى:
| الحد | الافتراضي | الوصف |
|---|---|---|
| في الساعة | 1٬000 | الحد الأقصى للرسائل في الساعة المتجددة |
| في اليوم | 10٬000 | الحد الأقصى للرسائل في اليوم المتجدد |
| في الدقيقة | - | اختياري، غير محدد بشكل افتراضي |
| في الدفعة | - | اختياري، الحد الأقصى للمستلمين لكل استدعاء دفعي |
عند تجاوز حد المعدل، تُعيد API 429 مع ترويسات X-RateLimit-*:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1708171800
Retry-After: 45الخطوات التالية
- البدء السريع: أرسل أول بريد إلكتروني
- REST API: مرجع API الإرسال الكامل
- SMTP Relay: المصادقة بمفتاح API عبر SMTP