# Integração SSP com Goiás Digital
Links úteis:
* https://api.goiasdigital.go.gov.br/api/ui/
* https://api.goiasdigital.go.gov.br/integracao-redirect-servico
* https://api.goiasdigital.go.gov.br/integracao-api
* https://api.goiasdigital.go.gov.br/integracao-formulario-externo
## CADASTRO DO ORGÃO
O administrador do Goiás Digital deve cadastrar a SSP na integração. Após o cadastro, eles nos enviarão o **clientID** (codigo do cliente) e o **clientSecret** (chave de autenticação)
## REDIRECT - INTEGRAÇÃO PROCON (fora do nosso SSO)
1. Cadastrar a url de entrada no portal Atende Goiás.
Ex: https://proconwebws.ssp.go.gov.br/goiasdigital/funcionalidade=denuncias
2. Quando o usuário acessar o serviço via portal Atende Goiás, será chamada a url acima com um parametro adicional chamado **protocoloAtendeGoias**.
3. O nosso endpoint **/goiasdigital** deve [chamar de volta](https://api.goiasdigital.go.gov.br/api/ui/#/ATENDE_GOIAS/getAddAndamentoAtendimento) a API do Goias Digital para **registar o atendimento**.
4. Ao registrar o atendimento, vamos receber como response um **JWT** (para realizar chamadas) e uma **Chave Pública** (para validar chamadas)
5. Após o receber o response, devemos **salvar** no backend a Chave Pública e o protocoloAtendeGoias.
5.1. Salvar a Chave Pública pois nosso backend **estará preparado para validar os dois tipos de token** (o nosso e o do governo federal).
5.2. Salvar o protocoloAtendeGoias pois o mesmo será usado posteriormente para mudarmos o status do atendimento (*item 8*).
5.3. Cadastrar um novo usuário para o CPF caso não exista.
6. A útima operação no backend é dar um redirect para o frontend com o parametro **jwt**.
Ex: https://proconweb.ssp.go.gov.br/#/denuncias?jwt=[jwt]
7. O frontend deve ser capaz de ler o parâmetro jwt e armazenar o mesmo no sessionStorage. (usar a chave **token**, que é a mesma chave do jwt do procon já usa)
7.1. Poder ser necessária uma tela adicional "intermediária" para completar as informações de cadastro caso seja uma novo usuário.
8. Posteriormente o backend deve [enviar novos status](https://api.goiasdigital.go.gov.br/api/ui/#/ATENDE_GOIAS/getAddAndamentoAtendimento): **Pendente** ou **Finalizada**. Pode ser feita de forma sincrona (ex: ao chamar /salvarDenuncia), ou assíncrona (via jobs que checkam status).
> **Pendente** - Usado em casos que a solicitação não será concluída no momento, terá uma interação no futuro.
> **Finalizada** - Usado para encerrar a solicitação ou finalização do serviço, caso a finalização seja por conta do cidadão não cumprir algum requisito ou regra do sistema, informar junto da finalização a justificativa
* Esta modelo foi pensado para futuramente ser "mais fácil" a integração via [API](https://api.goiasdigital.go.gov.br/integracao-api).
## REDIRECT - INTEGRAÇÃO NOSSO SSO
O fluxo deve ser parecido. Será tratado no futuro, caso exista necessidade. Uma vez implementado, seria reusado em praticamente todas as aplicações.
## Tipo API e TELA
Este documento tratou apenas o tipo de integração **REDIRECT**.
Futuramente poderemos tratar os tipos **API** e **TELA**.