Este documento apresenta todos os requisitos técnicos necessários para conectividade da instituição financeira à plataforma de Pre-matching nos ambientes de homologação e produção.
client_id – Identificação da instituição financeira para acesso ao serviço. client_secret – Credencial (senha) de acesso exclusiva da instituição financeira à plataforma.
Host Origem: Rede da Instituição financeira
Host Destinos: APIs/WEB--> Detalhes abaixo....
Port: 443 (TLS 1.2)
Ambiente | URL | IP Principal | IP Contingência |
---|---|---|---|
Homologação WEB | https://pre-matching-hml.rtm.selic.gov.br | 10.228.6.2 | -- |
Homologação API | https://api-pre-matching-hml.rtm.selic.gov.br | 10.228.6.4 | -- |
Produção WEB | https://pre-matching.rtm.selic.gov.br | 10.228.7.2 | 10.232.4.2 |
Produção API | https://api-pre-matching.rtm.selic.gov.br | 10.228.7.4 | 10.232.4.4 |
O acesso à API da plataforma de Pre-matching exige a obtenção de um “client_id” e um “client_secret”.
Estes dados podem ser acessados diretamente por cada instituição através do portal do Selic. Para o acesso a esta funcionalidade a instituição deve ter acesso as funções do sistema Pre-matching habilitadas previamente.
Caso seu perfil não seja de administrador você deve solicitar para o responsável da sua instituição que as habilite no sistema Logon associando a seu usuário. O Acesso é realizado através do Portal Selic na RTM, menu Logon > API's.
Abaixo segue uma figura apresentando a aplicação “Gerenciador de acesso” dentro do portal do Selic:
O acesso pela interface WEB se dá exclusivamente através das URLs abaixo:
Ambiente | URL |
---|---|
Homologação WEB | https://pre-matching-hml.rtm.selic.gov.br/pre-matching-web/ |
Produção WEB | https://pre-matching.rtm.selic.gov.br/pre-matching-web/ |
A autenticação do acesso web (iselic + usuário + senha) é a mesma utilizada atualmente pelos usuários do portal do Selic na RTM (Ex. https://hml.rtm.selic.gov.br/). O exemplo abaixo apresenta como será a tela de autenticação da parte web.
O método de autenticação disponível na API da plataforma de Pre-matching é o OAuth2 e HTTP padrão através de TOKEN JWT.
Para iniciar a comunicação com a plataforma e acessar as URLs protegidas da plataforma você necessitará recuperar um token de acesso válido.
Nas seções seguintes seguem alguns exemplos utilizando a aplicação cURL para o envio da requisição autenticada para exemplificar a solicitação de um token.
Nota: cURL é um aplicativo open source e não é suportado pelo Selic. Ele é citado apenas para demonstração das chamadas HTTP.
As variáveis são identificadas por ${}. Exemplo: ${client_id} é a variável que identifica o cliente da API da sua instituição, como por exemplo "desenv" nos ambientes de desenvolvimento. Ex
curl -X POST \ https://pre-matching-hml.rtm.selic.gov.br/auth/realms/logon/protocol/openid-connect/token \ -H 'Accept: */*' \ -H 'Accept-Encoding: gzip, deflate' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Host: pre-matching-hml.rtm.selic.gov.br' \ -d 'grant_type=client_credentials&client_id=${client_id}&client_secret=${client_secret}
curl -X POST \ https://pre-matching-hml.rtm.selic.gov.br/auth/realms/logon/protocol/openid-connect/token \ -H 'Accept: */*' \ -H 'Accept-Encoding: gzip, deflate' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -H 'Host: pre-matching-hml.rtm.selic.gov.br' \ -d 'grant_type=client_credentials&client_id=desenv&client_secret=secret'
Após recuperação do TOKEN válido, você deve utilizá-lo nas chamadas à API, seguindo o exemplo abaixo
curl -X GET \ https://api-pre-matching-hml.rtm.selic.gov.br/pre-matching/api/v1/negocios/202004010000001 \ -H "accept: application/json" \ -H 'Accept-Encoding: gzip, deflate' \ -H 'Authorization: Bearer eyJhbGciOiJ...ctSsFxQ' \ -H 'Host: api-pre-matching-hml.rtm.selic.gov.br'
A política de limitação (rate-limiting) funciona com base em cabeçalhos enviados na requisição. Todas as requisições de consulta, geração e atualização de TOKENS serão limitadas.
Portanto, atente-se a configuração do seu cliente da API evitando bloqueios de acesso à plataforma causada por excesso de requisições.
Inicialmente a pltaforma permitirá até 300 requisições por minuto.
As respostas do cabeçalho HTTP de qualquer requisição à API mostrarão o status atual do seu limite de requisições permitidas. Exemplo:
curl -X GET \ https://api-pre-matching-hml.rtm.selic.gov.br/pre-matching/api/v1/negocios/202004010000001 \ -H "accept: application/json" \ -H 'Accept-Encoding: gzip, deflate' \ -H 'Authorization: Bearer eyJhbGciOiJ...ctSsFxQ' \ -H 'Host: api-pre-matching-hml.rtm.selic.gov.br' HTTP/1.1 200 OK Date: Mon, 13 Jul 2020 09:27:06 GMT Status: 200 O RateLimit-Limit: 300 RateLimit-Remaining: 10 RateLimit-Reset: 60
RateLimit-Limit = O número máximo de requisições por minuto.
RateLimit-Remaining = O número de requisições restantes dentro da janela de limite atual.
RateLimit-Reset = O tempo em que o limite de requisições atual será reiniciado. (Em segundos).
Caso sua aplicação cliente exceda este limite, ela receberá um HTTP STATUS 429 informando que o limite máximo permitido foi ultrapassado. Exemplo:
GET /obter-status/123 Response: HTTP/1.1 429 Too Many Requests Content-Type: application/json Date: Mon, 13 Jul 2020 09:27:40 GMT Retry-After: Mon, 13 Jul 2020 09:27:40 GMT RateLimit-Limit: 300 Ratelimit-Remaining: 0 RateLimit-Reset: 60 { "title": "Too Many Requests", "status": 429, "detail": "Você ultrapassou o número de requisições permitidas" }
Dica: Você pode adequar seu cliente de API para que verifique cada requisição os campos RateLimit-Limit ou Ratelimit-Remaining enviados no cabeçalho HTTP das respostas evitando o bloqueio temporário na plataforma.