syntax = "proto3"; package networkmembership; import "public_messages.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "BackOffice.BFF.NetworkMembership.Protobuf"; service NetworkMembershipContract { rpc JoinNetwork(JoinNetworkRequest) returns (google.protobuf.Empty); rpc ChangeNetworkParent(ChangeNetworkParentRequest) returns (google.protobuf.Empty); rpc RemoveFromNetwork(RemoveFromNetworkRequest) returns (google.protobuf.Empty); rpc GetUserNetwork(GetUserNetworkRequest) returns (GetUserNetworkResponse); rpc GetNetworkTree(GetNetworkTreeRequest) returns (GetNetworkTreeResponse); rpc GetNetworkMembershipHistory(GetNetworkMembershipHistoryRequest) returns (GetNetworkMembershipHistoryResponse); } // JoinNetwork Command message JoinNetworkRequest { int64 user_id = 1; int64 parent_id = 2; int32 leg = 3; // NetworkLeg enum: Left=0, Right=1 google.protobuf.StringValue referral_code = 4; } // ChangeParent Command message ChangeNetworkParentRequest { int64 user_id = 1; int64 new_parent_id = 2; int32 new_leg = 3; // NetworkLeg enum string reason = 4; } // Remove Command message RemoveFromNetworkRequest { int64 user_id = 1; string reason = 2; } // GetUserNetwork Query message GetUserNetworkRequest { int64 user_id = 1; } message GetUserNetworkResponse { int64 id = 1; int64 user_id = 2; string user_name = 3; google.protobuf.Int64Value parent_id = 4; string parent_name = 5; int32 network_leg = 6; // NetworkLeg enum google.protobuf.Int64Value left_child_id = 7; string left_child_name = 8; google.protobuf.Int64Value right_child_id = 9; string right_child_name = 10; int32 network_level = 11; string referral_code = 12; google.protobuf.Timestamp joined_at = 13; google.protobuf.Timestamp created = 14; } // GetNetworkTree Query message GetNetworkTreeRequest { int64 root_user_id = 1; google.protobuf.Int32Value max_depth = 2; google.protobuf.BoolValue only_active = 3; } message GetNetworkTreeResponse { repeated NetworkTreeNodeModel nodes = 1; } message NetworkTreeNodeModel { int64 user_id = 1; string user_name = 2; google.protobuf.Int64Value parent_id = 3; int32 network_leg = 4; int32 network_level = 5; bool is_active = 6; google.protobuf.Timestamp joined_at = 7; } // GetHistory Query message GetNetworkMembershipHistoryRequest { google.protobuf.Int64Value user_id = 1; google.protobuf.Int64Value parent_id = 2; int32 page_index = 3; int32 page_size = 4; } message GetNetworkMembershipHistoryResponse { messages.MetaData meta_data = 1; repeated NetworkMembershipHistoryModel models = 2; } message NetworkMembershipHistoryModel { int64 id = 1; int64 user_id = 2; google.protobuf.Int64Value old_parent_id = 3; google.protobuf.Int64Value new_parent_id = 4; google.protobuf.Int32Value old_network_leg = 5; google.protobuf.Int32Value new_network_leg = 6; google.protobuf.Int32Value old_network_level = 7; google.protobuf.Int32Value new_network_level = 8; int32 action = 9; // NetworkMembershipAction enum string performed_by = 10; string reason = 11; google.protobuf.Timestamp created = 12; }