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"
@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