syntax = "proto3";

package bilibili.api.probe.v1;

option java_multiple_files = true;

// 服务可用性探针
service Probe {
  //
  rpc TestCode (CodeReq) returns (CodeReply);
  //
  rpc TestReq (ProbeReq) returns (ProbeReply);
  //
  rpc TestStream (ProbeStreamReq) returns (ProbeStreamReply);
  //
  rpc TestSub (ProbeSubReq) returns (ProbeSubReply);
}

// 服务可用性探针
service ProbeService {
  //
  rpc Echo(SimpleMessage) returns (SimpleMessage);
  //
  rpc EchoBody(SimpleMessage) returns (SimpleMessage);
  //
  rpc EchoDelete(SimpleMessage) returns (SimpleMessage);
  //
  rpc EchoError(ErrorMessage) returns (ErrorMessage);
  //
  rpc EchoPatch(DynamicMessageUpdate) returns (DynamicMessageUpdate);
}

//
enum Category {
  CATEGORY_UNSPECIFIED = 0; //
  CATEGORY_ONE = 1; //
  CATEGORY_TWO = 2; //
  CATEGORY_THREE = 3; //
  CATEGORY_FOUR = 4; //
}

//
message CodeReply {
  //
  string id = 1;
  //
  string id1 = 2;
  //
  int64 code = 3;
  //
  string message_s = 4;
}

//
message CodeReq {
  //
  int64 code = 1;
}

// 
message CreateTopic {
  //
  int64 id = 1;
}

// 
message CreatTask {
  //
  string task = 1;
}

//
message DynamicMessageUpdate {
  //
  SimpleMessage body = 1;
}

//
message Embedded {
  //
  bool bool_val = 1;
  //
  int32 int32_val = 2;
  //
  int64 int64_val = 3;
  //
  float float_val = 4;
  //
  double double_val = 5;
  //
  string string_val = 6;
  //
  repeated bool repeated_bool_val = 7;
  //
  repeated int32 repeated_int32_val = 8;
  //
  repeated int64 repeated_int64_val = 9;
  //
  repeated float repeated_float_val = 10;
  //
  repeated double repeated_double_val = 11;
  //
  repeated string repeated_string_val = 12;
  //
  map<string, string> map_string_val = 13;
  //
  map<string, ErrorMessage> map_error_val = 14;
}

//
message ErrorMessage {
  //
  int64 code = 1;
  //
  string reason = 2;
  //
  string message = 3;
}

// Deprecated
enum ErrorReason {
  PROBE_UNSPECIFIED = 0; //
  PROBE_CATEGORY_NOTFOUND = 1; //
}

//
message ProbeReply {
  //
  string content = 1;
  //
  int64 timestamp = 2;
}

//
message ProbeReq {
  //
  int64 mid = 1;
  //
  string buvid = 2;
}

//
message ProbeStreamReply {
  //
  int64 sequence = 1;
  //
  int64 timestamp = 2;
  //
  string content = 3;
}

//
message ProbeStreamReq {
  //
  int64 mid = 1;
  //
  int64 sequence = 2;
}

//
message ProbeSubReply {
  //
  int64 message_id = 1;
}

//
message ProbeSubReq {
  //
  string buvid = 1;
}

//
message SimpleMessage {
  //
  int32 id = 1;
  //
  int64 num = 2;
  //
  string lang = 3;
  //
  int32 cate = 4;
  //
  Embedded embedded = 5;
}

// 
message Task {
  //
  string name = 1;
  //
  string author = 2;
  //
  bool cache = 3;
}