Lab 6.1: Configurando credenciais para autentticação na API
Para utilizar os endpoints de API disponíveis na BotCity, é necessário fazer a autenticação na plataforma e fazer as requisições de acordo com os endpoints disponíveis. Abaixo, iremos encontrar o passo-a-passo para realizar a autenticação corretamente.
Pré-requisitos para utilizar a API
Para utilizar os endpoints de API da BotCity, é necessário obter o Token, que será passado nos headers das requisições de API, e irá permitir que utilizemos os endpoints existentes.
Também iremos utilizar as bibliotecas Python requests e plotly para realizar as requisições e gerar os gráficos com os dados obtidos pelas chamadas de API.
Instalando as dependências do projeto
Para instalar as dependências do Projeto, o arquivo de requirements.txt deve conter a seguinte biblioteca:
plotly
Crie um ambiente virtual, ative-o e instale as dependências do projeto com o comando pip install -r requirements.txt
Nota
Para criar e ativar um ambiente virtual, visite o lab Lab 1.3: Desenvolvendo automação Desktop - Criando ambiente isolado.
Realizando os imports das dependências no código:
Iremos apontar as dependências que iremos utilizar em nosso projeto, como indicado no código Python abaixo:
import requests
import json
import plotly.graph_objects as go
from collections import Counter
Por quê utilizar as dependências citadas acima?
requests:
Esta biblioteca é essencial para fazer requisições HTTP. No seu código, ela é usada para "pedir" dados da sua API, seja para os warnings (/api/v2/alerts) ou para os erros (/api/v2/error). É como o mensageiro que vai buscar a informação no servidor.
Analogia: Pense nele como o seu navegador da web, mas para ser usado por programas em vez de por pessoas
json:
Depois que requests traz os dados da API, eles geralmente vêm em formato JSON (JavaScript Object Notation), que é um formato padrão para troca de dados. A biblioteca json é usada para analisar (parsear) esses dados JSON, transformando-os em estruturas Python (como dicionários e listas) que são fáceis de manipular.
Analogia: Imagine que a API te envia uma carta em um idioma diferente. json é o tradutor que transforma essa carta para o português, para que você possa entender e usar a informação.
plotly.graph_objects as go
Plotly é uma biblioteca de visualização de dados poderosa que permite criar gráficos interativos e dashboards. O graph_objects (go) especificamente é usado para construir gráficos de forma mais granular, definindo barras, linhas, etc. No seu código, ele é usado para criar os gráficos de barras que mostram a quantidade de erros e warnings por automação.
Analogia: É como o seu kit de ferramentas para desenhar e colorir gráficos, transformando números brutos em representações visuais fáceis de entender.
from collections import Counter
Counter é uma subclasse de dicionário que facilita a contagem de objetos "hashable". No seu caso, ela é usada para contar quantas vezes cada botId (ID da automação) aparece nas listas de warnings e erros. Isso simplifica muito o processo de agregar os dados por automação.
Analogia: Pense no Counter como um contador de cédulas de banco. Você joga um monte de notas misturadas, e ele rapidamente te diz quantas notas de 10, quantas de 20, quantas de 50 você tem.
Com as dependências devidamente colocadas no código, iremos prosseguir com as configurações para realizar as requisições nos endpoints de API.
Configurando a API:
Como obter o Token
Para obter o Token, será necessário realizar a requisição do tipo POST, passando os valores de Login e Key no corpo da requisição. Para compor a URL qque iremos fazer a requisição incial, é necessário obter o valor de Workspace.
Aviso
Para obter os valores de Workspace,Login e Key, basta acessar a seção "Amb. de desenvolvimento" no Orquestrador, como indicado na Documentação.
O endpoitn da API para realizarmos a autenticação é o endpoint indicado no código abaixo.
def main():
# Configurando variáveis
workspace = "https://developers.botcity.dev"
endpoint_login = f"{workspace}/api/v2/workspace/login"
login=<SEU_LOGIN>
key=<SUA_KEY>
Para realizar a obtenção do Token, iremos fazer uma chamada do tipo POST no endpoint_login. A chamada do tipo POST é utilizada quando queremos enviar dados ao servidor que estamos nos comunicando. O código Python abaixo indica como realizar a obtenção do token e da organização, o qual será guardado na variável nomeada token_value
:
# Configeurando rota de login
login_url =f"{server}/api/v2/workspace/login"
body = {
"login": "f{login}",
"key": "f{key}"
}
# Fazendo a requisição tipo POST
response = requests.post(url=login_url, json={"login": f"{login}","key": f"{key}"},auth=None)
content = json.loads(response.content)
# Criando o header com o Token e organization
token = content['accessToken']
org = content['organizationLabel']
headers = {'token':f'{token}','organization':f'{org}'}
Preparando os headers para realizar as requisições
Os Headers, ou cabeçalho de requisições de API, nada mais são do que informações adicionais colocadas nas requisições, como tipo de conteúdo, autenticação, cache, e outras opções.
No cenário atual, o Token que será passado nos headers das requisições é uma forma de indicar que estamos devidamente autenticados no servidor da BotCity, e consequentemente, podemos utilizar os recursos ofertados pelos endpoints de API.
no código abaixo, veja como preparar o header para utilizarmos nas requisições:
headers = {'token': f"{token}", 'organization': f"{organization}"}
Com os headers devidamente configurados, iremos realizar chamadas específicas nos endpoints para obter a quantidade de erros e alertas por automações, e em seguida, iremos criar gráficos com os dados que temos em mãos.