API

Para permitir integrar a jornada de participação com outras plataformas, a EJ possui uma API REST que pode ser consumida por meio de requisições HTTP. Os endpoints ficam disponíveis na URL /api/v1 e a documentação em /api/v1/docs. Os tokens são gerados com a biblioteca djangorestframework-simplejwt. É por meio da API que a EJ possibilita realizar consultas em multiplos canais, como WhatsApp e Telegram.

Autenticação

Para autenticação, a API utiliza uma estratégia de token JWT. Existem dois endpoints que podem ser utilizados para a criação dos tokens:

  • /api/v1/token: endpoint responsável por gerar os tokens de acesso (access_token) e de renovação (refresh_token). Espera um payload contendo o email e senha do usuário.

{"email": "[email protected]", "password": "password"}
  • /api/v1/refresh-token: endpoint responsável por renovar o token do usuário. Espera um payload contendo o token de renovação gerado a partir do endpoint /api/v1/token.

{"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTcxNjMwODkwOSwiaWF0IjoxNzE2MjIyNTA5LCJqdGkiOiI2MDNmYTYzOGRiNjU0ZDc5ODA5NjU3NWUxYjgwY2NiOCIsInVzZXJfaWQiOjc5Nn0.3QZdVL9A_EcAb5LJFWdcSHXRQ8ZWJ2P5RGq8yE9JzRc"}

As seguintes regras são aplicadas ao gerar os tokens de acesso:

  1. access_token tem duração de cinco minutos. Após esse período, é preciso solicitar uma renovação na api /api/v1/refresh-token.

  2. refresh_token tem duração de um dia. Após esse período, é preciso autenticar o usuário novamente.

Os Tokens são assinados utilizando a variável de ambiente DJANGO_SECRET_KEY, que deve ser mantida privada nos servidores da plataforma.

Nem todos os endpoints exigem autenticação, como por exemplo o endpoint que retorna dados básicos de uma conversa como título e estatísticas de participação. Para verificar as permissões exigidas em cada endpoint, procure pelo atributo permission_classes nos módulos api.py da aplicação.