Orderbook Endpoints
Overview
This section contains endpoints for interacting with the order books.
Format
The order books return Candid types as responses.
The declarations files for the order books can be found here: https://github.com/Vault-Bets/api-template/tree/main/orderbook
Place Order Flow
It is important to note that there is a specific flow required to place an order. It goes as follows:
- Validate the order (optional)
- Commit the order
- Transfer order cost to the canister
- Place the order
Here is an example of an order flow for placing an order written in pseudocode:
function placeBet(eventCanisterId, marketId, order) {
// Validate order
let orderCost = await EventService.validateOrder(eventCanisterId, marketId, order);
if (orderCost !== null) {
let memo = await EventService.commitOrder(eventCanisterId, orderCost);
let transferResponse = await transfer(orderCost, eventCanisterId, memo);
if (transferResponse.isOk) {
let blockheight = transferResponse.blockheight;
// Place order on the Event
let immutableOrder = await EventService.placeOrder(eventCanisterId, marketId, order, blockheight);
if (immutableOrder !== null) {
return Ok(immutableOrder);
} else {
throw Error("placeOrder on event canister failed");
}
} else {
throw Error(transferResponse.msg);
}
} else {
throw Error("Market doesn't exist");
}
}