syntax = "proto3"; package products; import "google/protobuf/empty.proto"; import "google/protobuf/wrappers.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "google/api/annotations.proto"; option csharp_namespace = "FrontOffice.BFF.Products.Protobuf.Protos.Products"; service ProductsContract { rpc GetProducts(GetProductsRequest) returns (GetProductsResponse){ option (google.api.http) = { get: "/GetProducts" }; }; rpc GetAllProductsByFilter(GetAllProductsByFilterRequest) returns (GetAllProductsByFilterResponse){ option (google.api.http) = { get: "/GetAllProductsByFilter" }; }; } message GetProductsRequest { int64 id = 1; } message GetProductsResponse { int64 id = 1; string title = 2; string description = 3; string short_infomation = 4; string full_information = 5; int64 price = 6; int32 discount = 7; int32 rate = 8; string image_path = 9; string thumbnail_path = 10; int32 sale_count = 11; int32 view_count = 12; int32 remaining_count = 13; repeated ProductGalleryItem gallery = 14; repeated ProductCategoryPath categories = 15; } message GetAllProductsByFilterRequest { PaginationState pagination_state = 1; google.protobuf.StringValue sort_by = 2; GetAllProductsByFilterFilter filter = 3; } message GetAllProductsByFilterFilter { google.protobuf.Int64Value id = 1; google.protobuf.StringValue title = 2; google.protobuf.StringValue description = 3; google.protobuf.StringValue short_infomation = 4; google.protobuf.StringValue full_information = 5; google.protobuf.Int64Value price = 6; google.protobuf.Int32Value discount = 7; google.protobuf.Int32Value rate = 8; google.protobuf.Int64Value category_id = 9; } message GetAllProductsByFilterResponse { MetaData meta_data = 1; repeated GetAllProductsByFilterResponseModel models = 2; } message GetAllProductsByFilterResponseModel { int64 id = 1; string title = 2; string description = 3; string short_infomation = 4; string full_information = 5; int64 price = 6; int32 discount = 7; int32 rate = 8; string image_path = 9; string thumbnail_path = 10; int32 sale_count = 11; int32 view_count = 12; int32 remaining_count = 13; repeated ProductCategoryPath categories = 14; } message ProductGalleryItem { int64 product_gallery_id = 1; int64 product_image_id = 2; string title = 3; string image_path = 4; string image_thumbnail_path = 5; } message ProductCategoryPath { int64 category_id = 1; string title = 2; repeated CategoryNode path = 3; } message CategoryNode { int64 id = 1; string title = 2; google.protobuf.Int64Value parent_id = 3; } message PaginationState { int32 page_number = 1; int32 page_size = 2; } message MetaData { int64 current_page = 1; int64 total_page = 2; int64 page_size = 3; int64 total_count = 4; bool has_previous = 5; bool has_next = 6; } message DecimalValue { int64 units = 1; sfixed32 nanos = 2; }