The Sumerian god of fire and smithing.
Real-time flight data adapter that polls the Avinor XML feed, converts it to SIRI-ET format, and pushes it to subscribers via Anshar.
Input: Avinor XML feed → merged Flight objects (departure + arrival)
Output: SIRI-ET XML pushed to Anshar subscribers on change
Only domestic flights (domInt=D) within a ±20 min / +7 h time window are processed. Airports are polled in batches every 2 minutes.
Key properties in application.properties (overridable via environment variables in Kubernetes):
avinor.api.base-url-xmlfeed=https://asrv.avinor.no/XmlFeed/v1.0
avinor.api.base-url-airport-names=https://asrv.avinor.no/airportNames/v1.0
entur.api.base-url-stop-places=https://api.entur.io/stop-places/v1/read/stop-places
# Allowlist of hostnames permitted as subscriber addresses (SSRF protection)
siri.allowed-subscriber-hosts=localhost,127.0.0.1
# Optional: override the NeTEx data directory (defaults to GCP path in cluster)
# gibil.extime.path=/custom/path/extimeData| Method | Path | Description |
|---|---|---|
| GET | /siri |
Full SIRI-ET XML for all airports (~55 API calls) |
| GET | /avinor?airport=OSL |
Raw Avinor XML for a single airport (debug) |
| POST | /subscribe |
Register a SIRI-ET subscription |
| POST | /unsubscribe |
Terminate a SIRI-ET subscription |
Requires Java 21 and Maven.
mvn spring-boot:run # Run locally
mvn verify # Build and run tests
mvn test # Run tests onlyWhen running locally, Gibil downloads and unpacks the NeTEx timetable data from GCP automatically on startup.