Новый API GLPI 11 на практике: OAuth2, от токена до первой заявки

Мы протестировали API v2 GLPI 11 от начала до конца: клиент OAuth, токен, создание, обновление заявки и добавление комментария, фильтр RSQL и GraphQL. Три детали, из-за которых при действительном токене приходит 403, и проверенная коллекция Postman для скачивания.

В этой статьеРазделов: 7

В 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

  1. Сервисный пользователь: учётная запись только для интеграции, с минимальным профилем, который ей нужен, в правильной организации. Никогда не администратор.
  2. Клиент OAuth (в разделе Настройки > Клиенты OAuth):
  3. Типы предоставления (grants): password — для взаимодействия система-система с сервисным пользователем; authorization_code — когда приложение действует от имени каждого человека, который входит в систему; client_credentials используется агентами инвентаризации.
  4. Области (scopes): api — для API, graphql — для GraphQL, user и email — для данных самого пользователя, inventory и status — для специальных целей. Выдавайте только то, что использует интеграция.
  5. Разрешённые 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}'

Остальная часть пути, которую мы протестировали:

Результат каждого шага теста нового API: при выключенном «Включить API» токен выдаётся, а вызовы возвращают 403; токен, создание, чтение, PATCH и комментарий работают; неразрешённая область даёт 403 на маршруте
Если токен работает, а всё возвращает 403, проверьте переключатель «Включить API» и области клиента OAuth. Тест NexTool, 4.10.2026.
Действие Вызов Результат в тесте
Токен 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

Три детали, на которых спотыкаются

  1. Переключатель «Включить API» отделён от Устаревшего API, и токен выдаётся даже при выключенном API. Ошибка появляется только потом.
  2. Запрошенная, но не разрешённая область не даёт ошибки сразу. Мы запросили область user у клиента, у которого её не было: токен всё равно пришёл, без этой области, а маршрут пользователя ответил 403. Если маршрут возвращает 403 при действительном токене, проверьте области клиента.
  3. Статус приходит объектом ({"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.

Часто задаваемые вопросы

Да. Помимо Устаревшего API (v1), в GLPI 11 есть новый API по адресу /api.php/v2.3 с OAuth2, упорядоченными ресурсами, фильтром RSQL, GraphQL и интерактивной документацией в /doc.

Самые частые причины — выключенная опция «Включить API» в разделе Настройки > Общие > API (токен при этом всё равно выдаётся) и отсутствие у клиента OAuth области, которую требует маршрут.

Создайте клиент OAuth в разделе Настройки > Клиенты OAuth с типом предоставления password и областью api и выполните POST на /api.php/token с client_id, client_secret, логином и паролем сервисного пользователя. Токен Bearer действует 1 час и может быть обновлён.

В GLPI 11 он продолжает работать, но сам GLPI рекомендует по возможности использовать только новый API. Для новых интеграций используйте v2; для уже работающих спланируйте переход.

password с сервисным пользователем — для серверных интеграций; authorization_code — когда приложение действует от имени каждого человека; client_credentials используется агентами инвентаризации.

Комментарии

Комментарии к этой публикации загружаются с GitHub (giscus). При загрузке ваш браузер подключается к GitHub, который получает ваш IP-адрес и может сохранять собственные файлы cookie.

Чтобы загружать их автоматически, включите функциональные файлы cookie

Нужна помощь?