blob: 50c2da0d8eb183968d2315200c53756c6c13dc3f [file] [log] [blame]
syntax = "proto3";
package fuzztest.internal;
service MiniBlogger {
// Register a user.
rpc RegisterUser(RegisterUserRequest) returns (RegisterUserResponse);
// Log in a user and get a session id.
rpc LogInUser(LogInUserRequest) returns (LogInUserResponse);
// Get a user's posts by session id.
rpc GetUserPosts(GetUserPostsRequest) returns (GetUserPostsResponse);
// Log out the user (invaliding the session id).
rpc LogOutUser(LogOutUserRequest) returns (LogOutUserResponse);
}
message RegisterUserRequest {
string user_name = 1;
string email = 2;
string password = 3;
}
message RegisterUserResponse {
bool success = 1;
}
message LogInUserRequest {
string name = 1;
string password = 2;
}
message LogInUserResponse {
bool success = 1;
// A unique id for the user logging in session.
int64 session_id = 2;
}
enum SortingOrder {
ASCENDING = 0;
DESCENDING = 1;
}
enum SortedBy {
DATE = 0;
POPULARITY = 1;
}
// For testing only.
message GetUserPostsOptionsWithDifferentFieldNames {
SortingOrder ordering = 1;
}
message GetUserPostsOptions {
SortingOrder order = 1;
SortedBy sort_by = 2;
}
message GetUserPostsRequest {
int64 session_id = 1;
int32 max_posts = 2; // Maximum number of posts returned.
GetUserPostsOptions options = 3;
}
message GetUserPostsResponse {
repeated string posts = 1;
}
// For testing dependency established at inner fields.
message LogOutInfo {
oneof log_out_info {
SessionInfo session_info = 1;
int64 session_id = 2;
}
}
message SessionInfo {
int64 session_id = 1;
}
message LogOutUserRequest {
LogOutInfo log_out_info = 1;
}
message LogOutUserResponse {
bool success = 1;
}
// This is only for testing that the util of collecting all fields in a message
// won't break with recursive messages.
message RecursiveNode {
int64 value = 1;
repeated RecursiveNode children = 2;
}
// For testing only.
message OneOfMessage {
oneof oneof1 {
DummyMessage oneof1_field1 = 1;
int64 oneof1_field2 = 2;
}
oneof oneof2 {
DummyMessage oneof2_field1 = 3;
int64 oneof2_field2 = 4;
}
}
message DummyMessage {
int64 v1 = 1;
int64 v2 = 2;
}
message InnerRepeated {
int64 field2 = 1;
}
message MessageWithSingleInnerRepeated {
InnerRepeated repeated_msg_field = 1;
}
message MessageContainingRepeatedFields {
repeated int64 field = 1;
repeated InnerRepeated repeated_msg_field = 2;
}
message MessageNotContainingRepeatedFields {
int64 field = 1;
int64 field2 = 2;
}