Zum Inhalt springen
AstroWay/api v2.201.6 · de
alle Systeme in Ordnung

Cosmic Notifications - Webhooks für Astro Ereignisse

Verwandle die AstroWay API von request-response zu Event-Stream. Anstatt den Himmel in einer Schleife abzufragen, abonnierst du eine URL für einen Ereignistyp – und AstroWay sendet den Webhook zum Zeitpunkt des Eintretens (signiert mit HMAC-SHA256, mit automatischen Wiederholungen und automatischer Deaktivierung „toter“ Abonnements).

EreignisRegistrierungWann ausgelöst
retrograde-startPOST /v1/webhooks/retrograde-startPlanet (Merkur–Pluto) wird retrograd
retrograde-endPOST /v1/webhooks/retrograde-endPlanet verlässt die Retrogradität (wird direkt)
sign-ingressPOST /v1/webhooks/sign-ingressPlanet (Sonne + Merkur–Pluto) tritt in ein neues Zeichen ein
void-of-course-startPOST /v1/webhooks/void-of-course-startDer Zeitraum des Mondes «ohne Kurs» (VOC) beginnt
eclipse-alertPOST /v1/webhooks/eclipse-alert7 Tage vor einer Sonnen- oder Mondfinsternis

Ein API‑Schlüssel, der mit deinem Konto verknüpft ist, wird benötigt.

Terminal-Fenster
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 }

Abonnements verwalten: GET /v1/webhooks (Liste), GET /v1/webhooks/{id}, DELETE /v1/webhooks/{id}, POST /v1/webhooks/{id}/test (Testlieferung an deine URL).

POST mit den Headern X-AstroWay-Signature: sha256=<hmac>, X-AstroWay-Event, X-AstroWay-Delivery-Id und dem Body:

{
"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
}
}

Die Signatur ist HMAC-SHA256(signing_secret, raw_body) in Hex. Vergleiche sie mit dem Header X-AstroWay-Signature (ohne das Präfix 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));
}

Das Abonnement wird nach 5 aufeinanderfolgenden fehlgeschlagenen Lieferungen (nicht-2xx oder Timeout von 8 s) automatisch deaktiviert – aktiviere es erneut über GET /v1/webhooks → Pause/Wiederaufnahme setzt den Zähler zurück.

Registrierung und Verwaltung von Abonnements – Tier 1 (10 Credits) pro Aufruf, werden selten ausgeführt. Die Zustellung des Ereignisses an deine URL wird nicht berechnet – es gibt keinen separaten Tarif.

Hilfreich?
Запропонувати правку

Zuletzt aktualisiert: