Menu
Back to Documentation Index

Quick Reference

Condensed endpoint table, rate limits, and SDK links

VATSWIM (System Wide Information Management)

Centralized data exchange hub for real-time flight information sharing across the VATSIM ecosystem.

[Status]() [Phase]() [Cost]() [FIXM]()

FIXM Field Naming: Both legacy (out_utc) and FIXM-aligned (actual_off_block_time) field names are supported permanently. Default responses use legacy names; append ?format=fixm for FIXM-aligned output. See VATSWIM_FIXM_Field_Mapping.md.

✅ Status: Production Ready

Phase Status
Phase 0: Infrastructure ✅ Complete
Phase 1: REST API ✅ Complete
Phase 2: WebSocket ✅ Complete
Phase 3: SDKs & Integrations ✅ Complete (Python, C#, Java, JS)
Phase 4: Data Isolation ✅ Complete — all endpoints query SWIM_API exclusively

Live Features:

  • REST API with FIXM field naming
  • Multiple output formats: JSON, FIXM, XML, GeoJSON, CSV, KML, NDJSON
  • Real-time WebSocket events
  • Database-backed authentication
  • Tier-based rate limits (100-30,000 req/min)
  • Response caching, ETags, gzip compression
  • Python SDK
  • AOC Telemetry Ingest (vertical rate, OOOI times)
  • NEW: Route Resolution API — resolve route strings to waypoints, distances, and ARTCC traversal (GET + batch POST)
  • Full data isolation — all endpoints query SWIM_API only; 3 sync daemons keep data fresh

Quick Start

REST API

curl -H "Authorization: Bearer YOUR_API_KEY" \
     "https://perti.vatcscc.org/api/swim/v1/flights?status=active"

WebSocket (Python)

pip install -e sdk/python
python examples/basic_example.py YOUR_API_KEY
from swim_client import SWIMClient

client = SWIMClient('your-api-key')

@client.on('flight.departed')
def on_departure(data, timestamp):
    print(f"{data.callsign} departed {data.dep}")

client.subscribe(['flight.departed', 'flight.arrived'])
client.run()

WebSocket (JavaScript)

const swim = new SWIMWebSocket('your-api-key');
await swim.connect();

swim.subscribe(['flight.departed'], { airports: ['KJFK'] });

swim.on('flight.departed', (data) => {
    console.log(`${data.callsign} departed ${data.dep}`);
});

🆕 AOC Telemetry Integration

Virtual airlines can push flight sim telemetry via the ingest API:

Push Telemetry with Vertical Rate

curl -X POST "https://perti.vatcscc.org/api/swim/v1/ingest/adl" \
  -H "Authorization: Bearer swim_par_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "flights": [{
      "callsign": "DLH401",
      "dept_icao": "KJFK",
      "dest_icao": "EDDF",
      "altitude_ft": 35000,
      "groundspeed_kts": 485,
      "vertical_rate_fpm": -1800
    }]
  }'

Push OOOI Times

curl -X POST "https://perti.vatcscc.org/api/swim/v1/ingest/adl" \
  -H "Authorization: Bearer swim_par_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "flights": [{
      "callsign": "DLH401",
      "dept_icao": "KJFK",
      "dest_icao": "EDDF",
      "out_utc": "2026-01-16T14:30:00Z",
      "off_utc": "2026-01-16T14:45:00Z"
    }]
  }'

Supported Telemetry Fields

Field Type Description
vertical_rate_fpm INT Climb/descent rate (+ = climb, - = descend)
out_utc DATETIME OOOI - Gate departure
off_utc DATETIME OOOI - Wheels up
on_utc DATETIME OOOI - Wheels down
in_utc DATETIME OOOI - Gate arrival
eta_utc DATETIME FMC-calculated ETA
etd_utc DATETIME Expected departure

API Endpoints

Base URL: https://perti.vatcscc.org/api/swim/v1

Endpoint Method Description
/ GET API info (no auth)
/flights GET List flights
/flight GET Single flight by GUFI
/positions GET Bulk positions (GeoJSON)
/tmi/programs GET Active TMI programs (GS/GDP)
/tmi/controlled GET TMI-controlled flights
/tmi/reroutes GET TMI reroute definitions
/tmi/gs GET/POST Ground Stop programs
/tmi/gs/{id} GET Ground Stop details
/tmi/gs/{id}/flights GET Flights affected by GS
/tmi/gs/{id}/model POST Model GS impact
/tmi/gs/{id}/activate POST Activate GS program
/tmi/gdp GET/POST Ground Delay Programs
/tmi/gdp/{id}/flights GET Flights in GDP
/tmi/gdp/{id}/slots GET GDP slot allocation
/tmi/mit GET Miles-In-Trail restrictions
/tmi/minit GET Minutes-In-Trail restrictions
/tmi/afp GET Airspace Flow Programs
/tmi/entries GET TMI restriction entries (MIT, AFP, etc.)
/tmi/advisories GET NTML advisory messages
/tmi/measures GET TMI measures and flow restrictions
/tmi/routes GET TMI public routes
/tmi/flow GET Flow management overview
/tmi/flow/providers GET Flow management providers (ECFMP)
/tmi/flow/events GET Flow events
/tmi/flow/measures GET Flow measures
/cdm/status GET CDM system status
/cdm/readiness GET/POST Pilot readiness status
/cdm/compliance GET CDM compliance monitoring
/cdm/metrics GET CDM performance metrics
/cdm/airport-status GET CDM airport status
/reference/taxi-times GET Airport taxi reference times
/routes/resolve GET Resolve a single route string to waypoints, distance, and ARTCCs
/routes/resolve POST Batch resolve up to 50 route strings in a single request
/routes/cdrs GET Coded Departure Routes
/playbook/plays GET Playbook route plays
/playbook/throughput GET Playbook route throughput
/playbook/analysis GET Route analysis (PostGIS)
/metering/{airport} GET TBFM metering data for airport
/metering/{airport}/sequence GET Arrival sequence list
/jatoc/incidents GET JATOC incident records
/splits/presets GET Runway configuration presets
/fea GET Flow Evaluation Areas
/controllers GET Active ATC controllers (with vNAS enrichment)
/controllers?summary=true GET Facility staffing summary
/ingest/adl POST Ingest flight data (write access)
/ingest/track POST High-freq position updates (write access)
/ingest/metering POST TBFM metering data (write access)
/ingest/vnas/controllers POST vNAS controller enrichment (write access)
/ws WS Real-time WebSocket

WebSocket Events

Event Description
flight.created New pilot connected
flight.departed Wheels up
flight.arrived Wheels down
flight.deleted Pilot disconnected
flight.positions Position batch
tmi.issued GS/GDP issued
tmi.released TMI ended
controller.connected ATC controller logged on
controller.disconnected ATC controller logged off
controller.positions Controller position batch
system.heartbeat Server keepalive

Filters

{
    "airports": ["KJFK", "KLAX"],
    "artccs": ["ZNY"],
    "callsign_prefix": ["AAL", "UAL"]
}

API Key Tiers

Tier Connections Rate Limit Write Access
public 5 100/min No
developer 50 300/min No
partner 500 3,000/min Yes
system 10,000 30,000/min Yes

Request a key: Contact dev@vatcscc.org


SDKs

Language Status Location
Python ✅ Complete sdk/python/
JavaScript ✅ Built-in api/swim/v1/ws/swim-ws-client.js
C# ✅ Complete sdk/csharp/
Java ✅ Complete sdk/java/

Documentation

Document Description
Connector Guide Unified guide for integrating external data sources
API Documentation Full API reference
vACDM Integration A-CDM departure milestone integration
ECFMP Integration European flow management data integration
SimTraffic Integration SimTraffic metering integration
vNAS Integration vNAS ERAM/STARS push integration
ACARS Integration ACARS OOOI and datalink integration
Simulator Integration Flight simulator plugin integration
Implementation Tracker Current status
AOC Telemetry Transition Latest changes
OpenAPI Spec REST API spec (import into Postman)
Swagger UI Interactive docs

Cost

Component Monthly
Azure SQL Basic $5
WebSocket $0
Total $5

Contact

  • Email: dev@vatcscc.org
  • Discord: vATCSCC Server