Dokumentation REST API
Authorization: Bearer {API_TOKEN}
Den Token erhalten Sie von Ihrem Ansprechpartner bei Global Travel Monitor.
Events abrufen, erstellen und verwalten. Unterstützt Multi-Scope-Abfragen und Event-Gruppen.
Import von Reisedaten mit Hotels, Flügen, Kreuzfahrten und Mietwagen. Queue-basierte Verarbeitung.
RSS/Atom-Feeds für aktuelle Sicherheits- und Reiserisiko-Events. Keine Authentifizierung erforderlich.
Die Event API ermöglicht es externen Partnern, Events auf dem Risk Management Dashboard abzurufen sowie — bei entsprechender Freischaltung — eigene Events zu erstellen und zu verwalten.
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 ForbiddenResponse.
Alle API-Aufrufe erfordern einen Bearer-Token im HTTP-Header:
Authorization: Bearer {API_TOKEN}
Den Token erhalten Sie von Ihrem Ansprechpartner bei Global Travel Monitor. Er ist 1 Jahr gültig.
https://stage-api.global-travel-monitor.eu/v1
Standardmäßig sind 60 Requests pro Minute erlaubt. Bei Überschreitung erhalten Sie einen 429 Too Many Requests Response.
Bevor Sie Events erstellen, fragen Sie die gültigen Event-Typen und Ländercodes ab.
GET /v1/event-types
Beispiel:
curl -H "Authorization: Bearer {TOKEN}" \
https://stage-api.global-travel-monitor.eu/v1/event-types
Response:
{
"success": true,
"data": [
{
"code": "earthquake",
"name": "Erdbeben",
"color": "#FF0000",
"icon": "fa-house-crack"
},
{
"code": "flood",
"name": "Überschwemmung",
"color": "#0066CC",
"icon": "fa-water"
}
]
}
GET /v1/countries
Beispiel:
curl -H "Authorization: Bearer {TOKEN}" \
https://stage-api.global-travel-monitor.eu/v1/countries
Response:
{
"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"
}
]
}
Erfordert Freischaltung der Event-Erstellung für Ihren Account.
POST /v1/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) |
priority | string | Nein | Priorität: 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_type_codes | array | Ja | Event-Typ-Codes (mindestens 1, aus /event-types) |
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:
curl -X POST https://stage-api.global-travel-monitor.eu/v1/events \
-H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"title": "Überschwemmung Bangkok",
"description": "<p>Schwere Überschwemmungen im Großraum Bangkok.</p>",
"priority": "high",
"start_date": "2026-02-11T08:00:00Z",
"end_date": "2026-02-18T08:00:00Z",
"event_type_codes": ["flood"],
"country_codes": ["TH"],
"latitude": 13.7563,
"longitude": 100.5018,
"tags": ["flooding", "bangkok"],
"external_id": "EXT-2026-001"
}'
Response (201 Created):
{
"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.",
"priority": "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_types": [
{
"code": "flood",
"name": "Überschwemmung",
"color": "#0066CC",
"icon": "fa-water"
}
],
"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_statuspending_reviewundis_activeistfalse. Das Event wird erst nach manueller Freigabe durch das Global-Travel-Monitor-Team auf dem Dashboard sichtbar.
GET /v1/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:
# Eigene Events (Standard)
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/events?per_page=10&page=1"
# Nur Global-Travel-Monitor-Events
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/events?scope=passolution"
# Alle Events (eigene + Global Travel Monitor)
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/events?scope=all"
# Eigene + Global Travel Monitor (kommagetrennt, entspricht scope=all)
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/events?scope=own,passolution"
# Events einer Partner-Gruppe
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/events?scope=meine-partner-gruppe"
# Eigene Events + Partner-Gruppe kombiniert
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/events?scope=own,meine-partner-gruppe"
GET /v1/events/{uuid}
Beispiel:
curl -H "Authorization: Bearer {TOKEN}" \
https://stage-api.global-travel-monitor.eu/v1/events/a1b2c3d4-e5f6-7890-abcd-ef1234567890
Erfordert Freischaltung der Event-Erstellung für Ihren Account.
PUT /v1/events/{uuid}
Es müssen nur die zu ändernden Felder gesendet werden.
Beispiel:
curl -X PUT https://stage-api.global-travel-monitor.eu/v1/events/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"title": "Überschwemmung Bangkok - Entwarnung",
"priority": "low"
}'
Response (200 OK):
{
"success": true,
"message": "Event updated successfully.",
"data": { ... }
}
Erfordert Freischaltung der Event-Erstellung für Ihren Account.
DELETE /v1/events/{uuid}
Beispiel:
curl -X DELETE https://stage-api.global-travel-monitor.eu/v1/events/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer {TOKEN}"
Response (200 OK):
{
"success": true,
"message": "Event deleted successfully."
}
| 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):
{
"message": "The title field is required.",
"errors": {
"title": ["The title field is required."],
"event_type_codes": ["At least one event type code is required."]
}
}
Je nach Konfiguration Ihres Accounts gibt es zwei Modi:
review_status: approved, is_active: true)review_status: pending_review, is_active: false) und erst nach Freigabe durch das Global-Travel-Monitor-Team sichtbarWenn 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.
Bei Fragen zur API wenden Sie sich an Ihren Ansprechpartner bei Global Travel Monitor.
Die Folder Import API ermöglicht den Import von Reisedaten (Folders) mit Hotels, Flügen, Kreuzfahrten und Mietwagen. Der Import läuft queue-basiert im Hintergrund und bietet automatisches Airport-Matching, Country-Matching, Timeline-Generierung und Geocoding.
Alle API-Aufrufe erfordern einen Bearer-Token im HTTP-Header:
Authorization: Bearer {API_TOKEN}
Der Token wird über die Web-Oberfläche generiert (erfordert eine aktive Session):
POST /customer/api-tokens/generate
Response:
{
"success": true,
"token": "2|RHej0fNgjGSzvPrEcSuY7nMGI7fldCnOMoBrpl2T173373b5",
"message": "API Token erfolgreich generiert"
}
Wichtig: Speichern Sie den Token sicher ab. Er wird nur einmal im Klartext angezeigt.
https://stage-api.global-travel-monitor.eu
POST /v1/folders/import
Importiert einen kompletten Folder mit allen zugehörigen Daten. Der Import wird in eine Queue eingereiht und im Hintergrund verarbeitet. Die Response enthält eine log_id zum Status-Tracking.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
source | string | Ja | Import-Quelle: api, file, manual |
provider | string | Ja | Name des Datenlieferanten (max. 128 Zeichen) |
data | object | Ja | Die eigentlichen Reisedaten (siehe unten) |
mapping_config | object | Nein | Optionale Mapping-Konfiguration |
data)| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
folder | object | Ja | Vorgangsdaten |
customer | object | Nein | Kundendaten |
participants | array | Nein | Reiseteilnehmer |
itineraries | array | Ja | Reiseleistungen (Hotels, Flüge, etc.) |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
folder_number | string | Nein | Eindeutige Vorgangsnummer (wird automatisch generiert) |
folder_name | string | Nein | Name der Reise (max. 255 Zeichen) |
travel_start_date | date | Nein | Reisebeginn (YYYY-MM-DD) |
travel_end_date | date | Nein | Reiseende (YYYY-MM-DD) |
primary_destination | string | Nein | Hauptreiseziel |
status | string | Nein | draft, confirmed, active, completed, cancelled (Standard: draft) |
travel_type | string | Nein | business, leisure, mixed (Standard: leisure) |
agent_name | string | Nein | Name des Bearbeiters |
notes | string | Nein | Notizen |
currency | string | Nein | Währung als ISO-Code (Standard: EUR) |
custom_field_1_label | string | Nein | Label für eigenes Feld 1 (max. 100 Zeichen) |
custom_field_1_value | string | Nein | Wert für eigenes Feld 1 |
custom_field_2_label | string | Nein | Label für eigenes Feld 2 |
custom_field_2_value | string | Nein | Wert für eigenes Feld 2 |
custom_field_3_label | string | Nein | Label für eigenes Feld 3 |
custom_field_3_value | string | Nein | Wert für eigenes Feld 3 |
custom_field_4_label | string | Nein | Label für eigenes Feld 4 |
custom_field_4_value | string | Nein | Wert für eigenes Feld 4 |
custom_field_5_label | string | Nein | Label für eigenes Feld 5 |
custom_field_5_value | string | Nein | Wert für eigenes Feld 5 |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
salutation | string | Nein | Anrede: mr, mrs, diverse (auch Herr, Frau, Divers wird gemappt) |
title | string | Nein | Titel (max. 64 Zeichen) |
first_name | string | Ja | Vorname (max. 128 Zeichen) |
last_name | string | Ja | Nachname (max. 128 Zeichen) |
email | string | Nein | E-Mail-Adresse |
phone | string | Nein | Telefonnummer |
mobile | string | Nein | Mobilnummer |
street | string | Nein | Straße |
house_number | string | Nein | Hausnummer |
postal_code | string | Nein | Postleitzahl |
city | string | Nein | Stadt |
country_code | string | Nein | Ländercode (ISO alpha-2, z.B. DE) |
birth_date | date | Nein | Geburtsdatum (YYYY-MM-DD) |
nationality | string | Nein | Staatsangehörigkeit (ISO alpha-2) |
notes | string | Nein | Notizen |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
salutation | string | Nein | mr, mrs, child, infant, diverse |
title | string | Nein | Titel |
first_name | string | Ja | Vorname |
last_name | string | Ja | Nachname |
birth_date | date | Nein | Geburtsdatum |
nationality | string | Nein | Staatsangehörigkeit (ISO alpha-2) |
passport_number | string | Nein | Reisepassnummer |
passport_issue_date | date | Nein | Ausstellungsdatum Pass |
passport_expiry_date | date | Nein | Ablaufdatum Pass |
passport_issuing_country | string | Nein | Ausstellungsland Pass (ISO alpha-2) |
email | string | Nein | E-Mail-Adresse |
phone | string | Nein | Telefonnummer |
dietary_requirements | string | Nein | Ernährungsanforderungen |
medical_conditions | string | Nein | Medizinische Hinweise |
notes | string | Nein | Notizen |
is_main_contact | boolean | Nein | Hauptansprechpartner (Standard: false) |
participant_type | string | Nein | adult, child, infant (Standard: adult) |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
booking_reference | string | Nein | Buchungsreferenz |
itinerary_name | string | Nein | Name der Leistung |
start_date | date | Nein | Startdatum |
end_date | date | Nein | Enddatum |
status | string | Nein | pending, confirmed, cancelled, completed (Standard: pending) |
provider_name | string | Nein | Anbietername |
provider_reference | string | Nein | Anbieterreferenz |
currency | string | Nein | Währung (Standard: EUR) |
notes | string | Nein | Notizen |
hotels | array | Nein | Hotels (siehe unten) |
flights | array | Nein | Flüge (siehe unten) |
ships | array | Nein | Kreuzfahrten (siehe unten) |
car_rentals | array | Nein | Mietwagen (siehe unten) |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
hotel_name | string | Ja | Hotelname |
hotel_code | string | Nein | Hotel-Code |
hotel_code_type | string | Nein | Typ des Hotel-Codes |
street | string | Nein | Straße |
postal_code | string | Nein | Postleitzahl |
city | string | Nein | Stadt |
country_code | string | Nein | Ländercode (ISO alpha-2) |
lat | number | Nein | Breitengrad (-90 bis 90) |
lng | number | Nein | Längengrad (-180 bis 180) |
check_in_date | date | Ja | Check-in-Datum |
check_out_date | date | Ja | Check-out-Datum |
nights | integer | Nein | Anzahl Nächte |
room_type | string | Nein | Zimmertyp |
room_count | integer | Nein | Zimmeranzahl (Standard: 1) |
board_type | string | Nein | Verpflegung (z.B. "All Inclusive") |
booking_reference | string | Nein | Buchungsreferenz |
total_amount | number | Nein | Gesamtbetrag |
currency | string | Nein | Währung (Standard: EUR) |
status | string | Nein | pending, confirmed, cancelled (Standard: pending) |
notes | string | Nein | Notizen |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
booking_reference | string | Nein | Buchungsreferenz |
service_type | string | Nein | outbound, return, multi_leg (Standard: outbound) |
airline_pnr | string | Nein | Airline PNR |
ticket_numbers | array | Nein | Ticketnummern |
total_amount | number | Nein | Gesamtbetrag |
currency | string | Nein | Währung (Standard: EUR) |
status | string | Nein | pending, ticketed, cancelled (Standard: pending) |
segments | array | Ja | Flugsegmente (mindestens 1) |
Flight Segment:
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
segment_number | integer | Nein | Segmentnummer (Standard: 1) |
departure_airport_code | string | Ja | IATA-Code Abflughafen (z.B. MUC) – automatisches Matching |
departure_time | datetime | Ja | Abflugzeit |
departure_terminal | string | Nein | Terminal |
arrival_airport_code | string | Ja | IATA-Code Zielflughafen (z.B. PMI) – automatisches Matching |
arrival_time | datetime | Ja | Ankunftszeit |
arrival_terminal | string | Nein | Terminal |
airline_code | string | Nein | Airline-Code (z.B. LH) |
flight_number | string | Nein | Flugnummer |
aircraft_type | string | Nein | Flugzeugtyp (z.B. A320) |
duration_minutes | integer | Nein | Flugdauer in Minuten |
booking_class | string | Nein | Buchungsklasse |
cabin_class | string | Nein | economy, premium_economy, business, first (Standard: economy) |
Hinweis:
departure_country_code,departure_lat,departure_lng,arrival_country_code,arrival_lat,arrival_lngwerden automatisch aus den IATA-Codes ermittelt.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
ship_name | string | Ja | Schiffsname |
cruise_line | string | Nein | Reederei |
ship_code | string | Nein | Schiffs-Code |
embarkation_date | date | Ja | Einschiffungsdatum |
disembarkation_date | date | Ja | Ausschiffungsdatum |
nights | integer | Nein | Anzahl Nächte |
embarkation_port | string | Nein | Einschiffungshafen |
embarkation_country_code | string | Nein | Ländercode Einschiffung (ISO alpha-2) |
embarkation_lat | number | Nein | Breitengrad Einschiffung |
embarkation_lng | number | Nein | Längengrad Einschiffung |
disembarkation_port | string | Nein | Ausschiffungshafen |
disembarkation_country_code | string | Nein | Ländercode Ausschiffung |
disembarkation_lat | number | Nein | Breitengrad Ausschiffung |
disembarkation_lng | number | Nein | Längengrad Ausschiffung |
cabin_number | string | Nein | Kabinennummer |
cabin_type | string | Nein | Kabinentyp |
cabin_category | string | Nein | Kabinenkategorie |
deck | string | Nein | Deck |
booking_reference | string | Nein | Buchungsreferenz |
total_amount | number | Nein | Gesamtbetrag |
currency | string | Nein | Währung (Standard: EUR) |
status | string | Nein | pending, confirmed, cancelled (Standard: pending) |
port_calls | array | Nein | Hafenstopps (siehe unten) |
notes | string | Nein | Notizen |
Port Call (Hafenstopp):
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
port | string | Nein | Hafenname |
country | string | Nein | Ländercode (ISO alpha-2) |
arrival | date | Nein | Ankunftsdatum |
departure | date | Nein | Abreisedatum |
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
rental_company | string | Nein | Mietwagenfirma |
booking_reference | string | Nein | Buchungsreferenz |
pickup_location | string | Ja | Abholort |
pickup_country_code | string | Nein | Ländercode Abholung (ISO alpha-2) |
pickup_lat | number | Nein | Breitengrad Abholung |
pickup_lng | number | Nein | Längengrad Abholung |
pickup_datetime | datetime | Ja | Abholdatum/-zeit |
return_location | string | Ja | Rückgabeort |
return_country_code | string | Nein | Ländercode Rückgabe |
return_lat | number | Nein | Breitengrad Rückgabe |
return_lng | number | Nein | Längengrad Rückgabe |
return_datetime | datetime | Ja | Rückgabedatum/-zeit |
vehicle_category | string | Nein | Fahrzeugkategorie |
vehicle_type | string | Nein | Fahrzeugtyp |
vehicle_make_model | string | Nein | Marke/Modell |
transmission | string | Nein | manual, automatic |
fuel_type | string | Nein | petrol, diesel, electric, hybrid |
rental_days | integer | Nein | Mietdauer in Tagen |
total_amount | number | Nein | Gesamtbetrag |
currency | string | Nein | Währung (Standard: EUR) |
insurance_options | array | Nein | Versicherungsoptionen |
extras | array | Nein | Zusatzleistungen |
status | string | Nein | pending, confirmed, picked_up, returned, cancelled (Standard: pending) |
notes | string | Nein | Notizen |
curl -X POST https://stage-api.global-travel-monitor.eu/v1/folders/import \
-H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"source": "api",
"provider": "Test System",
"data": {
"folder": {
"folder_name": "Test Reise",
"travel_start_date": "2026-06-01",
"travel_end_date": "2026-06-14"
},
"customer": {
"first_name": "Max",
"last_name": "Mustermann"
},
"participants": [
{
"first_name": "Max",
"last_name": "Mustermann",
"is_main_contact": true
}
],
"itineraries": [
{
"itinerary_name": "Hauptreise",
"hotels": [
{
"hotel_name": "Test Hotel",
"check_in_date": "2026-06-01",
"check_out_date": "2026-06-14"
}
]
}
]
}
}'
curl -X POST https://stage-api.global-travel-monitor.eu/v1/folders/import \
-H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"source": "api",
"provider": "TUI Reisebüro München",
"data": {
"folder": {
"folder_name": "Mallorca Sommerurlaub 2026",
"travel_start_date": "2026-07-15",
"travel_end_date": "2026-07-29",
"primary_destination": "Palma, Spanien",
"travel_type": "leisure",
"status": "confirmed",
"currency": "EUR",
"custom_field_1_label": "TUI Buchungsnummer",
"custom_field_1_value": "TUI-2026-12345"
},
"customer": {
"salutation": "Frau",
"first_name": "Anna",
"last_name": "Müller",
"email": "anna.mueller@example.com",
"phone": "+49 89 12345678",
"city": "München",
"country_code": "DE"
},
"participants": [
{
"salutation": "Frau",
"first_name": "Anna",
"last_name": "Müller",
"birth_date": "1985-03-15",
"nationality": "DE",
"passport_number": "C01X12345",
"is_main_contact": true,
"participant_type": "adult"
}
],
"itineraries": [
{
"itinerary_name": "Mallorca Hauptreise",
"start_date": "2026-07-15",
"end_date": "2026-07-29",
"status": "confirmed",
"booking_reference": "MAL-2026-001",
"currency": "EUR",
"hotels": [
{
"hotel_name": "Hotel Paraíso del Mar",
"city": "Palma",
"country_code": "ES",
"lat": 39.5699,
"lng": 2.6509,
"check_in_date": "2026-07-15",
"check_out_date": "2026-07-29",
"nights": 14,
"room_type": "Superior Doppelzimmer",
"board_type": "All Inclusive",
"booking_reference": "HTL-001",
"total_amount": 2450.00,
"status": "confirmed"
}
],
"flights": [
{
"booking_reference": "LH-PMI-001",
"service_type": "outbound",
"status": "ticketed",
"segments": [
{
"segment_number": 1,
"departure_airport_code": "MUC",
"departure_time": "2026-07-15 10:00:00",
"arrival_airport_code": "PMI",
"arrival_time": "2026-07-15 12:15:00",
"airline_code": "LH",
"flight_number": "1802",
"cabin_class": "economy"
}
]
}
]
}
]
}
}'
Response (202 Accepted):
{
"success": true,
"message": "Import queued successfully",
"log_id": "019bef38-f2bc-73fc-bdbc-228ff5a8421e"
}
GET /v1/folders/imports/{log_id}/status
Beispiel:
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/folders/imports/019bef38-f2bc-73fc-bdbc-228ff5a8421e/status"
Response (200 OK):
{
"success": true,
"data": {
"id": "019bef38-f2bc-73fc-bdbc-228ff5a8421e",
"status": "completed",
"folder_id": "019bef39-a1b2-c3d4-e5f6-789012345678",
"records_imported": 5,
"records_failed": 0,
"error_message": null,
"started_at": "2026-06-01T10:00:01Z",
"completed_at": "2026-06-01T10:00:03Z",
"duration_seconds": 2
}
}
Mögliche Status-Werte:
| Status | Beschreibung |
|---|---|
pending | Import wartet auf Verarbeitung |
processing | Import wird gerade verarbeitet |
completed | Import erfolgreich abgeschlossen |
failed | Import fehlgeschlagen (siehe error_message) |
GET /v1/folders/imports
Query-Parameter:
| Parameter | Typ | Beschreibung |
|---|---|---|
per_page | integer | Einträge pro Seite (Standard: 15, Maximum: 100) |
Beispiel:
curl -H "Authorization: Bearer {TOKEN}" \
"https://stage-api.global-travel-monitor.eu/v1/folders/imports?per_page=10"
| HTTP-Code | Bedeutung |
|---|---|
202 | Import erfolgreich in Queue eingereiht |
200 | Statusabfrage erfolgreich |
401 | Nicht authentifiziert (Token fehlt oder ungültig) |
404 | Import-Log nicht gefunden |
422 | Validierungsfehler (ungültige Daten) |
500 | Serverfehler |
Beispiel Validierungsfehler (422):
{
"success": false,
"errors": {
"source": ["The source field is required."],
"data.folder.folder_name": ["The folder name must not exceed 255 characters."]
}
}
MUC, PMI) werden automatisch zu vollständigen Flughafendaten aufgelöst inkl. Koordinaten und LändercodeBei Fragen zur API wenden Sie sich an Ihren Ansprechpartner bei Global Travel Monitor.
Die Feed API stellt aktuelle Sicherheits- und Reiserisiko-Events sowie Länderinformationen als RSS/Atom-Feeds bereit. Die Feeds können in Feed-Reader, CMS-Systeme oder eigene Anwendungen eingebunden werden.
Keine Authentifizierung erforderlich – alle Feed-Endpunkte sind öffentlich zugänglich.
https://global-travel-monitor.eu/feed
Feed-Antworten werden serverseitig gecacht. Die Cache-Dauer beträgt standardmäßig 1 Stunde (3600 Sekunden). Bei neuen oder geänderten Events wird der Cache automatisch invalidiert.
GET /feed/events/meta.json
Gibt die gültigen Werte für Priority-Filter und Event-Typ-Filter als JSON zurück.
Beispiel:
curl https://global-travel-monitor.eu/feed/events/meta.json
Response:
{
"priorities": [
{ "code": "high", "name_de": "Hoch", "name_en": "High" },
{ "code": "medium", "name_de": "Mittel", "name_en": "Medium" },
{ "code": "low", "name_de": "Niedrig", "name_en": "Low" },
{ "code": "info", "name_de": "Information", "name_en": "Info" }
],
"event_types": [
{
"code": "earthquake",
"name": "Erdbeben",
"description": "...",
"icon": "fa-house-crack",
"color": "#FF0000"
}
]
}
Alle Event-Feeds liefern nur aktive, nicht-archivierte Events, deren Startdatum in der Vergangenheit liegt. Maximal 100 Events pro Feed, sortiert nach Startdatum (neueste zuerst).
| Format | URL |
|---|---|
| RSS 2.0 | /feed/events/all.xml |
| Atom 1.0 | /feed/events/all.atom |
Beispiel:
curl https://global-travel-monitor.eu/feed/events/all.xml
GET /feed/events/priority/{priority}.xml
| Parameter | Gültige Werte |
|---|---|
priority | high, medium, low, info |
Beispiel:
curl https://global-travel-monitor.eu/feed/events/priority/high.xml
GET /feed/events/countries/{code}.xml
| Parameter | Beschreibung |
|---|---|
code | ISO 3166-1 alpha-2 (z.B. de) oder alpha-3 (z.B. deu), case-insensitive |
Beispiel:
curl https://global-travel-monitor.eu/feed/events/countries/de.xml
GET /feed/events/types/{type}.xml
| Parameter | Beschreibung |
|---|---|
type | Event-Typ-Code (aus meta.json), case-insensitive |
Beispiel:
curl https://global-travel-monitor.eu/feed/events/types/earthquake.xml
GET /feed/events/regions/{region}.xml
| Parameter | Beschreibung |
|---|---|
region | Numerische Region-ID |
Beispiel:
curl https://global-travel-monitor.eu/feed/events/regions/3.xml
Jedes Event-Item im Feed enthält folgende Elemente:
| Element | Beschreibung |
|---|---|
<title> | Titel des Events |
<link> | URL zur Event-Detailseite |
<guid> | Permanenter Link (identisch mit <link>) |
<description> | Kurzübersicht: Typ, Zeitraum, Priorität, Länder |
<content:encoded> | Vollständige Beschreibung |
<pubDate> | Erstellungsdatum (RFC 2822) |
<category> | Priorität und Event-Typen |
<dc:creator> | Ersteller (falls vorhanden) |
<source> | Quellenangabe mit URL |
<enclosure> | Länderbild (JPEG, falls vorhanden) |
article:data<article:data>
<article:start_date>Mon, 11 Feb 2026 08:00:00 +0000</article:start_date>
<article:end_date>Tue, 18 Feb 2026 08:00:00 +0000</article:end_date>
<article:priority>high</article:priority>
<article:event_type code="earthquake">Erdbeben</article:event_type>
</article:data>
| Element | Beschreibung |
|---|---|
article:start_date | Startdatum des Events |
article:end_date | Enddatum des Events |
article:priority | Prioritätsstufe: high, medium, low, info |
article:event_type | Event-Typ mit code-Attribut und Name als Inhalt (mehrere möglich) |
country:dataPro betroffenem Land wird ein <country:data>-Block ausgegeben:
<country:data>
<country:name_de>Thailand</country:name_de>
<country:name_en>Thailand</country:name_en>
<country:iso_code>TH</country:iso_code>
<country:iso3_code>THA</country:iso3_code>
<country:is_eu_member>false</country:is_eu_member>
<country:is_schengen_member>false</country:is_schengen_member>
<country:continent>Asien</country:continent>
<country:currency_code>THB</country:currency_code>
<country:phone_prefix>+66</country:phone_prefix>
<country:capital>
<country:capital_name>Bangkok</country:capital_name>
<geo:lat>13.7563</geo:lat>
<geo:long>100.5018</geo:long>
</country:capital>
</country:data>
| Element | Beschreibung |
|---|---|
country:name_de | Ländername (deutsch) |
country:name_en | Ländername (englisch) |
country:iso_code | ISO 3166-1 alpha-2 Code |
country:iso3_code | ISO 3166-1 alpha-3 Code |
country:is_eu_member | true / false |
country:is_schengen_member | true / false |
country:continent | Kontinent (deutsch) |
country:currency_code | ISO 4217 Währungscode |
country:phone_prefix | Internationale Telefonvorwahl |
country:capital_name | Name der Hauptstadt |
geo:lat | Breitengrad der Hauptstadt |
geo:long | Längengrad der Hauptstadt |
<rss version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:country="http://global-travel-monitor.eu/ns/country"
xmlns:article="http://global-travel-monitor.eu/ns/article"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
Die Länder-Feeds liefern Verzeichnisse mit Länderdetails (Name, ISO-Codes, EU/Schengen-Status, Kontinent, Währung, Hauptstadt mit Koordinaten).
GET /feed/countries/names/all.xml
GET /feed/countries/continent/{code}.xml
| Parameter | Gültige Werte |
|---|---|
code | EU (Europa), AS (Asien), AF (Afrika), NA (Nordamerika), SA (Südamerika), OC (Ozeanien), AN (Antarktis) |
Beispiel:
curl https://global-travel-monitor.eu/feed/countries/continent/EU.xml
GET /feed/countries/eu.xml
GET /feed/countries/schengen.xml
| Endpunkt | Format | Beschreibung |
|---|---|---|
/feed/events/meta.json | JSON | Verfügbare Priorities und Event-Typen |
/feed/events/all.xml | RSS 2.0 | Alle aktiven Events |
/feed/events/all.atom | Atom 1.0 | Alle aktiven Events |
/feed/events/priority/{priority}.xml | RSS 2.0 | Events nach Priorität |
/feed/events/countries/{code}.xml | RSS 2.0 | Events nach Land |
/feed/events/types/{type}.xml | RSS 2.0 | Events nach Event-Typ |
/feed/events/regions/{region}.xml | RSS 2.0 | Events nach Region |
/feed/countries/names/all.xml | RSS 2.0 | Alle Länder |
/feed/countries/continent/{code}.xml | RSS 2.0 | Länder nach Kontinent |
/feed/countries/eu.xml | RSS 2.0 | EU-Mitgliedsstaaten |
/feed/countries/schengen.xml | RSS 2.0 | Schengen-Staaten |
Bei Fragen zur Feed API wenden Sie sich an Ihren Ansprechpartner bei Global Travel Monitor.