Blame
|
1 | # Подключение к Open API |
||||||
| 2 | ||||||||
| 3 | Платформа SKIF.PRO предоставляет разработчикам и интеграторам доступ к открытому программному интерфейсу (Open API) для интеграции телематических данных с внешними ERP, CRM, TMS и 1С. Для взаимодействия с API требуется активная учетная запись в SKIF.PRO с правами интегратора или администратора компании. |
|||||||
| 4 | ||||||||
| 5 | ## Свойства подключения |
|||||||
| 6 | ||||||||
| 7 | Для отправки запросов и изучения структуры данных используются следующие параметры и адреса интерфейса: |
|||||||
| 8 | ||||||||
| 9 | | Параметр | Описание | |
|||||||
| 10 | | --- | --- | |
|||||||
| 11 | | Портал документации | Интерактивная веб-документация Swagger UI: `https://api.skif.pro` | |
|||||||
| 12 | | Базовый URL API | Точка входа для запросов данных: `https://app1.skif.pro/api_v1` | |
|||||||
| 13 | | Спецификация OpenAPI | Машиночитаемая схема OpenAPI 3.0: `https://api.skif.pro/openapi.json` | |
|||||||
| 14 | | Формат данных | Тело запросов и ответов передается в формате JSON (`Content-Type: application/json`) | |
|||||||
| 15 | | Способы авторизации | Заголовок `Authorization: Bearer <токен>` или постоянный ключ `user_company_api_key: <ключ>` | |
|||||||
| 16 | ||||||||
| 17 | ## Авторизация в Open API |
|||||||
| 18 | ||||||||
| 19 | Взаимодействие с Open API требует подтверждения прав доступа. SKIF.PRO поддерживает два способа авторизации: по временному JWT-токену или по постоянному API-ключу компании. |
|||||||
| 20 | ||||||||
| 21 | ### Авторизация по временному токену |
|||||||
| 22 | ||||||||
| 23 | 1. Отправьте HTTP-запрос методом POST на адрес `https://app1.skif.pro/api_v1/login` с логином и паролем учетной записи в формате JSON. |
|||||||
| 24 | 2. Извлеките значение токена из заголовка `Authorization` ответа сервера. |
|||||||
| 25 | 3. Передавайте полученный токен в заголовке `Authorization: Bearer <токен>` во всех последующих запросах к SKIF.PRO. |
|||||||
| 26 | ||||||||
| 27 | > Временный JWT-токен имеет ограниченный срок действия. Для серверных интеграций и скриптов фоновой синхронизации рекомендуется использовать постоянный API-ключ компании. |
|||||||
| 28 | ||||||||
| 29 | ### Авторизация по постоянному API-ключу компании |
|||||||
| 30 | ||||||||
| 31 | 1. Откройте **Админ-панель** SKIF.PRO и перейдите в карточку компании. |
|||||||
| 32 | 2. Выпустите постоянный ключ доступа в настройках параметров API. |
|||||||
| 33 | 3. Передавайте выпущенный ключ в HTTP-заголовке `user_company_api_key` в каждом запросе без выполнения предварительного логина. |
|||||||
| 34 | ||||||||
| 35 | ## Работа с Open API |
|||||||
| 36 | ||||||||
| 37 | После авторизации отправьте запрос к эндпоинтам SKIF.PRO для получения первого списка объектов мониторинга: |
|||||||
| 38 | ||||||||
| 39 | 1. Сформируйте POST-запрос к эндпоинту `https://app1.skif.pro/api_v1/units/list`. |
|||||||
| 40 | 2. Укажите в теле запроса JSON параметры пагинации `{"from": 0, "count": 10}`. |
|||||||
| 41 | 3. Добавьте авторизационный заголовок с Bearer-токеном или API-ключом компании. |
|||||||
| 42 | 4. Отправьте подготовленный запрос через curl или HTTP-клиент вашей среды разработки. |
|||||||
| 43 | ||||||||
| 44 | Пример запроса через curl: |
|||||||
| 45 | ||||||||
| 46 | ```bash |
|||||||
| 47 | curl -X POST "https://app1.skif.pro/api_v1/units/list" \ |
|||||||
| 48 | -H "Content-Type: application/json" \ |
|||||||
| 49 | -H "Authorization: Bearer <токен>" \ |
|||||||
| 50 | -d '{"from": 0, "count": 10}' |
|||||||
| 51 | ``` |
|||||||
| 52 | ||||||||
| 53 | Пример запроса на Python: |
|||||||
| 54 | ||||||||
| 55 | ```python |
|||||||
| 56 | import requests |
|||||||
| 57 | ||||||||
| 58 | url = "https://app1.skif.pro/api_v1/units/list" |
|||||||
| 59 | headers = { |
|||||||
| 60 | "Content-Type": "application/json", |
|||||||
| 61 | "Authorization": "Bearer <токен>", |
|||||||
| 62 | } |
|||||||
| 63 | payload = {"from": 0, "count": 10} |
|||||||
| 64 | ||||||||
| 65 | response = requests.post(url, json=payload, headers=headers, timeout=10) |
|||||||
| 66 | data = response.json() |
|||||||
| 67 | print(data) |
|||||||
| 68 | ``` |
|||||||
| 69 | ||||||||
| 70 | ## Ограничения запросов |
|||||||
| 71 | ||||||||
| 72 | Для обеспечения отказоустойчивости инфраструктуры и равного доступа к ресурсам действуют следующие лимиты: |
|||||||
| 73 | ||||||||
| 74 | - Частота вызовов ограничена лимитом 40 запросов в минуту на один токен или компанию. При превышении лимита сервер возвращает HTTP-код `429 Too Many Requests`. |
|||||||
| 75 | - Таймаут обработки запросов на генерацию сложных отчетов и больших массивов телеметрии составляет 30 секунд. |
|||||||
| 76 | - Максимальное количество объектов в ответе метода получения списка составляет 100 записей за один вызов. |
|||||||
| 77 | ||||||||
| 78 | ## Смотрите также |
|||||||
| 79 | ||||||||
| 80 | - [Вход в систему мониторинга](/%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9%20%D1%81%D1%82%D0%B0%D1%80%D1%82/%D0%B2%D1%85%D0%BE%D0%B4%20%D0%B2%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83%20%D0%BC%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3%D0%B0) |
|||||||
| 81 | - [Подключение оборудования](/%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9%20%D1%81%D1%82%D0%B0%D1%80%D1%82/%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BE%D0%B1%D0%BE%D1%80%D1%83%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F) |
|||||||
| 82 | - [Создание объектов](/%D0%B1%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9%20%D1%81%D1%82%D0%B0%D1%80%D1%82/%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2) |
|||||||