syntax = "proto3"; package profile; import "google/protobuf/timestamp.proto"; // A message representing a user profile message User { // Unique identifier for the user string id = 1; // Email address of the user string email = 2; // Unique username chosen by the user string username = 3; // URL to the user's avatar image optional string avatar = 4; // Timestamp when the user was created google.protobuf.Timestamp created_at = 5; // Timestamp when the user was last updated google.protobuf.Timestamp updated_at = 6; // User-provided description or bio optional string description = 7; } // Request message for creating a new user profile message CreateUserRequest { // Email address of the new user string email = 1; // Avatar for the new user optional string avatar = 2; } // Response message for CreateUser RPC message CreateUserResponse { // Temporary assigned id string temp_id = 1; } // Message to finalise profile creation message CompleteUserRequest { // ID of the user to finalise string id = 1; // Required: username to finalise the profile string username = 2; // Optional: user-provided description optional string description = 3; // Optional: update avatar optional string avatar = 4; } // Profile gRPC service service Profile { // Create a new user profile rpc CreateUser (CreateUserRequest) returns (CreateUserResponse); // Complete Profile rpc CompleteProfile (CompleteUserRequest) returns (User); }