Integrando com o Avisa BR¶
A integração de um sistema do cliente com o Avisa BR é feita através do consumo de serviços REST (Representational State Transfer - Transferência de Estado Representacional) disponibilizados através de API (Application Programming Interface - Interface de Programação de Aplicação).
Utilização de TLS 1.2 ou 1.3
Somente acessos às APIs via gateway.apiserpro.serpro.gov.br com Protocolos de Segurança TLS 1.2 e 1.3 serão aceitos (exceto para produtos INFOCONV ou ConectaGov). Protocolos de Segurança TLS 1.0 ou 1.1 não obterão integração com o serviço. Mais informações: Desligamento protocolos TLS 1.0 e 1.1 - Central de Ajuda.
Sobre os dados utilizados nos exemplos
Os dados utilizados nos exemplos são meramente ilustrativos. É preciso substituir os parâmetros das chamadas com as informações da aplicação do cliente que deseja realizar a integração.
Recuperando o token de acesso¶
Token de acesso é o artefato (chave) que permite que a aplicação cliente acesse os recursos do Avisa. Para obtê-lo, é preciso ter em mãos as credenciais do cliente, conforme passo a passo a seguir.
Como autenticar¶
As APIs disponibilizadas pela plataforma API SERPRO utilizam o protocolo OAuth2 para
realizar a autenticação e autorização de acesso das APIs contratadas.
Siga os passos abaixo para se autenticar e consumir a api do Avisa.
1. Primeiro passo - Obtenha Consumer Key e Consumer Secret¶
Para consumir as APIs, você deverá utilizar os dois códigos (Consumer Key e Consumer Secret) disponibilizados na Área do Cliente.
Esses códigos servem para identificar o contrato.
As credenciais de acesso devem ser obtidas a partir da área do cliente Serpro.
Exemplos de códigos:
Aviso importante
O Consumer Key e Consumer Secret identificam seu usuário e seu contrato com o SERPRO. Mantenha essas informações protegidas.
2. Segundo passo - Solicite o Bearer Token¶
Para consultar as APIs, é necessário obter um token de acesso temporário (Bearer).
Esse token possui um tempo de validade e sempre que expirado, este passo de requisição de um novo token de acesso deve ser repetido.
Como solicitar o Token de Acesso (Bearer)¶
Para solicitar o token temporário é necessário realizar uma requisição HTTP POST para o endpoint
Token https://gateway.apiserpro.serpro.gov.br/token, informando as credenciais de acesso (consumerKey:consumerSecret)
no HTTP Header Authorization, no formato base64, conforme exemplo abaixo.
[HEAD] Authorization: Basic base64(Consumer Key:Consumer Secret)
[HEAD] Content-Type: application/x-www-form-urlencoded
[POST] grant_type=client_credentials
Para utilização no parâmetro Authorization, é necessário concatenar os códigos Consumer Key e Consumer Secret,
eparados pelo caracter ":", e converter o resultado em BASE64.
No exemplo a seguir, é retornada a string ZGphUjIx[...]IzT3RlCg:
Resultado:
Abaixo segue um exemplo de chamada via cUrl:
curl -k -d "grant_type=client_credentials" \
-H "Authorization: Basic ZGphUjIxUEdvWXAxaXlLMm4yQUNPSDlSRWRVYjpPYlJzQUpXT0w0ZnYyVHAyN0QxdmQ4ZkIzT3RlCg" \
https://gateway.apiserpro.serpro.gov.br/token
Content-type
Caso experiencie erros de "415 Unsupported Media Type" na chamada de solicitação do Token, utilize o campo do Header "Content-Type" com o valor "application/x-www-form-urlencoded"
3. Terceiro passo - Receba o Token¶
Como resultado do passo anterior, o endpoint informará o token de acesso a API, no campo access_token da mensagem json de retorno.
Este token deve ser informado nos próximos passos.
Receba o Token¶
Como resultado, o endpoint informará o token de acesso a API, no campo access_token da mensagem json de retorno. Este token deve ser informado nos próximos passos.
{
"scope": "am_application_scope default",
"token_type": "Bearer",
"expires_in": 3295,
"access_token": "eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w"
}
Renovação do Token de Acesso¶
Atentar que sempre que o token de acesso temporário expirar, o gateway vai retornar um HTTP CODE 401 após realizar
uma requisição para uma API. Neste caso, deve ser repetido o Segundo Passo "Como solicitar o Token de Acesso (Bearer)" para geração de um novo token de acesso temporário.
O produto final é o token de acesso JWT que servirá como autorização para os próximos passos.
Enviando mensagens¶
De posse do token de acesso, é possível utilizar a API do sistema para enviar mensagens. Esses envios podem ser feitos individualmente, com um CPF como destinatário, ou podem ser feitos em lote, com um arquivo de entrada onde cada linha corresponde a um envio de mensagem.
Envio de mensagem individual¶
Para acionar esse serviço, é preciso ter um código de template que foi previamente cadastrado na interface administrativa do Avisa BR.
No exemplo abaixo, foi usado um template que possui os parâmetros de personalização nome e banco.
Canal de envio
A definição do canal de envio a ser utilizado está no cadastro do template. O Avisa se encarrega de enviar a mensagem pelo canal para o qual o template foi cadastrado.
Exemplo de chamada ao serviço de envio de mensagem¶
curl --request POST \
--url https://gateway.apiserpro.serpro.gov.br/avisabr/v1/mensagens \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w' \
--header 'Content-Type: multipart/form-data' \
--form cpf=32772813029 \
--form codigoTemplate=8fcda77a-6f09-4c2c-841a-901342631699 \
--form 'parametrosTemplate={ "nome": "José", "banco": "Caixa"}' \
curl --request POST \
--url https://gateway.apiserpro.serpro.gov.br/avisabr-hom/v1/mensagens \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w' \
--header 'Content-Type: multipart/form-data' \
--form cpf=32772813029 \
--form codigoTemplate=8fcda77a-6f09-4c2c-841a-901342631699 \
--form 'parametrosTemplate={ "nome": "José", "banco": "Caixa"}' \
Envio de um lote de mensagens por arquivo¶
Para acionar esse serviço, é preciso ter um código de template que foi previamente cadastrado na interface administrativa do Avisa BR.
O arquivo de entrada é em formato CSV, conforme especificação. No exemplo, foi usado um arquivo localizado no caminho /home/usuario/arquivos_envio/envio_matriculas_2022.csv de uma máquina com sistema operacional Linux. Também foi utilizado um identificador de lote Envio Matriculas 2022, gerado pela aplicação cliente.
Exemplo de chamada ao serviço de postagem de lote¶
curl --request POST \
--url https://gateway.apiserpro.serpro.gov.br/avisabr/v1/lotes \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w' \
--header 'Content-Type: multipart/form-data' \
--form arquivo=@/home/usuario/arquivos_envio/envio_matriculas_2022.csv \
--form codigoTemplate=8fcda77a-6f09-4c2c-841a-901342631699 \
--form 'idLoteAplicacaoCliente=Envio Matriculas 2022'
curl --request POST \
--url https://gateway.apiserpro.serpro.gov.br/avisabr-hom/v1/lotes \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w' \
--header 'Content-Type: multipart/form-data' \
--form arquivo=@/home/usuario/arquivos_envio/envio_matriculas_2022.csv \
--form codigoTemplate=8fcda77a-6f09-4c2c-841a-901342631699 \
--form 'idLoteAplicacaoCliente=Envio Matriculas 2022'
Verificando status de mensagem¶
De posse do token de acesso e do identificador retornado pelo serviços de envio, é possível consultar o status de envio da mensagem individual ou do lote de mensagens.
Verificação de status de mensagem individual¶
Com o código identificador da mensagem, o serviço de status pode ser acionado.
No exemplo abaixo, o identificador da mensagem utilizado é f6b20a75-fba4-4f23-8b8f-26675146362e.
Exemplo de chamada ao serviço de status de mensagem¶
curl --request GET \
--url https://gateway.apiserpro.serpro.gov.br/avisabr/v1/mensagens/f6b20a75-fba4-4f23-8b8f-26675146362e \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w'
curl --request GET \
--url https://gateway.apiserpro.serpro.gov.br/avisabr-hom/v1/mensagens/f6b20a75-fba4-4f23-8b8f-26675146362e \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w'
Verificação de status de um lote¶
Com o código identificador da mensagem, o serviço de status pode ser acionado.
No exemplo abaixo, o identificador da mensagem utilizado é 42ea0e68-140b-47af-95b9-69fe82f024de.
Exemplo de chamada ao serviço de status de lote¶
curl --request GET \
--url https://gateway.apiserpro.serpro.gov.br/avisabr/v1/lotes/42ea0e68-140b-47af-95b9-69fe82f024de \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w'
curl --request GET \
--url https://gateway.apiserpro.serpro.gov.br/avisabr-hom/v1/lotes/42ea0e68-140b-47af-95b9-69fe82f024de \
--header 'Authorization: Bearer eyJraWQiOiJyc2ExIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJpc3MiOiJOb3RpZmljYSBCUiAtIEhvbW9sb2dhw6fDo28iLCJhdWQiOiJlMzFkYzMwMy1mMGI4LTQ4M2QtYmFiNy02Y2JmOTM0NDVlOTMiLCJleHAiOjE2NjU2OTg1NjksImp0aSI6IlJZOVBoYkFxR0NMd3JKbm1Hb0tialEiLCJpYXQiOjE2NjU2OTEzNjksIm5iZiI6MTY2NTY5MTI0OX0.ApsFi0P_s4TULGIoYJpsZRvHEoodaOkIehFYBdGAIchr8FTV5Smak4NENTarEroebPIEJ6M99Gprhk1zFu5C7a6AIo2YDAZPEsU06s2fMBxIc0auG9qN75MvkTdawsLogv4K4AwxYLc2nsq-dL5t1KZAVCVaVPs99g-JCaPXBmT1Y0U16MW3iDOjHusnRYjFNxEp_sEQAjzktb4R3NZZ69qVay7ima0X8RA2cA9E8m-IcvcnSpzk87t5k1CFdYYTQ5l--tBqsQLBQiHGvw01R4oW2g3859G63Gkld101WyR7UJOcDVPZdyjaORRRSZVhA-Nde7H1P7P9FeMGODa2-w'