Cosmic Notifications - webhooks للأحداث الفلكية
تحویل AstroWay API من request-response إلى streaming الحدثات. بدلاً من طلب небو في الدورة، تقدم URL على نوع الحدث - و AstroWay نفسه يرسل webhook في اللحظة التي يحدث فيها (مصدومة HMAC-SHA256، مع التكرار الذاتي و إيقاف “الموت” للانضمام).
ما هي الحدثات (حقيقي)
Section titled “ما هي الحدثات (حقيقي)”كل هذه الحدثات عالمية (حالة السماء، لا ت phụيد من البيانات المحلية) - يتلقى المتابعون نفس payload.
| الحدث | التسجيل | عندما يحدث |
|---|---|---|
retrograde-start | POST /v1/webhooks/retrograde-start | تصبح النجم (ميركوري–بلوتو) رتيبة |
retrograde-end | POST /v1/webhooks/retrograde-end | يخرج النجم من الرتوب (يصبح مباشراً) |
sign-ingress | POST /v1/webhooks/sign-ingress | يصبح النجم (شمس + ميركوري–بلوتو) يدخل إلى علامة جديدة |
void-of-course-start | POST /v1/webhooks/void-of-course-start | يبدأ فترة القمر “بدون مسار” (VOC) |
eclipse-alert | POST /v1/webhooks/eclipse-alert | في 7 أيام قبل الظهور الشمسية أو القمرية |
كيف التسجيل
Section titled “كيف التسجيل”يحتاج إلى مفتاح API، مرتبط مع حسابك.
curl -X POST https://api.astroway.info/v1/webhooks/retrograde-start \ -H "X-Api-Key: aw_live_..." \ -H "Content-Type: application/json" \ -d '{ "url": "https://your-app.com/hooks/astroway" }'# { "id": 44, "event": "retrograde-start",# "url": "https://your-app.com/hooks/astroway",# "signing_secret": "a1b2…", ← збережіть, ним перевіряється підпис# "active": true }إدارة التسجيلات: GET /v1/webhooks (قائمة)، GET /v1/webhooks/{id}, DELETE /v1/webhooks/{id}, POST /v1/webhooks/{id}/test (اختبار التسليم على URLك).
ما يأتي إلى URLك
Section titled “ما يأتي إلى URLك”POST مع رأس X-AstroWay-Signature: sha256=<hmac>, X-AstroWay-Event, X-AstroWay-Delivery-Id و جسم:
{ "event": "retrograde-start", "delivered_at": "2026-07-15T12:00:00.000Z", "subscription_id": 44, "data": { "planet": "Mercury", "station": "retrograde", "exactAt": "2026-07-15T11:48:09.967Z", "sign": "Leo", "longitude": 142.31 }}فحص التوقيع
Section titled “فحص التوقيع”التوقيع هو HMAC-SHA256(signing_secret, raw_body) في البايتات. فحص مع رأس X-AstroWay-Signature (بدون префикس sha256=):
import { createHmac, timingSafeEqual } from 'node:crypto';
function verify(rawBody, header, secret) { const expected = createHmac('sha256', secret).update(rawBody).digest('hex'); const got = header.replace(/^sha256=/, ''); return got.length === expected.length && timingSafeEqual(Buffer.from(got), Buffer.from(expected));}التسجيل يوقف بعد 5 تسليمات متتالية فاشلة (غير 2xx أو توقف 8 ثانية) - تفعيله مرة أخرى عبر GET /v1/webhooks → إيقاف/تفعيل يوقف العد التنازلي.
التسجيل والتعامل مع التسجيلات - تiers 1 (10 credits) لكل استدعاء، يتم تنفيذها نادرًا. التسليم الحدث على URLك لا يُتلف - لا توجد رسوم خاصة.
النص هو ترجمة MDX.