API-Dokumentation

GetMeNotified Push API

Mit der GetMeNotified API können Anwendungen Push-Benachrichtigungen an registrierte Geräte senden, Versandvorgänge speichern und die Benachrichtigungshistorie geschützt per API abrufen.

Hinweis: Diese API-Dokumentation beschreibt den aktuellen Beta-/Teststand von GetMeNotified. Die Push-Funktion, Gerätezuordnung, Backend-Historie und das aktive Rate-Limiting sind funktionsfähig. Kundenportal- und Verwaltungsfunktionen werden noch erweitert.
Aktueller Stand: POST /v1/notifications sendet ohne Zielangabe weiterhin an alle aktiven Geräte des API-Key-Kunden. Optional kann per target gezielt an alle Geräte, ein einzelnes Kundengerät oder eine Plattform gesendet werden. GET /v1/notifications/history und GET /v1/notifications/{request_uid} liefern geschützte History-Daten. Für POST /v1/notifications ist ein aktives Limit von 30 Requests pro 60 Sekunden pro API-Key aktiviert.

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
Verwenden Sie in Beispielen und Screenshots immer 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
API-Keys müssen geheim gehalten werden. Verwenden Sie in Beispielen, Dokumentationen oder Screenshots niemals echte API-Keys.

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.
Nur sichere, einfache String-kompatible Werte werden an Firebase Cloud Messaging weitergegeben. Komplexe Werte können gespeichert werden, werden aber nicht ungefiltert als Push-Daten 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
Der Detail-Endpunkt gibt sichere Delivery-Daten aus. FCM-Tokens und interne FCM Message IDs werden dort nicht ausgegeben.

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

14. Aktuelle Einschränkungen und Ausblick