syntax = "proto3"; package trading.v1; option java_package = "com.example.trading.contracts.v1"; option java_multiple_files = true; option java_outer_classname = "OrderContract"; service OrderService { rpc SubmitOrder(SubmitOrderRequest) returns (SubmitOrderResponse); } message SubmitOrderRequest { string client_order_id = 1; string symbol = 2; Side side = 3; // Decimal text avoids binary floating-point rounding for trading values. string quantity = 4; string limit_price = 5; string sender_comp_id = 6; string target_comp_id = 7; // ISO-8601 local date (yyyy-MM-dd), supplied explicitly by the caller. string trading_date = 8; } enum Side { SIDE_UNSPECIFIED = 0; SIDE_BUY = 1; SIDE_SELL = 2; } message SubmitOrderResponse { string order_id = 1; OrderDecision decision = 2; string reject_reason = 3; } enum OrderDecision { ORDER_DECISION_UNSPECIFIED = 0; ACCEPTED = 1; REJECTED = 2; }