Logo

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:

  1. Validate the order (optional)
  2. Commit the order
  3. Transfer order cost to the canister
  4. 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");
  }
}
Previous
Get Matched Bets