В GLPI 11 два API: старый, который сам GLPI теперь называет «Устаревший API» (Legacy API), и новый, с OAuth2, GraphQL и интерактивной документацией. Мы протестировали новый от начала до конца: от токена до созданной заявки, её обновления и комментария. Первая заминка случилась ещё до заявок: GLPI спокойно выдал токен, а потом отклонял всё с ошибкой «The High-Level API is disabled». В этом руководстве показан рабочий путь и приложена проверенная коллекция Postman для скачивания.
Устаревший API продолжает работать — именно его мы используем в MCP-сервере, который связывает Claude с GLPI. Для новых интеграций сам GLPI рекомендует новый API.
Два API в GLPI 11
| Устаревший API (v1) | Новый API (v2) | |
|---|---|---|
| Адрес | /apirest.php или /api.php/v1 |
/api.php/v2.3 (текущая версия) |
| Аутентификация | App-Token + токен пользователя, затем Session-Token | OAuth2 (токен Bearer) |
| Формат | Объекты GLPI в том виде, в каком они хранятся в базе | Упорядоченные ресурсы (/Assistance/Ticket, /Assistance/Ticket/{id}/Timeline) |
| Поиск | Критерии поиска GLPI | Фильтр RSQL (name=like=*toner*) и пагинация в заголовке |
| Дополнительно | — | GraphQL и интерактивная документация в /doc |
| Статус | GLPI предупреждает: «по возможности рекомендуется использовать только новый API» | Рекомендуется для всего нового |
Шаг 1: включить новый API
В разделе Настройки > Общие > API включите Включить API. Этот переключатель отличается от того, что включает Устаревший API.
В нашем тесте при выключенном переключателе запрос токена сработал: GLPI вернул токен, действительный один час. Ошибка «The High-Level API is disabled» пришла только при первом вызове. Если токен выдаётся, а всё возвращает 403, начните отсюда.
Шаг 2: сервисный пользователь и клиент OAuth
- Сервисный пользователь: учётная запись только для интеграции, с минимальным профилем, который ей нужен, в правильной организации. Никогда не администратор.
- Клиент OAuth (в разделе Настройки > Клиенты OAuth):
- Типы предоставления (grants):
password— для взаимодействия система-система с сервисным пользователем;authorization_code— когда приложение действует от имени каждого человека, который входит в систему;client_credentialsиспользуется агентами инвентаризации. - Области (scopes):
api— для API,graphql— для GraphQL,userиemail— для данных самого пользователя,inventoryиstatus— для специальных целей. Выдавайте только то, что использует интеграция. - Разрешённые IP: ограничьте сервером, который будет вызывать API.
GLPI генерирует идентификатор и секрет клиента. Храните оба в хранилище секретов, а не в коде.
Шаг 3: от токена до заявки
Запрос токена (действителен 1 час, с токеном обновления):
curl -X POST https://glpi.suaempresa.com.br/api.php/token \
-d grant_type=password -d client_id=$CLIENT_ID -d client_secret=$CLIENT_SECRET \
-d username=$USUARIO -d password=$SENHA -d scope="api graphql"
Создание заявки:
curl -X POST https://glpi.suaempresa.com.br/api.php/v2.3/Assistance/Ticket \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name": "Impressora do 2o andar sem toner", "content": "Aberto pela API v2.", "urgency": 3, "type": 1}'
Остальная часть пути, которую мы протестировали:

| Действие | Вызов | Результат в тесте |
|---|---|---|
| Токен | POST /api.php/token |
Bearer, 1 час, с refresh, за 0,3–0,4 с |
| Создать заявку | POST /v2.3/Assistance/Ticket |
200, возвращает id |
| Прочитать | GET /v2.3/Assistance/Ticket/{id} |
Статус приходит сразу с названием («Новая») |
| Изменить срочность | PATCH /v2.3/Assistance/Ticket/{id} |
200, приоритет пересчитывается |
| Комментарий | POST /v2.3/Assistance/Ticket/{id}/Timeline/Followup |
200 |
| Хронология | GET /v2.3/Assistance/Ticket/{id}/Timeline |
Список с комментарием |
| Поиск | GET /v2.3/Assistance/Ticket?filter=name=like=*toner* |
Общее количество в заголовке Content-Range |
| GraphQL | POST /v2.3/GraphQL |
Только запрошенные поля, с пагинацией |
| Обновить | POST /api.php/token с refresh_token |
Новый токен без повторного запроса пароля |
| Без токена | любой маршрут | 401 |
Три детали, на которых спотыкаются
- Переключатель «Включить API» отделён от Устаревшего API, и токен выдаётся даже при выключенном API. Ошибка появляется только потом.
- Запрошенная, но не разрешённая область не даёт ошибки сразу. Мы запросили область
userу клиента, у которого её не было: токен всё равно пришёл, без этой области, а маршрут пользователя ответил 403. Если маршрут возвращает 403 при действительном токене, проверьте области клиента. - Статус приходит объектом (
{"id": 1, "name": "Novo"}), а не числом. При переходе с Устаревшего API нужно поправить код, который читал статус.
Когда использовать каждый из них
- Новая интеграция: новый API. OAuth — отраслевой стандарт, ресурсы понятнее, а документация находится в самом GLPI.
- Интеграция, которая уже работает на Устаревшем API: спешить некуда, но спланируйте переход. GLPI уже показывает предупреждение о переходе на новый.
- Приложение, действующее от имени многих людей (портал, приложение):
authorization_code, чтобы каждый человек давал согласие под своей учётной записью. - Серверная задача (n8n, ERP, скрипт):
passwordс сервисным пользователем и ограничением по IP.
Скачайте проверенную коллекцию
Коллекция Postman для API GLPI 11 содержит девять вызовов из таблицы; токен и id заявки автоматически сохраняются между вызовами. Укажите адрес вашего GLPI, клиент OAuth и сервисного пользователя.
Тест NexTool от 4 октября 2026 г. на тестовом GLPI 11.0.7 (API v2.3) с сервисным пользователем и клиентом OAuth, созданными для теста и удалёнными по его окончании. Маршруты и области также сверены с исходным кодом GLPI 11.
Комментарии
Комментарии к этой публикации загружаются с GitHub (giscus). При загрузке ваш браузер подключается к GitHub, который получает ваш IP-адрес и может сохранять собственные файлы cookie.
Чтобы загружать их автоматически, включите функциональные файлы cookie