La nueva API de GLPI 11 en la práctica: OAuth2, del token al primer ticket

Probamos la API v2 de GLPI 11 de punta a punta: cliente OAuth, token, crear, actualizar y dar seguimiento a un ticket, filtro RSQL y GraphQL. Los tres detalles que dan 403 con token válido y la colección Postman probada para descargar.

En este artículo7 secciones

GLPI 11 tiene dos API: la antigua, que el propio GLPI ahora llama "API heredada", y una nueva, con OAuth2, GraphQL y documentación interactiva. Probamos la nueva de principio a fin: desde el token hasta el ticket abierto, actualizado y con seguimiento. El primer tropiezo llegó antes de cualquier ticket: GLPI entregó el token con normalidad y después lo rechazó todo con "The High-Level API is disabled". Esta guía muestra el camino que funcionó, con la colección de Postman probada para descargar.

La API heredada sigue funcionando y es la que usamos en el servidor MCP que conecta Claude con GLPI. Para integraciones nuevas, el propio GLPI recomienda la nueva.

Las dos API de GLPI 11

API heredada (v1) API nueva (v2)
Dirección /apirest.php o /api.php/v1 /api.php/v2.3 (versión actual)
Autenticación App-Token + token del usuario, luego Session-Token OAuth2 (token Bearer)
Formato Elementos de GLPI tal como están en la base de datos Recursos organizados (/Assistance/Ticket, /Assistance/Ticket/{id}/Timeline)
Búsqueda Criterios de búsqueda de GLPI Filtro RSQL (name=like=*toner*) y paginación en la cabecera
Extras — GraphQL y documentación interactiva en /doc
Situación GLPI avisa: "se recomienda usar solo la API nueva cuando sea posible" Recomendada para todo lo nuevo

Paso 1: activar la API nueva

En Configuración > General > API, active Habilitar API. Este interruptor es distinto del que activa la API heredada.

En nuestra prueba, con él desactivado, la solicitud del token funcionó: GLPI devolvió un token válido durante una hora. Solo en la primera llamada apareció el error "The High-Level API is disabled". Si el token se emite y todo da 403, empiece por aquí.

Paso 2: el usuario de servicio y el cliente OAuth

  1. Usuario de servicio: una cuenta exclusiva para la integración, con el perfil mínimo que necesita, en la entidad correcta. Nunca un administrador.
  2. Cliente OAuth (en Configuración > Clientes OAuth):
  3. Concesiones: password para sistema a sistema con el usuario de servicio; authorization_code cuando la aplicación actúa en nombre de cada persona que inicia sesión; client_credentials lo usan los agentes de inventario.
  4. Ámbitos: api para la API, graphql para GraphQL, user y email para los datos del propio usuario, inventory y status para fines específicos. Conceda solo lo que la integración usa.
  5. IP permitidas: restrinja al servidor que va a llamar a la API.

GLPI genera el identificador y el secreto del cliente. Guarde ambos en un almacén de secretos, no en el código.

Paso 3: del token al ticket

Solicitar el token (válido durante 1 hora, con token de renovación):

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"

Abrir un ticket:

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}'

El resto del camino que probamos:

Resultado de cada paso de la prueba de la API nueva: con Habilitar API desactivado el token sale y las llamadas dan 403; token, creación, lectura, PATCH y seguimiento funcionan; un ámbito no permitido da 403 en la ruta
Si el token funciona y todo da 403, revise la opción Habilitar API y los ámbitos del cliente OAuth. Prueba NexTool, 4/10/2026.
Acción Llamada Resultado en la prueba
Token POST /api.php/token Bearer, 1 hora, con refresh, en 0,3 a 0,4 s
Abrir ticket POST /v2.3/Assistance/Ticket 200, devuelve el id
Leer GET /v2.3/Assistance/Ticket/{id} El estado ya viene con nombre ("Novo")
Cambiar urgencia PATCH /v2.3/Assistance/Ticket/{id} 200, la prioridad se recalcula
Seguimiento POST /v2.3/Assistance/Ticket/{id}/Timeline/Followup 200
Cronología GET /v2.3/Assistance/Ticket/{id}/Timeline Lista con el seguimiento
Buscar GET /v2.3/Assistance/Ticket?filter=name=like=*toner* Total en la cabecera Content-Range
GraphQL POST /v2.3/GraphQL Solo los campos solicitados, con paginación
Renovar POST /api.php/token con refresh_token Nuevo token sin volver a pedir la contraseña
Sin token cualquier ruta 401

Tres detalles que pillan desprevenido

  1. El interruptor "Habilitar API" es independiente de la API heredada, y el token se emite incluso con la API desactivada. El error solo aparece después.
  2. Un ámbito solicitado y no permitido no da error en el momento. Solicitamos el ámbito user en un cliente que no lo tenía: el token llegó igualmente, sin ese ámbito, y la ruta del usuario respondió 403. Si una ruta da 403 con un token válido, revise los ámbitos del cliente.
  3. El estado viene como objeto ({"id": 1, "name": "Novo"}), no como número. Quien migre desde la API heredada debe ajustar el código que leía el estado.

Cuándo usar cada una

  • Integración nueva: API nueva. OAuth es el estándar del mercado, los recursos son más claros y la documentación está en el propio GLPI.
  • Integración que ya funciona en la heredada: no hay prisa, pero planifique la migración. GLPI ya muestra el aviso para usar la nueva.
  • Aplicación que actúa en nombre de varias personas (un portal, una app): authorization_code, para que cada persona autorice con su propio inicio de sesión.
  • Rutina de servidor (n8n, ERP, script): password con usuario de servicio e IP restringida.

Descargue la colección probada

La colección de Postman de la API de GLPI 11 incluye las nueve llamadas de la tabla, con el token y el id del ticket guardados automáticamente de una llamada a otra. Complete la dirección de su GLPI, el cliente OAuth y el usuario de servicio.


Prueba de NexTool el 4 de octubre de 2026, en un GLPI 11.0.7 de pruebas (API v2.3), con usuario de servicio y cliente OAuth creados para la prueba y eliminados al final. Las rutas y los ámbitos también se verificaron en el código fuente de GLPI 11.

Preguntas Frecuentes

Sí. Además de la API heredada (v1), GLPI 11 tiene una API nueva en /api.php/v2.3, con OAuth2, recursos organizados, filtro RSQL, GraphQL y documentación interactiva en /doc.

Las causas más comunes son la opción Habilitar API desactivada en Configuración > General > API (el token sale igual) y el cliente OAuth sin el ámbito que exige la ruta.

Crea un cliente OAuth en Configuración > Clientes OAuth con la concesión password y el ámbito api, y haz POST a /api.php/token con client_id, client_secret, usuario y contraseña del usuario de servicio. El token Bearer dura 1 hora y se puede renovar.

Sigue funcionando en GLPI 11, pero el propio GLPI recomienda usar solo la API nueva cuando sea posible. Para integraciones nuevas usa la v2; para las que ya funcionan, planifica la migración.

password con un usuario de servicio para integraciones de servidor; authorization_code cuando la aplicación actúa en nombre de cada persona; client_credentials lo usan los agentes de inventario.

Comentarios

Los comentarios de esta publicación vienen de GitHub (giscus). Al cargarlos, tu navegador se conecta a GitHub, que recibe tu dirección IP y puede guardar sus propias cookies.

Para cargarlos automáticamente, activa las cookies funcionales

?Necesitas ayuda?