Skip to content

TMI API

Jeremy Peterson edited this page Feb 26, 2026 · 2 revisions

TMI API

Traffic Management Initiative APIs for Ground Stops, GDPs, and related operations.


Database Architecture

TMI data is stored across two databases:

Database Purpose Status
VATSIM_TMI Unified TMI operations (20+ tables) Active
VATSIM_ADL Flight-level TMI assignments (adl_flight_tmi) Active

All TMI program management, advisories, reroutes, and coordination use VATSIM_TMI. Flight-level control data (adl_flight_tmi) remains in VATSIM_ADL for tight coupling with flight data. Cross-database joins are supported since both databases are on the same Azure SQL Server.


GDT API (Unified - Recommended)

The new GDT API provides unified access to all TMI program types using the VATSIM_TMI database.

Base Path: /api/gdt/

Program Operations

POST /api/gdt/programs/create.php

Creates a new GS/GDP/AFP program.

Request:

{
  "ctl_element": "KJFK",
  "element_type": "APT",
  "program_type": "GS",
  "start_utc": "2026-01-26T14:00:00Z",
  "end_utc": "2026-01-26T18:00:00Z",
  "scope_type": "TIER",
  "scope_tier": 1,
  "impacting_condition": "WEATHER",
  "cause_text": "Thunderstorms"
}

Response:

{
  "success": true,
  "program_id": 42,
  "program_guid": "a1b2c3d4-...",
  "status": "PROPOSED"
}

GET /api/gdt/programs/list.php

Lists programs with optional filtering.

Parameter Type Description
status string PROPOSED, ACTIVE, COMPLETED, PURGED, all
ctl_element string Filter by airport/FCA
program_type string GS, GDP-DAS, GDP-GAAP, GDP-UDP, AFP

GET /api/gdt/programs/get.php

Gets single program with slots and counts.

Parameter Type Description
program_id int Program ID (required)

POST /api/gdt/programs/simulate.php

Generates slots and runs RBS (Ration by Schedule) assignment.

Request:

{
  "program_id": 42
}

Response:

{
  "success": true,
  "slots_created": 24,
  "flights_modeled": 47,
  "avg_delay_min": 35.5
}

POST /api/gdt/programs/activate.php

Activates a proposed/modeled program.

Parameter Type Description
program_id int Program ID (required)

POST /api/gdt/programs/extend.php

Extends program end time.

Request:

{
  "program_id": 42,
  "new_end_utc": "2026-01-26T20:00:00Z"
}

POST /api/gdt/programs/purge.php

Cancels/purges a program.

Parameter Type Description
program_id int Program ID (required)

POST /api/gdt/programs/transition.php

Transitions a Ground Stop to GDP.

Request:

{
  "program_id": 42,
  "new_type": "GDP-DAS",
  "program_rate": 32
}

Flight Operations

GET /api/gdt/flights/list.php

Lists flights assigned to a program.

Parameter Type Description
program_id int Program ID (required)
status string Filter by control status

Response:

{
  "success": true,
  "flights": [
    {
      "flight_uid": 12345,
      "callsign": "DAL123",
      "dep_airport": "KATL",
      "arr_airport": "KJFK",
      "ctd_utc": "2026-01-26T15:30:00Z",
      "cta_utc": "2026-01-26T17:45:00Z",
      "aslot": "KJFK.261745A",
      "program_delay_min": 45,
      "ctl_exempt": false,
      "gs_held": true
    }
  ]
}

Slot Operations

GET /api/gdt/slots/list.php

Lists slots for a program.

Parameter Type Description
program_id int Program ID (required)
status string Filter: OPEN, ASSIGNED, BRIDGED, HELD

Response:

{
  "success": true,
  "slots": [
    {
      "slot_id": 1001,
      "slot_name": "KJFK.261530A",
      "slot_time_utc": "2026-01-26T15:30:00Z",
      "slot_type": "REGULAR",
      "slot_status": "ASSIGNED",
      "assigned_callsign": "DAL123"
    }
  ]
}

Demand Operations

GET /api/gdt/demand/hourly.php

Gets hourly demand/capacity data.

Parameter Type Description
program_id int Program ID
airport string Airport ICAO (alternative)
hours int Hours to forecast (default: 6)

Legacy Ground Stop APIs

Note: These endpoints use VATSIM_ADL.ntml. Consider migrating to /api/gdt/ endpoints.

POST /api/tmi/gs/create.php

POST /api/tmi/gs/create.php

Creates a new Ground Stop (proposed status).

Request:

{
  "airport": "KJFK",
  "reason": "Weather",
  "scope": "tier1",
  "end_time": "2026-01-10T18:00:00Z",
  "notes": "Thunderstorms in terminal area"
}

Response:

{
  "success": true,
  "gs_id": 123,
  "status": "proposed"
}

POST /api/tmi/gs/model.php

Models affected flights for a proposed Ground Stop.

Request:

{
  "gs_id": 123
}

Response:

{
  "success": true,
  "affected_count": 47,
  "flights": [
    {
      "callsign": "DAL123",
      "origin": "KATL",
      "eta": "2026-01-10T16:30:00Z",
      "distance_nm": 450
    }
  ]
}

POST /api/tmi/gs/activate.php

Activates a Ground Stop and issues EDCTs.

Request:

{
  "gs_id": 123
}

Response:

{
  "success": true,
  "status": "active",
  "edcts_issued": 47
}

POST /api/tmi/gs/extend.php

Extends an active Ground Stop.

Request:

{
  "gs_id": 123,
  "new_end": "2026-01-10T20:00:00Z"
}

POST /api/tmi/gs/purge.php

Cancels/purges a Ground Stop.

Request:

{
  "gs_id": 123
}

GET /api/tmi/gs/list.php

Lists Ground Stop programs.

Parameters:

Name Type Description
status string proposed, active, expired, all
airport string Filter by airport

GET /api/tmi/gs/get.php

Gets single Ground Stop details.

Parameters:

Name Type Description
id int Ground Stop ID

GET /api/tmi/gs/flights.php

Gets flights affected by a Ground Stop.

Parameters:

Name Type Description
gs_id int Ground Stop ID
status string Filter by compliance status

GET /api/tmi/gs/demand.php

Gets demand data for Ground Stop planning.

Parameters:

Name Type Description
airport string Airport ICAO
hours int Hours to forecast

GDP APIs

POST /api/tmi/gdp/create.php

Creates a Ground Delay Program.

Request:

{
  "airport": "KJFK",
  "rate": 32,
  "reason": "Weather",
  "start_time": "2026-01-10T14:00:00Z",
  "end_time": "2026-01-10T20:00:00Z"
}

POST /api/tmi/gdp/modify.php

Modifies GDP parameters.


POST /api/tmi/gdp/cancel.php

Cancels a GDP.


Scope Tiers

Tier Description
tier1 Flights within ~2 hours ETA
tier2 Flights within ~4 hours ETA
tier3 All flights to destination
custom Custom distance/time criteria

GS Status Values

Status Description
proposed Created, not yet active
active Currently in effect
extended Extended past original end
purged Canceled before expiration
expired Ended naturally

NOD Flow APIs (NEW v18)

Flow Configuration CRUD

Base Path: /api/nod/flows/

Method Endpoint Description
GET /api/nod/flows/configs.php List flow configs (filter by facility)
POST /api/nod/flows/configs.php Create flow config
PUT /api/nod/flows/configs.php Update flow config
DELETE /api/nod/flows/configs.php Delete flow config
GET /api/nod/flows/elements.php List elements for a config
POST /api/nod/flows/elements.php Create flow element (FIX/PROCEDURE/ROUTE/GATE)
PUT /api/nod/flows/elements.php Update element properties
DELETE /api/nod/flows/elements.php Delete flow element
GET /api/nod/flows/gates.php List gates for an element
POST /api/nod/flows/gates.php Create gate
DELETE /api/nod/flows/gates.php Delete gate
GET /api/nod/flows/suggestions.php Autocomplete fixes/procedures

FEA Bridge API

Method Endpoint Description
POST /api/nod/fea.php FEA actions: demand monitor toggle, bulk create/clear

TMR APIs (NEW v18)

Traffic Management Review report management.

Method Endpoint Description
GET /api/data/review/tmr_report.php Get TMR report for a plan
POST /api/data/review/tmr_report.php Create/update TMR report (auto-save)
DELETE /api/data/review/tmr_report.php Delete TMR report
GET /api/data/review/tmr_tmis.php Historical TMI lookup from VATSIM_TMI
GET /api/data/review/tmr_export.php Export TMR as Discord-formatted text

See Also

Clone this wiki locally