syntax = "proto3"; package optiver.exchange.orderbook; import "common.proto"; // ------------------------------------------------------------ // Internal management messages (used by admin service) // ------------------------------------------------------------ message CreateOrderBookRequest { int64 request_id = 1; double tick_size = 2; } message CreateOrderBookResponse { int64 request_id = 1; string error_message = 2; int64 order_book_id = 3; } message DeleteOrderBookRequest { int64 request_id = 1; int64 order_book_id = 2; } message DeleteOrderBookResponse { int64 request_id = 1; string error_message = 2; } // ------------------------------------------------------------ // Messages sent to all connected clients with the current // state of the order book, then upon any changes // ------------------------------------------------------------ message OnOrderBookCreated { int64 order_book_id = 1; double tick_size = 2; int64 created_timestamp = 3; } message OnOrderInserted { int64 order_id = 1; int64 order_book_id = 2; int64 timestamp = 3; Side side = 4; double price = 5; int32 quantity = 6; string username = 7; repeated int64 trade_ids = 10; } message OnOrderCancelled { int64 order_id = 1; int64 cancellation_timestamp = 2; } message OnTrade { int64 trade_id = 1; int64 order_book_id = 2; int64 timestamp = 3; int64 buy_order_id = 4; int64 sell_order_id = 5; double price = 6; int32 quantity = 7; Side aggressor_side = 8; } // ------------------------------------------------------------ // Requests accepted by this service // ------------------------------------------------------------ message InsertOrderRequest { int64 request_id = 1; int64 order_book_id = 2; Side side = 3; double price = 4; int32 quantity = 5; string username = 6; // TODO start with LIMIT order type only } message InsertOrderResponse { int64 request_id = 1; string error_message = 2; int64 order_id = 3; int64 timestamp = 4; repeated int64 trade_ids = 5; int32 traded_quantity = 6; } message CancelOrderRequest { int64 request_id = 1; int64 order_book_id = 2; int64 order_id = 3; } message CancelOrderResponse { int64 request_id = 1; string error_message = 2; int64 cancellation_timestamp = 3; int32 remaining_quantity = 4; }