Ir para o conteúdo principal

Impacto da nova API Calendário nos sitemas da CODE

OBJETIVO

Definir estratégia de implementação da nova API nos sistemas desenvolvidos e/ou mantidos pela Coordenadoria de Desenvolvimento.

JUSTIFICATIVA

Evitar falha nas aplicações devido a descontinuidade programada da API e-Estado1

RESULTADOS 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 de propriedade: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.
DESENVOLVIMENTO

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".


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Ã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Ê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.