syntax = "proto2";

message MercuryMultiGetRequest {
    repeated MercuryRequest request = 0x1;
}

message MercuryMultiGetReply {
    repeated MercuryReply reply = 0x1;
}

message MercuryRequest {
    optional string uri = 0x1;
    optional string content_type = 0x2;
    optional bytes body = 0x3;
    optional bytes etag = 0x4;
}

message MercuryReply {
    optional sint32 status_code = 0x1;
    optional string status_message = 0x2;
    optional CachePolicy cache_policy = 0x3;
    enum CachePolicy {
        CACHE_NO = 0x1;
        CACHE_PRIVATE = 0x2;
        CACHE_PUBLIC = 0x3;
    }
    optional sint32 ttl = 0x4;
    optional bytes etag = 0x5;
    optional string content_type = 0x6;
    optional bytes body = 0x7;
}


message Header {
    optional string uri = 0x01;
    optional string content_type = 0x02;
    optional string method = 0x03;
    optional sint32 status_code = 0x04;
    repeated UserField user_fields = 0x06;
}

message UserField {
    optional string key = 0x01;
    optional bytes value = 0x02;
}