Custom Event API – Partneranleitung

Übersicht

Die Custom Event API ermöglicht es API-Partnern, eigene Sicherheits-Events auf dem Risk Management Dashboard zu erstellen, zu aktualisieren und zu löschen. Jeder Partner verwaltet ausschließlich seine eigenen Events.

Wichtig: Das Erstellen, Aktualisieren und Löschen von Events erfordert eine separate Freischaltung Ihres Accounts durch Global Travel Monitor. Ohne diese Freischaltung können Sie die API nur zum Lesen von Events nutzen. Bei einem Versuch ohne Freischaltung erhalten Sie einen 403 Forbidden Response.


Authentifizierung

Alle API-Aufrufe erfordern einen Bearer-Token im HTTP-Header:

Authorization: Bearer {API_TOKEN}

Den Token erhalten Sie von Ihrem Ansprechpartner bei Passolution. Er ist 1 Jahr gültig.


Base-URL

https://platform.passolution.de/api/v1/custom

Die bisherigen Adressen https://api.global-travel-monitor.de/v1/custom und https://global-travel-monitor.eu/api/v1/custom bleiben weiterhin gültig; bestehende Integrationen müssen nicht umgestellt werden.


Rate Limit

Standardmäßig sind 60 Requests pro Minute erlaubt. Bei Überschreitung erhalten Sie einen 429 Too Many Requests Response.


Referenzdaten

Bevor Sie Events erstellen, fragen Sie die gültigen Event-Kategorien und Ländercodes ab.

Event-Kategorien abrufen

GET /v1/custom/event-categories

Aktuell verfügbare Kategorien:

Code Name
environment Umweltereignisse
travel Reiseverkehr
safety Sicherheit
entry Einreisebestimmungen
general Allgemein
health Gesundheit
strike Streik

Hinweis: Diese Liste kann sich ändern. Nutzen Sie den Endpoint GET /v1/custom/event-categories, um stets die aktuellen Kategorien abzurufen.

Beispiel:

bash
curl -H "Authorization: Bearer {TOKEN}" \
  https://platform.passolution.de/api/v1/custom/event-categories

Response:

json
{
  "success": true,
  "data": [
    {
      "code": "environment",
      "name": "Umweltereignisse",
      "color": "#059669",
      "icon": "fa-leaf"
    },
    {
      "code": "safety",
      "name": "Sicherheit",
      "color": "#DC2626",
      "icon": "fa-shield-alt"
    }
  ]
}

Länder abrufen

GET /v1/custom/countries

Beispiel:

bash
curl -H "Authorization: Bearer {TOKEN}" \
  https://platform.passolution.de/api/v1/custom/countries

Response:

json
{
  "success": true,
  "data": [
    {
      "iso_code": "DE",
      "iso3_code": "DEU",
      "name_de": "Deutschland",
      "name_en": "Germany"
    },
    {
      "iso_code": "TH",
      "iso3_code": "THA",
      "name_de": "Thailand",
      "name_en": "Thailand"
    }
  ]
}

Events

Event erstellen

Erfordert Freischaltung der Event-Erstellung für Ihren Account.

POST /v1/custom/events

Request-Body (JSON):

Feld Typ Pflicht Beschreibung
title string Ja Titel des Events (max. 255 Zeichen)
description string Nein Beschreibung (max. 10.000 Zeichen, HTML erlaubt: p, br, strong, em, ul, ol, li, a)
risk_level string Nein Risikostufe: info, low, medium (Standard), high
start_date datetime Ja Startdatum (ISO 8601, z.B. 2026-02-11T08:00:00Z)
end_date datetime Nein Enddatum (muss gleich oder nach start_date liegen)
event_category_codes array Ja Event-Kategorie-Codes (mindestens 1, z.B. ["safety", "environment"], siehe Tabelle oben)
country_codes array Ja ISO-2-Ländercodes (mindestens 1, z.B. ["DE", "AT"])
latitude number Nein Breitengrad (-90 bis 90)
longitude number Nein Längengrad (-180 bis 180)
tags array Nein Schlagwörter (z.B. ["flooding", "bangkok"])
external_id string Nein Ihre interne Referenz-ID (max. 255 Zeichen)

Beispiel:

bash
curl -X POST https://platform.passolution.de/api/v1/custom/events \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Überschwemmung Bangkok",
    "description": "<p>Schwere Überschwemmungen im Großraum Bangkok.</p>",
    "risk_level": "high",
    "start_date": "2026-02-11T08:00:00Z",
    "end_date": "2026-02-18T08:00:00Z",
    "event_category_codes": ["environment"],
    "country_codes": ["TH"],
    "latitude": 13.7563,
    "longitude": 100.5018,
    "tags": ["flooding", "bangkok"],
    "external_id": "EXT-2026-001"
  }'

Response (201 Created):

json
{
  "success": true,
  "message": "Event created and published successfully.",
  "data": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "title": "Überschwemmung Bangkok",
    "description": "Schwere Überschwemmungen im Großraum Bangkok.",
    "risk_level": "high",
    "start_date": "2026-02-11T08:00:00+00:00",
    "end_date": "2026-02-18T08:00:00+00:00",
    "latitude": 13.7563,
    "longitude": 100.5018,
    "review_status": "approved",
    "is_active": true,
    "tags": ["flooding", "bangkok"],
    "event_categories": [
      {
        "code": "environment",
        "name": "Umweltereignisse",
        "color": "#059669",
        "icon": "fa-leaf"
      }
    ],
    "countries": [
      {
        "iso_code": "TH",
        "name_de": "Thailand",
        "name_en": "Thailand"
      }
    ],
    "created_at": "2026-02-11T10:30:00+00:00",
    "updated_at": "2026-02-11T10:30:00+00:00"
  }
}

Hinweis: Wenn für Ihren Account die Auto-Freigabe nicht aktiviert ist, lautet der review_status pending_review und is_active ist false. Das Event wird erst nach manueller Freigabe durch das Global-Travel-Monitor-Team auf dem Dashboard sichtbar.


Eigene Events auflisten

GET /v1/custom/events

Standardmäßig werden nur eigene Events zurückgegeben — also Events, die über Ihren API-Token erstellt wurden. Mit dem Parameter scope können Sie zusätzlich Global-Travel-Monitor-Events und Events von Partner-Gruppen abrufen.

Der scope-Parameter unterstützt kommagetrennte Werte, um mehrere Quellen gleichzeitig abzufragen.

Query-Parameter:

Parameter Typ Beschreibung
scope string Kommagetrennte Liste von Scope-Werten (Standard: own)
per_page integer Einträge pro Seite (Standard: 25)
page integer Seitennummer

Scope-Werte:

Wert Beschreibung
own Nur Ihre eigenen Events (Standard)
passolution Nur von Global Travel Monitor bereitgestellte Events (aktiv und freigegeben)
all Ihre eigenen Events + Global-Travel-Monitor-Events zusammen
{gruppen-slug} Events der API-Kunden in der angegebenen Event-Gruppe (aktiv, freigegeben, nicht archiviert). Wenn die Gruppe include_passolution_events aktiviert hat, werden zusätzlich Global-Travel-Monitor-Events mitgeliefert.

Hinweis: Partner-Events (über Gruppen) und Global-Travel-Monitor-Events werden nur angezeigt, wenn sie aktiv, freigegeben und nicht archiviert sind.

Beispiele:

bashEigene Events (Standard)
curl -H "Authorization: Bearer {TOKEN}" \
  "https://platform.passolution.de/api/v1/custom/events?per_page=10&page=1"
bashNur Global-Travel-Monitor-Events
curl -H "Authorization: Bearer {TOKEN}" \
  "https://platform.passolution.de/api/v1/custom/events?scope=passolution"
bashAlle Events (eigene + Global Travel Monitor)
curl -H "Authorization: Bearer {TOKEN}" \
  "https://platform.passolution.de/api/v1/custom/events?scope=all"
bashEigene + Global Travel Monitor (kommagetrennt, entspricht scope=all)
curl -H "Authorization: Bearer {TOKEN}" \
  "https://platform.passolution.de/api/v1/custom/events?scope=own,passolution"
bashEvents einer Partner-Gruppe
curl -H "Authorization: Bearer {TOKEN}" \
  "https://platform.passolution.de/api/v1/custom/events?scope=meine-partner-gruppe"
bashEigene Events + Partner-Gruppe kombiniert
curl -H "Authorization: Bearer {TOKEN}" \
  "https://platform.passolution.de/api/v1/custom/events?scope=own,meine-partner-gruppe"

Einzelnes Event anzeigen

GET /v1/custom/events/{uuid}

Beispiel:

bash
curl -H "Authorization: Bearer {TOKEN}" \
  https://platform.passolution.de/api/v1/custom/events/a1b2c3d4-e5f6-7890-abcd-ef1234567890

Event aktualisieren

Erfordert Freischaltung der Event-Erstellung für Ihren Account.

PUT /v1/custom/events/{uuid}

Es müssen nur die zu ändernden Felder gesendet werden.

Beispiel:

bash
curl -X PUT https://platform.passolution.de/api/v1/custom/events/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Überschwemmung Bangkok - Entwarnung",
    "risk_level": "low"
  }'

Response (200 OK):

json
{
  "success": true,
  "message": "Event updated successfully.",
  "data": { ... }
}

Event löschen

Erfordert Freischaltung der Event-Erstellung für Ihren Account.

DELETE /v1/custom/events/{uuid}

Beispiel:

bash
curl -X DELETE https://platform.passolution.de/api/v1/custom/events/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer {TOKEN}"

Response (200 OK):

json
{
  "success": true,
  "message": "Event deleted successfully."
}

Fehlercodes

HTTP-Code Bedeutung
200 Erfolgreich
201 Erfolgreich erstellt
401 Nicht authentifiziert (Token fehlt oder ungültig)
403 Zugriff verweigert (Token hat keine Berechtigung oder Account deaktiviert)
404 Event nicht gefunden
422 Validierungsfehler (ungültige Daten)
429 Rate Limit überschritten
500 Serverfehler

Beispiel Validierungsfehler (422):

json
{
  "message": "The title field is required.",
  "errors": {
    "title": ["The title field is required."],
    "event_category_codes": ["At least one event type code is required."]
  }
}

Review-Workflow

Je nach Konfiguration Ihres Accounts gibt es zwei Modi:

  1. Auto-Freigabe aktiviert: Events werden sofort veröffentlicht (review_status: approved, is_active: true)
  2. Auto-Freigabe deaktiviert: Events werden zur Prüfung eingereicht (review_status: pending_review, is_active: false) und erst nach Freigabe durch das Global-Travel-Monitor-Team sichtbar

Logo auf dem Dashboard

Wenn ein Firmenlogo in Ihrem API-Account hinterlegt ist, wird dieses als Quellen-Logo neben Ihren Events auf dem Dashboard angezeigt. Ohne Logo erscheint Ihr Firmenname als Text.


Support

Bei Fragen zur API wenden Sie sich an Ihren Ansprechpartner bei Passolution.