Error line 113, in ticket print(chamados["id"]) KeyError: 'id'

61 views Asked by At

The code below is used to connect with the GLPI API, but I get the following error when trying to print only the ticket id:

Error:

Traceback (most recent call last): File "E:\D E V\ChamadosAbertosPraMimAPI.py", line 118, in <module> ticket() File "E:\D E V\ChamadosAbertosPraMimAPI.py", line 116, in ticket print("ID:", chamado["id"], "| Título:", chamado["name"]) ~~~~~~~^^^^^^ TypeError: string indices must be integers, not 'str'

My code is:

import requests
import json
def initSession(api_token):
    urlInitSession = 'http://172.16.41.19/glpi/apirest.php/initSession?get_full_session=true'
    cabeçalho = {
        'Authorization':'user_token {}'.format(api_token)
    }
    # Aqui o código faz a requisição ao endpoint utilizando no 'hearders' somente o valor de autenticação no formato de dicionário. com o segundo valor sendo 'user_token + parâmetro passado no argumento da função.
    response = requests.get(urlInitSession,headers=cabeçalho)
    # Aqui declara-se a variável token_sessão como GLOBAL, a fim de utilizá-la nas outras funções.
    global token_sessao
    token_sessao = response.json()["session_token"]
    return token_sessao

def ticket():
    urlTicket='http://172.16.41.19/glpi/apirest.php/search/Ticket'
    payload = {
        'criteria[0][link]': 'AND', # criteria[X]: onde X é um número inteiro que representa o índice do critério de busca a ser especificado.
        'criteria[0][field]': '8', # [field]: especifica o campo do objeto a ser pesquisado. No caso deste exemplo, o valor "8" representa o campo "Título" do objeto "Ticket".
        'criteria[0][searchtype]': 'contains', # [searchtype]: especifica o tipo de busca a ser realizada. Neste exemplo, o valor "contains" representa a busca por valores que contenham a string especificada no campo [value].
        'criteria[0][value]': '', # [value]: especifica o valor a ser buscado. No exemplo, o valor está em branco, o que significa que a busca será realizada sem restrições.
        'criteria[1][link]':'',
        'criteria[1][field]':'7',
        'criteria[1][searchtype]':'equals',
        'criteria[1][value]':'Novo'
    }
    cabeçalho = {
        'Session-Token':token_sessao,
    }
    response = requests.get(urlTicket,params=payload,headers=cabeçalho)
    chamados = response.json()
    # Iterar sobre a lista de chamados e exibir informações desejadas
    for chamado in chamados:
        print("ID:", chamado["id"], "| Título:", chamado["name"])
initSession('8WPgA8MKDjCV9RhKXWKasS3pA2gXCI2Q1M3VS3vH')
ticket()

How can I make this code show the correct result? how to fix the above error?

0

There are 0 answers