9.2 KiB
phpVMS has a REST-api for integration with any standalone programs, including any flight simulator addons, or ACARS applications.
Authentication and Authorization
Each user is given an API key (and can regenerate it) when they register. Requests to a phpVMS API will require an X-API-Key header, with this key. Addons can take advantage of this by adding the api.auth middleware to their route group.
Headers Example
X-API-Key: {user API key}
Content-type: application/json
Sample cURL Request
$api_key = 'YOUR API KEY';
$url = "http://your-site.com/api/user";
$headers = [
'X-API-Key:' . $api_key,
'Content-type:application/json',
];
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
json_response = \json_decode(curl_exec($ch));
curl_close($ch);
echo $json_response;
Types
Not all IDs are numeric integers. At the moment, the primary keys on these tables are strings. They are hashed IDs that are generated:
- acars
- flights
- pireps
Errors
Where possible, the standard HTTP error codes are followed and returned, with extra information in the body, if available.
Unauthorized
401 is returned if the API key is invalid, or the user is disallowed from API access. The message parameter will offer more error.
Not Found
404 is returned if an entity is not found
Validation Errors
400, with details in the message parameter about the bad input.
Pagination
Where indicated, pagination is enabled/available. When calling those APIs, the data is returned in this format:
datacontains a list of all of the objects (for example, the airports)linkscontains the links to navigate through the paginated listmetacontains information about the current dataset
{
"data": [ ... ],
"links": {
"first":"http://phpvms.test/api/airports?page=1",
"last":"http://phpvms.test/api/airports?page=3",
"prev":null,
"next":"http://phpvms.test/api/airports?page=2"
},
"meta": {
"current_page": 1,
"from":1,
"last_page":3,
"path":"http://phpvms.test/api/airports",
"per_page":50,
"to":50,
"total":120
}
}
APIs Available
User
GET /api/user
Returns the user's information, including bids, etc. Example response:
{
"id":2,
"name":"Adam Lockman PhD",
"email":"miles.sporer@example.net",
"apikey":null,
"rank_id":"1",
"home_airport": "KJFK",
"curr_airport": "KJFK",
"last_pirep_id": 1,
"flights":0,
"flight_time":914,
"balance":0,
"timezone": "American/Chicago",
"status":0,
"state":1,
"airline":{
"id":1,
"icao":"VMS",
"iata":"VMS",
"name":"phpVMS Airlines",
"country":"United States",
"logo":null
},
"bids":[
],
"rank":{
"name":"New Pilot",
"subfleets":[
]
}
}
Airlines
GET /api/airlines
Get all of the airlines. Paginated
{
"data":[
{
"id":1,
"icao": "VMS",
"iata": "VMS",
"name": "phpVMS Airlines",
"country": "United States",
"logo": null
}
],
"links":{
"first":"http://phpvms.test/api/airlines?page=1",
"last":"http://phpvms.test/api/airlines?page=1",
"prev":null,
"next":null
},
"meta":{
"current_page":1,
"from":1,
"last_page":1,
"path":"http://phpvms.test/api/airlines",
"per_page":50,
"to":1,
"total":1
}
}
GET /api/airlines/{ID}
Get information about a specific airline
{
"id":1,
"icao": "VMS",
"iata": "VMS",
"name": "phpVMS Airlines",
"country": "United States",
"logo": null
}
Airports
GET /api/airports
Get all of the airports, paginated list
{
"data":[
{
"id":"KJFK",
"iata":"KJFK",
"icao":"KJFK",
"name":"John F Kennedy International Airport",
"city":"New York",
"country":"United States",
"location":null,
"hub": true,
"fuel_100ll_cost": 0.00,
"fuel_jeta_cost": 0.00,
"fuel_mogas_cost": 0.00,
"tz":"America/New_York",
"lat":40.6398,
"lon":-73.7789
}
],
"links":{
"first":"http://phpvms.test/api/airports?page=1",
"last":"http://phpvms.test/api/airports?page=2",
"prev":null,
"next":"http://phpvms.test/api/airports?page=2"
},
"meta":{
"current_page":1,
"from":1,
"last_page":2,
"path":"http://phpvms.test/api/airports",
"per_page":50,
"to":2,
"total":2
}
}
GET /api/airports/hubs
Get all of the hubs, paginated list
{
"data":[
{
"id":"KJFK",
"iata":"KJFK",
"icao":"KJFK",
"name":"John F Kennedy International Airport",
"city":"New York",
"country":"United States",
"location":null,
"hub": true,
"fuel_100ll_cost": 0.00,
"fuel_jeta_cost": 0.00,
"fuel_mogas_cost": 0.00,
"tz":"America/New_York",
"lat":40.6398,
"lon":-73.7789
}
],
"links":{
"first":"http://phpvms.test/api/airports?page=1",
"last":"http://phpvms.test/api/airports?page=2",
"prev":null,
"next":"http://phpvms.test/api/airports?page=2"
},
"meta":{
"current_page":1,
"from":1,
"last_page":2,
"path":"http://phpvms.test/api/airports",
"per_page":50,
"to":2,
"total":2
}
}
GET /api/airports/{ICAO}
Get the details about an airport
{
"id":"KJFK",
"iata":"KJFK",
"icao":"KJFK",
"name":"John F Kennedy International Airport",
"city":"New York",
"country":"United States",
"location":null,
"hub": true,
"fuel_100ll_cost": 0.00,
"fuel_jeta_cost": 0.00,
"fuel_mogas_cost": 0.00,
"tz":"America/New_York",
"lat":40.6398,
"lon":-73.7789
}
Fleet
GET /api/fleet
Get all of the subfleets and aircraft under the fleet. Includes the fare and airline information. Paginated
{
"data":[
{
"id":1,
"airline_id":1,
"name":"Boeing 747-400",
"type":"B744",
"fuel_type":null,
"cargo_capacity":null,
"fuel_capacity":null,
"gross_weight":null,
"aircraft":[
{
"id":1,
"subfleet_id":"1",
"icao":"B744",
"airport_id":"KJFK",
"hex_code":null,
"name":"Boeing 747 \"The Queen\"",
"registration":"NC17",
"tail_number":"17",
"active":true,
"created_at":"2018-01-08 21:37:13",
"updated_at":"2018-01-08 21:37:13"
}
]
}
],
"links":{
"first":"http://phpvms.test/api/fleet?page=1",
"last":"http://phpvms.test/api/fleet?page=1",
"prev":null,
"next":null
},
"meta":{
"current_page":1,
"from":1,
"last_page":1,
"path":"http://phpvms.test/api/fleet",
"per_page":50,
"to":2,
"total":2
}
}
GET /api/aircraft/{id}
Return information about an aircraft, including the subfleet information
Query string parameters: ?type=registration|tail_number|icao. Default/blank is the DB ID
{
"id":1,
"subfleet_id":"1",
"icao":"B744",
"airport_id":"KJFK",
"hex_code":null,
"name":"Boeing 747 \"The Queen\"",
"registration":"NC17",
"tail_number":"17",
"active":true,
"subfleet": {
"id":1,
"airline_id":1,
"name":"Boeing 747-400",
"type":"B744",
"fuel_type":null,
"cargo_capacity":null,
"fuel_capacity":null,
"gross_weight":null
},
"created_at":"2018-01-08 21:37:13",
"updated_at":"2018-01-08 21:37:13"
}
Flights
GET /api/flights
Return all of the flights, paginated
GET /api/flights/{FLIGHT ID}
Return details about a given flight
GET /api/flights/search
Do a search for a flight
Query String Example:
/api/flights/search?depicao=KJFK&arricao=KAUS
airline_id- ID of the airlinedep_icao- Departure airport codearr_icao- Arrival airport codeflight_number- Can be a partial matchroute_code
PIREPs
GET /api/pireps/{PIREP ID}
Retrieve the PIREP information
GET /api/pireps/{PIREP ID}/route
Retrieve the route
GET /api/pireps/{PIREP ID}/acars/geojson
Get the ACARS data in GeoJSON format
GET /api/pireps/{PIREP ID}/acars/positions
Get the ACARS data in plain rows
See the ACARS documentation for details about the PIREPs and ACARS API details
Users
GET /api/users/{id}
Retrieve info about a user
GET /api/users/{id}/bids
Get a user's bids
Settings
GET /api/settings
Get all of the phpVMS configuration settings, including things like the units and individual configuration options.
See the list of settings here. Remember to look at the type column in order to properly parse the value.