Ir para o conteúdo

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
dotenv

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 os
import plotly.graph_objects as go

from dotenv import load_dotenv
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.

dotenv

  • dotenv é uma biblioteca Python utilizada pra ler variáveis guardadas em arquivos .env. Armazenar valores sensíveis em arquivos .env é uma boa prática para evitar a utilização de tais valores em seu código, evitando o vazamento de credenciais e exposição desses valores para terceiros.

  • 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.

Inicialmente, iremos passar as credenciais para realizar as chamadas no endpoit de efetivação de login. As credenciais devem ser salvas em um arquivo chamado .env, e deve possuir o formato indicado abaixo, e você deve preenche-lo com os valores obtidos em seu Amb. de desenvolvedor:

BOTCITY_SERVER=<SEU_SERVER>
BOTCITY_LOGIN=<SEU_LOGIN>
BOTCITY_KEY=<SUA_KEY>

Em seguida, iremos obter as credenciais salvas no arquivo .env, utilizando a função load_dotenv, passando como parâmetro o caminho do arquivo .env ,e em seguida, realizar a obtenção do token para efetivar a autenticação na API.

def main():

    # CArregando o arquivo .env  puxando os valores armazenados nele:
    load_dotenv(r'<CAMINHO ARQUIVO .ENV>')
    login = os.getenv("BOTCITY_LOGIN")
    server = os.getenv("BOTCITY_SERVER")
    key = os.getenv("BOTCITY_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:

    # Configeurando rota de login
    login_url =f"{server}/api/v2/workspace/login" 
    body = {
        "login": f"{login}",
        "key": f"{key}"
    }
    response = requests.post(url=login_url, json=body,auth=None)
    content = json.loads(response.content)

    # Criando o header com o Token e organization
    token = content['accessToken']
    org = content['organizationLabel']

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.