TRA INFO HUB

API Documentation

JSON-Exporte für aktuelle TRA-Aktivierungen und den Austria-Widget-Luftraumstatus, gedacht für externe Systeme mit maschinenlesbarem Bedarf an Luftrauminformationen.

Was sind TRAs?

TRAs sind in Österreich temporär reservierte Lufträume für den Sichtflug. Sie liegen im Luftraum der Klasse G/W und werden nur für definierte Zeitfenster aktiviert; außerhalb dieser Zeiten sind sie inaktiv.

Endpunkte

export_activations.php

Liefert exportierbare Aktivierungen, Verlängerungen und Deaktivierungen, deren Start- oder Deaktivierungszeit in den letzten 26 Stunden bis 12 Stunden in der Zukunft liegt.

https://tra-dev.airspace.at/export_activations.php?importer=abc123

export_activations_48h.php

Verwendet dieselbe JSON-Struktur, erweitert das Rückblickfenster aber auf die letzten 48 Stunden plus 12 Stunden in der Zukunft.

https://tra-dev.airspace.at/export_activations_48h.php?importer=abc123

export_dev.php

Liefert die letzten 20 exportierbaren System-Interaktionen mit derselben JSON-Struktur. Das ist für Integrationstests hilfreich, weil der Export nicht auf das laufende Zeitfenster begrenzt ist. Dieser Endpunkt ist immer Hash-only.

https://tra-dev.airspace.at/export_dev.php?importer=abc123

Enthalten sind nur Datensätze von Vereinen und TRAs, die für den JSON-Export freigegeben sind. Ablehnungen und Hinweise wie "keine Verlängerung möglich" sind nicht Teil dieses Exports.

Zugriff

Importer-Hash

API-Nutzer benötigen aktuell einen zugewiesenen Importer-Hash. Dieser wird als Query-Parameter importer übergeben. Der Wert in den Beispielen ist ein Platzhalter und muss durch den zugewiesenen Hash ersetzt werden.

Firewall-Freischaltung

Bitte nach Möglichkeit auch die Quell-IP des abrufenden Systems bekanntgeben. Eine IP-Freischaltung in der Firewall ist derzeit noch optional, kann später oder für einzelne Integrationen aber erforderlich werden.

Kostenloser Zugang

API-Zugänge werden kostenlos bereitgestellt. Nutzer der Daten präsentieren wir gerne als Partner auf der Homepage, auf Wunsch auch mit Logo.

Unterstützung willkommen

Bei kommerziellen oder gewinnorientierten Projekten freuen wir uns über freiwillige finanzielle Unterstützung, damit der Service zuverlässig betrieben, gewartet und der Community weiterhin bereitgestellt werden kann.

Fehlender Zugriff

Wenn der Export nicht öffentlich freigeschaltet ist und der Hash fehlt oder ungültig ist, antwortet der Endpunkt mit HTTP 403 und einer JSON-Fehlermeldung.

JSON-Struktur

Die Antwort ist ein JSON-Array. Jeder Eintrag ist ein Kommando für XContest. Kommandos verwenden type=activation, type=cancel oder type=stop_activation. Intern gemeinsam gespeicherte TRA-Aktionen werden pro TRA exportiert, damit ein späteres stop_activation nur den betroffenen Luftraum beendet.

Feld Typ Bedeutung
activation_id integer Eindeutige exportierte Kommando-ID. Bei TRA-spezifischen Kommandos wird sie aus interner Interaktions-ID und TRA-ID abgeleitet, damit einzelne Lufträume später separat beendet oder storniert werden können.
type string Kommandotyp: activation, cancel oder stop_activation.
addedTimestamp string UTC-Zeitpunkt, zu dem das Ereignis eingetragen wurde. Auch bei Storno-Einträgen enthalten.
cancelled_activation_id integer Nur bei type=cancel. Verweist auf die zuvor exportierte activation_id, die beim Verbraucher entfernt werden soll.
stop_activation_id integer Nur bei type=stop_activation. Verweist auf das zuvor exportierte Aktivierungs-Kommando, das verkürzt werden soll.
stopTime string Nur bei type=stop_activation. UTC-Zeitpunkt, zu dem die referenzierte Aktivierung endet.
activations array Nur bei type=activation. Liste der geöffneten TRA-Zeitintervalle.
airspace string Name der TRA, zum Beispiel TRA Almenland.
start string UTC-Startzeit des Aktivierungsintervalls.
end string UTC-Endzeit des Aktivierungsintervalls.
upperLimit string Optionales Upper-Limit-Override, zum Beispiel FL95 oder 8500ft AMSL.

Ereignislogik

Aktivierung

Ein Kommando mit type=activation öffnet die angeführte TRA für das exportierte Zeitintervall.

Unterbrechungen am Tag

Wenn dieselbe TRA an einem Tag mehrfach mit echten Pausen dazwischen aktiviert wird, wird jedes operative Zeitfenster als eigenes type=activation-Kommando exportiert.

Verlängerung

Verlängerungen werden ebenfalls als type=activation mit neuer activation_id exportiert. Die Startzeit bleibt gleich wie bei der vorherigen Aktivierung, während end die neue Endzeit enthält.

Deaktivierung

Eine vorzeitige Deaktivierung wird als type=stop_activation mit stop_activation_id und stopTime exportiert. Sie verkürzt nur das referenzierte Aktivierungs-Kommando.

Storno

Ein Storno-Kommando hat type=cancel, eine eigene activation_id, addedTimestamp und cancelled_activation_id. Es ist für Fehlerkorrekturen gedacht und soll das referenzierte frühere Kommando beim Verbraucher entfernen.

Verbrauchende Systeme sollten Ereignisse anhand von Zeitstempel oder activation_id auswerten und ihren lokalen Zustand pro Luftraum entsprechend aktualisieren.

Beispiele

TRA Almenland mit Aktivierung und zwei Verlängerungen

Das erste Ereignis aktiviert die TRA Almenland bis 11:00 UTC. Das zweite Ereignis verlängert dieselbe TRA bis 13:00 UTC. Das dritte Ereignis behält dieselbe Startzeit und verlängert die TRA bis ECET an diesem Tag, 18:49:34 UTC.

[
    {
        "activation_id": 10421,
        "type": "activation",
        "addedTimestamp": "2026-05-06 06:15:02",
        "activations": [
            {
                "airspace": "TRA Almenland",
                "start": "2026-05-06 07:00:00",
                "end": "2026-05-06 11:00:00",
                "upperLimit": "8500ft AMSL"
            }
        ]
    },
    {
        "activation_id": 10436,
        "type": "activation",
        "addedTimestamp": "2026-05-06 10:32:18",
        "activations": [
            {
                "airspace": "TRA Almenland",
                "start": "2026-05-06 07:00:00",
                "end": "2026-05-06 13:00:00"
            }
        ]
    },
    {
        "activation_id": 10458,
        "type": "activation",
        "addedTimestamp": "2026-05-06 12:44:07",
        "activations": [
            {
                "airspace": "TRA Almenland",
                "start": "2026-05-06 07:00:00",
                "end": "2026-05-06 18:49:34"
            }
        ]
    }
]

Mehrere TRAs separat steuerbar

Dieses Beispiel zeigt eine intern gemeinsam gespeicherte Aktivierung, die als separate TRA-Kommandos exportiert wird. Das spätere stop_activation betrifft nur TRA BRUCK, weil es nur die exportierte activation_id von BRUCK referenziert.

[
    {
        "activation_id": 118800001,
        "type": "activation",
        "addedTimestamp": "2026-05-06 06:45:06",
        "activations": [
            {
                "airspace": "TRA SCHOECKL",
                "start": "2026-05-06 07:00:00",
                "end": "2026-05-06 12:00:00"
            }
        ]
    },
    {
        "activation_id": 118800002,
        "type": "activation",
        "addedTimestamp": "2026-05-06 06:45:06",
        "activations": [
            {
                "airspace": "TRA ALMENLAND",
                "start": "2026-05-06 07:00:00",
                "end": "2026-05-06 12:00:00"
            }
        ]
    },
    {
        "activation_id": 118800003,
        "type": "activation",
        "addedTimestamp": "2026-05-06 06:45:06",
        "activations": [
            {
                "airspace": "TRA BRUCK",
                "start": "2026-05-06 07:00:00",
                "end": "2026-05-06 12:00:00"
            }
        ]
    },
    {
        "activation_id": 119000003,
        "type": "stop_activation",
        "addedTimestamp": "2026-05-06 10:15:21",
        "stop_activation_id": 118800003,
        "stopTime": "2026-05-06 10:15:00"
    }
]

Dieselbe TRA mit getrennten Zeitfenstern

TRA POELS ist dreimal mit Pausen dazwischen aktiv. Jedes operative Zeitfenster wird separat exportiert, damit Verbraucher aktuell 15:00-17:00 Lokalzeit anzeigen und nicht den ganzen Tag zu 09:00-17:00 Lokalzeit zusammenziehen.

[
    {
        "activation_id": 1441,
        "type": "activation",
        "addedTimestamp": "2026-05-21 08:55:00",
        "activations": [
            {
                "airspace": "TRA POELS (W)",
                "start": "2026-05-21 07:00:00",
                "end": "2026-05-21 08:00:00",
                "upperLimit": "8500ft AMSL"
            }
        ]
    },
    {
        "activation_id": 1442,
        "type": "activation",
        "addedTimestamp": "2026-05-21 12:20:00",
        "activations": [
            {
                "airspace": "TRA POELS (W)",
                "start": "2026-05-21 10:30:00",
                "end": "2026-05-21 11:30:00",
                "upperLimit": "9000ft AMSL"
            }
        ]
    },
    {
        "activation_id": 1443,
        "type": "activation",
        "addedTimestamp": "2026-05-21 14:50:00",
        "activations": [
            {
                "airspace": "TRA POELS (W)",
                "start": "2026-05-21 13:00:00",
                "end": "2026-05-21 15:00:00",
                "upperLimit": "9500ft AMSL"
            }
        ]
    }
]

TRA Feldkirchen mit Aktivierung und Deaktivierung

Das erste Kommando aktiviert die TRA Feldkirchen bis 14:00 UTC. Das stop_activation-Kommando verkürzt diese Aktivierung ab 12:30 UTC.

[
    {
        "activation_id": 20510,
        "type": "activation",
        "addedTimestamp": "2026-05-06 06:45:11",
        "activations": [
            {
                "airspace": "TRA Feldkirchen",
                "start": "2026-05-06 08:00:00",
                "end": "2026-05-06 14:00:00"
            }
        ]
    },
    {
        "activation_id": 20528,
        "type": "stop_activation",
        "addedTimestamp": "2026-05-06 11:58:44",
        "stop_activation_id": 20510,
        "stopTime": "2026-05-06 12:30:00"
    }
]

Storno und korrigierte Aktivierung

Das cancel-Kommando hat seine eigene activation_id 1441 und entfernt über cancelled_activation_id die zuvor exportierte activation_id 1440. Die nachfolgende activation_id 1442 exportiert das korrigierte Zeitfenster als neues Kommando.

[
    {
        "activation_id": 1441,
        "type": "cancel",
        "addedTimestamp": "2026-05-21 08:10:00",
        "cancelled_activation_id": 1440
    },
    {
        "activation_id": 1442,
        "type": "activation",
        "addedTimestamp": "2026-05-21 08:55:00",
        "activations": [
            {
                "airspace": "TRA POELS (W)",
                "start": "2026-05-21 09:00:00",
                "end": "2026-05-21 10:00:00"
            }
        ]
    }
]