diff options
Diffstat (limited to 'lib/sellershut-core/proto/users/users.proto')
-rw-r--r-- | lib/sellershut-core/proto/users/users.proto | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/lib/sellershut-core/proto/users/users.proto b/lib/sellershut-core/proto/users/users.proto new file mode 100644 index 0000000..d1cf692 --- /dev/null +++ b/lib/sellershut-core/proto/users/users.proto @@ -0,0 +1,79 @@ +syntax = "proto3"; + +package users; + +import "google/protobuf/timestamp.proto"; + +enum UserType { + PERSON = 0; + APPLICATION = 1; + GROUP = 2; + ORGANIZATION = 3; + SERVICE = 4; +} + +// A message representing a user user +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; + // User type + UserType user_type = 8; + // Public key + string public_key = 9; +} + +// Request message for creating a new user +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 user creation +message CompleteUserRequest { + // ID of the user to finalise + string id = 1; + // Required: username to finalise the user + string username = 2; + // Optional: user-provided description + optional string description = 3; + // Optional: update avatar + optional string avatar = 4; + // Inbox URL for this user + string inbox = 5; + // Outbox URL for this user + string outbox = 6; + // Is this user local or remote + bool local = 7; + // Public key for this user + string public_key = 8; + // User type + UserType user_type = 9; +} + +// Users gRPC service +service UsersService { + // Create a new user + rpc CreateUser (CreateUserRequest) returns (CreateUserResponse); + // Complete user + rpc CompleteUser (CompleteUserRequest) returns (User); +} |