Cancelar
NegociaçãoAutenticação ObrigatóriaCancelar um contrato ativo fornecendo o ID do contrato. O parâmetro loginid foi removido e os campos de resposta estão agora garantidos.
3 Alterações Disruptivas
loginid foi removido e todos os campos de resposta são agora obrigatórios.Comparação rápida
Alterações de rutura
1. Remoção do parâmetro loginid
O parâmetro loginid já não é suportado em New. No Legacy, este parâmetro era usado para especificar de que conta cancelar um contrato quando eram fornecidos múltiplos tokens durante a autorização.
Alteração necessária: Remove the loginid field from your cancel requests. Account selection is now handled through the authorization token.
2. Objeto cancel agora obrigatório na resposta
O objeto cancel é agora um campo obrigatório no nível raiz da resposta.
Alteração necessária: You can now rely on the cancel object always being present in successful responses. Remove any conditional checks for its existence.
3. Todos os campos de resposta agora obrigatórios
Todos os campos dentro do objeto de resposta cancel são agora obrigatórios: balance_after, contract_id, reference_id, sold_for, e transaction_id.
Alteração necessária: You can simplify your response handling code by removing null/undefined checks for these fields. They are guaranteed to be present in successful responses.
Estrutura de pedido
{
"cancel": 11542203588,
"loginid": "CR123456", // ❌ Removed in New
"passthrough": {
"user_action": "manual_cancel"
},
"req_id": 1
}{
"cancel": 11542203588,
"passthrough": {
"user_action": "manual_cancel"
},
"req_id": 1
}Estrutura de resposta
{
"cancel": {
"balance_after": 10450.50,
"contract_id": 11542203588,
"reference_id": 11542203587,
"sold_for": 23.45,
"transaction_id": 11542203589
},
"echo_req": {
"cancel": 11542203588,
"req_id": 1
},
"msg_type": "cancel",
"req_id": 1
}{
"cancel": {
"balance_after": 10450.50,
"contract_id": 11542203588,
"reference_id": 11542203587,
"sold_for": 23.45,
"transaction_id": 11542203589
},
"echo_req": {
"cancel": 11542203588,
"req_id": 1
},
"msg_type": "cancel",
"req_id": 1
}Exemplos de código
async function cancelContract(contractId, loginId = null) {
const request = {
cancel: contractId,
req_id: 1
};
// Add loginid if provided (for multi-account scenarios)
if (loginId) {
request.loginid = loginId;
}
ws.send(JSON.stringify(request));
// Handle response
ws.onmessage = (message) => {
const response = JSON.parse(message.data);
if (response.msg_type === "cancel") {
// Fields may be undefined - need null checks
if (response.cancel) {
const soldFor = response.cancel.sold_for ?? 0;
const balance = response.cancel.balance_after ?? 0;
console.log("Contract cancelled");
}
}
};
}Alguma outra questão? Entrar em contacto