Авторизация
API использует JWT-токены (JSON Web Token) для аутентификации запросов. Токен выдаётся по логину и паролю пользователя и передаётся в каждом последующем запросе.
Все методы API располагаются под путём /api/ относительно адреса сервера. Адрес сервера в
примерах — nav.gpspos.ru; у вашей компании он может отличаться.
Получение токена
POST /api/Token
Единственный метод API, не требующий токена.
Тело запроса:
{
"UserName": "login",
"Password": "password",
"SubUserId": 0
}
UserName,Password— логин и пароль пользователя с доступом к API. Используется обычная учётная запись Системы: те же логин и пароль действуют в веб-интерфейсе, состав прав тот же.SubUserId— идентификатор вложенной учётной записи, если у пользователя настроены субпользователи;0, если субпользователи не используются. Токен, выданный для субпользователя, ограничивает выдачу его правами.
Ответ:
{
"AccessToken": "eyJhbGciOiJIUzI1NiIs...",
"UserName": "login",
"ExpiresInSec": 1800
}
AccessToken— токен доступа.UserName— логин пользователя, которому выдан токен.ExpiresInSec— срок действия токена в секундах.
Пример запроса:
curl -X POST https://nav.gpspos.ru/api/Token \
-H "Content-Type: application/json" \
-d '{"UserName":"login","Password":"password","SubUserId":0}'
Использование токена
Токен передаётся во всех остальных запросах в заголовке Authorization:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
curl https://nav.gpspos.ru/api/Profile \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Токен предоставляет полный доступ к данным пользователя в рамках его прав.
Срок действия токена
Токен действует 30 минут. Точное значение возвращается в поле ExpiresInSec и на конкретной
установке может отличаться.
Метод продления токена не предусмотрен: после истечения срока токен выдаётся заново тем же запросом
POST /api/Token. Запрос с истёкшим токеном возвращает 401 Unauthorized. Обращения к /Token
учитываются в ограничении частоты запросов наравне с
остальными методами.
Ошибки авторизации
Ошибки возвращаются в стандартном формате:
{
"Status": "FAIL",
"ErrorMessage": "Invalid username or password."
}
403 Forbiddenпри получении токена — неверный логин или пароль либо отсутствие у учётной записи доступа к API. Доступ к API включается администратором, см. Инструменты API.401 Unauthorizedпри вызове метода — токен отсутствует, истёк или повреждён.403 Forbiddenпри вызове метода — токен действителен, но у пользователя нет прав на запрошенные данные. Состав прав задаётся в панели управления.
Остальные коды состояния приведены на странице Ошибки и коды ответов.