Integração APIs

💡

Para que empresas contratantes do Open Keys® possam acionar a Jornada de compartilhamento de Dados, é necessário gerar um token no qual deverão ser indicados o client_id e o client_secret da operação, sinalizados no painel do aplicativo, menu de configurações.



URL de geração do Token - Sandbox

curl --location 'https://keycloak.celcoin.shared.fsapps.io/auth/realms/smart-keys/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scopes=openid' \
--data-urlencode 'client_id=${CLIENT_ID} \
--data-urlencode 'client_secret=${CLIENT_SECRET}'

URL de geração do Token - Produção

curl --location 'https://keycloak.celcoin.shared.fsapps.io/auth/realms/smart-keys-prd/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scopes=openid' \
--data-urlencode 'client_id=${CLIENT_ID} \
--data-urlencode 'client_secret=${CLIENT_SECRET}'

cURL para geração do Token

curl --location '${TOKEN_URL}' \
--header 'Content-Type: application/json' \
--data '{   
    "client_id":"...-2567-....-ace9-...",
    "client_secret": "...8136-....-42ce-..."
}'

Response

{
    "access_token": "...iJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJJUV96OE...",
    "expires_in": 3600,
    "refresh_expires_in": 0,
    "token_type": "Bearer",
    "not-before-policy": 0,
    "scope": "email profile"
}

⚠️

O token retornado no campo “accesstoken“ tem validade padrão de 1 hora e deve ser utilizado para realizar as chamadas subsequentes. Deve ser incluído no parâmetro _Authentication do header da requisição, precedido da palavra “Bearer “, conforme exemplo abaixo.


'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJJUV96OE...'


Liste os participantes do Open Finance de Dados

A chamada de API abaixo traz todas as instituições financeiras que podem ser escolhidas para realizar a aprovação do consentimento.


Solicitação de lista de participantes

curl --location --request GET 'https://api-openkeys.celcoin.dev.fsapps.io/open-keys-itp/api/participants/v1/brands?type=DATA&count=1&page=1'

Resposta da lista de participantes

[
  {
    "AuthorisationServerId": "95dd24d2-902e-49e1-ad0d-e02d938447ba", "AutoRegistrationSupported": false,
    "AutoRegistrationNotificationWebhook": null,
    "SupportsCiba": false, "SupportsDCR": false,
    "SupportsRedirect": false, "ApiResources": [...],
    "AuthorisationServerCertifications": [],
    "CustomerFriendlyDescription": "Autorizador ambiente Desenvolvimento Engenharia Finansystech", "CustomerFriendlyLogoUri": "https://finansystech-pub.s3.sa-east-1.amazonaws.com/f_logo.svg",
    "CustomerFriendlyName": "Finansystech Mock", "DeveloperPortalUri": null,
    "TermsOfServiceUri": null,
    "NotificationWebhookAddedDate": null,
    "OpenIDDiscoveryDocument": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech/.well-kno",
    "Issuer": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech",
    "PayloadSigningCertLocationUri": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech/jwk",
    "CreatedAt": 1666796087,
    "ParentAuthorisationServerId": null, "DeprecatedDate": null,
    "RetirementDate": null,
    "SupersededByAuthorisationServerId": null,
    "OrganisationId": "248cce08-0abc-4cdb-ba14-02cca03e5c74"
  },
  ...
]


Criar consentimento de dados

Usando o token de acesso que foi gerando anteriormentte, é possível chamar o endpoint Consent Creation.

O campo AuthorisationServerId é o Brand ID que usaremos para criar o consentimento de dados. Usaremos o Brand ID do Finansystech Mock (b09ede32-83db-4019-8ca3-a9a6f9376d0b)


URL de criação do Consentimento - Sandbox

CONSENT_URL=https://api-openkeys.celcoin.dev.fsapps.io/open-keys-itp/api/data-reception/v1/consents'

URL de criação do Consentimento - Produção

CONSENT_URL=https://api-openkeys.celcoin.prd.fsapps.io/open-keys-itp/api/data-reception/v1/consents'

cURL para criação do consentimento

curl --location 'https://api-smartkeys.celcoin.dev.fsapps.io/api/smart-keys/data-reception/v1/consents' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}' \
--data '{
  "data": {
    "loggedUser": {
      "document": {
        "identification": "",
        "rel": "CPF"
      }
    },
    "permissions": [
      "ACCOUNTS_READ",
      "ACCOUNTS_OVERDRAFT_LIMITS_READ",
      "ACCOUNTS_BALANCES_READ",
      "ACCOUNTS_TRANSACTIONS_READ",
      "CREDIT_CARDS_ACCOUNTS_BILLS_READ",
      "CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ",
      "CREDIT_CARDS_ACCOUNTS_LIMITS_READ",
      "CREDIT_CARDS_ACCOUNTS_READ",
      "CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ",
      "CUSTOMERS_PERSONAL_ADITTIONALINFO_READ",
      "CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ",
      "BANK_FIXED_INCOMES_READ",
      "CREDIT_FIXED_INCOMES_READ",
      "FUNDS_READ",
      "VARIABLE_INCOMES_READ",
      "TREASURE_TITLES_READ",
      "RESOURCES_READ"
    ],
    "expirationDateTime": "2024-12-30T00:00:00Z"
  },
  "brandId": ""
}'

Resposta de criação de consentimento

{
  "authorizationUrl": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech/auth?client_id=4f-BS",
  "id": "uNmAi0qJbzE2YsNvaLNw1QF6_7jV0b2 v8239wbRgc"
}

Será retornado um AuthorizationUrl para que seja possível redirecionar o usuário para a página de login do banco. Execute o redirecionamento usando o URL de autorização. A página de login será exibida na sequência.


Nesta tela é preciso utilizar o usuário e senha de teste, cadastrados no painel da aplicação

O sistema apresentará a página Aprovação de Compartilhamento de Dados com as informações da transação. Clique no botão “CONFIRMAR” para consentir com o compartilhamento.


O sistema redirecionará o usuário de volta para a URL cadastrada em "Redirect URI". A página URI de redirecionamento receberá os seguintes parâmetros de string de consulta:

  • ticket=eyJhbGciO…
  • state=HVLeXYgP6…


Consulta do consentimento

Após receber um retorno de um token dentro da tag “ticket”, é preciso inseri-lo na próxima chamada de consulta ao consentimento. Para isso, é preciso utilizar o ID do Consentimento e o ID da Jornada.


URL Get Data para consulta via ID do consentimento - Produção

DATA_URL=https:https://api-smartkeys.celcoin.prd.fsapps.io/api/smart-keys/data-reception/v1/consents/:consentId

O parâmetro status pode receber os valores: "AUTORIZED", "AWAITING_AUTORIZATION" e "REJECTED"


Response do consentimento

{
    "permissions": [
        "ACCOUNTS_READ",
        "ACCOUNTS_OVERDRAFT_LIMITS_READ",
        "ACCOUNTS_BALANCES_READ",
        "ACCOUNTS_TRANSACTIONS_READ",
        "CREDIT_CARDS_ACCOUNTS_BILLS_READ",
        "CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ",
        "CREDIT_CARDS_ACCOUNTS_LIMITS_READ",
        "CREDIT_CARDS_ACCOUNTS_READ",
        "CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ",
        "CUSTOMERS_PERSONAL_ADITTIONALINFO_READ",
        "CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ",
        "BANK_FIXED_INCOMES_READ",
        "CREDIT_FIXED_INCOMES_READ",
        "FUNDS_READ",
        "VARIABLE_INCOMES_READ",
        "TREASURE_TITLES_READ",
        "RESOURCES_READ"
    ],
    "creationDateTime": "2024-03-26T20:49:57.445Z",
    "status": "AWAITING_AUTHORIZATION",
    "statusUpdateDateTime": "2024-03-26T20:49:57.445Z",
    "expirationDateTime": "2024-12-30T00:00:00.000Z",
    "loggedUser": {
        "document": {
            "identification": "18983969067",
            "rel": "CPF"
        }
    },
    "kind": "DATA",
    "brandId": "d0d73a45-a3b5-409f-988f-895822991b19",
    "clientId": "198abfd2-743f-4976-87fe-59f0fd62ba5e",
    "consentId": "urn:bricks-dev:c23d332e-71b8-4b4f-8511-a3ccb304379c",
    "organizationName": "Finansystech Banking Dev Auth Server",
    "organizationLogo": "https://finansystech-pub.s3.sa-east-1.amazonaws.com/f_logo.svg",
    "id": "f6YQWjuZkuHjqG4lti3StB4mc-bE7EmVv23MQmOr_ow",
    "consentTerm": 9,
    "consentTermUnit": "M"
}