Como utilizar?¶
Autenticação do operador e fornecimento do token de acesso¶
O acesso aos serviços das APIs do ecossistema SIGAP é autorizado através da apresentação de um JSON Web Token (JWT) em todas as requisições.
Para fornecer um JWT, a API disponibilizada pelo SIGAP requer o uso de um certificado digital e-CNPJ tipo A1 ou A3, emitido por Autoridade Certificadora ICP-Brasil, com "Autenticação do Cliente". Os operadores deverão utilizar um certificado digital e-CNPJ com o mesmo CNPJ utilizado no processo de autorização efetuado no sistema SIGAP Autorização https://sigap.fazenda.gov.br/login.
Informação Importante
Detalhes técnicos dos endpoints, bem como as descrições das entradas/saídas de cada serviço fornecido pela API do SIGAP, estão descritos no Swagger da API na seção Documentação.
Endpoints de autenticação e obtenção de token por ambiente¶
Ambiente | URL |
---|---|
Homologação | https://auth-h-sigap-rec.df-1.estaleiro.serpro.gov.br/recepcao-autenticacao/token |
Produção | https://auth-sigap-rec.ni.estaleiro.serpro.gov.br/recepcao-autenticacao/token |
Diagrama do processo de autenticação¶
Passos para obtenção do token de acesso¶
Abaixo estão descritos os passos para obtenção do token de acesso através da API do SIGAP.
1. Primeiro passo - Utilização do Certificado Digital¶
Informação Importante
Para consumir a API, deverá ser utilizado um Certificado Digital e-CNPJ tipo A1 ou A3, emitido por Autoridade Certificadora ICP-Brasil, com "Autenticação do Cliente".
2. Segundo passo - Solicitação do 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. Atualmente, os tokens de acesso possuem a validade de 24 horas (86.400 segundos). Após a expiração, requisições à API receberão retorno de acesso negado (erro HTTP 401).
2.1 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
, conforme as URLs dos ambientes (ver tópico acima). O endpoint de autenticação deverá ser acessado obrigatoriamente com um certificado digital.
2.2 Sintaxe para solicitação do token de acesso¶
curl --request 'POST' \
'[URL*]' \
--header 'accept: text/plain' \
--data ''
2.3 Resultado de uma chamada com sucesso¶
{
"Token": "eyJhbGciOi.eyJhdRBIiwiaW5zY3YTcWdhcC1tZS5kZi0xLmVzdGFsZWlyby5zZXJwcm8uZ292LmJyIiwiYXVkIjoic2lnYXAifQ.Gdu39WcGTM"
}
2.4 Exemplo de chamada via cURL para o ambiente de homologação¶
curl --request 'POST' \
'https://auth-h-sigap-rec.df-1.estaleiro.serpro.gov.br/recepcao-autenticacao/token' \
--header 'accept: text/plain' \
--data ''
2.5 Erros na solicitação do token¶
Caso ocorram erros do tipo 415 Unsupported Media Type
na chamada de solicitação do token, deve-se utilizar o campo do header Content-Type
com o valor application/x-www-form-urlencoded
.
[HEAD] Content-type: "application/x-www-form-urlencoded"
Exemplo de chamada via cURL:
curl --request 'POST' \
'https://auth-h-sigap-rec.df-1.estaleiro.serpro.gov.br/recepcao-autenticacao/token' \
--header 'accept: text/plain' \
--header 'Content-type: application/x-www-form-urlencoded' \
--data ''
3. Terceiro passo - Recebimento do Token¶
Como resultado do passo anterior, o endpoint de autorização informará o token de acesso a API, no campo access_token
da mensagem JSON de retorno. O token recebido deverá ser armazenado para utilização no quarto passo.
{
"Token": "eyJhbGciOi.eyJhdRBIiwiaW5zY3YTcWdhcC1tZS5kZi0xLmVzdGFsZWlyby5zZXJwcm8uZ292LmJyIiwiYXVkIjoic2lnYXAifQ.Gdu39WcGTM"
}
3.1 Renovação do token de acesso¶
Atenção
O token sempre deve ser renovado seguindo as instruções do passo 2 acima. A renovação pode ser efetuada de forma reativa quando o token expirar, realizando-se uma nova requisição, ou de forma preventiva, monitorando o tempo de expiração e renovando previamente para fazer a substituição em tempo mais hábil.
4. Quarto passo - Efetuando uma Requisição¶
De posse do token de acesso, será possível efetuar requisições aos endpoints da API do SIGAP.
4.1 Exemplo de requisição via cURL ao ambiente de homologação do SIGAP (envio de lote)¶
curl --request 'POST' \
'https://api-h-sigap-rec.df-1.estaleiro.serpro.gov.br/recepcao-aposta/aposta-esportiva/lote' \
--header 'accept: text/plain' \
--header 'Authorization: Bearer eyJhbGciOi.eyJhdRBIiwiaW5zY3YTcWdhcC1tZS5kZi0xLmVzdGFsZWlyby5zZXJwcm8uZ292LmJyIiwiYXVkIjoic2lnYXAifQ.Gdu39WcGTM' \
--header 'Content-Type: application/json' \
--data '{
"LoteApostaEsportivaXmlGZipB64": "string"
}'
No exemplo acima foram utilizados os seguintes parâmetros:
-
Indicação dos formatos de dados aceitos
[HEADER] Accept: text/plain [HEADER] Content-Type: application/json
-
Indicação do token de acesso (recebido no passo 3)
[HEADER] 'Authorization: Bearer eyJhbGciOi.eyJhdRBIiwiaW5zY3YTcWdhcC1tZS5kZi0xLmVzdGFsZWlyby5zZXJwcm8uZ292LmJyIiwiYXVkIjoic2lnYXAifQ.Gdu39WcGTM'
-
Indicação do parâmetro no corpo da requisição
[BODY] LoteApostaXmlGZipB64
4.2 Exemplo de requisição via cURL ao ambiente de homologação do SIGAP (consulta impedimento de cidadão)¶
curl --request 'GET' \
'https://hom-impedidos-sigap.estaleiro.serpro.gov.br/impedimento/v1/condicao/36878304032' \
--header 'accept: */*' \
--header 'Authorization: Bearer eyJhbGciOi.eyJhdRBIiwiaW5zY3YTcWdhcC1tZS5kZi0xLmVzdGFsZWlyby5zZXJwcm8uZ292LmJyIiwiYXVkIjoic2lnYXAifQ.Gdu39WcGTM' \
No exemplo acima foram utilizados os seguintes parâmetros:
[HEADER] Accept: */*
- Indicação do token de acesso (recebido no passo 3)
[HEADER] 'Authorization: Bearer eyJhbGciOi.eyJhdRBIiwiaW5zY3YTcWdhcC1tZS5kZi0xLmVzdGFsZWlyby5zZXJwcm8uZ292LmJyIiwiYXVkIjoic2lnYXAifQ.Gdu39WcGTM'