Esta API está protegida com autorização do tipo bearer JWT. Os tokens expiram a cada 15 minutos e devem ser atualizados com refresh.
A CARRIS também disponibiliza dados publicamente nos formatos GTFS e GTFS-RT através do seu portal do programador (https://gateway.carris.pt/apiui/#!/)
Clique para expandir
Fazer um POST request para o endpoint de autorização.
{
"token": "string", //o valor desta chave é token de app fornecido pela carris
"type": "string" //o valor desta chave deverá ser "apikey" no primeiro request
}
{
"authorizationToken": "string", // guardar token JWT a usar em todas os outros pedidos
"refreshToken": "string", // guardar token para atualizar o token expirado
"expires": int // data de expiração do token em segundos desde a Era Unix/Unix Epoch
}
Pode descodificar o token JWT "authorizationToken" e saber mais sobre a norma JWT em JWT.io
Fazer GET requests para os endpoints de dados.
Deverá incluir um cabeçalho de autenticação do tipo Bearer, que contenha o o valor da chave JSON obtido em Autenticação Inicial:
Authorization: Bearer { authorizationToken }
A resposta depende do endpoint que escolher.
Será dada no formato JSON.
Após aproximadamente 15 minutos (se preferir, calcule a hora de criação do token com a hora de expiração do mesmo para obter o tempo de vida do token), o seu authorizationToken irá expirar. Recolha o refreshToken que obteu em Autenticação Inicial e inclua-o no corpo do seu pedido. Ser-lhe-á atribuído um novo authorizationToken válido.
Repita este processo ao longo do tempo de vida da sua aplicação (faça um novo pedido de Autenticação Inicial se o tempo de vida da app for reiniciado). A cada 15 minutos, revogue o authorizationToken atual e atualize-o - e assim sucessivamente.
Agora, deverá recolher o refreshToken obtido em Autenticação Inicial e faça dele o valor da chave "token". Indique que o token é de atualização, mudando o valor da chave "type" para "refresh".
{
"token": "string", // token de refresh
"type": "string" // o valor desta chave deve ser "refresh" aquando da atualização do seu token
}
Esta resposta será igual à obtida em Autenticação Inicial. Recolha os valores da chave e use-os nos seus próximos pedidos, de forma a manter um flow de tokens contínuo. Aquando do término de mais um período de 15 minutos, volte a atualizar o seu authorizationToken e assim sucessivamente!
{
"authorizationToken": "string", // guardar token a usar em todas os outros pedidos
"refreshToken": "string", // guardar token para atualizar o token expirado
"expires": int // data de expiração do token em segundos desde a Era Unix/Unix Epoch
}