Impacto da nova API Calendário nos sitemas da CODE
Data: 21/02/22
Autores:
- Diego Gonçalves de Almeida (Assessor)
- Igor Ramos de Oliveira (Assessor)
OBJETIVO1. Objetivo
Definir estratégia de implementação da nova API nos sistemas desenvolvidos e/ou mantidos pela Coordenadoria de Desenvolvimento.
JUSTIFICATIVA2. Introdução
Evitar falha nas aplicações devido a descontinuidade programada da API e-Estado1.
RESULTADOS3. ESPERADOS
Exposição dos riscos e estratégia de implementação na troca da da API e-Estado pela API Calendário.
ENVOLVIDOS
Assessores:Diego Gonçalves de Almeida; e,Igor Ramos de Oliveira.
GLOSSÁRIO
API - Conjunto de definições para que seja possível acessar determinados recursos de forma padronizada e mais simples.Endpoint- O ponto de comunicação pelo qual as definições das APIs são acessíveis.JSON - Um formato de dados de fácil integração entre sistemas distintos, composto depropriedade:valor.Node.js - Ambiente que permite a execução de aplicações desenvolvidas em JavaScript.JavaScript - Linguagem de programação utilizada para desenvolvimento de sistemas diversos.
DESENVOLVIMENTODesenvolvimento
3.1 API e-Estado - a antiga
Atualmente a API e-Estado tem um endpoint que retorna os feriados cadastrados no e-Estado.
O endpoint é GET /api/feriados/mes/{mes}/ano/{ano}, que retorna um JSON como o que se observa abaixo:
[
{
"id": 158,
"municipioId": 5582,
"data": "2022-05-24T00:00:00",
"horaInicial": "",
"horaFinal": "",
"calendario": "Padroeira dos municípios Nossa Senhora Auxiliadora",
"municipio": "Porto Velho"
},
{
"id": 158,
"municipioId": 5587,
"data": "2022-05-24T00:00:00",
"horaInicial": "",
"horaFinal": "",
"calendario": "Padroeira dos municípios Nossa Senhora Auxiliadora",
"municipio": "Vilhena"
},
{
"id": 158,
"municipioId": 5592,
"data": "2022-05-24T00:00:00",
"horaInicial": "",
"horaFinal": "",
"calendario": "Padroeira dos municípios Nossa Senhora Auxiliadora",
"municipio": "Alto Paraíso"
},
{
"id": 154,
"municipioId": 0,
"data": "2022-05-01T00:00:00",
"horaInicial": "",
"horaFinal": "",
"calendario": "Dia Mundial do Trabalho",
"municipio": null
}
]
Note que para eventos com abrangência municipal é retornado um objeto de evento para cada município. Na lista acima, o evento ID = 158
é municipal e para cada município (Porto Velho, Vilhena, Alto Paraíso) é retornado um objeto com o mesmo ID.
Todavia, nos eventos estaduais, para cada evento será retornado um objeto, porém os rótulos "municipioId"
terão valor 0
e os rótulos "municipio"
terão valor null
. Exemplo.
[
{
"id": 154,
"municipioId": 0,
"data": "2022-05-01T00:00:00",
"horaInicial": "",
"horaFinal": "",
"calendario": "Dia Mundial do Trabalho",
"municipio": null
}
]
Já as demais propriedades do objeto tem os seguintes valores:
"id": o ID do evento,
"data": a data do evento em formato "yyyy-mm-ddT00:00:00",
"horaInicial": sempre vazio (""),
"horaFinal": sempre vazio (""),
"calendario": nome do evento, por exemplo, "Padroeira dos municípios Nossa Senhora Auxiliadora".
3.2 API Calendário - a nova
A API Calendário foi desenvolvida utilizando Node.js. Além disse, está totalmente integrada ao OpenShift o que facilita mais sua manutenção.
Deste modo, ela será a substituta do endpoint de Feriados da API e-Estado que está programa para ser descontinuada por obsolecência.
Para evitar grandes ajustes nos sistemas que já consomem o endpoint da API e-Estado, um endpoint, com o mesmo padrão de resposta, na API foi criado. Dessa forma, o único trabalho a ser realizado no sistemas que já utilizam a API antiga será o de substituir, em suas aplicações, o endereço da API e-Estado pelo endereço da nova API Calendário
CONCLUSÃO4. Conclusão
A partir do estudo realizado foi possível identificar que não haverá nenhum impacto na mudança da API e-Estado para a API Calendário, senão aquele decorrente da troca da URL, visto que a nova já traz um endpoint igual à antiga e com o mesmo padrão de resposta.
REFERÊNCIAS5. Referências
[1] API e-Estado - Documentação. Disponível, internamente à intranet da SETIC, em: https://e-estado-api.master.local/swagger/index.html. Acesso em: 21 fev 2022.