Developer Документация

POST /oauth/token

На вашем сервере обменивает одноразовый код после согласия пилота на токены доступа — или обновляет уже выданный токен.

Нюансы

  • Вызывайте только со своего сервера, с секретом приложения.
  • При обновлении старый обновляющий токен становится недействительным.
  • Если отозванный обновляющий токен использовать повторно — отзывается всё согласие пилота.
  • Секрет можно передать в теле запроса или через Basic-авторизацию.

Авторизация

Открывается в браузере пилота или вызывается с секретом приложения — без пользовательского токена.

Тип содержимого: application/x-www-form-urlencoded

Параметры

grant_type string form

authorization_code или refresh_token

Обязательный параметр
client_id string form

client_id приложения

Обязательный параметр
client_secret string form

Секрет приложения (или HTTP Basic)

Обязательный параметр
code string form

Код из redirect (grant_type=authorization_code)

redirect_uri string form

Тот же redirect_uri, что при authorize

code_verifier string form

PKCE verifier (grant_type=authorization_code)

refresh_token string form

Refresh-токен (grant_type=refresh_token)

Примеры

Пример запроса
# Обмен code
curl -X POST 'https://panel.aeronation.ru/oauth/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=authorization_code' \
  -d 'client_id=YOUR_CLIENT_ID' \
  -d 'client_secret=YOUR_SECRET' \
  -d 'code=SplxlOBeZQQYbYS6WxSbIA' \
  -d 'redirect_uri=https://example.com/callback' \
  -d 'code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk'

# Обновление access
curl -X POST 'https://panel.aeronation.ru/oauth/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=refresh_token' \
  -d 'client_id=YOUR_CLIENT_ID' \
  -d 'client_secret=YOUR_SECRET' \
  -d 'refresh_token=eyJ…'
Пример ответа
HTTP/1.1 200 OK
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
  "token_type": "Bearer",
  "expires_in": 900,
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
  "scope": "openid profile flights:read"
}

Ошибки

invalid_client HTTP 401

Неверный client_id / client_secret или приложение отключено

invalid_grant HTTP 400

Неверный/использованный code, PKCE fail, отозванный грант, reuse refresh

unsupported_grant_type HTTP 400

grant_type не authorization_code и не refresh_token

invalid_client HTTP 400

Приложение отключено после выдачи code

Пример ошибки
HTTP/1.1 400 Bad Request
{
  "error": "invalid_grant",
  "error_description": "PKCE verification failed"
}