Страны
Справочные данные о странах по ISO 3166-1 alpha-2 для форм выбора аэропортов, фильтров по континенту и проверки поля iso_country в записях аэропортов. Две операции: получение списка всех стран (с необязательной фильтрацией по континенту) и получение одной страны по коду. Если в списке нет совпадений, возвращается countries: [] с HTTP 200.
| Эндпоинт | Когда использовать |
|---|---|
GET /countries | Заполнение списков выбора страны или фильтрация списков аэропортов по континенту |
GET /countries/{code} | Преобразование одного кода ISO в каноническое название |
Список стран
Возвращает все страны с необязательной фильтрацией по коду континента (AF, AN, AS, EU, NA, OC, SA).
Запрос
Требования
x-api-key в каждом запросе (прямая подписка). Подробнее →https://data.skylinkapi.com/v3.1/countries| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
continent | string | Нет | все континенты | Код континента (AF, AN, AS, EU, NA, OC, SA) |
Ответ
{
"countries": [
{
"id": 302755,
"code": "US",
"name": "United States",
"continent": null,
"wikipedia_link": "https://en.wikipedia.org/wiki/United_States",
"keywords": "American airports"
}
],
"total": 1
}| Поле | Тип | Обязательный | Null? | Описание |
|---|---|---|---|---|
countries | array | Да | Никогда | Подходящие записи о странах |
total | integer | Да | Никогда | Количество возвращённых записей |
Элемент страны (countries[])
| Поле | Тип | Обязательный | Null? | Описание |
|---|---|---|---|---|
id | integer | Да | Никогда | Числовой идентификатор записи |
code | string | Да | Никогда | Код ISO 3166-1 alpha-2 |
name | string | Да | Никогда | Название страны |
continent | string | null | Нет | Да | Код континента, если назначен |
wikipedia_link | string | null | Нет | Да | Справочный URL |
keywords | string | null | Нет | Да | Произвольные текстовые теги |
Получение страны по коду
Получите одну страну по коду ISO 3166-1 alpha-2 (например, US, GB). Возвращает 404, если код не найден.
Запрос
https://data.skylinkapi.com/v3.1/countries/{code}| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
code | string | Да | Код страны в параметре пути (alpha-2) |
Ответ
{
"id": 302755,
"code": "US",
"name": "United States",
"continent": null,
"wikipedia_link": "https://en.wikipedia.org/wiki/United_States",
"keywords": "American airports"
}Структура объекта та же, что и у элементов списка. continent, wikipedia_link и keywords могут быть null.
Клиентские типы
"""Country reference models for /countries endpoints."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass CountriesListRequest: continent: str | None = None@dataclassclass CountryByCodeRequest: code: str@dataclassclass CountryRecord: id: int code: str name: str continent: str | None wikipedia_link: str | None keywords: str | None@dataclassclass CountriesResponse: countries: list[CountryRecord] total: intИнтеграция
Сформируйте проверенный список стран для фильтров аэропортов или маршрутов.
Пример ниже кэширует справочные данные о странах на 24 часа и использует явные тайм-ауты, чтобы формы отрисовывались без задержек.
import osimport timefrom dataclasses import dataclassimport requestsHEADERS = { "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"CACHE: dict[str, tuple[dict, float]] = {}COUNTRIES_TTL = 86_400 # 24 h@dataclassclass CountryOption: code: str label: strdef fetch_countries(*, continent: str | None = None) -> list[dict]: key = f"countries:{continent or 'all'}" cached = CACHE.get(key) if cached and time.time() < cached[1]: return cached[0]["countries"] params = {"continent": continent} if continent else None try: r = requests.get(f"{BASE}/countries", headers=HEADERS, params=params, timeout=(10, 15)) except requests.Timeout as exc: raise RuntimeError("SkyLink timeout fetching countries") from exc r.raise_for_status() data = r.json() CACHE[key] = (data, time.time() + COUNTRIES_TTL) return data.get("countries", [])def get_country_by_code(code: str) -> dict | None: code = code.upper() try: r = requests.get(f"{BASE}/countries/{code}", headers=HEADERS, timeout=(10, 15)) except requests.Timeout as exc: raise RuntimeError(f"SkyLink timeout fetching country {code}") from exc if r.status_code == 404: return None r.raise_for_status() return r.json()def country_options(continent: str | None = None) -> list[CountryOption]: items = fetch_countries(continent=continent) return [CountryOption(code=item["code"], label=item["name"]) for item in items]if __name__ == "__main__": import json us = get_country_by_code("US") print(json.dumps(us, indent=2, default=str))Примечания по реализации
Фильтрация по континенту. Передавайте continent, чтобы уменьшить объём данных в продуктах для конкретных регионов (например, только NA и EU).
Нормализация кода. Переводите пользовательский ввод в верхний регистр перед поиском (us → US), чтобы избежать ложных ошибок 404.
Ответы с ошибками
Общие ошибки платформы: Обработка ошибок. Ошибки, специфичные для эндпоинта:
404 - страна не найдена
{
"detail": "Country 'XX' not found"
}400 - недопустимый фильтр континента
{
"detail": "Invalid continent 'XX'. Valid values: AF, AN, AS, EU, NA, OC, SA"
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Filter by continent code: AF (Africa), AN (Antarctica), AS (Asia), EU (Europe), NA (North America), OC (Oceania), SA (South America)
Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/countries"{
"countries": [
{
"id": 0,
"code": "string",
"name": "string",
"continent": "string",
"wikipedia_link": "string",
"keywords": "string"
}
],
"total": 0
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
ISO 3166-1 alpha-2 country code (e.g. US, GB, DE)
Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/countries/US"{
"id": 0,
"code": "string",
"name": "string",
"continent": "string",
"wikipedia_link": "string",
"keywords": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}См. также: Регионы · Аэропорты · Поиск аэропортов