-
Notifications
You must be signed in to change notification settings - Fork 69
API
Essa página traz informações sobre a nossa API, disponível em /api
.
Exceto pelo health check, para acesso é necessário um token.
Infelizmente não podemos abrir a nossa API por hora, devido a restrições na nossa infraestrutura (um volume de requisições que não poderíamos manter). Por isso o uso da API ficará restrito aos projetos do Dados Abertos de Feira. Caso tenha uma ideia e queira discutir mais sobre isso, envie um e-mail para o projeto: [email protected].
A autenticação é feita através de um token. Três endpoints estão disponíveis para o fluxo de autenticação:
api/token/
api/token/refresh/
api/token/verify/
Para obter um token é necessário ter um usuário na administração dessa aplicação.
Você pode criar um através do comando make createsuperuser
e então usar as credenciais para solicitar um token:
curl -i \
-H "Content-Type: application/json" \
-X POST \
-d '{ "username": "nome_do_usuario", "password": "senha_do_usuario" }' http://localhost:8000/api/token/
A resposta deve ser algo parecido com isso:
{
"refresh": "xxx",
"access": "yyy"
}
Utilize o valor retornado em access
como cabeçalho de autenticação na próxima requisição, como no exemplo abaixo:
curl -i -H "Content-Type: application/json" -H "Authorization: Bearer yyy" http://localhost:8000/api/
Por padrão todas as rotas criadas na API só poderão ser acessadas com autenticação, apenas o health check tem acesso público.
Para atualizar um token, use o valor do campo refresh
obtido no passo anterior.
curl \
-X POST \
-H "Content-Type: application/json" \
-d '{"refresh":"xxx"}' \
http://localhost:8000/api/token/refresh/
O retorno é algo como:
{"access": "eee"}
Você pode checar se o token está ok antes de atualizá-lo:
curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"token": "eee"}' http://localhost:8000/api/token/verify/
Caso tudo esteja ok, você vai ver na resposta um {}
. Se não, uma resposta como essa:
{"detail":"Token is invalid or expired","code":"token_not_valid"}
Foram disponibilizadas variáveis de ambiente para setar o tempo de vida dos tokens. São elas:
-
ACCESS_TOKEN_LIFETIME_IN_MINUTES
(por padrão 24 horas) -
REFRESH_TOKEN_LIFETIME_IN_MINUTES
(por padrão 24 horas)
Em desenvolvimento.