🚧 Em Construção 🚧
Pular para o conteúdo principal

Ordenação

Esta especificação define os requisitos obrigatórios para ordenar recursos em endpoints que retornam listas na plataforma Guardia, utilizando exclusivamente propriedades temporais como critério de ordenação.

A ordenação será feita por meio dos parâmetros order_by e sort, fornecidos na query string da requisição HTTP.

Regras Gerais

A ordenação DEVE:

  • Ser limitada aos seguintes propriedades temporais como por exemplo: created_at, updated_at ou reference_date.
  • Utilizar índices disponíveis no banco de dados para otimizar desempenho e evitar varreduras completas (full scan).
  • Considerar particionamento por faixa temporal, quando aplicável, para ganhos de performance em grandes volumes.
  • Ser estável: registros com o mesmo valor em order_by DEVEM manter ordem relativa consistente (ex: por entity_id como critério secundário).
  • Produzir resultados consistentes com os parâmetros recebidos e com a lógica de paginação associada.

Essas diretrizes reduzem ambiguidades entre sistemas consumidores, promovem previsibilidade nos retornos e estão alinhadas aos princípios de Compliance by Design, especialmente em eficiência.

Parâmetros de ordenação

ParâmetroObrigatórioValores permitidosPadrão
order_byNãocreated_at, updated_at, reference_datecreated_at
sortNãoasc, descasc

NOTA: Ambos os parâmetros são opcionais. Em sua ausência, aplica-se a ordenação created_at asc.

Exemplos de requisição

GET https://{tenant_id}.guardia.finance/api/v1/ledgers?order_by=created_at // assume a ordenação padrão ascendente
GET https://{tenant_id}.guardia.finance/api/v1/ledgers?order_by=created_at&sort=asc // assume a ordenação ascendente
GET https://{tenant_id}.guardia.finance/api/v1/ledgers?order_by=created_at&sort=ASC // case insensitive
GET https://{tenant_id}.guardia.finance/api/v1/ledgers?order_by=reference_date&sort=desc // assume a ordenação descendente
GET https://{tenant_id}.guardia.finance/api/v1/ledgers?order_by=reference_date&sort=DESC // case insensitive

Comportamentos esperados

  • Ausência de parâmetros deve assumir os valores padrão.
  • order_by deve aceitar apenas os valores permitidos no endpoint. Outros valores DEVEM resultar em 400 Bad Request.
  • sort deve aceitar apenas os valores asc ou desc (case insensitive). Outros valores DEVEM resultar em 400 Bad Request.

Erros Conhecidos

CenárioCódigo HTTPCodeReason
order_by inválido400ERR400_INVALID_PARAMETERORDER_BY_INVALID
sort inválido400ERR400_INVALID_PARAMETERSORT_INVALID

Exemplo de erro (JSON)

{
"errors": [
{
"code": "ERR400_INVALID_PARAMETER",
"reason": "ORDER_BY_INVALID",
"message": "The order_by provided has an incorrect format. Please check the order_by before trying again."
}
]
}

Quando aplicar

  • Esta especificação DEVE ser aplicada a todos os endpoints pagináveis que retornem listas ordenadas por tempo.

Exceções permitidas

Notas adicionais

  • A ordenação DEVE ser documentada no contrato OAS da API.
  • A ordenação temporal aqui descrita é considerada padrão mínimo para qualquer API RESTful da Guardia.