Skip to content

Instantly share code, notes, and snippets.

@ricardomaia
Last active April 26, 2026 14:58
Show Gist options
  • Select an option

  • Save ricardomaia/1b1e6c768d2d666fce1fe299113b05fb to your computer and use it in GitHub Desktop.

Select an option

Save ricardomaia/1b1e6c768d2d666fce1fe299113b05fb to your computer and use it in GitHub Desktop.
GLPI API

Note

Devido ao numero crescente de comentários e dúvidas nesse simples Gist, decidi organizar melhor as principais funções da API REST do GLPI em https://glpi-rest-api.netlify.app/

Para obter um token de API no GLPI, você precisa seguir os seguintes passos:

  1. Habilitar a API REST no GLPI Primeiro, verifique se a API REST está habilitada:

Faça login no GLPI como administrador

  • Vá para Configuração > Geral > APIs
  • Certifique-se de que a opção "Habilitar API REST" esteja ativada
  1. Criar um token de API para um usuário
  • Vá para Administração > Usuários
  • Selecione o usuário para o qual deseja criar o token
  • Vá para a seção "Chaves de acesso remoto"
  • Marque a opção "re-gerar" e clique em "Salvar"
  • Copie a chave gerada
  1. Token da aplicação:
  • Vá para Configuração > Geral > APIs
  • Clique no botão "Adicionar clientes da API"
  • Insira um nome
  • Marque a opção "Ativo" como "Sim"
  • Preencha os campos "Início do intervalo de endereços IPv4" e "Fim do intervalo de endereços IPv4"
  • Clique no botão "Adicionar"
  • Selecione o cliente criado e copie o token.
curl -X GET \
  -H "Content-Type: application/json" \
  -H "Authorization: user_token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  "https://glpi.exemplo.com.br/apirest.php/initSession"

Visualizar os campos disponíveis para itemtype ITILCategory

curl --request GET \
  --url https://glpi.exemplo.com.br/apirest.php/listSearchOptions/ITILCategory \
  --header 'App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --header 'Session-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

Retornar a lista de categorias que estejam listadas na interface simplificada (campo 3). Você pode ajustar o parâmetro range caso deseje evitar a paginação dos resultados.

curl  -g -X GET \  
  -H 'App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -H 'Session-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  'https://glpi.exemplo.com.br/apirest.php/search/ITILCategory?range=0-500' \
  criteria[0][link]=AND&
  criteria[0][field]=3&
  criteria[0][searchtype]=equals&
  criteria[0][value]=1'

Inicializar a sessão para obter o Session-Token:

curl -X GET \
-H 'Content-Type: application/json' \
-H "Authorization: user_token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
'https://glpi.exemplo.com.br/apirest.php/initSession'

Criar um Ticket

curl --request POST \
  --url https://glpi.exemplo.com.br/apirest.php/Ticket \
  --header 'App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --header 'Content-Type: application/json' \
  --header 'Session-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  --data '{
	"input": {
		"name": "Ticket aberto pela API",
		"content": "Descricao do ticket",
		"priority": "1",
		"impact": "4",
		"urgency": "5",
		"type": "2",
		"itilcategories_id": "1"
	}
}'

Visualizar os campos disponíveis para itemtype Ticket:

curl -g -X GET \
-H 'Content-Type: application/json' \
-H "Session-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
'https://glpi.exemplo.com.br/apirest.php/listSearchOptions/Ticket'

Retornar os tickets abertos para um determinado usuário em um intervalo de tempo.

No exemplo abaixo utilizei o nome de usuário johndoe e o período entre as 9h do dia 13/04/2020 às 9h do dia 14/04/2020:

curl -g -X GET \
-H 'Content-Type: application/json' \
-H "Session-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
'https://glpi.exemplo.com.br/apirest.php/search/Ticket? \ 
criteria[0][link]=AND&
criteria[0][field]=4&
criteria[0][searchtype]=contains&
criteria[0][value]=johndoe&
criteria[1][link]=AND&
criteria[1][field]=15&
criteria[1][searchtype]=morethan&
criteria[1][value]=2020-04-13 09:00:00&
criteria[2][link]=AND&
criteria[2][field]=15&
criteria[2][searchtype]=lessthan&
criteria[2][value]=2020-04-14 09:00:00
'
curl -v -X PUT \
  -H "Content-Type: application/json" \
  -H "Session-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "App-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -d '{
    "input": {
      "name": "Novo título do ticket",
      "content": "Nova descrição do ticket",
      "status": 2,
      "priority": 3
    }
  }' \
  "https://glpi.exemplo.com.br/apirest.php/Ticket/1"
@ricardomaia

ricardomaia commented Feb 16, 2026

Copy link
Copy Markdown
Author

Alguém sabe como atribuir o ticket a um usuário pela API?

Atribuir um ticket a um usuário

curl -s -X POST "https://glpi.example.com/apirest.php/Ticket_User" \
  -H "Content-Type: application/json" \
  -H "App-Token: [APP_TOKEN]" \
  -H "Session-Token: [SESSION_TOKEN]" \
  --data-raw '{"input":{"tickets_id":3,"users_id":8,"type":2}}'

Valores para type:

  • 1 - Requerente
  • 2 - Técnico (atribuído)
  • 3 - Observador

Importante!
Substitua o valor de users_id pelo ID do usuário a qual quer atribuir o chamado e tickets_id pelo ID do ticket.

@ricardomaia

ricardomaia commented Feb 16, 2026

Copy link
Copy Markdown
Author

Gostaria de saber como fechar um chamado

Fechar um chamado

curl -s -X PUT "https://glpi.example.com/apirest.php/Ticket/3" \
  -H "Content-Type: application/json" \
  -H "App-Token: [APP_TOKEN]" \
  -H "Session-Token: [SESSION_TOKEN]" \
  --data-raw '{"input":{"id":3,"status":6}}'

Valores para status:

  • 1 - Novo
  • 2 - Em atendimento (atribuído)
  • 3 - Planejado
  • 4 - Pendente
  • 5 - Solucionado
  • 6 - Fechado

@ricardomaia

Copy link
Copy Markdown
Author

Listar usuários

curl -s -X GET "https://glpi.example.com/apirest.php/User" \
  -H "Content-Type: application/json" \
  -H "App-Token: [APP_TOKEN]" \
  -H "Session-Token: [SESSION_TOKEN]"

Por padrão retorna os primeiros 20 registros. Para paginar, use o parâmetro range na URL:

curl -s -X GET "https://glpi.example.com/apirest.php/User?range=0-49" \
  -H "Content-Type: application/json" \
  -H "App-Token: [APP_TOKEN]" \
  -H "Session-Token: [SESSION_TOKEN]"

Para buscar um usuário específico por nome, use searchText:

curl -s -X GET "https://glpi.example.com/apirest.php/User?searchText[name]=ricardo" \
  -H "Content-Type: application/json" \
  -H "App-Token: [APP_TOKEN]" \
  -H "Session-Token: [SESSION_TOKEN]"

@ronnioliveira

Copy link
Copy Markdown

Olá @ricardomaia, seu conteúdo tem me salvado muito.
Existe alguma forma de eu localizar, quais chamados abertos estão atribuidos a um usuário?

@ricardomaia

Copy link
Copy Markdown
Author

Olá @ricardomaia, seu conteúdo tem me salvado muito. Existe alguma forma de eu localizar, quais chamados abertos estão atribuidos a um usuário?

Olá @ronnioliveira ! Fico feliz que o conteúdo esteja sendo útil. Com base no seu comentário, atualizei o guia no qual estou concentrando as dúvidas publicadas aqui nesse Gist. Segue o link:

https://glpi-rest-api.surge.sh/#buscar-tickets

Qualquer dúvida é só falar!

@ronnioliveira

Copy link
Copy Markdown

perfeito @ricardomaia, muito obrigado pelo conteúdo, está realmente muito bom. Parabéns.

@Junior-Shyko

Copy link
Copy Markdown

Obrigado pelo material independente criado por você. Me ajudará muito.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment