Pular para o conteúdo principal

Especificações

A seguir estão descritos os itens técnicos que devem ser atendidos no Gov.pi Conecta, com as boas práticas esperadas em cada especificação.

Padrão de API REST

As APIs devem ser RESTful, seguindo as melhores práticas de utilização do Protocolo HTTP.

Verbos do Protocolo HTTP

  • GET → solicita a representação de um recurso, retornando apenas dados.
  • POST → submete uma entidade a um recurso específico, causando mudanças no estado ou efeitos no servidor.
  • PUT → substitui todas as representações atuais do recurso pela carga enviada.
  • PATCH → aplica modificações parciais em um recurso.
  • DELETE → remove um recurso específico.

Fonte: MDN Web Docs – Métodos HTTP

Padronização das rotas

As rotas devem seguir um padrão único para facilitar o consumo das APIs. Exemplos:

  • Spinal Case: /api/v1/lista-de-produtos
  • Snake Case: /api/v1/lista_de_produtos
  • Camel Case: /api/v1/listaDeProdutos
  • Pluralize: /api/v1/produtos
  • Singularize: /api/v1/produto

Evitar operações nos paths

Não utilizar verbos ou operações nos endpoints (ex.: /produtos/consultar, /produtos/apagar).
Os métodos HTTP já representam a operação:

  • GET /api/produtos → consultar produtos
  • POST /api/produtos → cadastrar produto
  • DELETE /api/produtos/{id} → remover produto

Paths extensos

Evitar mais de 2 níveis de aninhamento após a URL base.
Exemplo a evitar: GET /baseUrl/perfis/empresas/{sigla}/matriculas/{matriculaId}/colaboradores/{colaboradorId}/ferias/requisicoes

Códigos de resposta

Utilizar corretamente os códigos HTTP (2xx, 3xx, 4xx, 5xx).

  • 200 (OK), 201 (Created), 204 (No Content)
  • 400 (Bad Request), 401 (Unauthorized), 404 (Not Found)
  • 500 (Internal Server Error)

Boas práticas necessárias

Versionamento

Os endpoints devem conter versão clara, geralmente na URL:
Exemplo: GET https://base-url.example.com/api/v1/produtos

Stateless

Cada requisição deve ser independente. A API não deve manter estado entre chamadas.

Autenticação

Usar padrões seguros de autenticação.

  • Recomendado: OAuth2
  • Aceitos: JWT, Basic Auth (desde que documentados corretamente)

Documentação aberta

Todas as APIs devem ter documentação clara de endpoints, requests e responses.
Exemplo: Swagger/OpenAPI.


Requisitos adicionais

JSON como padrão

As APIs devem aceitar e responder em JSON.
Definir o cabeçalho corretamente:
Content-Type: application/json

Página de healthcheck

Incluir endpoint de verificação simples da aplicação.
Exemplo:
GET /health → retorna status da API.

Cache

Permitir cache em respostas quando apropriado para melhorar desempenho.

Filtragem, ordenação e paginação

  • Filtragem: permitir parâmetros para refinar resultados.
  • Ordenação: permitir sort por campos relevantes.
  • Paginação: obrigatório em endpoints que retornam grandes volumes de dados.

Boas práticas de segurança

  1. Autenticação segura
    Usar OAuth2 ou equivalente.
  2. Comunicações HTTPS
    Toda comunicação deve ser criptografada.

    Fonte: Mandic – Segurança em APIs REST

  3. Não expor informações confidenciais em URLs
    Nunca incluir credenciais, chaves ou tokens em parâmetros de URL.

    Fonte: Akamai – API Security Best Practices