{
 "openapi": "3.0.3",
 "info": {
  "title": "Echelon Routes API",
  "version": "1.8.0",
  "description": "Аэропорты, самолёты и маршруты по большому кругу."
 },
 "servers": [
  {
   "url": "https://sky.skydragon.tech"
  }
 ],
 "paths": {
  "/api/v1/status": {
   "get": {
    "summary": "Состояние сервиса",
    "operationId": "status",
    "parameters": [],
    "responses": {
     "200": {
      "description": "Успешный ответ",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Неверный параметр"
     },
     "429": {
      "description": "Превышен лимит запросов"
     }
    }
   }
  },
  "/api/v1/airports": {
   "get": {
    "summary": "Список аэропортов с поиском и фильтром",
    "operationId": "airports",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": false,
      "description": "Часть названия, города или кода",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "country",
      "in": "query",
      "required": false,
      "description": "Код страны из двух букв",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Сколько записей вернуть",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Успешный ответ",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Неверный параметр"
     },
     "429": {
      "description": "Превышен лимит запросов"
     }
    }
   }
  },
  "/api/v1/airports/{iata}": {
   "get": {
    "summary": "Один аэропорт по коду IATA или ICAO",
    "operationId": "airport",
    "parameters": [
     {
      "name": "iata",
      "in": "path",
      "required": true,
      "description": "Код IATA или ICAO",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Успешный ответ",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Неверный параметр"
     },
     "429": {
      "description": "Превышен лимит запросов"
     }
    }
   }
  },
  "/api/v1/route": {
   "get": {
    "summary": "Маршрут: дуга, расстояние, время и подходящие самолёты",
    "operationId": "route",
    "parameters": [
     {
      "name": "from",
      "in": "query",
      "required": true,
      "description": "Код аэропорта вылета",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "to",
      "in": "query",
      "required": true,
      "description": "Код аэропорта назначения",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "points",
      "in": "query",
      "required": false,
      "description": "Сколько участков в линии маршрута, от 2 до 200",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Успешный ответ",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Неверный параметр"
     },
     "429": {
      "description": "Превышен лимит запросов"
     }
    }
   }
  },
  "/api/v1/nearest": {
   "get": {
    "summary": "Ближайшие аэропорты к точке",
    "operationId": "nearest",
    "parameters": [
     {
      "name": "lat",
      "in": "query",
      "required": true,
      "description": "Широта",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "lon",
      "in": "query",
      "required": true,
      "description": "Долгота",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Сколько записей вернуть",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Успешный ответ",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Неверный параметр"
     },
     "429": {
      "description": "Превышен лимит запросов"
     }
    }
   }
  },
  "/api/v1/aircraft": {
   "get": {
    "summary": "Типы самолётов с дальностью",
    "operationId": "aircraft",
    "parameters": [],
    "responses": {
     "200": {
      "description": "Успешный ответ",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "400": {
      "description": "Неверный параметр"
     },
     "429": {
      "description": "Превышен лимит запросов"
     }
    }
   }
  }
 }
}
