Passar para o conteúdo principal

Autenticação para utilização de APIs do OneFlow

Esse artigo explica como obter as chaves de autenticação para utilização de APIs do OneFlow

Heverton Gentilim avatar
Escrito por Heverton Gentilim
Atualizado essa semana

As APIs do OneFlow são executadas por empresa e sua autenticação é baseada em tokens JWT.

Por segurança, para realizar as integrações, é necessário estar autenticado no contexto da empresa desejada. Desta forma, é preciso que o sistema que irá integrar com o OneFlow, possua a capacidade de gerenciar as autenticações por empresa.

Pensando que um escritório contábil possui N empresas, tenha em mente que a autenticação ocorre em camadas. Primeiramente é necessário se conectar no aplicativo OneFlow do escritório, para na sequência obter e se autenticar nas empresas relacionadas.

Siga os seguintes passos para autenticar as APIs:

1. Usuário de integração

O consumo das APIs do OneFlow é baseado em tokens JWT e dois tipos serão utilizados na integração:

É necessário possuir um usuário cadastrado no sistema e com acesso ao OneFlow e dentro deste às empresas desejadas. Recomendamos que seja criado um usuário de integração (para que não seja utilizado um “usuário real”) e que esse login e senha não seja compartilhado.

Tendo o usuário já cadastrado, será necessário obter o token de acesso deste usuário que será utilizado na integração.

1.1. Geração do token do usuário

Para gerar esse token:

  1. Acesse o portal OneFlow (portal.oneflow.com.br) ou o portal Omie (app.omie.com.br) com o usuário que será utilizado na integração.

  2. Depois de logado, acesse a seguinte URL: https://app.omie.com.br/api/portal/users/me/token/
    Será exibido o token do usuário de integração. Esse token deve ser mantido em um cofre bem seguro pois pode conceder acesso ao OneFlow e às empresas do usuário de integração.

Importante: O token de usuário expira a cada 24 horas. Por isso, após esse período é necessário executar o procedimento de renovação, que é feito por API específica.

1.2. Renovação do token do usuário

A renovação pode ser automatizada. Para renovar o token de usuário, será necessário usar o par de tokens (token + refresh token) que foi disponibilizado e trocá-los por novos tokens:

Exemplo:

 curl --request POST \
--url https://app.omie.com.br/api/portal/users/refresh-token/ \
--header 'Content-Type: application/json' \
--data '{
"token": "TOKEN_ANTIGO",
"refresh_token": "REFRESH_TOKEN"
}'

2. Aplicativo OneFlow que será utilizado

Com um token válido, é possível listar todos os aplicativos OneFlow que o usuário tem acesso. Caso esse usuário também tenha acesso à aplicativos do Omie ERP, eles também serão exibidos.

Para integração com o OneFlow, precisamos do HASH (app_hash) do sistema do escritório de contabilidade que pode ser identificado pelo “app_type” = “ONEFLOW”.

Exemplo:

 curl --request GET \
--url https://app.omie.com.br/api/portal/apps/ \
--header 'Authorization: Bearer TOKEN_USUARIO' \
--header 'Accept: application/json'

É necessário utilizar sempre um token de usuário válido (conforme explicado no item 1).

2.1 - Obtendo o token do aplicativo OneFlow

Agora, precisamos obter o TOKEN e o REFRESH TOKEN do aplicativo OneFlow:

Exemplo:

curl --request GET \
--url https://app.omie.com.br/api/portal/apps/[app-hash]/token/ \
--header 'Authorization: Bearer TOKEN_DO_USUARIO'

Tanto o app-hash (identificando o aplicativo OneFlow) quanto o token do usuário deverá ser obtido nos passos anteriores.

3. Empresas que serão acessadas

Agora, será necessário listar as empresas do escritório que o usuário tem acesso:

Exemplo:

curl -X 'GET' \   'https://rest.oneflow.com.br/api/oneflow/escritorio/empresas/listar?pagina=XXXX' \ 
--header 'Authorization: Bearer TOKEN_DO_ESCRITORIO'

Nessa listagem serão retornados a RAZÃO SOCIAL, CNPJ e o HASH (app_hash) de cada empresa que o usuário tem acesso no aplicativo OneFlow em questão.

O token do escritório (aplicativo OneFlow) deverá ser obtido conforme item 2.1.

3.1. Autenticação de cada empresa

Tendo o HASH de cada empresa, é necessário pegar o TOKEN e o REFRESH TOKEN de cada empresa:

Exemplo:

curl --request GET \
--url https://app.omie.com.br/api/portal/apps/[app-hash]/token/ \
--header 'Authorization: Bearer TOKEN_DO_USUARIO'

O token do usuário deverá ser obtido conforme item 1.

O app-hash da empresa deverá ser obtido conforme item 3.

4. Consumo de APIs OneFlow

Com o token obtido no passo anterior, podemos consumir as APIs do OneFlow por empresa:

Exemplo:

 curl --request POST \
--url https://rest.oneflow.com.br/api/colaboradores/desconto \
--header 'Authorization: Bearer TOKEN_DA_EMPRESA' \
--data '{
"parcelas": [
{
"cpf": "860.361.525-07",
"idContrato": "113123",
"idProposta": "113123",
"idParcela": "installment-0008b894-8939-47d2-918b-fa2898c23190",
"valor": 423.19,
"mesReferencia": 9,
"anoReferencia": 2022,
"NumeroParcela": 3,
"cancelado": false
}
]
}'

5. Renovando o token de um aplicativo OneFlow ou de uma empresa

Uma vez tendo as informações de token, refresh token e hash de um aplicativo OneFlow ou de uma empresa, é possível renovar o token:

 curl --request GET \
--url https://app.omie.com.br/api/portal/apps/app-hash/refresh-token \
--header 'Content-Type: application/json' \
--data '{
"token": "TOKEN_ANTIGO",
"refresh_token": "REFRESH_TOKEN"
}'

6. Perguntas e respostas sobre a utilização de APIs

Não consigo obter os dados do usuário. O que acontece?

Provavelmente as chaves foram invalidadas e é necessário renová-las.

Por que não consigo renovar as chaves de um usuário?

É possível que a chave original tenha sido expurgada ou o usuário não exista mais.

O que significa o código 403 ao tentar gerar o token de um aplicativo ou empresa?

Isso significa que o usuário não possui acesso ao aplicativo ou a empresa. Siga os seguintes passos:

  1. Já verificou se esse aplicativo está sendo retornado na lista de aplicativos?

  2. Se o aplicativo/empresa não está na lista, significa que ainda está sem acesso. Peça ajuda para o time do suporte informando o ID do aplicativo e o e-mail do usuário parceiro.

O token do usuário pode ser compartilhado?

Não. Essas chaves deverão ser bem guardadas num ambiente gerido pelo parceiro e de preferência num cofre de senhas.

Qual chave deve ser usada para acessar cada empresa?

Apenas o token da empresa precisa ser usado e a aplicação precisa estar pronta para renovar essa chave quando necessário.

Quais são as APIs disponibilizadas pelo OneFlow?

Clique aqui para acessar a documento das APIs disponíveis.

Respondeu à sua pergunta?