Kundenportal
Für Beta-/Testkunden steht ein geschützter Portalbereich zur Verfügung. Dort können API-Keys ohne Klartextanzeige verwaltet, Geräte und Link-Codes geprüft, Benachrichtigungen eingesehen und einfache Statistiken ausgewertet werden.
API-Keys und Link-Codes werden im Portal nur bei der Erstellung einmalig im Klartext angezeigt. Danach sind nur noch Fingerprints sichtbar.
Schnelleinstieg
Für einen ersten Test werden nur die Base URL, ein gültiger API-Key und ein JSON-Body
mit title und message benötigt.
| Base URL | https://api.getmenotified.com/v1 |
|---|---|
| Push senden | POST /notifications |
| History abrufen | GET /notifications/history |
| Detail abrufen | GET /notifications/{request_uid} |
| Authentifizierung | Authorization: Bearer YOUR_API_KEY |
YOUR_API_KEY
und niemals einen echten API-Key.
1. Überblick
GetMeNotified ist eine API-basierte Push-Benachrichtigungsplattform. Kundenanwendungen senden Ereignisse an die API. Die API speichert den Request, erstellt je Zielgerät eine Zustellung und sendet die Push-Benachrichtigung über Firebase Cloud Messaging.
Die aktuelle Version unterstützt mehrere aktive Geräte pro Kunde. Welcher Kunde verwendet wird,
ergibt sich aus dem verwendeten API-Key. Ohne Zielangabe wird die Benachrichtigung an alle aktiven Geräte gesendet,
die diesem Kunden zugeordnet sind. Optional kann der Request über target auf ein einzelnes Kundengerät
oder eine Plattform eingeschränkt werden.
2. Base URL
https://api.getmenotified.com/v1
3. Authentifizierung
Jeder Request benötigt einen API-Key im HTTP-Header Authorization.
Authorization: Bearer YOUR_API_KEY
4. Push senden
| Methode | POST |
|---|---|
| Pfad | /notifications |
| Vollständige URL | https://api.getmenotified.com/v1/notifications |
Request Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
Minimaler Request
{
"title": "Neue Meldung",
"message": "Dies ist eine Testnachricht."
}
Erweiterter Request
{
"title": "Neue Bestellung",
"message": "Bestellung 12345 wurde bezahlt.",
"external_id": "order-12345",
"data": {
"source": "shop-api",
"type": "sale",
"group": "shop",
"category": "order",
"amount": "123.45",
"currency": "EUR",
"success": "true",
"status": "ok"
}
}
Optionale Zielauswahl
Wird kein target angegeben, bleibt das bisherige Verhalten unverändert:
Die Benachrichtigung wird an alle aktiven Geräte des API-Key-Kunden gesendet.
Explizit an alle aktiven Geräte
{
"title": "Systemmeldung",
"message": "Nachricht an alle aktiven Geräte.",
"target": {
"type": "all"
}
}
An ein einzelnes Kundengerät
{
"title": "Gerätemeldung",
"message": "Nachricht nur an ein bestimmtes Kundengerät.",
"target": {
"type": "customer_device_id",
"id": 2
}
}
An eine Plattform
{
"title": "Android-Meldung",
"message": "Nachricht nur an aktive Android-Geräte.",
"target": {
"type": "platform",
"platform": "android"
}
}
target.id bezieht sich auf die kundenspezifische Geräteverknüpfung
customer_devices.id, nicht auf interne FCM- oder Token-Werte.
Fremde oder deaktivierte Geräte werden nicht beliefert.
5. Felder für POST /notifications
| Feld | Pflicht | Beschreibung |
|---|---|---|
title |
Ja | Titel der Push-Benachrichtigung. Darf nicht leer sein. |
message |
Ja | Text der Push-Benachrichtigung. Darf nicht leer sein. |
external_id |
Nein | Eigene ID des Kunden, z. B. Bestellnummer, Event-ID oder Ticket-ID. Maximal 190 Zeichen. |
data |
Nein |
JSON-Objekt oder JSON-Array für zusätzliche strukturierte Daten.
Wird im Backend als data_json gespeichert.
|
target |
Nein |
Optionales JSON-Objekt für die Zielauswahl. Unterstützt aktuell
all, customer_device_id und platform.
Ohne target wird an alle aktiven Kundengeräte gesendet.
|
Felder für target
| Target-Typ | Zusätzliche Felder | Bedeutung |
|---|---|---|
all |
Keine | Sendet an alle aktiven Geräte des API-Key-Kunden. |
customer_device_id |
id oder customer_device_id |
Sendet an genau ein aktives Kundengerät dieses Kunden. |
platform |
platform, z. B. android |
Sendet an alle aktiven Kundengeräte dieser Plattform. |
6. Empfohlene data-Felder
Für spätere Auswertungen, lokale App-Statistiken und mögliche Reports sollten Ereignisse möglichst konsistent mit standardisierten Datenfeldern gesendet werden.
| Feld | Beispiele | Bedeutung |
|---|---|---|
type |
sale, outage, info, warning, error |
Art des Ereignisses. |
group |
shop, server, backup, payment |
Grobe Gruppierung. |
category |
order, api, database, job |
Untergruppe oder technische Kategorie. |
amount |
123.45 |
Zahlenwert, z. B. Umsatzbetrag. |
currency |
EUR |
Währung für Umsatzwerte. |
success |
true, false |
Erfolgsstatus als String-kompatibler Wert. |
status |
ok, failed, warning, restored |
Status des Ereignisses. |
duration / unit |
180 / seconds |
Dauerwerte, z. B. für Ausfälle oder Laufzeiten. |
source |
shop-api, windows-agent, powershell-test |
Quelle des Events. |
7. Erfolgsantwort
Bei erfolgreicher Verarbeitung liefert die API ok: true und den Status sent.
{
"ok": true,
"status": "sent",
"target": {
"type": "all"
},
"request": {
"id": 85,
"request_uid": "req_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"external_id": "docs-test-001",
"status": "sent",
"delivery_count": 1,
"success_count": 1,
"failure_count": 0,
"accepted_at": "2026-06-07 12:00:00",
"processed_at": "2026-06-07 12:00:00"
},
"deliveries": [
{
"id": 83,
"request_id": 85,
"device_token_id": 2,
"target_platform": "android",
"status": "sent",
"fcm_message_id": "projects/getmenotified-.../messages/...",
"sent_at": "2026-06-07 12:00:00"
}
],
"delivery": {
"id": 83,
"request_id": 85,
"device_token_id": 2,
"target_platform": "android",
"status": "sent",
"fcm_message_id": "projects/getmenotified-.../messages/...",
"sent_at": "2026-06-07 12:00:00"
}
}
Hinweis: deliveries enthält die Zustellungen pro Zielgerät. Das einzelne
delivery-Objekt bleibt aus Kompatibilitätsgründen zusätzlich erhalten und entspricht
der ersten Zustellung.
8. Benachrichtigungshistorie
Die History-Endpunkte sind per Bearer API-Key geschützt und liefern nur Einträge des Kunden, zu dem der verwendete API-Key gehört.
History-Liste
| Methode | GET |
|---|---|
| Pfad | /notifications/history |
| Parameter | limit und offset |
GET https://api.getmenotified.com/v1/notifications/history?limit=20&offset=0
Authorization: Bearer YOUR_API_KEY
Detailansicht
| Methode | GET |
|---|---|
| Pfad | /notifications/{request_uid} |
GET https://api.getmenotified.com/v1/notifications/req_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Authorization: Bearer YOUR_API_KEY
9. Fehlerantworten
Fehlerantworten haben grundsätzlich diese Struktur:
{
"ok": false,
"error": "error_code",
"message": "Readable error message."
}
| HTTP Status | Error Code | Bedeutung |
|---|---|---|
400 |
missing_title |
Das Feld title fehlt oder ist leer. |
400 |
missing_message |
Das Feld message fehlt oder ist leer. |
400 |
invalid_data |
Das Feld data ist kein JSON-Objekt oder JSON-Array. |
400 |
invalid_target |
Das Feld target ist kein JSON-Objekt. |
400 |
missing_target_type |
target.type fehlt, obwohl target angegeben wurde. |
400 |
invalid_target_type |
target.type ist nicht all, customer_device_id oder platform. |
400 |
invalid_target_id |
Für target.type = customer_device_id fehlt eine positive Geräte-ID. |
400 |
invalid_target_platform |
Für target.type = platform fehlt eine gültige Plattform. |
400 |
external_id_too_long |
Das Feld external_id ist länger als 190 Zeichen. |
401 |
missing_authorization_header |
Der Authorization-Header fehlt. |
401 |
invalid_api_key |
Der API-Key ist ungültig. |
403 |
api_key_not_active |
Der API-Key ist nicht aktiv. |
403 |
revoked_api_key |
Der API-Key wurde widerrufen. |
404 |
notification_not_found |
Die angefragte Benachrichtigung wurde für diesen Kunden nicht gefunden. |
404 |
no_active_device |
Für den Standardversand wurden keine aktiven Kundengeräte gefunden. |
404 |
no_target_devices |
Für die angegebene Zielauswahl wurde kein aktives Kundengerät gefunden. |
422 |
invalid_request_uid |
Das Format der request_uid ist ungültig. |
429 |
rate_limit_exceeded |
Das aktive Rate-Limit wurde überschritten. |
500 |
push_delivery_failed |
Keine Push-Zustellung konnte erfolgreich gesendet werden. |
500 |
internal_error |
Interner Serverfehler. |
10. Beispiel: PowerShell
$apiKey = "YOUR_API_KEY"
$headers = @{
Authorization = "Bearer $apiKey"
Accept = "application/json"
}
$body = @{
title = "Neue Bestellung"
message = "Bestellung 12345 wurde bezahlt."
external_id = "order-12345"
data = @{
source = "shop-api"
type = "sale"
group = "shop"
category = "order"
amount = "123.45"
currency = "EUR"
success = "true"
status = "ok"
}
} | ConvertTo-Json -Depth 10 -Compress
Invoke-RestMethod `
-Uri "https://api.getmenotified.com/v1/notifications" `
-Method Post `
-Headers $headers `
-ContentType "application/json; charset=utf-8" `
-Body $body
11. Beispiel: curl
curl -X POST "https://api.getmenotified.com/v1/notifications" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"title": "Neue Bestellung",
"message": "Bestellung 12345 wurde bezahlt.",
"external_id": "order-12345",
"data": {
"source": "shop-api",
"type": "sale",
"group": "shop",
"category": "order",
"amount": "123.45",
"currency": "EUR",
"success": "true",
"status": "ok"
}
}'
12. Limits und Rate-Limiting
| Bereich | Limit |
|---|---|
external_id |
Maximal 190 Zeichen. |
data |
Muss JSON-Objekt oder JSON-Array sein. |
target.type |
Aktuell erlaubt: all, customer_device_id, platform. |
POST /v1/notifications |
30 Requests pro 60 Sekunden pro API-Key. |
Rate-Limit-Antwort
{
"ok": false,
"error": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please try again later.",
"rate_limit": {
"limit": 30,
"window_seconds": 60,
"retry_after_seconds": 1
}
}
13. Sicherheitshinweise
- API-Keys niemals öffentlich teilen.
- API-Keys nicht in Apps, Webseiten oder öffentlichen Repositories hardcoden.
- Keine Passwörter, Tokens oder vertraulichen Zugangsdaten im Feld
datasenden. - Für Tests immer Platzhalter wie
YOUR_API_KEYverwenden.
14. Aktuelle Einschränkungen und Ausblick
- Ohne
targetwerden Benachrichtigungen an alle aktiven Geräte des API-Key-Kunden gesendet. - Die Zielauswahl unterstützt aktuell
all,customer_device_idundplatform. - Gruppen, Tags oder frei definierte Geräteklassen sind noch nicht Bestandteil des öffentlichen Endpoints.
- Das Kundenportal ist für Beta-/Testkunden aktiv und wird weiter ausgebaut.
- Windows-Agent/Dienst und iOS-Unterstützung sind spätere Roadmap-Punkte.