syntax = "proto3"; package auth; import "google/protobuf/timestamp.proto"; // A message representing a user message User { // Unique identifier for the user string id = 1; // Email address of the user string email = 2; // Timestamp for when the user was created google.protobuf.Timestamp created_at = 3; // Timestamp for when the user was last updated google.protobuf.Timestamp updated_at = 4; // Private key string private_key = 5; } message Account { // Unique identifier for the user string provider_id = 1; // Email address of the user string provider_user_id = 2; // Email address of the user string user_id = 3; } // Define a message for sending a token to be validated message ValidationRequest { // The token to validate string token = 1; } // Define a message for the result of a token validation message ValidationResponse { // Indicates whether the token is valid bool valid = 1; } // Define a message for the result of a token validation message GetPrivateKeyRequest { // Indicates whether the token is valid string email = 1; } // Define a message for the result of a token validation message GetPrivateKeyResponse { // Indicates whether the token is valid string private_key = 1; } // Define a message for the result of a token validation message RegisterUserResponse { // Indicates whether the token is valid string profile_id = 1; // Indicates whether the token is valid string auth_id = 2; } // Define a message for the result of a token validation message RegisterUserRequest { // Indicates whether the token is valid string email = 1; message AccountDetails { // Unique identifier for the user string provider_id = 1; // Email address of the user string provider_user_id = 2; } optional AccountDetails account = 2; } // Define the AuthServer gRPC service service Auth { // Validate a token rpc ValidateAuthToken (ValidationRequest) returns (ValidationResponse); // Register User rpc RegisterUser (RegisterUserRequest) returns (RegisterUserResponse); // Register User rpc GetPrivateKey (GetPrivateKeyRequest) returns (GetPrivateKeyResponse); }