Documentação técnica

API de ordenação estável de JSON

Envie uma lista JSON, escolha a chave e receba os registros ordenados com os empates preservados. A resposta identifica a estratégia aplicada e inclui as métricas da execução.

Enviar uma requisição de ordenação

Use uma requisição HTTP POST com corpo JSON em UTF-8. Envie as opções no corpo, sem parâmetros na URL.

POST https://www.kuraxi.tec.br/api/sort
Content-Type: application/json

O exemplo ordena uma fila de registros pela prioridade, da maior para a menor.

{
  "data": [
    {"tarefa": "Revisão", "prioridade": 2},
    {"tarefa": "Envio", "prioridade": 5},
    {"tarefa": "Arquivo", "prioridade": 2}
  ],
  "key": "prioridade",
  "order": "desc",
  "strategy": "auto",
  "memory_budget_mb": 64
}

Em uma resposta bem sucedida, o campo result deve conter a lista abaixo. Revisão continua antes de Arquivo porque ambas têm prioridade 2.

[
  {"tarefa": "Envio", "prioridade": 5},
  {"tarefa": "Revisão", "prioridade": 2},
  {"tarefa": "Arquivo", "prioridade": 2}
]

Opções e tipos aceitos

  • data é o array de entrada. Para uma lista de números ou textos, use "key": null. Para registros, informe em key o nome de um campo presente em todos eles.
  • order aceita asc (crescente, padrão) ou desc (decrescente).
  • strategy aceita auto (padrão), radix, natural_merge, bounded_insertion e reference. Comece com auto. Radix exige chaves inteiras.
  • memory_budget_mb aceita um inteiro de 1 a 128, com padrão 64. O serviço interpreta o valor em MiB como orçamento de memória auxiliar estimada.

Chaves inteiras no intervalo int64 podem usar o motor nativo. Em modo automático, chaves textuais ou numéricas com decimais usam a referência estável do Python. Textos são comparados pelos caracteres, sem colação específica de um idioma.

Os limites são 100.000 itens por requisição e 2 MiB para cada corpo de entrada e de resposta. Use JSON válido, sem chaves de objeto repetidas, NaN ou infinitos. A API aceita o intervalo int64 em JSON recebido diretamente. Para representar inteiros acima da precisão segura do JavaScript, use um cliente que preserve o número exato no corpo da requisição.

Interpretar a resposta e o tempo

O objeto devolvido reúne result, metrics e warnings. Em metrics, consulte strategy_used e native para identificar o caminho executado. estimated_aux_bytes estima a memória auxiliar, que é uma medida diferente da memória total do processo.

elapsed_ms mede o tempo da chamada ao motor e da conferência independente da saída no servidor, inclusive a comparação com a ordenação estável de referência. A transmissão pela rede e a leitura do JSON de entrada acontecem fora dessa janela.

Uma requisição sem application/json recebe 415. Opções ou dados inválidos recebem 422. Se a instância estiver ocupada, 429 indica que você pode aguardar e tentar novamente. O endpoint GET /api/health verifica a disponibilidade do motor nativo.