اصطلاحات واجهة البرمجة
اصطلاحات واجهات HyoNova البرمجية — العنوان الأساسي وأخطاء JSON ومعرّفات الطلبات ورموز حالة HTTP والتقسيم بالمؤشر ومنع التكرار وحدود المعدل — كما تطبّقها واجهة Mail.
في هذه الصفحة
تشترك واجهات HyoNova البرمجية في مجموعة صغيرة من الاصطلاحات للأخطاء والتقسيم إلى صفحات وإعادة المحاولة والحدود. وتتبعها واجهة Mail البرمجية اليوم. وواجهة برمجة عامة شاملة مخططة، وستتبع الاصطلاحات نفسها.
الطلبات والاستجابات#
- تستخدم الطلبات والاستجابات صيغة JSON (
Content-Type: application/json). - تحمل كل استجابة الترويسة
X-Request-Id. أرفقها عند التواصل مع HyoNova بشأن مشكلة. - لا تُخزَّن استجابات طلبات الواجهة مؤقتاً (
Cache-Control: no-store).
الأخطاء#
لكل خطأ الشكل نفسه، أياً كانت نقطة النهاية:
{
"error": {
"code": "SENDER_NOT_VERIFIED",
"message": "Add and verify a sender before sending."
}
}codeنص ثابت تقرؤه الآلة. اعتمد عليه لا على نص الرسالة.messageشرح مقروء للبشر، وقد يتغير، ولا يُقصد تحليله آلياً.
تعيد أخطاء الخادم غير المتوقعة رسالة عامة (INTERNAL_ERROR). وتُسجَّل التفاصيل لدى HyoNova تحت معرّف الطلب، ولا تُعاد في الاستجابة أبداً.
رموز حالة HTTP#
| الحالة | المعنى | أمثلة على code |
|---|---|---|
200 | نجاح | — |
202 | قُبل للمعالجة، مثل رسالة وُضعت في طابور الإرسال | — |
400 | الطلب غير صالح | VALIDATION_ERROR |
401 | لا توجد بيانات اعتماد، أو لم تعد صالحة | AUTHENTICATION_REQUIRED وAPI_KEY_INVALID وAPI_KEY_EXPIRED |
402 | لا تكفي الأرصدة لهذا الطلب | INSUFFICIENT_CREDITS |
403 | تمت المصادقة لكن العملية غير مسموحة | FORBIDDEN وFEATURE_NOT_ENTITLED |
404 | المورد غير موجود أو غير مرئي لك | NOT_FOUND |
409 | تعارض مع الحالة الحالية | SENDER_NOT_VERIFIED وIDEMPOTENCY_CONFLICT |
413 | محتوى الطلب كبير جداً | — |
429 | طلبات كثيرة جداً | — |
500 | خطأ غير متوقع لدى HyoNova | INTERNAL_ERROR |
لا تظهر أبداً السجلات التي تخص شركة أخرى، أياً كان الطلب أو المفتاح.
التقسيم إلى صفحات#
تستخدم نقاط النهاية التي تعيد قوائم — GET /mail/v1/messages وGET /mail/v1/contacts — مؤشراً معتماً.
- مرّر
limitلاختيار حجم الصفحة. القيمة الافتراضية 25 والحد الأقصى 100. - تحتوي الاستجابة على
itemsوnextCursor. وعندما تكونnextCursorمساوية لـnullفلا صفحات أخرى. - للحصول على الصفحة التالية، أعِد قيمة
nextCursorفي المعاملcursor. لا تبنِ المؤشرات بنفسك ولا تغيّرها.
{
"items": [{ "id": "…" }, { "id": "…" }],
"nextCursor": "b3f1…"
}منع التكرار#
تقبل نقاط النهاية من نوع POST الترويسة Idempotency-Key. أرسل قيمة فريدة جديدة لكل عملية منطقية، وأعد استخدام القيمة نفسها عند إعادة المحاولة بعد انتهاء المهلة أو خطأ في الشبكة.
- يُحفظ أول رد تحت المفتاح لمدة 24 ساعة لمفتاح API ذاته. وإعادة المحاولة بالمفتاح نفسه والمحتوى نفسه تعيد الرد نفسه مع
Idempotent-Replayed: true. - المفتاح نفسه مع محتوى مختلف يردّ بالرمز
409 IDEMPOTENCY_CONFLICT. - في
POST /mail/v1/sendيسمّي المفتاح الرسالةَ أيضاً على مستوى شركتك كلها: أي استدعاء لاحق بالمفتاح نفسه يعيد الرسالة الأصلية مع"replayed": trueولا يرسل شيئاً جديداً. استخدم مفتاحاً يسمّي الرسالة، مثلorder-1001-confirmation، حتى 160 حرفاً.
حدود المعدل#
تقبل واجهة Mail حتى 600 طلب في الدقيقة لكل مفتاح API (و300 في الدقيقة لـ POST /mail/v1/conversions). تحمل كل استجابة x-ratelimit-limit وx-ratelimit-remaining وx-ratelimit-reset. وعند تجاوز الحد تتلقى الحالة 429 مع الترويسة retry-after بالثواني. اكتشفها من رمز الحالة، وانتظر، واستخدم فترات متزايدة بين المحاولات.
مثال: التعامل مع الأخطاء#
async function sendWithRetry(body: unknown, idempotencyKey: string) {
for (let attempt = 0; attempt < 5; attempt++) {
const response = await fetch('https://api.hyonova.com/mail/v1/send', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.HYO_MAIL_API_KEY}`, // YOUR_API_KEY
'Content-Type': 'application/json',
'Idempotency-Key': idempotencyKey, // the same key on every retry
},
body: JSON.stringify(body),
});
if (response.status === 202) return response.json();
if (response.status === 429 || response.status >= 500) {
const wait = Number(response.headers.get('retry-after')) || 2 ** attempt;
await new Promise((r) => setTimeout(r, wait * 1000)); // back off, then retry
continue;
}
const { error } = await response.json();
const requestId = response.headers.get('X-Request-Id');
throw new Error(`${error.code} (${requestId}): ${error.message}`); // do not retry
}
throw new Error('Gave up after 5 attempts');
}curl -i -X POST "https://api.hyonova.com/mail/v1/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1001-confirmation" \
-d '{"to": "name@example.com", "subject": "Your order", "html": "<p>Thank you.</p>"}'
# -i prints the status line, X-Request-Id and the x-ratelimit-* headersالحالة#
| الميزة | الحالة | ملاحظات |
|---|---|---|
| واجهة برمجة البريد التشغيلي | متاحيعمل اليوم لمساحات العمل التي تتضمنه خطتها. | أرسل البريد من أنظمتك بمفاتيح API وسجل رسائل وWebhooks موقّعة. جزء من هيو ميل. |
| Webhooks موقّعة | متاحيعمل اليوم لمساحات العمل التي تتضمنه خطتها. | استقبل أحداث هيو ميل الموقّعة عن التسليم والتفاعل وجهات الاتصال والمتجر على نقطة نهاية HTTPS، مع إعادة محاولة تلقائية ويدوية. |
| ترحيل SMTP لهيو ميل | مخططضمن خارطة طريق HyoNova. لم يُبنَ بعد وليس له موعد إصدار. | الإرسال عبر هيو ميل باستخدام SMTP. |
| واجهة HyoNova البرمجية العامة | مخططضمن خارطة طريق HyoNova. لم يُبنَ بعد وليس له موعد إصدار. | واجهة برمجية مدعومة وموثّقة لبيانات الأشخاص والعمل والعملاء في شركتك. |
| خادم MCP | مخططضمن خارطة طريق HyoNova. لم يُبنَ بعد وليس له موعد إصدار. | السماح لمساعدات الذكاء الاصطناعي بالعمل مع بيانات HyoNova عبر بروتوكول MCP وبإذنك. |
هل كانت هذه الصفحة مفيدة؟
شكراً. لا تُجمع تقييمات الصفحات بعد، لذلك لم يُرسَل شيء. إذا وجدت نقصاً أو خطأً فراجع صفحة «الحصول على المساعدة».