Skip to main content
Todas as rotas são escopadas pelo email do usuário (query string no GET/DELETE, corpo JSON nos demais). Uma operação de outro email responde 404. from/to (RFC3339) filtram por closedAt quando status é closed ou cancelled, e por openedAt nos demais casos. source filtra pela origem.

Origem e idempotência

source indica de onde a operação veio: manual, calculator ou desktop. Sem valor, vira calculator quando há calculatorId e manual nos demais casos. O resumo agrupa o resultado por origem em bySource. externalId (até 128 caracteres) é o id da operação no cliente, como o id da execução no app desktop. Com ele a criação é idempotente por usuário: repetir o POST com o mesmo externalId devolve a operação existente com 200 em vez de criar outra (a primeira criação responde 201). Isso permite repetir a chamada com segurança depois de uma falha de rede ou de retomar uma execução. source e externalId só são lidos na criação.

Estratégias

Em spot_spot, entrySellPrice é o preço de venda esperado e o fechamento exige apenas exitSellPrice.

Taxas

fees aceita trading, withdrawal e funding em moeda de cotação. Quando fees é nulo o serviço estima as taxas com a taxa taker de cada exchange sobre todas as pernas e, em spot_spot, um saque da buyExchange. Sem dado da exchange são usados NET_SPREAD_DEFAULT_TAKER_RATE e NET_SPREAD_DEFAULT_WITHDRAWAL_USD, e a operação fica com feesEstimated: true. O campo funding do corpo define o funding (positivo recebido, negativo pago) mesmo com taxas estimadas. Resultado líquido = bruto − trading − withdrawal + funding. O percentual usa o nocional de entrada.
Erros: 400 para validação, 404 para operação inexistente ou de outro email, 409 ao fechar ou cancelar uma operação que não está aberta, 429 pelo limitador geral e 500 em falha do MongoDB.