pb/sprawl.proto
syntax = "proto3";
package pb;
import "google/protobuf/timestamp.proto";
enum State {
OPEN = 0;
LOCKED = 1;
}
enum Operation {
CREATE = 0;
DELETE = 1;
LOCK = 2;
UNLOCK = 3;
SYNC_REQUEST = 4;
SYNC_RECEIVE = 5;
}
message Peer {
string id = 1;
}
message Order {
bytes id = 1;
google.protobuf.Timestamp created = 2;
string asset = 3;
string counterAsset = 4;
uint64 amount = 5;
float price = 6;
State state = 7;
bytes signature = 8;
uint32 nonce = 9;
bytes metadata = 10;
}
message OrderList {
repeated Order orders = 1;
}
message Channel {
bytes id = 1;
ChannelOptions options = 2;
}
message ChannelList {
repeated Channel channels = 1;
}
message Recipient {
bytes peerID = 1;
}
message WireMessage {
bytes channelID = 1;
Operation operation = 2;
bytes data = 3;
}
message CreateRequest {
bytes channelID = 1;
string asset = 2;
string counterAsset = 3;
uint64 amount = 4;
float price = 5;
}
message JoinRequest {
string asset = 1;
string counterAsset = 2;
}
message ChannelOptions {
string assetPair = 1;
}
message OrderSpecificRequest {
bytes orderID = 1;
bytes channelID = 2;
}
message ChannelSpecificRequest {
bytes id = 1;
}
message CreateResponse {
Order createdOrder = 1;
}
message OrderListResponse {
repeated Order orders = 1;
}
message ChannelListResponse {
repeated Channel channels = 1;
}
message PeerListResponse {
repeated string peerIDs = 1;
}
message JoinResponse {
Channel joinedChannel = 1;
}
message Empty {}
service OrderHandler {
rpc Create (CreateRequest) returns (CreateResponse);
rpc Delete (OrderSpecificRequest) returns (Empty);
rpc Lock (OrderSpecificRequest) returns (Empty);
rpc Unlock (OrderSpecificRequest) returns (Empty);
rpc GetOrder (OrderSpecificRequest) returns (Order);
rpc GetAllOrders (Empty) returns (OrderList);
}
service ChannelHandler {
rpc Join (JoinRequest) returns (JoinResponse);
rpc Leave (ChannelSpecificRequest) returns (Empty);
rpc GetChannel (ChannelSpecificRequest) returns (Channel);
rpc GetAllChannels (Empty) returns (ChannelList);
}
service NodeHandler {
rpc GetAllPeers (Empty) returns (PeerListResponse);
rpc BlacklistPeer (Peer) returns (Empty);
}