syntax = "proto3";

option go_package = "google.golang.org/grpc/reflection/grpc_testingv3";

package grpc.testingv3;

message SearchResponseV3 {
  message Result {
    string url = 1;
    string title = 2;
    repeated string snippets = 3;
    message Value {
      oneof val {
        string str = 1;
        int64 int = 2;
        double real = 3;
      }
    }
    map<string, Value> metadata = 4;
  }
  enum State {
    UNKNOWN = 0;
    FRESH = 1;
    STALE = 2;
  }
  repeated Result results = 1;
  State state = 2;
}

message SearchRequestV3 {
  string query = 1;
}

service SearchServiceV3 {
  rpc Search(SearchRequestV3) returns (SearchResponseV3);
  rpc StreamingSearch(stream SearchRequestV3) returns (stream SearchResponseV3);
}
