syntax = "proto3";
package api.v1;
// User service handles user management operations
service UserService {
// Create a new user account
rpc CreateUser(CreateUserRequest) returns (CreateUserResponse);
// Get user by ID
rpc GetUser(GetUserRequest) returns (GetUserResponse);
// Update user information
rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse);
// Delete a user account
rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse);
// List users with pagination
rpc ListUsers(ListUsersRequest) returns (stream ListUsersResponse);
}
// User represents a system user
message User {
string id = 1; // Unique user identifier
string email = 2; // User email address
string name = 3; // Full name
UserRole role = 4; // User role
int64 created_at = 5; // Creation timestamp
int64 updated_at = 6; // Last update timestamp
bool is_active = 7; // Account active status
}
// User role enumeration
enum UserRole {
ROLE_UNSPECIFIED = 0; // Default unknown role
ROLE_USER = 1; // Regular user
ROLE_ADMIN = 2; // Administrator
ROLE_MODERATOR = 3; // Moderator
}
// Request to create a new user
message CreateUserRequest {
string email = 1; // User email (required)
string name = 2; // User name (required)
string password = 3; // User password (required)
UserRole role = 4; // User role (optional, defaults to USER)
}
// Response containing created user
message CreateUserResponse {
User user = 1; // Created user object
string token = 2; // Authentication token
}
// Request to get a user by ID
message GetUserRequest {
string id = 1; // User ID
}
// Response containing requested user
message GetUserResponse {
User user = 1; // User object
}
// Request to update user information
message UpdateUserRequest {
string id = 1; // User ID
optional string email = 2; // New email
optional string name = 3; // New name
optional UserRole role = 4; // New role
optional bool is_active = 5; // Active status
}
// Response containing updated user
message UpdateUserResponse {
User user = 1; // Updated user object
}
// Request to delete a user
message DeleteUserRequest {
string id = 1; // User ID to delete
}
// Response confirming deletion
message DeleteUserResponse {
bool success = 1; // Deletion success status
string message = 2; // Optional message
}
// Request to list users with pagination
message ListUsersRequest {
int32 page_size = 1; // Number of users per page
string page_token = 2; // Token for next page
optional UserRole role = 3; // Filter by role
optional bool is_active = 4; // Filter by active status
}
// Response containing list of users
message ListUsersResponse {
repeated User users = 1; // List of users
string next_page_token = 2; // Token for next page
int32 total_count = 3; // Total number of users
}