API
Чистая логистика предоставляет доступ к данным в виде REST API, GraphQL API (POST /graphql) и в виде обмена данными через Kafka.
Методы REST и GraphQL вызываются с токеном авторизации (см. ниже). Каждый метод доступен только пользователям с определенными ролями, например ROLE_ADMIN, ROLE_LK_ADMIN, ROLE_API_READ_ONLY. Нужные роли указаны в описании методов.
Авторизация для REST-запросов
POST authenticate
https://disp.t2.groupstp.ru/app/api/v1/authenticate
Для авторизации пользователя нужно:
Создать POST-запрос для адреса выше
Указать в HEADER :
Content-Type: application/json
Указать в BODY
{"username":"***","password":"***"}
В ответе от сервера придет токен авторизации пользователя: в теле ответа и в заголовке Authorization: Bearer ....
{"id_token":"eyJhbGciOiJIUzUxMiJ9..."}
Этот токен нужно сохранить и во всех последующих запросах к серверу указать его в заголовке Authorization:
Authorization: Bearer ваш_токен
Кроме того, сервер устанавливает cookie Refresh-Token. По ней можно получить новый токен без повторного ввода логина и пароля:
| Метод | Адрес | Описание |
|---|---|---|
| POST | /api/v1/refresh-authentication | Продление авторизации. Нужна cookie Refresh-Token. Ответ такой же, как у authenticate: новый токен в теле и в заголовке Authorization, новая cookie Refresh-Token |
| POST | /api/v1/logout | Выход. Нужна cookie Refresh-Token, сервер удаляет ее |
Пример POST-запроса
POST /your-endpoint HTTP/1.1 (Указать конечный путь до метода, который хотите вызвать)
Host: your-api-host (Указать адресс сервера)
Content-Type: application/json (Указать тип)
Authorization: Bearer (Вставить ваш токен)
{
"key": "value"
}
Пример GET-запроса
GET /your-endpoint HTTP/1.1 (Указать конечный путь до метода, который хотите вызвать)
Host: your-api-host (Указать адресс сервера)
Authorization: Bearer (Вставить ваш_токен)
Методы для внешних систем (роль ROLE_API_READ_ONLY)
Эти методы доступны только пользователю с ролью ROLE_API_READ_ONLY.
| Метод | Адрес | Параметры | Описание |
|---|---|---|---|
| GET | /api/v1/volumes/removal | dateFrom, dateTo - обязательные; timeZone - необязательный | Объемы вывоза по КП за период. Ответ - массив {"areaCode": "...", "volume": 0.0} |
| GET | /api/v1/volumes/removal-postgres | dateFrom, dateTo - обязательные, формат yyyy-MM-ddTHH:mm:ss | Объемы вывоза по КП за период. Ответ - массив {"areaCode": "...", "volume": 0.0} |
| POST | /api/v1/statistics/generate | Тело: {"name": "...", "parameters": {...}} | Статистические данные в формате JSON. Не чаще 1 вызова в 60 секунд |