Autenticação
Na presente página irá ser descrito o processo de autenticação
O acesso à nossa API requer uma autenticação por OAuth 2.0 usando uma chave obtida directamente dentro da aplicação. Não são aceites, nem funcionarão, chaves de acesso obtidas na Google, já que essas são para aceder às APIs deles, Google, e não à nossa. Os passos a executar para aceder à nossa API são os seguintes:
Passo 1: Obtenção das credenciais de acesso à nossa API
Neste passo, deverão ser obtidos os seguintes dados, necessários para que possam aceder à nossa API:
Identificador (a que chamamos "OAUTH_CLIENT_ID", ou simplesmente "client_id", nos exemplos posteriores)
Segredo (a que chamamos "OAUTH_CLIENT_SECRET", ou simplesmente "secret", nos exemplos posteriores)
Endereço de autenticação por OAuth 2.0 (a que chamamos "OAUTH_URL" nos exemplos posteriores)
Endereço de acesso à API (a que chamamos "API_URL" nos exemplos posteriores)
Os três primeiros são requisitos para a autenticação (via OAuth 2.0) na API e o quarto é o endereço base de todos os pedidos feitos à API.
Os dados de acesso acima indicados são todos obtidos directamente da empresa à qual se pretende aceder via API. Para os obter, deverá fazer o seguinte:
Entrar na empresa com uma conta de Empresário
Aceder através do menu à opção Empresa > Configurações > Dados API
Introduzir os dados do integrador, que irá receber os dados de acesso à API através de um link temporário, de 72h.
Passo 2: Autenticação no nosso serviço de OAuth 2.0 e obtenção do token de acesso à API
Antes de poder aceder à API, o utilizador deverá autenticar-se no nosso serviço de OAuth 2.0 e obter um token de acesso, chamado a partir de agora "access token", executando os passos seguintes:
Poderá ser feito um pedido GET ao endereço OAUTH_URL/token com:
Na query do URL, os parâmetros:
grant_type=client_credentials
Nos headers, os seguinte:
Content-Type: application/x-www-form-urlencoded
Authorization: o texto "Basic", seguido dum espaço, seguido dum texto formado pela concatenação do valor de "OAUTH_CLIENT_ID", seguido de ':', seguido do valor de "OAUTH_CLIENT_SECRET", tudo codificado em base 64. Por exemplo, se o valor de "OAUTH_CLIENT_ID" fosse "test" e o "OAUTH_CLIENT_SECRET" fosse "abcdef", o valor deste header seria "Basic dGVzdDphYmNkZWY=", sendo "dGVzdDphYmNkZWY=" o texto "test:abcdef" em base 64.
O exemplo seguinte ilustra como fazer o pedido, no terminal, usando cURL:
Em alternativa, poderá ser feito um pedido POST ao endereço OAUTH_URL/token com:
Nos headers, os seguinte:
Content-Type: application/x-www-form-urlencoded
Authorization: o texto "Basic", seguido dum espaço, seguido dum texto formado pela concatenação do valor de "OAUTH_CLIENT_ID", seguido de ':', seguido do valor de "OAUTH_CLIENT_SECRET", tudo codificado em base 64. Por exemplo, se o valor de "OAUTH_CLIENT_ID" fosse "test" e o "OAUTH_CLIENT_SECRET" fosse "abcdef", o valor deste header seria "Basic dGVzdDphYmNkZWY=", sendo "dGVzdDphYmNkZWY=" o texto "test:abcdef" em base 64.
No body do pedido, uma query "URL-encoded" com os parâmetros:
grant_type=client_credentials
O exemplo seguinte ilustra como fazer o pedido, no terminal, usando cURL:
A resposta esperada é como a seguinte:
O exemplo seguinte ilustra o pedido feito no terminal, usando o cURL:
Passo 2.1: Actualização do token de acesso usando o código de actualização
Este passo é necessário quando o token de acesso à API ("access_token") expira, mas pode ser utilizado em qualquer momento, por exemplo, para evitar que aconteça a expiração.
No body do pedido, uma query "URL-encoded" com os parâmetros:
grant_type=refresh_token
refresh_token= o "refresh_token" obtido do passo anterior, que deve ser guardado para esse efeito.
Nos headers, o seguinte:
Content-Type: application/x-www-form-urlencoded
Authorization: o texto "Basic", seguido dum espaço, seguido dum texto formado pela concatenação do valor de "OAUTH_CLIENT_ID", seguido de ':', seguido do valor de "OAUTH_CLIENT_SECRET", tudo codificado em base 64. Por exemplo, se o valor de "OAUTH_CLIENT_ID" fosse "test" e o "OAUTH_CLIENT_SECRET" fosse "abcdef", o valor deste header seria "Basic dGVzdDphYmNkZWY=", sendo "dGVzdDphYmNkZWY=" o texto "test:abcdef" em base 64.
O exemplo seguinte ilustra como fazer o pedido, no terminal, usando cURL:
A resposta esperada é como a seguinte:
Passo 2.2: Selecção do exercício fiscal
A selecção de um exercício fiscal é efetuada com um pedido PUT para o endereço "API_URL":
Ou seja, a resposta esperada é um status 200 (OK) e um JSON no qual se encontra o (novo) parâmetro "access_token". O "access_token" devolvido na resposta deverá ser utilizados nos pedidos seguintes.
Passo 3: Acesso autenticado à API comercial
Além disso, todos os pedidos deverão conter obrigatoriamente os seguintes headers:
Content-Type: application/vnd.api+json
Accept: application/json
Authorization: o texto "Bearer", seguido dum espaço, seguido do "access_token" obtido anteriormente
Como exemplo, indica-se um pedido GET ao recurso "commercial_sales_documents" (documentos de venda), paginado para devolver apenas os 5 primeiros registos.
A resposta esperada, neste caso, é como a seguinte:
Last updated