Регионы
Административно-территориальные единицы ISO 3166-2 (штаты, провинции, территории). Основной сценарий интеграции — преобразование iso_region из раздела Аэропорты в понятную человеку подпись, например US-NY → New York. Две операции: получение списка регионов (с фильтром по стране или континенту) и получение одного региона по коду.
Используйте фильтры, когда это возможно. Список без фильтров возвращает около 3900 строк по всему миру. В интерфейсах в продакшне передавайте country или continent.
| Эндпоинт | Когда использовать |
|---|---|
GET /regions | Селекторы регионов с фильтром по стране или континенту |
GET /regions/{code} | Преобразование iso_region из записи аэропорта |
Список регионов
Возвращает регионы с необязательной фильтрацией по стране и/или континенту.
Запрос
Требования
x-api-key в каждом запросе (прямая подписка). Подробнее →https://data.skylinkapi.com/v3.1/regions| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
country | string | Нет | все страны | Код страны ISO 3166-1 alpha-2, например US |
continent | string | Нет | все континенты | Код континента (AF, AN, AS, EU, NA, OC, SA) |
Ответ
{
"regions": [
{
"id": 306110,
"code": "US-NY",
"local_code": "NY",
"name": "New York",
"continent": null,
"iso_country": "US",
"wikipedia_link": "https://en.wikipedia.org/wiki/New_York",
"keywords": "Airports in New York"
}
],
"total": 1
}| Поле | Тип | Обязательный | Может быть null? | Описание |
|---|---|---|---|---|
regions | array | Да | Никогда | Подходящие записи регионов |
total | integer | Да | Никогда | Количество возвращённых регионов |
Элемент региона (regions[])
| Поле | Тип | Обязательный | Может быть null? | Описание |
|---|---|---|---|---|
id | integer | Да | Никогда | Числовой идентификатор записи |
code | string | Да | Никогда | Код региона ISO 3166-2, например US-NY |
local_code | string | null | Нет | Да | Короткий местный код внутри страны (например, NY) |
name | string | Да | Никогда | Название региона |
continent | string | null | Нет | Да | Код континента, если назначен |
iso_country | string | Да | Никогда | Код alpha-2 родительской страны |
wikipedia_link | string | null | Нет | Да | Справочный URL |
keywords | string | null | Нет | Да | Произвольные текстовые теги |
Получение региона по коду
Получение одного региона по коду ISO 3166-2 (например, US-CA, GB-ENG). Если код не найден, возвращается 404.
Запрос
https://data.skylinkapi.com/v3.1/regions/{code}| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
code | string | Да | Код региона ISO 3166-2 (параметр пути) |
Ответ
{
"id": 306110,
"code": "US-NY",
"local_code": "NY",
"name": "New York",
"continent": null,
"iso_country": "US",
"wikipedia_link": "https://en.wikipedia.org/wiki/New_York",
"keywords": "Airports in New York"
}Та же структура объекта, что и у элементов списка. Если фильтры списка ничего не нашли, возвращаются regions: [] и total: 0 — это не ошибка.
Клиентские типы
"""Region reference models for /regions endpoints."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass RegionsListRequest: country: str | None = None continent: str | None = None@dataclassclass RegionByCodeRequest: code: str@dataclassclass RegionRecord: id: int code: str local_code: str | None name: str continent: str | None iso_country: str wikipedia_link: str | None keywords: str | None@dataclassclass RegionsResponse: regions: list[RegionRecord] 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]] = {}REGIONS_TTL = 86_400 # 24 h@dataclassclass RegionOption: code: str label: strdef fetch_regions(*, country: str) -> list[dict]: country = country.upper() key = f"regions:{country}" cached = CACHE.get(key) if cached and time.time() < cached[1]: return cached[0]["regions"] try: r = requests.get( f"{BASE}/regions", headers=HEADERS, params={"country": country}, timeout=(10, 15), ) except requests.Timeout as exc: raise RuntimeError(f"SkyLink timeout fetching regions for {country}") from exc r.raise_for_status() data = r.json() CACHE[key] = (data, time.time() + REGIONS_TTL) return data.get("regions", [])def get_region_by_code(code: str) -> dict | None: code = code.upper() try: r = requests.get(f"{BASE}/regions/{code}", headers=HEADERS, timeout=(10, 15)) except requests.Timeout as exc: raise RuntimeError(f"SkyLink timeout fetching region {code}") from exc if r.status_code == 404: return None r.raise_for_status() return r.json()def region_options(country: str) -> list[RegionOption]: return [RegionOption(code=item["code"], label=item["name"]) for item in fetch_regions(country=country)]if __name__ == "__main__": import json ny = get_region_by_code("US-NY") print(json.dumps(ny, indent=2, default=str))Примечания по реализации
Сначала страна. По возможности запрашивайте данные по country — не отправляйте в браузер полный глобальный список.
Связь с аэропортами. Связывайте airport.iso_region из раздела Аэропорты напрямую с regions.code.
Формат кода. Где это практично, проверяйте формат вида XX-YYY до отправки запроса, чтобы избежать лишних ответов 404.
Ответы с ошибками
Общие ошибки: Обработка ошибок. Ошибки, специфичные для эндпоинта:
404 - регион не найден
{
"detail": "Region 'ZZ-XX' not found"
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Filter by ISO 3166-1 alpha-2 country code (e.g. US, CA, GB)
Filter by continent code: AF, AN, AS, EU, NA, OC, SA
Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/regions"{
"regions": [
{
"id": 0,
"code": "string",
"local_code": "string",
"name": "string",
"continent": "string",
"iso_country": "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-2 region code (e.g. US-CA, GB-ENG, AU-NSW)
Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/regions/US"{
"id": 0,
"code": "string",
"local_code": "string",
"name": "string",
"continent": "string",
"iso_country": "string",
"wikipedia_link": "string",
"keywords": "string"
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}См. также: Страны · Аэропорты · Поиск аэропортов