{
  "openapi": "3.0.1",
  "info": {
    "title": "AviationData.Systems Airports API V1",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.aviationdata.systems/"
    }
  ],
  "paths": {
    "/v1/airport/autocomplete/{airport_name}": {
      "get": {
        "tags": [
          "AutoCompleteAirportName"
        ],
        "summary": "Autocomplete airport names. Returns a maximum of 10 airport names.",
        "description": "Required parameters: airport_name, airport_service_type. Optional parameter: country code (ISO 3166-1).",
        "operationId": "AutoCompleteAirportName_AirportNameSearch",
        "parameters": [
          {
            "name": "airport_name",
            "in": "path",
            "description": "Required: The airports name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "airport_service_type",
            "in": "query",
            "description": "Required: Needs to be: All, Scheduled or NonScheduled",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "All",
                "Scheduled",
                "NonScheduled"
              ]
            }
          },
          {
            "name": "optional_country_code",
            "in": "query",
            "description": "Optional: Country code (ISO 3166-1). This can be found via /countries",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.AutoCompleteAirportNameController.Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.AutoCompleteAirportNameController.Response"
                }
              }
            }
          }
        }
      }
    },
    "/v1/airport/iata/{airport_iata}": {
      "get": {
        "tags": [
          "AirportIATA"
        ],
        "summary": "Search for airport by IATA code",
        "description": "Required parameters: airport_iata",
        "operationId": "AirportIATA_AirportIATASearch",
        "parameters": [
          {
            "name": "airport_iata",
            "in": "path",
            "description": "Required: The airports IATA code",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.AirportIATAController.Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.AirportIATAController.Response"
                }
              }
            }
          }
        }
      }
    },
    "/v1/airport/name/{airport_name}": {
      "get": {
        "tags": [
          "AirportDetails"
        ],
        "summary": "Search for airport by name",
        "description": "Required parameters: airport_name, api_mode",
        "operationId": "AirportDetails_AirportNameSearch",
        "parameters": [
          {
            "name": "airport_name",
            "in": "path",
            "description": "Required: The airports name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.AirportDetailsController.Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.AirportDetailsController.Response"
                }
              }
            }
          }
        }
      }
    },
    "/v1/airport/nearest/{result_count}/{latitude}/{longitude}": {
      "get": {
        "tags": [
          "NearestAirports"
        ],
        "summary": "Search for airports by location",
        "description": "Required parameters: result_count, latitude, longitude, airport_service_type",
        "operationId": "NearestAirports_NearestAirportList",
        "parameters": [
          {
            "name": "result_count",
            "in": "path",
            "description": "Required: Number of airports to return. Min: 1 Max: 20",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "latitude",
            "in": "path",
            "description": "Required: Latitude",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          },
          {
            "name": "longitude",
            "in": "path",
            "description": "Required: Longitude",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.NearestAirportsController.Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.NearestAirportsController.Response"
                }
              }
            }
          }
        }
      }
    },
    "/v1/country/code/{country_code}": {
      "get": {
        "tags": [
          "CountryAirportList"
        ],
        "summary": "Country airports. Returns a list of airports for a country code(ISO 3166-1 alpha-2 code)",
        "description": "Required parameters: country code (ISO 3166-1), airport_service_type.",
        "operationId": "CountryAirportList_CountryAirportList",
        "parameters": [
          {
            "name": "country_code",
            "in": "path",
            "description": "Country code (ISO 3166-1). This can be found via /countries",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "airport_service_type",
            "in": "query",
            "description": "Required: Needs to be: All, Scheduled or NonScheduled",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "All",
                "Scheduled",
                "NonScheduled"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.CountryAirportListController.AirportListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.CountryAirportListController.AirportListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/country_list": {
      "get": {
        "tags": [
          "CountryList"
        ],
        "summary": "Country list. Returns a list of countries where airport data is available",
        "operationId": "CountryList_CountryAirportList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.CountryListController.CountryListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AirportsAPI.Controllers.CountryListController.CountryListResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AirportsAPI.Controllers.AirportDetailsController.Response": {
        "type": "object",
        "properties": {
          "airport_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.Airport"
            }
          },
          "disclaimer": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status_code": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Controllers.AirportIATAController.Response": {
        "type": "object",
        "properties": {
          "airport_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.Airport"
            }
          },
          "disclaimer": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status_code": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Controllers.AutoCompleteAirportNameController.Response": {
        "type": "object",
        "properties": {
          "airport_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.AirportListAutocomplete"
            }
          },
          "disclaimer": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status_code": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Controllers.CountryAirportListController.AirportListResponse": {
        "type": "object",
        "properties": {
          "airport_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.AirportList"
            }
          },
          "country": {
            "$ref": "#/components/schemas/AirportsAPI.Models.Country"
          },
          "disclaimer": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status_code": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Controllers.CountryListController.CountryListResponse": {
        "type": "object",
        "properties": {
          "country": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.Country"
            }
          },
          "disclaimer": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status_code": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Controllers.NearestAirportsController.Response": {
        "type": "object",
        "properties": {
          "airport_list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.Airport"
            }
          },
          "disclaimer": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status_code": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.Airport": {
        "type": "object",
        "properties": {
          "Country": {
            "$ref": "#/components/schemas/AirportsAPI.Models.Location.Country"
          },
          "Frequency": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.Frequency"
            }
          },
          "Region": {
            "$ref": "#/components/schemas/AirportsAPI.Models.Location.Region"
          },
          "Runway": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AirportsAPI.Models.Runway"
            }
          },
          "airport_name": {
            "type": "string"
          },
          "airport_type": {
            "type": "string"
          },
          "elevation_ft": {
            "type": "string"
          },
          "gps_code": {
            "type": "string"
          },
          "iata_code": {
            "type": "string"
          },
          "latitude": {
            "type": "string"
          },
          "local_code": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "logo_url": {
            "type": "string"
          },
          "longitude": {
            "type": "string"
          },
          "scheduled_service": {
            "type": "boolean"
          },
          "website": {
            "type": "string"
          },
          "wikipedia": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.AirportList": {
        "type": "object",
        "properties": {
          "airport_name": {
            "type": "string"
          },
          "airport_type": {
            "type": "string"
          },
          "iata_code": {
            "type": "string"
          },
          "latitude": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "longitude": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.AirportListAutocomplete": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.Country": {
        "type": "object",
        "properties": {
          "continent": {
            "type": "string"
          },
          "country_code": {
            "type": "string"
          },
          "flag_url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.Frequency": {
        "type": "object",
        "properties": {
          "desc": {
            "type": "string"
          },
          "frequency_mhz": {
            "type": "string"
          },
          "frequency_type": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.Location.Country": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string"
          },
          "flag_url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.Location.Region": {
        "type": "object",
        "properties": {
          "local_code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "region_code": {
            "type": "string"
          }
        }
      },
      "AirportsAPI.Models.Runway": {
        "type": "object",
        "properties": {
          "closed": {
            "type": "boolean"
          },
          "hE_latitude": {
            "type": "string"
          },
          "hE_longitude": {
            "type": "string"
          },
          "he_displaced_threshold_ft": {
            "type": "string"
          },
          "he_elevation_ft": {
            "type": "string"
          },
          "he_heading_deg": {
            "type": "string"
          },
          "le_displaced_threshold_ft": {
            "type": "string"
          },
          "le_elevation_ft": {
            "type": "string"
          },
          "le_heading_deg": {
            "type": "string"
          },
          "le_latitude": {
            "type": "string"
          },
          "le_longitude": {
            "type": "string"
          },
          "length_ft": {
            "type": "string"
          },
          "lighted": {
            "type": "boolean"
          },
          "surface_type": {
            "type": "string"
          },
          "width_ft": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "basic": {
        "type": "http",
        "description": "Basic HTTP Authentication",
        "scheme": "basic"
      }
    }
  }
}