Referência da API
Cada rota, com os parâmetros que aceita e os campos que devolve.
Autenticação
Toda rota exige Authorization: Bearer cxd_live_.... A chave é criada no portal, em Conta › Chaves de API, e vale para a conta inteira.
Tabelas
Procura um NCM por código ou por descrição
Um termo só: dígitos e pontuação valem como prefixo de código, qualquer outra coisa como texto da descrição. A busca por texto ignora acentos, então 'valvula' acha 'Válvulas'. Sem o parâmetro q, pagina a tabela inteira em ordem de código, que é a ordem da hierarquia. Pela API, cobra cada código devolvido na página, e uma busca sem resultado conta como um; o parâmetro limite é o que controla o custo.
Um código com a linhagem e os desdobramentos
Aceita o código com ou sem pontuação. Devolve 404 quando o código não existe na tabela carregada. Pela API, cobra um código por consulta, inclusive quando a resposta é 404: saber que o código não existe é a resposta que quem valida uma lista veio buscar.
Procura produtos perigosos por número ONU ou por nome
Um termo só: dígitos, com ou sem UN na frente, valem como prefixo do número; qualquer outra coisa, como pedaço do nome em inglês. Sem termo, pagina a lista inteira na ordem do número. Pela API, cobra cada número ONU distinto devolvido na página (as três entradas do 1133 contam como um), e uma busca sem resultado conta como um.
Consulta vários números ONU numa requisição
Para validar a lista de um sistema de uma vez: até 500 números, com ou sem UN na frente. Cada item volta com as entradas daquele número, ou encontrado: false. Pela API, cobra um código por número distinto pedido, encontrado ou não; repetidos contam uma vez.
Todas as entradas de um número ONU
Devolve cada entrada do número na lista, uma por grupo de embalagem, com todas as colunas. Responde 404 quando o número não existe na tabela carregada. Pela API, cobra um código por consulta, inclusive no 404: saber que o número não existe é a resposta que quem valida uma lista veio buscar.
Navios
eBL
Lista as leituras da conta
Da mais recente para a mais antiga. Filtra por status quando informado. Paginado: pagina começa em 1 e limite vai até 200, com padrão 10. O campo total conta o filtro inteiro, não só a página.
Envia um BL para leitura
O arquivo vai como multipart/form-data, no campo file: o arquivo cru, não base64 e não JSON. Responde 202 na hora, com um job_id, e o resultado chega por consulta ou por webhook em cerca de dois minutos. Mande o cabeçalho Idempotency-Key para um retry de rede não virar uma segunda leitura.
Consulta o resultado de uma leitura
Enquanto a leitura corre, status é queued ou processing e data vem null. Uma leitura de outra conta responde 404.
Confere uma leitura
Corrige campos e marca a leitura como conferida. Qualquer campo pode ser corrigido, e o corpo pode vir sem nenhuma correção, quando a conferência é só uma confirmação de que está tudo certo. Não existe desfazer: corrija por cima, que o histórico guarda as duas passagens. Conferência não é cobrada.
Refaz o vínculo entre cargas e contêineres
Substitui a lista inteira de vínculos carga x contêiner. Rota separada da conferência de campos porque vínculo é relação e não campo: a correção por caminho troca o valor de uma chave existente, e não cria vínculo onde não havia — que é exatamente o caso de um BL cujo emissor não repartiu a carga. Manda o conjunto completo, não um delta. Não marca a leitura como conferida: vincular é uma etapa, e o Confirmar continua sendo o que tira o documento da fila.
Histórico de alterações de uma leitura
A linha do tempo do documento: a leitura da máquina e cada correção humana depois dela, com valor anterior, valor novo, autor e momento. Como não existe desfazer, é aqui que se reconstrói qualquer estado anterior. Somente leitura, e não é cobrado.
Baixa o arquivo original
Devolve o arquivo exatamente como foi enviado. Ele não expira.
Lista as entregas do cliente
Sem filtro, devolve as que ainda não chegaram: failed e exhausted. Use status=delivered para as concluídas, status=pending para as que estão na fila, status=all para todas.
Devolve todas as entregas esgotadas para a fila
Devolve para a fila todas as entregas que esgotaram as tentativas. Elas saem aos poucos, e não todas de uma vez, para não sobrecarregar o seu servidor. Reenvio não é cobrado.
Reenvia uma entrega agora
Faz uma tentativa agora, sem reiniciar a escala automática. Reenvio não é cobrado.