Airport Database Status API

Overview

The Airport Database Status endpoint returns the current state of VPT's airport database, including health status, statistics, recent changelog entries, and cron job monitoring timestamps. It also provides a URL to a static GeoJSON file listing all airports. Use this endpoint to display a "Database Info" section in your app.

Public Endpoint

The airportStatus endpoint is public and does not require authentication. You can call it without a JWT token or API key.

Legacy Query Name

Older clients may use "get_airport_status" as the query name. This is still supported for backward compatibility but new integrations should use "airportStatus".

Get Airport Database Status

POST /api

Retrieves the current airport database status including health check, database statistics, recent changelog entries, and background cron job monitoring.

Request Parameters

Parameter Type Required Description
query string Required Must be "airportStatus" (or "get_airport_status" for legacy clients)

Request Body

JSON
{
  "query": "airportStatus"
}

cURL Example

cURL
curl -X POST "https://api.virtualperformancetool.com/api" \
  -H "Content-Type: application/json" \
  -H "X-API-Version: 1.3.6" \
  -d '{
    "query": "airportStatus"
  }'

Response

JSON
{
  "apiVersion": "1.3.6",
  "success": true,
  "airportDatabaseStatus": {
    "status": {
      "status": "ok",
      "message": "Airport database is up-to-date.",
      "lastUpdated": "2026-04-15 08:30:00"
    },
    "statistics": {
      "totalEfpCustom": 150,
      "totalEfpStd": 3200,
      "totalObstacles": 8500,
      "totalCalculatedRwyExits": 12000,
      "totalRunways": 9200,
      "totalIntx": 15400,
      "totalAirport": 4523,
      "runwayClosedByNotam": 42,
      "customMACG": 350,
      "customRunwayExit": 180
    },
    "changelog": [
      {
        "AirportChanged": "JFK (KJFK) - NEW YORK KENNEDY INTL NY",
        "AirportDate": "2023-01-12 22:07:50",
        "RunwayChanged": [
          {
            "id": "RUNWAY 04RN1 (A7976-22) ",
            "comment": "Remarks changed (now *REF NOTAM \"A7976-22\"**T/O FROM RWY HEAD*)"
          },
          {
            "id": "RUNWAY 04RN1 (A7976-22)  for B737-800W",
            "comment": "2 Obstacles removed"
          }
        ]
      }
    ],
    "cronMonitoring": {
      "notam": "2026-04-15 06:00:00",
      "airportsTimezone": "2026-04-14 00:00:00",
      "airportOSM": "2026-04-13 00:00:00",
      "magneticVariation": "2026-04-01 00:00:00"
    },
    "mapGeoJsonUrl": "https://api.virtualperformancetool.com/AirportDatabase/GeoJson/airports.min.geo.json"
  }
}

Response Fields

The airportDatabaseStatus object contains four sub-objects and one URL field described below.

status object

Health check of the airport database based on when data was last updated.

Field Type Description
status string Health indicator. Possible values: "ok" (updated within 24 h), "caution" (24–48 h since last update), "error" (more than 48 h)
message string Human-readable description of the current status
lastUpdated string Timestamp of the most recent airport data update (YYYY-MM-DD HH:MM:SS, UTC)

statistics object

Numeric counters for airport database contents.

Field Type Description
totalAirport integer Total number of distinct airports (ICAO codes) in the database
totalEfpCustom integer Number of custom EFP (Engine Failure Procedures) entries
totalEfpStd integer Number of standard EFP entries
totalObstacles integer Total number of obstacle records
totalCalculatedRwyExits integer Number of calculated runway exit points
totalRunways integer Total number of full-length runways in the database
totalIntx integer Total number of runway intersections (intersection takeoff points)
runwayClosedByNotam integer Runways currently closed by active NOTAMs
customMACG integer Number of custom MACG (Maximum Allowable Cross-wind and Gust) entries
customRunwayExit integer Number of custom runway exit entries

changelog array

Last 20 airport database changelog entries, ordered by most recent first. Each entry describes one airport update and lists every runway/procedure that changed.

Field Type Description
AirportChanged string Human-readable airport identifier, e.g. "JFK (KJFK) - NEW YORK KENNEDY INTL NY"
AirportDate string Date/time the airport data was updated (YYYY-MM-DD HH:MM:SS)
RunwayChanged array Array of runway/procedure change objects (see table below)

Each item in RunwayChanged:

Field Type Description
id string Runway/procedure identifier, including any NOTAM reference, e.g. "RUNWAY 04RN1 (A7976-22) "
comment string Plain-text description of what changed for this runway

cronMonitoring object

UTC timestamps of when each background cron job last ran successfully.

Field Type Description
notam string|null Last NOTAM import run (YYYY-MM-DD HH:MM:SS UTC)
airportsTimezone string|null Last airport timezone update run
airportOSM string|null Last OpenStreetMap airport geometry update run
magneticVariation string|null Last WMM magnetic variation update run

mapGeoJsonUrl field

A URL to a static GeoJSON FeatureCollection file containing one Feature (Point) per airport. Fetch this URL separately to render airports on a map — it is not inlined in the API response to keep the payload lightweight.

Field Type Description
mapGeoJsonUrl string Absolute URL to the static airports.min.geo.json file
Leaflet / GeoJSON usage

Fetch the URL and pass the result directly to your mapping library, e.g.:

fetch(data.airportDatabaseStatus.mapGeoJsonUrl)
  .then(r => r.json())
  .then(geo => L.geoJSON(geo).addTo(map));