syntax = "proto3";

package go.api;

message Pair {
	string key = 1;
	repeated string values = 2;
}

// A HTTP request as RPC
// Forward by the api handler
message Request {
        string method = 1;
        string path = 2;
        map<string, Pair> header = 3;
        map<string, Pair> get = 4;
        map<string, Pair> post = 5;
        string body = 6;  // raw request body; if not application/x-www-form-urlencoded
	string url = 7;
}

// A HTTP response as RPC
// Expected response for the api handler
message Response {
        int32 statusCode = 1;
        map<string, Pair> header = 2;
        string body = 3;
}

// A HTTP event as RPC
// Forwarded by the event handler
message Event {
	// e.g login
	string name = 1;
	// uuid
	string id = 2;
	// unix timestamp of event
	int64 timestamp = 3;
	// event headers
        map<string, Pair> header = 4;
	// the event data
	string data = 5;
}